The software to power the microcontroller that runs the Keyglove is written in AVR-GCC code (basically like regular C with a few hardware-specific libraries) and is entirely open source under the MIT license. The latest working code can be found on the Keyglove Github Repository.

The Arduino portion of this code (in the /keyglove folder) is not particularly complex and should hopefully be easily interpreted by anyone with a working knowledge of C++ and the Arduino libraries. There is an additional portion of the code that uses Dean Camera’s excellent LUFA library (in the /keyglove_lufa folder) this is notably more complicated and allows the controller code to be compiled with powerful USB device flexibility on an AT90USB1286/7 chip. This is made possible by partially integrating the necessary Arduino libraries with the LUFA framework.

NOTE: Please keep in mind that what is up in the repository is very much NOT FINISHED. That is to say, it’s about as far along as the hardware part of the Keyglove, also currently under development.

The Arduino development environment is also open source and can be downloaded from their official site for free. Of course, you will need the Arduino board or some other programmable hardware to work with it. My code is tested working with the latest version of the Arduino IDE, which at this time is Version 1.0. For prototype development, I have been using the Teensy++ 2.0 board from PJRC along with the Teensyduino add-on. The latest prototype board environment uses a custom controller board with a low-level avr-gcc/avrdude configuration, but most of the software development—especially for prototyping—can all be done with the Arduino IDE and the Teensy++ board.

Software Functionality and OS Compatibility

The latest version of Teensyduino as well as the LUFA framework code both allow the Keyglove’s USB connection to act as a virtual serial port, keyboard, mouse, and joystick simultaneously. More device types are possible, but currently not supported. The iWRAP firmware on the Bluegiga WT12 Bluetooth module that the Keyglove will in the next few months be updated to support the same level of functionality possible with a wired connection, though currently it can only act as a serial port, keyboard, and mouse (without scrolling capability).

The Keyglove is detected by host computers as a standard mouse, keyboard, and joystick without any special drivers and regardless of the host OS or platform. All basic functionality is possible with these interfaces, and the Keyglove is equally functional in a wired or wireless configuration. The virtual serial port uses only a very simple driver and allows further customization by letting you convert each Keyglove action into literally any host action by interpreting the serial data sent from the Keyglove itself.

Development Roadmap

For a detailed breakdown, check out the Roadmap page. The controller code is still under active development in order to make all features work reliably on the custom controller board as well as more easily accessible hardware such as the Arduino Mega or Teensy++. Particularly, motion capture and seamless Bluetooth support are being most heavily worked on at the moment. All updates are pushed to the Github repository as often as possible. Please feel free to watch that if you are interested in staying up-to-date on the latest developments.