1.0 * Initial Release 1.0.1 * Change transfer type from interrupt to bulk for keypresses, which resolves problems for some people 1.1.0 * Add header define to allow for api version changes * Add exitLibG15() to reset the device back to factory defaults on library exit. 1.1.1 * Add basic support for the G11 keyboard * revert all bulk transfers - bulk transfers are illegal for low-speed devices, and cause -22 (EINVAL) warnings on new kernels. * pass most errors to the client app. 1.2.1 * Add debugging function to enable/disable extra output * All debugging output is now prefixed with libg15 to aid localising problems. * debugging function now also controls libusb debugging output. * Try to claim usb interface up to 10 times before failing * Slow down initialisation, to allow keyboard to come out of usb auto-suspend on newer kernels. * Attempt to combat ENOSPC by slowing down writes to the lcd if ENOSPC is received. Unless that error occurs at least once, transfers are sent as normal. * Add function to change keyboard backlight (independant of lcd backlight). * Add re-initialising function, which will attempt to reconnect a keyboard that was previously removed and replugged. * libg15 now uses pthread mutexes to force sequential access to the bus via libusb. Control message URBs are no longer being lost if sent by a different thread in the middle of a screen transfer etc. * Reset the keyboard before init to ensure correct initialisation on kernels > 2.6.19 1.2.2 * Add support for the logitech Z-10 speakers - many thanks to Dwayne Fontenot for detailed information and debugging. 1.2.3 * Add support for the newer G15 keyboards which have amber backlights and six 'G' keys. 1.2.4 * Turns out that the newer G15's have a different (5 byte) keyboard protocol. * Optimise dumpPixmapIntoLCDFormat routine - Thanks to Adam Nielsen