I want to make h, j, k, l key to left, down, up, right in layer 1. I use hold space bar for switching layer. But it behaves differently from qmk and kanata (remapper software)
Current Problem
At the moment, tap-hold behavior appears to be mostly timeout-based.
Example configuration:
Tap Space -> Space
Hold Space -> Layer 1
Timeout -> 250ms
Current behavior:
Hold Space, Press J before 250ms expires
Result:
Jis still interpreted on the base layer- Layer 1 is not activated yet
Expected behavior (used in mature firmware/software):
- pressing another key while Space is held should immediately convert Space into HOLD mode
- Layer 1 should activate instantly
Jshould become Arrow Down immediately
Rolling Typing Problem
There is also a serious issue during fast typing with dual-role keys.
Example sentence:
"hello world"
Sometimes the output becomes:
"hellow orld"
This happens because human typing naturally overlaps key presses (“rolling typing”).
Real typing is usually NOT:
Release Space THEN press next key
Instead humans often do:
Space still slightly held while next key already starts
Many advanced firmware/software handle this correctly by buffering and delaying tap-hold decisions.
Existing Implementations (Reference)
QMK already implements multiple advanced tap-hold strategies:
-
Permissive Hold
-
Hold On Other Key Press
-
Retro Tap
-
Ignore Mod Tap Interrupt
-
Tapping Term customization
These features make home-row mods and layer taps practical.
Kanata handles:
-
overlapping typing
-
buffered resolution
-
interrupt-based hold detection
extremely well.
Even very fast typists rarely encounter accidental missing spaces or incorrect layer activation.
Adding these features would make HID Remapper much more competitive for advanced ergonomic keyboard users. Thank you for the amazing project.