# Chording and discomfort

**URL:** <https://community.keyboard.io/t/chording-and-discomfort/110>\
**Category:** Typing & Ergonomics\
**Created:** [November 7, 2016, 11:14pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110 "2016-11-07T23:14:48Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 7, 2016, 11:14pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/1 "2016-11-07T23:14:48Z")

</div>

Continuing the discussion from [Initial Dvorak Layout](https://community.keyboard.io/t/initial-dvorak-layout/13/48), because my response has nothing to do with Dvorak, yet, I feel the topic deserves some discussion.

> [@Initial Dvorak Layout](https://community.keyboard.io/t/initial-dvorak-layout/13/48):
>
> I couldn’t agree more… and would want to take it a step farther. As a programmer, my IDE requires tons of modifier chords (Ctrl+Shift, Ctrl+Alt, Alt+Shift, and the dreaded Ctrl+Alt+Shift). This is the biggest cause of typing discomfort for me. Minimally, I need to do all those chords on one hand, without major contortions, while typing the modified key on the other hand.

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](https://asylum.madhouse-project.org/blog/2016/10/15/multi-purpose-keys/) 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.)

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [November 7, 2016, 11:27pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/2 "2016-11-07T23:27:26Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 7, 2016, 11:31pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/3 "2016-11-07T23:31:55Z")

</div>

> [@jesse](#):
>
> 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]

You may be thinking of Sean Wrona, who has a page on [Typing](http://www.seanwrona.com/typing.php), 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.

---

<div class="post-metadata">

**Author:** ![arley](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/arley/32/56_2.png) [@arley](https://community.keyboard.io/u/arley)\
**Post date:** [November 8, 2016, 1:04am UTC](https://community.keyboard.io/t/chording-and-discomfort/110/4 "2016-11-08T01:04:56Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![ErikMH](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/erikmh/32/275_2.png) [@ErikMH](https://community.keyboard.io/u/ErikMH)\
**Post date:** [November 8, 2016, 1:14pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/5 "2016-11-08T13:14:27Z")

</div>

Under [Colemak layouts](https://community.keyboard.io/t/colemak-layouts/44/27), @antevens wrote:

> 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.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 8, 2016, 1:39pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/6 "2016-11-08T13:39:48Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![james.nvc](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/james.nvc/32/54_2.png) [@james.nvc](https://community.keyboard.io/u/james.nvc)\
**Post date:** [November 8, 2016, 4:42pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/7 "2016-11-08T16:42:07Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 8, 2016, 4:44pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/8 "2016-11-08T16:44:52Z")

</div>

Yep, definitely not default material. The topic’s here to help those who don’t want to chord, to show them there are alternative options.

---

<div class="post-metadata">

**Author:** ![kajsa.anderson](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/kajsa.anderson/32/346_2.png) [@kajsa.anderson](https://community.keyboard.io/u/kajsa.anderson)\
**Post date:** [November 9, 2016, 12:34am UTC](https://community.keyboard.io/t/chording-and-discomfort/110/9 "2016-11-09T00:34:52Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [November 9, 2016, 1:04am UTC](https://community.keyboard.io/t/chording-and-discomfort/110/10 "2016-11-09T01:04:24Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![alanpearce](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/alanpearce/32/686_2.png) [@alanpearce](https://community.keyboard.io/u/alanpearce)\
**Post date:** [November 10, 2016, 11:35am UTC](https://community.keyboard.io/t/chording-and-discomfort/110/11 "2016-11-10T11:35:07Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 10, 2016, 12:06pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/12 "2016-11-10T12:06:38Z")

</div>

> [@alanpearce](#):
>
> 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.

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.

> [@alanpearce](#):
>
> 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.

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.)

---

<div class="post-metadata">

**Author:** ![alanpearce](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/alanpearce/32/686_2.png) [@alanpearce](https://community.keyboard.io/u/alanpearce)\
**Post date:** [November 10, 2016, 12:58pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/13 "2016-11-10T12:58:41Z")

</div>

> [@algernon](#):
>
> Ctrl+Alt+F simply becomes Ctrl, Alt, F

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.

> [@algernon](#):
>
> I can only recommend Spacemacs if you want to give modal editing a try

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.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 10, 2016, 1:58pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/14 "2016-11-10T13:58:43Z")

</div>

> [@alanpearce](#):
>
> 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.

`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.

---

<div class="post-metadata">

**Author:** ![alanpearce](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/alanpearce/32/686_2.png) [@alanpearce](https://community.keyboard.io/u/alanpearce)\
**Post date:** [November 10, 2016, 2:15pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/15 "2016-11-10T14:15:44Z")

</div>

> [@algernon](#):
>
> My one-shot implementation also supports holding

Aha. Then I don’t think there would be a problem. The sticky concept is interesting, but it seems like more work in this particular case.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 10, 2016, 2:20pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/16 "2016-11-10T14:20:34Z")

</div>

> [@alanpearce](#):
>
> The sticky concept is interesting, but it seems like more work in this particular case.

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.

---

<div class="post-metadata">

**Author:** ![antevens](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/antevens/32/190_2.png) [@antevens](https://community.keyboard.io/u/antevens)\
**Post date:** [November 10, 2016, 2:23pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/17 "2016-11-10T14:23:46Z")

</div>

That sounds like a good idea, that would also cover people who play video games where any stickyness or one-shot features would cause serious issues.

---

<div class="post-metadata">

**Author:** ![andrewg](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/andrewg/32/43_2.png) [@andrewg](https://community.keyboard.io/u/andrewg)\
**Post date:** [November 10, 2016, 2:37pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/18 "2016-11-10T14:37:33Z")

</div>

> [@algernon](#):
>
> the setting is saved to EEPROM

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.

> [@](#):
>
> having it available, but off by default, and they can turn it on without recompiling or reflashing anything.

That is a good principle to live by when introducing novel but powerful features.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 10, 2016, 2:40pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/19 "2016-11-10T14:40:29Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [November 10, 2016, 2:56pm UTC](https://community.keyboard.io/t/chording-and-discomfort/110/20 "2016-11-10T14:56:08Z")

</div>

> [@andrewg](#):
>
> 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.

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 `Fn`s 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.

[Next page](https://community.keyboard.io/t/chording-and-discomfort/110.md?page=2)
