Sunday, May 18, 2008

Symbolics Keyboard on PS/2 port

I have been busy with hacking Hunchentoot and flexi-streams at daytime during the last few weeks, and wrote a thread-safe version of a simple deterministic profiler for Clozure CL so that I could isolate performance problems. I'm going to blog about that stuff in a few days, but as that is daytime work, I had to find something else to relax on the weekend. Thus, I turned my attention to the kbdbabel hardware that I received last week. A few months ago, I emailed Alexander Kurz, who is the creator of the kbdbabel project, whether he could help me getting a PS/2 adapter for the Symbolics keyboard to work. At the time, he had created PS/2 adapters for various vintage keyboards and he expressed his interest. We could not make much progress, though, as he did not have a keyboard and I lacked the knowledge to adopt the 8051 based assembler code to the needs of the Symbolics protocol. I'm mostly an AVR guy when it comes to microcontrollers. Alexander was intimidated enough by the pictures of the various Symbolics keyboards that he decided to get one and make a kbdbabel for it. I was more than happy when he contacted me out of the blue a few weeks ago and told me that he now has a solution. The hardware he sent did not work right away with my Thinkpad, but that was because the Thinkpad's PS/2 port do not quite work like most other PS/2 ports do. Thus, I had to get a PS/2 to USB adapter for 10 Euros. With that, the adapter worked as advertised. I had to complete the keyboard mapping so that all keys in the default Open Genera map are mapped to a key on the Symbolics keyboard. This means that there are no mappings for several keys (the square, circle and star keys among them). Supporting those keys will require changing the Open Genera X11 keyboard mapping code, which is something I'll put onto my "weekend projects" list now. I have not yet tested the adapter with the "slim" keyboard - I only have a 3600 one right now and the two "slim" keyboards I bought from David K. Schmidt are still in Cambridge and won't be with me until next month. Contrasted to the 3600 keyboard, the "slim" keyboard is microcontroller based and will most likely require different timing than the TTL based old-style keyboard. Other than that, the keyboards should be compatible and the adapter should work with both variants. I'm going to build a few adapters for myself and some friends of mine. If you want one as well and don't like to do the soldering yourself, contact me.


  1. Oh, dear, and I thought I was bad with my Model M...

    Very impressive; are you using Genera on a modern computer, then?

  2. Why not just buy the Symbolics-to-ADB adapter sold with the MacIvory kit, then use a Griffin iMate to do the ADB-to-USB conversion? You might be able to even stack a USB-to-PS2 adapter on the end of that.

  3. This comment has been removed by the author.

  4. Great news on the Symbolics keyboard front!

    Just wanted to reply to bill bradford's comment: Symbolics-to-ADB adapters (and also ADB-to-USB adapters) are pretty scarce these days. I was very lucky David K. Schmidt was able to sell a Symbolics ADB box to me, removing my motivation to develop a solution to this problem.

  5. kbdbabel now supports the slim keyboard, too! The timing is less tricky than we have feared, and I used the keyboard during my work day yesterday without problems (other than the layout, which I'm not used to). Alexander Kurz is now working on some finalizing features; in particular, we want to use the Local and Mode Lock keys to switch the right hand side modifier blocks so that they behave like cursor and PgUp/PgDown keys. This will make the keyboard more usable with current desktop environments.