IBM Retail Store Solutions dept has certain PS/2 keyboards which extend the standard PS/2 specification in order to support addition hardware built into the keyboard (such as a Magnetic Strip Reader, Keylock, Tone generator, extra keys, extra LEDs, etc). This addition hardware behaves in a manner that makes it unusable if driven by a standard PS/2 driver (sadly, due to the fact that its design is "IP" I can't elaborate on how or why it is incompatible with the standard PS/2 specification). In order to use these keyboards, a the standard PS/2 driver needs to behave a bit differently; thus attached is a modifcation to the PS/2 driver which allows other drivers to register with the PS/2 driver as 'filters'. There is a arbitrary max number of 'filters' set to 1, which is a compile-time define. The registered drivers are called (in order of registration) for every scancode, and they may change or consume the scancode (or allow it to pass). Also the 'filters' are given a function to send an variable-sized buffer to the keyboard output port; this function is synchronized using a semaphore which also coordinates with pckbd_leds(). -Dan