The Hex-map GUI paradigm
"so you never have to leave the keyboard"
Hex-map is a way to design fully keyboard-controlled PC GUIs
The mouse is not used in a hex-mapped GUI at all.
i.e. No more switching back and forth between keyboard and mouse
Figure 1. Hex-map's keyboard map
Hex-map achieves this by using a map of the alpha-numeric keys of the keyboard
to an on-screen hexagonal grid
This map is like a large discrete mouse pad
The map can be moved both horizontally and vertically
to cover all points on the screen's hex-grid
While this map is used for gross screen-space selection
3 designated keys each on the right and left edge of the keyboard
are used to refine this coarse selection
These keys are outside of the alpha-numeric keys that are used for the map
The space-bar serves the function of a mouse button (click).
It executes the behavior associated with the currently selected screen-space point
The remaining keys on the kayboard may be used as direct-mapped controls
by an application designer.
These include the function keys, the keys in the space-bar row and the corner keys of the top row.
A hex-mapped UI is constructed by
placing different UI widgets on the on-screen hex-grid (on-screen controls)
or by designating direct-mapped controls from the available keys.
The user of a hex-mapped app, selects an on-screen control or a direct mapped control
and executes its underlying behavior using the mechanisms described above
Hex-mapped GUIs, by their very nature, are very efficent
because all controls come from the keyboard and there is no mouse involvement.
Once a user gets accustomed to the keyboard map, which happens very quickly,
most UI functions can be executed with a few keystrokes.
The time required to go to the mouse, move it, select and click is saved completely.
The App-constructor tool
Hex-mapped apps are designed using a tool called the App-constructor
This tool is itself a hex-mapped app
Most of a hex-mapped app is a bunch of C functions
The App-constructor tool is a way to write these functions and manage them.
It outputs a single .cpp file which it builds and runs using the GNU toolchain.
Currently it is built using a cross-platform library -- wxWidgets
Later, we plan to produce an App-constructor for Swift/Cocoa on OSX.