The Spectronic Intellikeys was an innovative keyboard-like accessibility device that used special plastic overlays that change its functionality. While a USB version of the accessible keyboard exists, it doesn’t work like a normal HID device, so it’s not plug and play as you might expect. It’s also no longer in production or supported by the manufacturer. Where industry falls down, the community steps in, right? To that end, Adafruit has built a tool for interfacing with these useful accessibility devices.
The key is the way the Intellikeys was intended to work with a computer. It was designed to download its firmware from the host machine, using special drivers that are only compatible with certain versions of Windows. That means you can’t use it with iPads or Chromebooks, for example.
To get around this, Adafruit used an RP2040 Feather configured as a USB host to talk to the Intellikeys. It queries the device, determines which overlay it currently has installed, and provides it the necessary firmware. On the other end, the Feather enumerates as a regular USB HID device. That allows it to work with a wide variety of tablets, computers, and even smartphones.
If you’ve got an Intellikeys USB device and miss using it, this could be just the thing you need. Meanwhile, you can check out some of the other interesting keyboard designs we’ve featured over the years.
The RP2040 Feather with USB Host lets us use Intellikeys with an iPad
the Intellikeys is a popular accessibility device with custom overlays, that is no longer supported. even though it has a USB plug it doesn't work like many USB devices: it doesn't enumerate as an HID… pic.twitter.com/HpQcwqI1Op
— adafruit industries (@adafruit) April 25, 2023
Probably could use webusb to upload firmware from webpage.
My intellikey keyboard will print the letter but not speak through Jaws. Help
These things remainded me something and sure enough, Micah Scott worked on them back in 2017 it seems, in collaboration with some other guy. I think they never finished what they wanted to do, at least according to http://atmakers.org/2017/11/intellikeys-open-source-rescue/ .
The PIO found in the RP2040 has been a great help for USB “filters”. Not only does it make the Intellikeys Adapter from ATMakers easier to make, but is going to be used in a number of upcoming projects, such as Essential and Intention Tremor smoothing for input devices. There is a real need to rescue older tech like the Intellikeys — the Roaring Riptide robotics team has made hundreds of the two Trinket M0 versions — now the process is much easier. There is a lot of exciting work in this area — with Web HID adjustments, more processing power, etc.
I’ve seen ATMaker’s Bill Binko working on this in the Adafruit discord for a few years now, asking about USB Host support in CircuitPython. I guess Adafruit decided to take the lead at some point, although I see this is now C++ and not CP at all.
Here is a video from ATMaker’s Bill Binko sharing the news of this new possibility and other usage of the Feather RP2040 USB-Host: https://www.youtube.com/watch?v=IvCyWxc9r9M
My educated guess is that Adafruit funded the work needed on tinyusb and porting the windows driver to run on their Feather RP2040 USB-HOST. See https://github.com/adafruit/Adafruit_IntelliKeys
Copyright (c) 2023 Ha Thach (tinyusb.org) for Adafruit Industries
But that was only possible because the driver was open sourced by the vendor, then ported to Windows 10, then running on a dual MCU, one doing the USB toward the IntelliKeys and another doing the USB-HID toward the host. This seems the hard work of many people to keep this IntelliKeys still usefull for those that need it the most. Bill showed a timeline on the topic in his video.
The RP2040 board looks great, does anyone know if we can use the Web Based Software to compile code for this board? I’ve just tried compiling code which I have loaded onto a new Pico, the compile runs and download happens but openbuilds controller can’t open the usb port. I would like to be able to build working code before I order a board