keyboardio / Chrysalis

Graphical configurator for Kaleidoscope-powered keyboards
https://github.com/keyboardio/Chrysalis#chrysalis
GNU General Public License v3.0
496 stars 64 forks source link

CTRL behaviour regression #688

Open jacereda opened 3 years ago

jacereda commented 3 years ago

I have a key that acts as CTRL when held and Space when tapped.

On Chrysalis 0.7.9 with its firmware:

Let's say I make a mistake when trying to type a carriage return (which I do as CTRL+m instead of using a dedicated key), and I type the m before CTRL. I can notice and just keep CTRL pressed and type h to delete the m, followed by m to type the real carriage return.

Using latest Chrysalis+firmware, it won't recognise the CTRL/Space key as a modifier if m is pressed first. If I type the above sequence, the h will just type the character instead of deleting the previous character. Since the CTRL/Space key is being held, it should behave the same way as 0.7.9.

gedankenexperimenter commented 3 years ago

Sorry for not replying sooner; I don't regularly monitor the Chrysalis repo. The behaviour you're seeing is a result of the Qukeys plugin's default configuration. Qukeys (the plugin that handles the ctrl/space key in question) has a number of mechanisms to protect against getting unintended output, most of them geared toward reducing incidence of accidental modifiers. The particular setting in question is the "minimum prior interval", which prevents modifier output unless at least a certain period of time elapses between the previous key toggling on and the qukey toggling on. The default is 75 milliseconds.

This can be adjusted, if you compile your own firmware sketch, by calling Qukeys.setMinimumPriorInterval(0), for instance. At some point in the future, this will hopefully be adjustable in Chrysalis, but there is currently no mechanism for it.