# rvaiya/keyd

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rvaiya-keyd).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

5,590 stars · 254 forks · C · MIT

## Links

- GitHub: https://github.com/rvaiya/keyd
- awesome-repositories: https://awesome-repositories.com/repository/rvaiya-keyd.md

## Topics

`c` `keyboard` `keyboard-layout` `keyboard-mapping` `keyboard-remap` `keymap` `linux` `sway` `x11`

## Description

keyd is a kernel-level daemon for Linux that intercepts and remaps physical keyboard inputs to create custom layouts and shortcuts. It functions as a system-level input service and layout manager, capable of modifying input signals before they reach the operating system.

The service supports application-aware mapping, which dynamically changes keyboard behavior based on the active window. It also provides device-specific mapping, allowing unique configurations to be assigned to different physical keyboards using their hardware identifiers.

The tool includes capabilities for managing multiple keyboard layers via modifier keys and overloading keys to perform different actions based on whether they are tapped or held. Additional input management features include one-shot modifiers and the emission of specific Unicode characters.

## Tags

### Operating Systems & Systems Programming

- [Input Event Interception](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/input-event-interception.md) — Intercepts raw keyboard hardware signals at the kernel level to modify input before it reaches the OS.
- [Linux](https://awesome-repositories.com/f/operating-systems-systems-programming/input-remappers/linux.md) — Uses Linux kernel interfaces like evdev and uinput to intercept and redirect hardware keyboard events.
- [Kernel-Level Input Remapping](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-level-input-remapping.md) — Changes the output of physical keys at the kernel level to create custom layouts and shortcuts. ([source](https://cdn.jsdelivr.net/gh/rvaiya/keyd@master/README.md))
- [Keyboard Layout Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/keyboard-layout-managers.md) — Provides a tool for defining custom key mappings, layers, and modifier behaviors to change how a keyboard functions.

### Development Tools & Productivity

- [Layered Keymaps](https://awesome-repositories.com/f/development-tools-productivity/custom-key-mappings/modal-keymap-states/state-toggle-mappings/layered-keymaps.md) — Maintains multiple mapping sets that can be toggled via modifier keys to change active keyboard layouts.
- [Application-Specific Bindings](https://awesome-repositories.com/f/development-tools-productivity/input-binding-libraries/multi-key-bindings/application-specific-bindings.md) — Changes keyboard behavior dynamically based on the active window or application currently in focus. ([source](https://cdn.jsdelivr.net/gh/rvaiya/keyd@master/README.md))

### DevOps & Infrastructure

- [Application-Context Profiles](https://awesome-repositories.com/f/devops-infrastructure/configuration-profile-switching/application-context-profiles.md) — Provides configuration sets that automatically activate based on the focused system window or application.

### Hardware & IoT

- [Device-Specific Remapping](https://awesome-repositories.com/f/hardware-iot/hardware-device-identification/device-specific-remapping.md) — Assigns unique key remaps to specific physical keyboards using their unique hardware identifiers.
- [Device-Specific Mappings](https://awesome-repositories.com/f/hardware-iot/keyboard-key-mappings/device-specific-mappings.md) — Assigns unique key remaps to specific hardware keyboards using their unique device identifiers. ([source](https://cdn.jsdelivr.net/gh/rvaiya/keyd@master/README.md))
- [Dynamic Layering](https://awesome-repositories.com/f/hardware-iot/keyboard-key-mappings/dynamic-layering.md) — Enables toggling between different sets of key mappings dynamically during use via modifier keys.
- [Dynamic Layout Layering](https://awesome-repositories.com/f/hardware-iot/keyboard-key-mappings/dynamic-layout-layering.md) — Supports defining multiple sets of key mappings that toggle to change key functions using a modifier. ([source](https://cdn.jsdelivr.net/gh/rvaiya/keyd@master/README.md))
- [Tap-Hold Key Behaviors](https://awesome-repositories.com/f/hardware-iot/tap-hold-key-behaviors.md) — Implements logic for keys that trigger different actions depending on whether they are tapped or held.
- [One-Shot Modifiers](https://awesome-repositories.com/f/hardware-iot/modifier-aware-key-mappings/one-shot-modifiers.md) — Implements one-shot modifiers that apply a modifier key to the next pressed key without needing to hold it down. ([source](https://cdn.jsdelivr.net/gh/rvaiya/keyd@master/README.md))

### Software Engineering & Architecture

- [Application-Aware Keymaps](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/domain-specific-configurations/custom-command-managers/command-name-overrides/keymap-overrides/keymap-plugin-architectures/application-aware-keymaps.md) — Changes keyboard behavior dynamically based on which window or application is currently active.

### System Administration & Monitoring

- [Device-Specific Input Rules](https://awesome-repositories.com/f/system-administration-monitoring/virtual-device-drivers/input-device-emulators/device-specific-input-rules.md) — Applies custom input remapping and transformation logic to specific hardware devices using unique identifiers.

### Business & Productivity Software

- [Virtual Key Injection](https://awesome-repositories.com/f/business-productivity-software/remote-input-controllers/virtual-key-injection.md) — Generates synthetic input events to inject specific keycodes or Unicode characters into the system input buffer.
