Why can't I compile the AtTouch Library

I'm trying to use the AtTouch Library:

http://n0m1.com/2011/08/01/attouch-library-for-arduino-and-the-at42qt1070/

When I compile the included example AtTouch_press - I get a ton of errors, included below.

Has the IDE changed since this library was released, Is something up with my system?

In file included from AtTouch.cpp:29:
AtTouch.h:62: error: 'boolean' has not been declared
AtTouch.h:80: error: 'boolean' does not name a type
AtTouch.h:125: error: 'boolean' does not name a type
AtTouch.h:131: error: 'byte' does not name a type
AtTouch.h:132: error: 'byte' does not name a type
AtTouch.h:133: error: 'boolean' does not name a type
AtTouch.h:135: error: 'byte' does not name a type
AtTouch.h:136: error: 'boolean' does not name a type
AtTouch.cpp:49: error: 'boolean' has not been declared
AtTouch.cpp: In member function 'void AtTouch::begin(int, int)':
AtTouch.cpp:51: error: '_changePin' was not declared in this scope
AtTouch.cpp:51: error: 'byte' was not declared in this scope
AtTouch.cpp:51: error: expected `;' before 'interruptPin'
AtTouch.cpp:52: error: '_interruptVal' was not declared in this scope
AtTouch.cpp:52: error: expected `;' before 'interruptPin'
AtTouch.cpp:54: error: 'keyHit' was not declared in this scope
AtTouch.cpp:55: error: 'holdDown_' was not declared in this scope
AtTouch.cpp:64: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:65: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:67: error: 'delay' was not declared in this scope
AtTouch.cpp:91: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:92: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:103: error: 'INPUT' was not declared in this scope
AtTouch.cpp:103: error: 'pinMode' was not declared in this scope
AtTouch.cpp:104: error: 'FALLING' was not declared in this scope
AtTouch.cpp:104: error: 'attachInterrupt' was not declared in this scope
AtTouch.cpp: At global scope:
AtTouch.cpp:113: error: 'boolean' does not name a type
AtTouch.cpp: In member function 'void AtTouch::update()':
AtTouch.cpp:146: error: 'keyHit' was not declared in this scope
AtTouch.cpp:148: error: 'activeKey_' was not declared in this scope
AtTouch.cpp: In member function 'int AtTouch::getKey()':
AtTouch.cpp:160: error: 'activeKey_' was not declared in this scope
AtTouch.cpp: In member function 'int AtTouch::readActiveKey()':
AtTouch.cpp:180: error: 'activeKey_' was not declared in this scope
AtTouch.cpp:180: error: 'byte' was not declared in this scope
AtTouch.cpp:180: error: expected `;' before 'keyValue'
AtTouch.cpp:181: error: 'holdDown_' was not declared in this scope
AtTouch.cpp: In member function 'int AtTouch::readActiveAddress()':
AtTouch.cpp:195: error: 'keyHit' was not declared in this scope
AtTouch.cpp:209: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:212: error: 'class TwoWire' has no member named 'receive'

As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() for consistency with other libraries.

AtTouch.cpp:215: error: 'class TwoWire' has no member named 'send'

As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.

AtTouch.cpp:218: error: 'class TwoWire' has no member named 'receive'

As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() for consistency with other libraries.

AtTouch.cpp: At global scope:
AtTouch.cpp:261: error: 'boolean' does not name a type
AtTouch.cpp: In function 'void bttnPressISR()':
AtTouch.cpp:303: error: 'class AtTouch' has no member named 'keyHit'
AtTouch.cpp:304: error: 'class AtTouch' has no member named 'holdDown_'
AtTouch.cpp:305: error: 'millis' was not declared in this scope

Yes, it has changed - at a minimum you'll need to replace

#include "WProgram.h"

with

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

In the libary code (as will as add conditional compilation around the Wire.send calls to use Wire.write for Arduino 1.0 and later.

Thanks, that cleared up a lot of errors but there are still some remaining - any more suggestions?

In file included from AtTouch_press.ino:11:
AtTouch.h:62: error: 'boolean' has not been declared
AtTouch.h:80: error: 'boolean' does not name a type
AtTouch.h:125: error: 'boolean' does not name a type
AtTouch.h:131: error: 'byte' does not name a type
AtTouch.h:132: error: 'byte' does not name a type
AtTouch.h:133: error: 'boolean' does not name a type
AtTouch.h:135: error: 'byte' does not name a type
AtTouch.h:136: error: 'boolean' does not name a type
AtTouch_press.ino: In function 'void loop()':
AtTouch_press:38: error: 'class AtTouch' has no member named 'hit'

The .h file needs to #include <Arduino.h>

That's where all the definitions are.

So in AtTouch.h, I've tried replacing

#include "WProgram.h"

with

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

and also tried

#include <Arduino.h>

But I still get the errors, I'm sure this must be simple... What else could I be doing wrong??