Continuing the discussion from Initial Dvorak Layout, because my response has nothing to do with Dvorak, yet, I feel the topic deserves some discussion.
While the proposed solution of using a layer key on one hand to change the modifiers on the other hand may work, there is a simpler fix for the same issue: one-shot modifiers. You tap a modifier, and it remains active until you press any non-modifier, cancel it, or it times out. So to input Ctrl+Alt+Shift+A, you’d instead tap Ctrl, Alt, Shift, A. You can release each key, and thus you avoid the weird and uncomfortable finger gymnastics.
It is even possible to program the one-shots to only register the modifier once the final key in the sequence is pressed, so the host computer will see them at once, instead of first seeing a Ctrl held, then an Alt added, and so on. In most cases, the difference is not important, but both behaviours are fairly easy to implement.
I have been using one-shot modifiers for almost a year now, and loving them. So much more comfortable when you don’t have to hold keys!
(As a side-note, I wrote a few paragraphs about multi-use keys, one-shots and the like. That may be an interesting read for those who feel discomfort by extensive use of chords.)
I’ve never really played with one-shot modifiers, though they’ve always seemed like a good idea to me. I recall a story about “the world’s fastest typist” using Capslock as a one-shot Shift, since it let her type faster than chording the Shift key. [Citation needed]
My gut feeling is that they’re something I want to support, but not force on folks in a ‘default’ layout. I fear that the concept may be too weird for folks who aren’t 100% on-board already.
You may be thinking of Sean Wrona, who has a page on Typing, where he does recommend using Caps Lock instead of Shift. This writing started me on the path that lead to my use of one-shot modifiers: I originally used a sticky shift (and sticky modifiers) for a few weeks.
This is all very cool and inspiring! I’ve always expected the default setting to be a standard set, but hoping to be able to go nuts on customizing this keyboard. On Mac I’ve had a lot of success (and spectacular failures) customizing with Karabiner. I expect many will take advantage of this custom tweaking work you are talking about.
The best solution to the problem of RSI is prevention, so I’m so thankful for products like this to help us get ahead of the problem. I am blown away by the work and ideas continuing to go into this keyboard; it’s better than the Kickstarter suggested.
Thanks for considering support for ideas like a one-shot. I can’t wait to get hands on!
One thing to note that many users tend to forget, left and right ctrl, alt and win/menu keys are not the same keys, they have different scan codes and mean different things to the OS, this is especially true for international layouts but also affects a lot of other things.
This seems relevant here. I mostly use macOS, which does not make this distinction — however, I’ve found that mirroring all of my chording keys on my Kinesis Advantage keyboards has significantly reduced hand pain. (Shift, alt/option, control, and command are in an arc for each thumb, so I can use right-thumb modifiers for keys struck by my left hand, and vice-versa.)
So perhaps there are arguments for including left and right versions of these keys for all OSes.
While the modifiers on each side do have different keycodes, I found that it is very easy to remap keybindings to use only one set of modifiers. Nevertheless, one-shot modifiers work with two sets of modifiers just as well, the two things are not exclusive.
So you can have one-shot left Control, and one-shot Right control. Or even make one of them one-shot, the other normal. Whatever floats your boat.
The important part, in my opinion, is that no matter how many modifiers one wishes to use, chording is a bigger burden on hands than tapping, so using one-shots to turn chords into sequences can help with the pain, and with prevention too.
I think that’s a neat idea, but I’d be leery of having it be the default - I currently use modifier solo presses to send other events (e.g. pressing control by itself is escape, shift by itself is parenthesis) and I wouldn’t want to lose that ability (although in any case, I guess I could just change the firmware).
Thanks for the discussion - it’s been one of my big concerns about the Model 01, since my IDE uses so many chorded shortcuts, and I couldn’t see a good way to do that when all the modifiers are on the thumbs. I hadn’t heard of one-shot modifiers before; I’ll have to play with them.
We’ve also resculpted the thumb keys to make them easier to chord. (They used to be concave. They’re now convex. And we’ve stretched Esc/Butterfly to be easier to hit with your thumb.
As an Emacs user, one-shot modifiers would be a problem for me. Ctrl-X, Ctrl-S saves a file, for instance. However, it does also use multiple modifiers together sometimes, e.g. Ctrl-Alt-F.
What I think I would do is swap Fn and Control. To solve the problem with Alt and Shift, perhaps they could be used by opposite hands
I’ve been thinking about switching to a modal (i.e. vim-like) editing style for a while, but I’m not sure I’ll ever get to do it.
That’s not a problem, if one-shot only toggles the modifier off when a non-modifier is pressed, so you can chain multiple modifiers: Ctrl+Alt+F simply becomes Ctrl, Alt, F. That’s how I use it right now, and that’s how I implemented one-shot modifiers for my own firmware, which I’ll be porting to Keyboardio’s official firmware too.
I can only recommend Spacemacs if you want to give modal editing a try. I was sold within a few hours. (Still can’t stand vim, mind you, but the modal editing thing can be nice, with Emacs.)
Yes, that’s what I understood. I didn’t think that it would be a problem, It’s the chaining of binds of the same modifier (Ctrl-X, Ctrl-S) that I’m concerned about. I only mentioned Ctrl+Alt+F to indicate that non-evil Emacs users would need something to work in both scenarios.
I already tried it. It’s not ideal for me as I use the colemak layout instead of qwerty and last time I checked, there wasn’t very good support for alternative layouts. I’m not really a fan of “configuration frameworks” like this anyway.
Ctrl-x Ctrl-s works just as well. “Ctrl, x, Ctrl, s” will first send Ctrl+x, then Ctrl+s. You press the same keys, in the same order. The only change is that you release the modifier too, so instead of holding it through x and s, you tap it before each. One key more, but less holding.
My one-shot implementation also supports holding, so you can enter Ctrl+x Ctrl+s like usual; you can also double-tap Ctrl to make it sticky, in which case the combo becomes “Ctrl, Ctrl, x, s, Ctrl”, but still sends the same keystrokes.
Everything that can be entered with chording, can also be done with one-shots, with minor changes. My experience is that if you feel discomfort during chording, one-shots help, and the shortcomings (such as in the case of using the same modifier twice, with different keys in addition) are much smaller than the benefits.
That entirely depends on how bad you feel about chording. For most people, holding a key through a number of other keypresses is not an issue. For me… nope, not going to do that, I’d rather tap the modifier a few more times.
But you just gave me a good idea: I’ll create a firmware variant that can toggle one-shot at runtime. Tap some magic sequence, and all the modifiers become one-shot, and the setting is saved to EEPROM. Tap the sequence again, and your modifiers are back to normal. This sounds like a good way to introduce people to one-shot: having it available, but off by default, and they can turn it on without recompiling or reflashing anything.
I’d be inclined to require a second hotkey to save all current settings to eeprom, which is more friendly to people who accidentally trigger something they weren’t expecting.
That is a good principle to live by when introducing novel but powerful features.
Depends on the game, and the player a bit. I have no problem playing games with one-shot modifiers, but the set of games I play is… limited. Takes a bit of getting used to, but once you are typing comfortable with one-shots, games will likely not be an issue, either. May need a bit of work rebinding some keys in games too, mind you.
Nevertheless, I’m happily playing Diablo3 with oneshots, where both the Force stand and force move actions are bound to one-shot keys. If I want to use either of these actions for a longer time: double-tap for sticky. If I want to use them for a bit, around a second or two, just tap for one-shot, and it will timeout. If I want to use them for shorter than that, my ESC is bound to cancel one-shots, if any are active (and not register a keycode in that case), and is next to my Shift key, so I can just swipe with my thumb.
Works fine, but as I said, needs getting used to, and dedication. Not for everyone, definitely, but it can work, if you want to avoid chords at all costs, which I happen to want
I’m not a fan of too many magic key bindings. I’d have one magic keybinding, that you can hit for, say, a minute or two after plugging the keyboard in, to enable all the others. If you fail to input the magic combo, none of the others will be available, either, so you won’t accidentally hit them, either. But once it is enabled, the enable flag is saved to EEPROM too, and you won’t need to re-enable it next time your keyboard boots. But it can be disabled with the same key combo anytime.
So, say, the magic combo is both Fns pressed, along with the Butterfly key, and MAGIC. That’s not something you’d hold down under normal circumstances, isn’t terribly comfortable either, takes effort to contort your fingers into the proper position, and that minimizes the chance it will be triggered by accident. But still possible to trigger it within a reasonable amount of time.