keyd is a key remapping daemon for Linux that operates at the kernel level to provide system-wide keyboard customization.
Linux lacks a unified key remapping solution, forcing users to combine multiple tools like xcape and xmodmap, which often tie configurations to specific display servers like X11. keyd solves this by implementing a flexible daemon that uses kernel-level input primitives (evdev and uinput) to remap keys consistently across any environment, including virtual terminals. The daemon runs as a system-wide service with a hand-tuned input loop designed to process remappings in less than one millisecond.
keyd suits developers and power users who want to experiment with custom layers, modifier overloading, and tap-or-hold key behaviors traditionally found only in custom keyboard firmware. It works well for people managing multiple keyboards with different layouts on the same machine, those seeking an intuitive configuration format, or anyone wanting keyboard remapping that persists across display servers and virtual terminals. The tool is not designed for programming individual key up-down events. The README does not compare keyd to other remapping solutions.
The project maintains a development branch on master with occasional breaking changes between releases, while tagged releases are considered stable. Configuration format has undergone several iterations, requiring users migrating from earlier versions to consult the manual page for updated syntax. The tool ships with application-specific remapping support for X, sway, and GNOME on Wayland, with optional Python dependencies enabling these features. Installation requires only a C compiler and Linux kernel headers, making it lightweight to build and deploy.