I’ve done some work recently on Qukeys, most significantly, making it understand the same markup as DualUse for both modifiers and layers, so it can be used as a drop-in DualUse replacement.
I’ve got two other enhancements in mind, and I’m wondering how much interest there might be.
First, I’ve had one report of unexpected behaviour when releasing two keys simultaneously, where a qukey was meant to be used as a modifier. This resulted in a race condition — if the qukey release was detected first, it would send its primary (i.e. printable) keycode, but if the other was detected first, it would send its alternate (i.e. modifier) keycode. To solve this, I came up with the idea to have a configurable grace period, set to some very low value (e.g. 20ms), so if the qukey release is detected just before a subsequent release, it will still become a modifier. This should improve reliability for people who tend to release modifiers and modified keys simultaneously, but if the grace period is too long, it could produce unintended modifiers due to rollover for people who type very fast.
Second, I’ve heard that QMK “Mod-tap” keys (their version of DualUse) allow repeating the printable keycode by double-tapping and holding the key. I have an idea of how to do the same thing with Qukeys, enabling primary-keycode repeat and — on macOS Cocoa input apps — access to international characters via key-holding. The trick is to not mess up intended repeat characters while typing (double-tapping without holding), and — in the macOS case, at least — not inputting extra characters by suppressing the initial key release.
Last, it has occurred to me that Qukeys could optionally treat layer-changing keys as automatic qukeys. Any LockLayer(n)
key would lock the layer when tapped, but act as ShiftToLayer(n)
when held. ShiftToLayer(n)
keys could also be treated the same way. This one can be done with a normal qukey definition, but not right in the keymap, so it’s not as convenient.
I’m very interested in hearing from anyone who’s interested in any of these features, or, for that matter, other features that people would like.