hardware / software / wetware

palm keyboard

I'll admit it, I have an IRC addiction, and IRC on a phone is pretty rough. Portable keyboards are mostly garbage, but the Palm Portable Keyboard (PPK) caught my eye. It's small enough to fit in a pocket, the plentiful keys feel good, you can pick them up on eBay for less than $10, and the folding mechanism is fun to play with. Sadly, the versions I like were never made with bluetooth or USB interfaces, so a little hacking is called for.

palm keyboards with adapter


As there are no cheap bluetooth HID modules, and dealing with battery management would be a pain, my goal is to adapt the PPK as a generic USB HID keyboard using a small ATmega32U4-based board, with a total budget of around than $20.



The code is complete and I've written 3D-printable OpenSCAD designs for both types of PPKs, along with a part for holding the Arduino. I've finished some basic documentation and assembly instructions. Code and implementation details are available on github.



The keyboard had several versions with different brandings and connectors for PDAs; I have and will test for the Palm versions with the dark grey metallic (3C10439) and the black plastic (P10713U) outer shells. These work with the simple 10-pin RS232-based interface of Palm Pilots at the time. A brief period of research led me to a number of very happy reviews from 1999 and a technical document from Think Outside detailing the exact pinout, serial protocol, and interfacing details (see link below). Notably, it's RS232 (basically inverted TTL serial) 9600n1, there's some handshaking necessary, there's a low power mode that needs to be managed, VCC can be 3.0-5.5V, the serial line depends on an external resistor, and the last page has all the key codes.

pcb for the 3C10439 keyboard


The keyboard's control circuitry is in the top of the center-right segment, and is underneath a plastic piece held down by three(?) screws and a strong piece of glue. Popping it open was rather difficult, and not really necessary, since the external interface is so friendly. Regardless, seeing the board and poking it with a multimeter confirmed expectations; it has a controller, a regulator, a pair of MOSFETs, and miscellaneous passives. One could hypothetically replace this board, but dealing with the size constraints and keyboard membrane doesn't seem worth it since we can easily use it as-is.


the pins of the Palm header, view from the front/top:

[NC] [VCC] [RXD] [RTS] [NC] [NC] [DCD] [NC] [NC] [GND]