Some wishes taken from wishes posted on the Ergodex forum, linked as appropriate.
Wishes are (currently) in no particular order.
On a regular keyboard there are modifer keys (shift, control, alt, windows, numlock, capslock, etc), when pressed groups of other keys can behave differently. The same functionality is required for the DX1 pad, but with more control of which keys causes a set of other keys to change.
I (Hydra) envisage the following:
able to assign one or more to a named group
e.g. assign keys 1-4 to key group “wasd movement” mappings: 1-W, 2-A, 3-S, 4-D assign keys 1-4 to key group “cursor movement” mappings: 1-UP, 2-LEFT, 3-DOWN, 4-RIGHT
able to enable any key to toggle a named group
momentarily while pressed, press and release to cycle groups, or press and release to change permanently
e.g.
assign key 5 so that when pressed and held the keys 1-4 are reprogrammed as per the “cursor movement” group.
assign key 5 so that each time is it pressed an released it enables the next key group in it's (cycle) list of key groups (wasd movement → cursor movement → was movement …)
assign key 5 so that when pressed and released it maps any keys in a named group assigned to it. If it's pressed again it will do whatever it's currently configured to do.
be able to assign a modifier key (key 5 in our example) to a key group
e.g.
assign keys 1-11 to key group “set 1” as follows:
assign keys 1-5 to key group “set 2” as follows:
assign keys 1-12 to key group “set 3” as follows:
assign keys 1-10 to key group “set 4”
This flexibility will let you do totally crazy things with your DX1 pad! You would be able to emulate a frogpad and other forms of chorded input with this, allowing sending of any character via the DX1 with only a minimal amount of keys.
One post makes mention of the fact the toggle states would sometimes need to be visible, otherwise you've no idea of the state of the keys on the pad just by looking at it. One possible solution to this might be to use the led's on the device to communicate to the user it's current state. Each keygroup could say, “when i'm active, do this to the leds: blink combination 1”. Of course it's also possible to have on on-screen UI to show you the sites (think vista sidebar plugin), but that's no good if you're running a fullscreen application or game. Hooking up an led dot matrix display via USB and positioning it somewhere suitable is of course another option (see www.thinkgeek.com for led/lcd dot matrix USB displays and open-source drivers for them).
Here's an example of a simple layout that requires “toggle” modifier keys.
Various posts in the Ergodex forums cover things like this, my example above caters for them all.
http://www.ergodex.com/forum/viewtopic.php?t=310
http://www.ergodex.com/forum/viewtopic.php?t=319
http://www.ergodex.com/forum/viewtopic.php?t=301
http://www.ergodex.com/forum/viewtopic.php?t=70
http://www.ergodex.com/forum/viewtopic.php?t=220
Macros that repeat forever, until the key is pressed again.
Need to be able to cut and paste different bits of macros together when creating/editing a macro
The original Ergodex software does not differentiate between the two different enter keys as well as ”/” and “Numpad /” on a standard keyboard
It's not possible to use more than 1 DX1 per computer at the same time.
If an on-screen keyboard is displayed it should show the user's current keyboard with the keycaps in the right place. Pressing “Q” on any keyboard should always show the icon for the keycap “Q” in the UI. Both azerty and qwerty send the same scancodes. However in order for user's of “azerty” keyboards to share their configurations to users of “qwerty” keyboards (e.g. that contain macros that type in words like “quazar” with a keypress) I think the manager will need to be configured to send keys as “text” to the OS (either by raising different events, or perhaps the same kind events but passed though a keyboard layout translation layer)
Instead of sending keyboard shortcuts, send midi commands!
Combined with shift states and possible a dot matrix line display this would make the DX1 a very powerful tool!
Allow people to write plugins (see MIDI support above), primarily for handling key presses and releases (and configuring the actions taken when keys are pressed and released).