rvaiya/keyd
FreeA key remapping daemon for linux.
About rvaiya/keyd
keyd is a flexible system-wide key remapping daemon for Linux. It uses kernel-level input primitives (evdev, uinput) to remap keys, overcoming the limitations of existing tools like xcape and xmodmap that are tied to specific environments like X11. keyd offers a hand-tuned input loop in C that achieves sub-millisecond latency. Unique features include layers with hybrid modifiers, key overloading (different action on tap vs hold), keyboard-specific configuration, instantaneous remapping without flashing, a client-server model for scripting and application-specific remapping (supporting X, sway, and GNOME Wayland), system-wide config that works in a virtual terminal, first-class modifier overloading, and Unicode support. The configuration format is intuitive and easy to grok.
Key Features
Pros & Cons
- System-wide remapping works in VT and across display servers
- Low latency input handling (hand-tuned C loop, ~1ms)
- Flexible layers and key overloading (like QMK but for any keyboard)
- No need to flash firmware; changes apply instantly
- Free and open source (MIT license)
- Intuitive configuration format
- Supports keyboard-specific configurations
- Client-server model allows scripting and integration with other tools
- Linux-only (relies on evdev/uinput kernel primitives)
- Requires a C compiler and Linux kernel headers for compilation
- Not a tool for programming individual key up/down events
- Optional dependencies (python, python-xlib) needed for application-specific remapping on X
- Configuration syntax may have changed between v1 and v2 (migration guide available)