Today I learned about the existence of keyd, which is a system-wide daemon program that lets you remap keys on a kernel level.
I previously used kmonad, but its configuration file can be overwhelming to setup for simple needs. Keyd feels simpler and has a minimalistic configuration syntax.
In author's words:
Notably keyd was written entirely in C with performance and simplicitly in mind and will likely never be as configurable as kmonad (which is extensible in Haskell).
Here's how my current configuration looks like:
[ids] 0001:0001 [main] shift = oneshot(shift) control = oneshot(control) leftalt = oneshot(meta) leftmeta = oneshot(alt) capslock = overload(C, esc) f = overload(extend, f) v = overload(number, v) [extend] h = left j = down k = up l = right y = home u = pagedown i = pageup o = end m = enter ; = backspace [number] m = 1 , = 2 . = 3 j = 4 k = 5 l = 6 u = 7 i = 8 o = 9 ; = 0
What it does:
- turns all modifier keys into "one-shots", meaning they stick until next keypress so you don't have to hold them down;
- swaps left
- capslock becomes
escon tap and
factivates the "extend" layer with navigation keys on the home row;
vactivates the "number" layer with numbers arranged into a numpad on the home block.
Unfortunately, keyd is Linux-only. If you're interested in a cross-platfom solution, check out kmonad.