Holding shift after pressing space effectively holds space -- how to fix?

That’s about as well as I can describe it. If I’m holding shift with my left thumb to capitalize the first word of a new sentence as I’m still pressing space with my right thumb, it’s like I never let go of space, I look up and there’s a big gap of spaces like this.

Is there a way to fix this? It’s really throwing me off.

If I understand correctly, the sequence of events is like this:

  1. space down
  2. shift down
  3. space up
  4. X down
  5. X up
  6. shift up

The last couple of input events might be in the other order. And you’re getting multiple space characters, until the X appears, even after space is released. Are you holding shift for a while before typing X (or whatever the next key is), or is the output from that key delayed?

It would help to know more about your keymap, what plugins you’re using, and whether you’re using a custom sketch or firmware installed by Chrysalis.

Yeah that’s pretty much the rub of it. I’m using a model100, stock. You should be able to easily replicate it–you don’t even need get so far as hitting x. Just steps 1-3 and you’ve got it–if you don’t terminate with a key it’ll just output ( when you lift shift.

I’m holding shift for a second or two before the keystroke because I’m still in the learning curve and am moving slowly. Everything is factory. I’ve changed some basic keymaps but nothing dramatic, changed cmd to alt, prog to esc, butterfly to Windows key, stuff like that. This has all been done via Chrysalis.

You’ve got SpaceCadet turned on. You should be able to turn that off in the options via Chrysalis somewhere. It’s default timeout is probably set too long.

Yeah but I like that functionality. Shift turning into () is handy as hell.

This doesn’t seem to be working correctly. Maybe I should post this as a bug report?

What do you have set as the timeout for SpaceCadet? It looks like the default is 200ms, which should be short enough to avoid causing the repeating characters that you’re seeing. SpaceCadet preserves the order of input events, which means that the space key release gets delayed until it’s known which value the shift key will resolve to (shift or (). So if you set your timeout very high (e.g. 2000 ms), you’ll see repeats if you roll over from a printable character to shift and hold the latter down for a while. So check your SpaceCadet timeout in the “My Keyboard” section of Chrysalis preferences. If it’s set to a reasonable value (like 200ms), and you’re still getting repeats, or if the repeats go on indefinitely while you hold down the key, rather than stopping after the timeout expires, that’s something that warrants a Kaleidoscope bug report.

I’ve tested it out on an Atreus just now, and it works exactly as I expect it to. I can get several repeats with a rollover to shift, but only if I set the timeout to a value much higher than the default. It’s still possible to force a single extra character to appear even with the default value, but to do so I need to hold down the first key (e.g. space) for much longer than a “tap” before releasing it, which feels very unnatural, and is something that can cause an extra character to appear, regardless.

Checking it out now. The default–I haven’t touched this setting since installing it–was 10179ms. Setting that to 200 and testing now…

Yup, that fixed it.


So the question now becomes how did the value get set so high to begin with? An errant setting that was forgotten about in the latest firmware push? (I did update the firmware, first thing I did setting the keyboard up as the setup instructions suggested I do).

It’s possible that got set by a rearrangement of plugins in EEPROM. There’s probably no way to know for sure, but you definitely don’t want to have to wait 10 seconds to use a shift key with an external mouse.