Thursday, September 17, 2015

Styra Navigation Keyboard Prototype



Now presenting the Styra Navigation Keyboard prototype. This keyboard is designed to allow someone to browse websites without use of a mouse.

Figure 1:  Styra Navigation Keyboard

This keyboard required several iterations before we had a working prototype. It all began with Phill making a list of the keyboard shortcuts he uses most frequently. Then he added a couple extra functions that he typically uses a mouse for. Armed with that information I built the first draft of this keyboard. Using the keyboard helped to refine the list further. Figure 1 shows the prototype I have been working with. And yes, that is dry-erase marker on the buttons. We still need to figure out the button labeling, but for now it works. The following is a list of the functions this keyboard can perform:
  • cursor up
  • cursor down
  • previous page (back button)
  • next field (tab)
  • select (enter)
  • previous field (shift tab)
  • open bookmark manager
  • add bookmark
  • new browser tab
  • close browser tab
  • next tab
  • previous tab
  • reload page
  • zoom in
  • zoom reset
  • cancel (esc)
After using the keyboard, we have identified several more functions that can easily be added to the navigation keyboard:
  • username - automatically type out a preconfigured username
  • email - automatically type out a preconfigured email address
  • password - automatically enter a preconfigured password.  Not secure, I know, but very convenient.


Beyond the basic functionality shown above, a lot of work has gone into the internal software that makes this keyboard function. First is the keyboard library itself. Each button press invokes a macro that consists of two components. The first is the action—or key strokes—that will be sent to the computer. The second is the action type, or how the action will be performed. For instance, sending the action CTRL + ALT + DEL to the computer one key-press at a time doesn't do anything except possibly delete a character. However, pressing them all simultaneously triggers a reboot. The Styra keyboard library supports up to 28 characters in the action field and the following five action types:

  • Click - simultaneously send all action characters to the computer in a single event.
  • Double-click - simultaneously send all action characters to the computer twice in two separate events.
  • Press - simultaneously press and hold all action characters until the button is released.
  • Latch - simultaneously press and hold all action characters.  Buttons are released when the button is pressed a second time.
  • Sequence - send each action character one at a time to the computer

The second library developed for this prototype is the controller library. This simplifies working with the custom 16 input modules and includes a routine to scan the i2c bus and automatically detect connected controllers (as long as they have unique addresses). This is the first step toward being able to modify the hardware configuration of the keyboard without recompiling the Arduino firmware.  This library handles polling the buttons and managing the button numbering to make it easier to assign configuration macros to a button.

The third library is an interface that defines the macro actions and action types and how the keyboard library can interact with them. The first implementation of this interface uses an eeprom chip to store the macro definitions. I'm really proud of this library because it was my first time using the SPI bus and my first time working with an eeprom. I am using the SPI bus because I had a bunch of these chips laying around from a kit I purchased several years ago that I never built. :)
Figure 2:  Case for the 16 input controller


The Navigation Keyboard Prototype also debuts the first draft of a case Phill is designing for the 16 input controller boards. The camera flash really accents the printing lines, but the case is a perfect fit with a lego compatible bottom and Roy's Styra logo embossed on the top!




3 comments:


  1. Have you ever considered about including a little bit more than just your articles? I mean, what you say is fundamental and everything. However think of if you added some great visuals or videos to give your posts more, "pop"! Your content is excellent but with pics and videos, this website could undeniably be one of the greatest in its niche. Amazing blog! sign in hotmail

    ReplyDelete
  2. I have bookmarked your website because this site PROJECT DRAFT

    ReplyDelete
  3. we both have those traditional picture frames and digital picture frames at home. both are great for displaying family pictures,, https://royalcbd.com/product/cbd-oil-500mg/

    ReplyDelete