Skip to content

Feature: `HOLD_START: AFTER_TIMEOUT`

I would like to add AFTER_TIMEOUT to the values supported by HOLD_START. The behavior would be such that the HOLD key is only pressed after KEY is held longer than the value specified by TAP_MILLISEC. For example, given the following configuration:

TIMING:
  TAP_MILLISEC: 150 
                                                                                                                                            
MAPPINGS:
  - KEY: KEY_CAPSLOCK
    TAP: KEY_ESC
    HOLD: KEY_LEFTCTRL

Ctrl would only be pressed after Caps is held for longer than 150 ms.

I would find this useful because I prefer not to bother with configuring multiple devices, but I still want to occasionally use Ctrl+click or Ctrl+scroll. Currently, the above configuration works well enough with a mouse, but there's an edge case where pressing Caps followed by a mouse click and then releasing Caps very quickly (within 150 ms) results in both a Ctrl+click and tapping Escape. It is easy to test this behavior by increasing the value of TAP_MILLISEC (e.g. to 1000).

Adding an AFTER_TIMEOUT value would make it so that for the edge case described above, the only action that would occur is a tapping of Escape, and not a Ctrl+click. This would make it more obvious to the user that they mistakenly executed an Escape and that they may need to correct the consequences of this error (for example, if tapping Escape results in executing some action within the current program).