Keycoder Version 1.0

fre 14 september 2012 by kilroy-71

A project that I have been working on lately is a piece of hardware that converts keystrokes from an ordinary QWERTY layout to DVORAK, like the QIDO Dvorak Adapter. My version converts currently from Swedish QWERTY layout to SVORAK (Swedish Dvorak). The purpose with the project is mostly for education purposes to learn PIC and AVR-based programming, but also for fun of course! A bonus is that the device is really useful for me as I often work on different computers and by using the converter I do not have to change the keyboard layout in each computer.

I have been using the Teensy USB board , which is a very nice AVR-based (ATMEGA32U4) piece of hardware that interfaces the USB port of a computer. In my case it acts as a USB HID device. It communicates with a PIC based USB host card from through the UART. To add a touch of retro feeling to it, I have added a very cool LED display that has four 5x5 pixels wide dot matrices. The display is an OSRAM SCDQ5542P. It uses only three pins for the serial communication interface (SCLK, SDATA, LOAD). I have used a basic bitbanging technique to show data on the display. There is no builtin character set so it has to be defined manually.

I have a first version running now. It supports all basic keys on a keyboard and has a menu for switching between QWERTY/DVORAK, swap CAPS LOCK and CTRL and also a menu entry to enter the bootloader for reprogramming (to make it possible to reprogram it without opening the case). The display shows information by scrolling the text in the four character display. To further improve device, I plan to add support for multimedia keys and also to investigate how to store user settings in eeprom memory.

The basic design and code is based on irongeeks keylogger. The Teensy code that I have used is written from scratch by me except for the basic services as UART communication and USB keyboard code which are originally from the examples at the Teensy site,

Here are some pictures:

Click here to view or leave comments