Linux lacks a good key remapping solution. In order to achieve satisfactory results a medley of tools need to be employed (e.g xcape, xmodmap) with the end result often being tethered to a specified environment (X11). keyd attempts to solve this problem by providing a flexible system wide daemon which remaps keys using kernel level input primitives (evdev, uinput).
The config format has undergone several iterations since the first release. For those migrating their configs from v1 it is best to reread the man page.
See also: changelog.
- Speed (a hand tuned input loop written in C that takes <<1ms)
- Simplicity (a config format that is intuitive)
- Consistency (modifiers that play nicely with layers by default)
- Modularity (a UNIXy core extensible through the use of an IPC mechanism)
keyd has several unique features many of which are traditionally only found in custom keyboard firmware like QMK as well as some which are unique to keyd.
Some of the more interesting ones include:
- Layers (with support for hybrid modifiers).
- Key overloading (different behaviour on tap/hold).
- Keyboard specific configuration.
- Instantaneous remapping (no more flashing :)).
- A client-server model that facilitates scripting and display server agnostic application remapping. (Currently ships with support for X, sway, and gnome).
- System wide config (works in a VT).
- First class support for modifier overloading.
- Unicode support.