{"id":1196,"date":"2013-11-21T21:34:09","date_gmt":"2013-11-21T19:34:09","guid":{"rendered":"http:\/\/blog.ulrichard.ch\/?p=1196"},"modified":"2013-11-21T21:34:09","modified_gmt":"2013-11-21T19:34:09","slug":"chording-bluetooth-keyboard","status":"publish","type":"post","link":"https:\/\/ulrichard.ch\/blog\/?p=1196","title":{"rendered":"chording bluetooth keyboard"},"content":{"rendered":"<p>Wearable computing is much older than Google glass, and even head mounted displays were around for a while. Personally, I&#8217;m looking forward to affordable devices of that type. The display seems to be a very good solution, while voice entry can be awkward. The <a href=\"http:\/\/hak5.org\/episodes\/hak5-1101\" target=\"_blank\" rel=\"noopener\">Hak5 podcast aired an episode<\/a> last year about a guy that has walked around with a head mounted display and a computer in his backpack for a long time. While the display is certainly cool, what was most intriguing to me was the keyboard. He uses a one hand device with key press combinations that he can operate while walking around.<\/p>\n<p>I didn&#8217;t find his exact model when searching the Internet, and while there are some devices around in this category, the selection is very sparse. They are called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chorded_keyboard\">chorded keyboards<\/a>, and were first introduced in 1968 at what is often called &#8220;<a title=\"The Mother of All Demos\" href=\"https:\/\/en.wikipedia.org\/wiki\/The_Mother_of_All_Demos\">The Mother of All Demos<\/a>&#8220;. Then I found out that there is an open standard for this sort of thing. It&#8217;s called <a href=\"http:\/\/gkos.com\/\" target=\"_blank\" rel=\"noopener\">GKOS and stands for Global Keyboard Open Standard<\/a>. They experiment in lots of different directions, but no commercial product seems to have come out of this so far. Amongst the different experiments, there is an <a href=\"http:\/\/playground.arduino.cc\/Main\/GkosMain\" target=\"_blank\" rel=\"noopener\">Arduino project to build a GKOS keyboard<\/a>, but I considered an Arduino with custom buttons too bulky for practical use.<\/p>\n<p>A while ago, I ordered a <a href=\"http:\/\/dx.com\/p\/6-key-usb-handle-hid-keyboard-173cm-cable-70892\" target=\"_blank\" rel=\"noopener\">cheap 6-key HID device<\/a> that I wanted to use to try GKOS myself. I tried a while with key remapping but to no avail. And I strongly suspected, the device could not handle key combinations at all.<\/p>\n<p>Last week, I somehow remembered my failed past attempts, and thought that a bluetooth device would be cool. I quickly confirmed that all the DIY bluetooth modules that I had were not capable of HID but only UART. Then I found a <a href=\"http:\/\/www.play-zone.ch\/en\/adafruit-bluefruit-ez-key-bluetooth-hid-kb-controller-v1-1.html\" target=\"_blank\" rel=\"noopener\">simple to use bluetooth HID module<\/a>, that was apparently released just two months ago. What a coincidence!<\/p>\n<p>The first test with the GKOS Arduino code on a breadboard was successful. So, I disassembled the USB device, and re-soldered the buttons to an AtMega8 and added a lithium battery from a defunct tiny quadrocopter.\u00c2\u00a0 But after I soldered everything together, only some keys would work. I was sure, an AtMega8 would be able to handle this simple task with ease, but I had to use an Atmega328 to make it work. It costs a few bucks more, but much less than the time for finding out what the problem with the AtMega8 was. I didn&#8217;t inspect the code throughly enough yet, but maybe the AtMega8 is just missing some hardware interrupts.<\/p>\n<p>So far, I&#8217;m very slow at typing, and I have to peek at the <a href=\"http:\/\/gkos.com\/gkos\/gkos-charset.html\" target=\"_blank\" rel=\"noopener\">cheat sheet<\/a> for most characters, but with a bit of training that should improve. My prototype works well for two handed operation, but I think one handed operation would be the way to go, although I don&#8217;t know if GKOS is really suited for that.<\/p>\n<table>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/ulrichard.ch\/piwigo\/index.php?\/category\/21\"><img decoding=\"async\" src=\"https:\/\/ulrichard.ch\/piwigo\/_data\/i\/upload\/2014\/09\/15\/20140915162130-9a3ea795-th.jpg\" alt=\"\" \/><\/a><\/td>\n<td><a href=\"https:\/\/ulrichard.ch\/piwigo\/index.php?\/category\/21\"><img decoding=\"async\" src=\"https:\/\/ulrichard.ch\/piwigo\/_data\/i\/upload\/2014\/09\/15\/20140915162133-4fbb072a-th.jpg\" alt=\"\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Wearable computing is much older than Google glass, and even head mounted displays were around for a while. Personally, I&#8217;m looking forward to affordable devices of that type. The display seems to be a very good solution, while voice entry can be awkward. The Hak5 podcast aired an episode last year about a guy that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,1],"tags":[39,95],"class_list":["post-1196","post","type-post","status-publish","format-standard","hentry","category-projects","category-uncategorized","tag-bluetooth","tag-gkos"],"_links":{"self":[{"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1196"}],"version-history":[{"count":0,"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1196\/revisions"}],"wp:attachment":[{"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ulrichard.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}