In my heart I know we are stuck with the QWERTY keyboard but that doesn’t stop me wanting something different. I have thought about switching to Dvorak or Colemak key assignments but don’t want to deal with the problem of mental interference when I have to switch back to a normal keyboard.
On a search for alternate keyboards I came across the Accukey, a ternary chord keyboard [1]. The keyboard consists of 8 switches designed pushed or pulled from a center off position, one per finger. The switches are used in pairs, 1 left 1 right, to form a chord giving a total of 64 combinations.
My thinking is that this radically different keying method would give minimal interference to the typing skills that I have already.
Limited internet searching didn’t turn up the right sort of switches but I thought I could put together a test rig to sort out the code and hardware; the results of my efforts are presented here.
Hardware description:I used 2 push-buttons to simulate each of the switches in the original design with 1 push-button representing the forward push and the other the backward pull, each switch is connected up to a port pin set as input with its internal pull up enabled.
The 5 volt LED’s are connected to 4 port pins set as output.
I mounted everything on a custom PCB.
I used 2 socket strips to plug my Arduino Micro into the PCB.
The switches are debounced using a software routine I found in a PDF called Debouncing by Jack G Ganssle [2] the routine is set to be called every 100th second by the Arduino timer 1 interrupt.
The main line code responds after the release of a key chord.
The key character is located and printed from a table using the technique listed in the original patent [3].
I came across 2 different key maps for this keyboard, the one in the original patent and the other [4] shown on a web page devoted to various keyboards [5].
I originally intended to implement the key mapping shown on the keyboard web-page but I did think the key mappings weird; for example the 2 pinkie fingers which I consider the weakest and least coordinated, are used to generate the character e (the most common English letter). The key mapping in the patent seemed much more sensible so I implemented most of that instead.
I did make some changes:
I corrected a number of inconsistencies and errors in the patents key mapping tables.
Instead of uppercase and lowercase I implemented shift and caps lock.
The key-map:As set up only 2 function keys are mapped to the keyboard. My thinking is to, at a later date, map one of them as the alt key and leave the other as function but arrange things so that the user first keys function then the number of the required function e.g. Fn then 11 for function 11.
On my original PCB I attached the Fn LED to PB0 and couldn’t get the LED to work.
I have altered the board design posted here; the Fn LED is now attached to PD4 (untested).
I had some difficulty with the key table in getting it to print the characters “ @ and #.
I eventually found out that the keyboard library implements a US keyboard and when used on a machine not set for a US keyboard some of the characters will be altered.
I left the problem characters in their original table positions as per the patent, so if you get unexpected characters this is the reason.
Oddly when you print the same characters to the serial monitor they are displayed correctly.
Notes:I am still looking for the right type of keys to make a full size unit.
Accucorp was a US registered trademark; a trademark electronic search (TESS) lists it as dead. (1/Oct/2017)
Accukey seems not to have been listed as a trademark (TESS 1/Oct/2017), there is an accu-key listed but this is for a key cutting machine.
The original keyboard patent has expired (Date of patent: Oct 4 1988).
References:- [1] http://www.tifaq.org/images/accucorp-accukey-kb.gif Picture of original Accukey (retrieved 1/Oct/2017)
- [2]http://www.eng.utah.edu/~cs5780/debouncing.pdf (retrieved 17/Dec/2017)
- [3] https://patents.google.com/patent/US4775255A/en Original patent (retrieved 5/Oct/2017)
- [4] http://www.tifaq.org/images/accucorp-accukey-kbmap.gif Keymap (retrieved 1/Oct/2017)
- [5] http://www.tifaq.org/keyboards/chording-keyboards.html (retrieved 1/Oct/2017)
Comments