Nice! I wish you luck in this exciting project.
I think a fob like this should be about mapping keystrokes to new keystrokes, essentially. That means there won't be AltGr mappings or dead keys (that map symbols to keystrokes by sending codes to the "Input stream"). The symbol sending would probably be OS dependent too, and we want this fob to work as a keyboard for any machine that can use a keyboard be it a PlayStation, a smart phone or a Mac. So from my Big Bag of Tricks, scratch the Colemak[eD] mappings (1.1), dead key enhancements (1.3) and locale layouts (3.1).
Primary layouts will be the main point of course, and there could be a decent number of those available although for any one user only a couple would probably be needed. I like the Ctrl+Shift+# convention for changing layouts, which gives you a dozen options or so. It'd be kinda nice if the Tarmak layouts could be in there as well as Colemak for presentation purposes, but it may on the other hand be largely unnecessary as the Tarmaks are a temporary need and later on they'll just be in the way in there. I don't know.
The Extend mappings (BBoT 1.2) would be great! And maybe the Mirror mappings too (BBoT 4.2) although the demand for that has been low so far. These are key-to-key remappings like layouts, but need one or more modifier keys. So they could be defined in the same format as normal layouts, but numbered separately and instead of activating them normally you could set modifiers with which to activate them. The best would be a configurable modifier: E.g., pressing Ctrl+Shift+`, 1, and then, say, the <> key would set that as your modifier for Extend layer #1. Ctrl+Shift+`, 1 and then Ctrl+Shift+` again could disable that modifier. I'd like the following Extend layers to be available:
• Normal Extend #1
• Extend #2, KeyPad layer (see the Extend part of my Big Bag topic)
• Mirrored Colemak
• Extend #3, maybe a programmer's layer?
One question is whether a modifier could be made either a switch (like normal Shift works), latch (like a dead key) or lock (like CapsLock). Maybe complex, but for a KeyPad layer it could be handy to be able to lock it on. In Linux a solution for this is to let a combo of switch modifiers (say, two level5 modifiers together) work as a lock modifier – and the next such press would release the lock again.
Another question is how to get enough modifiers with only a few free keys to choose from! I like the thought of having, say, Caps as the Extend#1 key but, say, Alt+Caps (and after that you only need to hold Caps down) as the Extend#2 key. Some also like on-release modifiers that act as a modifier while held down and then give their normal KeyDown stroke on KeyUp instead (typically this is used for having Space as a modifier).
I haven't specified a programmer's layer myself, but I see that some like them. As you may know, they're about getting common coding symbols in easy positions. Maybe even some key ligatures like "<, >, left" which creates a bracket pair and puts you inside it (similarly for '', or "// " for inserting a C comment). I think it'd be kinda cool to have a key that spews out a bunch of asterisks or hashes – say, 10 at a time – for separator lines in comments. This means supporting more than one output key from one input key. Might be a decent thing in general.
Now, the ergo mods (BBoT 2.1/2.2) and such. These are really important to me, as if you have to specify each combo of a layout and mods the number of layouts will balloon. So here modularity is ideal. In my head, it goes like this:
1) I press Ctrl+Shift+1 for Colemak
2) While holding down Ctrl+Shift, I now press, say, 7 for Curl-DbgHk
3) Still holding the modifiers, I finally press, say, 5 for WideAngle(Slash)
Sure, it'll make it less simple to switch layouts but I think it'd be nice. What this means is that some remappings will be partial and cumulative. In the example above, the Curl remapping would swap around whatever keys were mapped to the 'D', 'B' and 'G' as well as 'H' and 'K' (Colemak) positions. The WideAngle remapping would then shift the right-hand and lower left-hand half-rows from the previous step so you'd end up with a combo of your layout and the two selected ergo mods! This opens for many possibilities.
All this may be way too much for now, of course. First things first I guess, getting a layout to work. Making it a Curl-AngleWide-DoubleMochaccino-Colemak could be accomplished by actually specifying all your preferences before compiling (as I guess you will make your fob reprogrammable like the Arduino?). But at least keep the modifier/Extend thing in mind because the Extend layer is something I really miss to have around when using a keyboard without it.
Last edited by DreymaR (07-Feb-2015 15:02:56)