The PS2Keyboard library uses one of the two available external interrupts to react on keyboard input. Once such input is received, it's stored in a one-byte buffer and is available to be read.
Version 2.2 - Adds non-US keyboard support, recovery from false input, buffering, shift key handling and much more.
The following schematic shows how to connect a PS/2 connector:

Make sure you connect the Clock PIN to the digital PIN 3 on the Arduino. Otherwise the interrupt, and therefore the whole library, won't work.
Below is a simple example on how to use the library. For more keycode constants have a look at the PS2Keyboard.h file.
#include <PS2Keyboard.h>
#define DATA_PIN 4
PS2Keyboard keyboard;
void setup() {
keyboard.begin(DATA_PIN);
Serial.begin(9600);
Serial.println("hi");
delay(1000);
}
void loop() {
if(keyboard.available()) {
byte dat = keyboard.read();
byte val = dat - '0';
if(val >= 0 && val <= 9) {
Serial.print(val, DEC);
} else if(dat == PS2_KC_ENTER) {
Serial.println();
} else if(dat == PS2_KC_ESC) {
Serial.println("[ESC]");
}
}
}
This library is at a very early stage. If anyone wants to revise/rewrite it, feel free to do so (published under the LGPL). Attach:PS2Keyboard002.zip
NOTE: PS2Keyboard_014A is the library to use beginning with Arduino 0013. ** It contains a full complement of letters, numbers and punctuation (excluding shifted characters/symbols). **
Download with example code from this link: http://www.megaupload.com/?d=MN6A8JC0
This is the standar library but with a little change in the begin() method for supporting a easy way for editing the irq pin and you never need to edit the .cpp file for changing it.
You only must do ....begin(datapin,interrupt_pin);
In case you enter a non valid value the digital pin 2 is automatically assigned.
Questions cuninganreset@gmail.com
Thanks to Andreas Christoffersen, i didn't see the bug before.
http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
Version 2.0 adds the following improvements:
Some of the information on this page is now obsolete. Please refer to the version 2.0 page for up-to-date documentation.
http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
Version 2.1 adds the following improvements:
Rename charAvailable() to available() and readChar() to read() for consistency with other libraries.
Can be fixed by adding
#include "binary.h" typedef uint8_t boolean; typedef uint8_t byte;
scottp@dd.com.au
Thanks to cassettica - http://arduino.cc/forum/index.php/topic,89943.0.html