awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
zmkfirmware avatar

zmkfirmware/zmk

0
View on GitHub↗
4,124 stars·4,001 forks·C·MIT·5 viewszmk.dev↗

Zmk

ZMK is a modular firmware framework built on the Zephyr RTOS for wireless keyboards. It functions as a programmable system for defining custom keymaps, layers, and input behaviors, acting as an HID device emulator for keyboard and mouse input on computers and mobile devices. It specifically provides a controller solution for synchronizing two separate keyboard halves over wireless or wired links.

The project is distinguished by its focus on Bluetooth Low Energy connectivity, featuring multi-device pairing and the ability to switch between several saved host profiles. It includes advanced power management to optimize battery life through deep sleep states and peripheral power control, as well as support for secure wireless pairing.

The firmware covers a wide range of input capabilities, including complex key behaviors like hold-taps, combos, and tap-dances, alongside macro execution and layer management. It integrates diverse hardware such as rotary encoders, pointing devices, and OLED or ePaper displays. Additionally, it provides tools for managing hardware topology, physical layout switching, and runtime keymap updates.

The system utilizes a build pipeline that monitors compilation status in a remote environment to retrieve and flash compiled firmware binaries onto hardware boards.

Features

  • Keyboard Key Mappings - Provides a comprehensive system for defining complex key layers, macros, and specialized input behaviors.
  • Keyboard Firmware - Implements a comprehensive firmware framework for managing keyboard scanning, debouncing, and keymap processing.
  • Layered Keymaps - Defines multiple sets of key assignments (layers) that can be toggled to expand keyboard functionality.
  • Modular Hardware Composition - Combines controller boards and keyboard shields during the build process to maintain hardware compatibility.
  • Firmware Build Configuration - Provides configuration files to manage the compilation of firmware for specific hardware targets.
  • Bluetooth Connectivity - Manages wireless pairing and data exchange by advertising the device to host computers and mobile devices.
  • Bluetooth Host Profiles - Saves bonding information for multiple hosts and switches between them to direct input.
  • Device Topology Definitions - Uses a hierarchical tree structure to define the physical layout and properties of hardware and keymaps.
  • Graphical Keymap Configurators - Enables modifying keymap layers and assigning behaviors in real-time without requiring a firmware re-flash.
  • HID Emulations - Emulates Human Interface Devices to send keystrokes, mouse movements, and media controls to host systems.
  • HID Keycode Emulation - Sends specific keycodes to the connected host based on press, hold, or toggle triggers.
  • Input Logic Definitions - Creates custom input logic utilizing macros, tap dances, and time-based triggers.
  • Dynamic Layering - Dynamically switches between different sets of key mappings using momentary, toggled, or sticky activations.
  • Keyboard Layout Mappings - Maps physical keys to characters and custom behaviors through structured configuration files.
  • Board and Shield Definitions - Maps microcontrollers and PCBs into board and shield definitions to match the physical hardware layout.
  • Split Keyboard Synchronization - Synchronizes state and input coordinates between two separate microcontrollers in a split keyboard design.
  • Standard Keyboard Emulation - Assigns alphanumeric, symbol, and control characters to switches to emulate a traditional keyboard.
  • Tap-Hold Key Behaviors - Assigns two different actions to a single key based on whether the key is tapped or held.
  • HID Device Implementations - Emulates the Human Interface Device standard to send keyboard and mouse input events to host systems.
  • Wireless Split-Half Linking - Connects two sides of a split device wirelessly to transmit data between them.
  • Low-Power Wireless Connectivity - Establishes secure Bluetooth Low Energy links for energy-efficient keystroke transmission to host devices.
  • Advanced Input Behaviors - Implements advanced input behaviors like hold-taps, tap-dances, and combos to expand key functionality.
  • Input Layer Stacks - Organizes key bindings into a stack where the highest active layer takes priority.
  • Keyboard Frameworks - Utilizes a modular architecture built on Zephyr RTOS to manage keyboard shields and controller boards.
  • Battery Power Optimization - Optimizes wireless battery life through deep sleep states and granular control of peripheral power.
  • Configurable Key-to-Command Mappings - Assigns specific actions or keycodes to physical positions or sensors via configuration.
  • Global System Settings - Provides centralized interfaces for adjusting global preferences and system-wide hardware parameters.
  • Multi-Press Input Triggers - Implements triggers that execute specific behaviors based on the number of consecutive key presses.
  • Firmware Build Variants - Generates specialized firmware binaries tailored for different keyboard shields and controllers from a single codebase.
  • International Layouts - Provides specialized keycodes for non-English layouts and language-switching functions.
  • Key Sequence Patterns - Triggers a predefined list of behaviors or keycodes in a specific sequential order.
  • Pointing Device Drivers - Translates low-level events from trackballs, mice, or touchpads into standard pointer behaviors.
  • HID Mouse Emulation - Implements mouse report protocols to simulate cursor movement and clicks via keyboard inputs.
  • Input Macros - Records and plays back sequences of keystrokes to automate repetitive typing tasks.
  • Input Sequence Macros - Executes automated series of hardware inputs via macro recording and playback.
  • Hardware Integration - Bridges various PCB architectures and controller boards to ensure software compatibility across different hardware setups.
  • Physical Layout Switching - Selects between pre-defined physical key arrangements for the hardware.
  • Peripheral Hardware Controllers - Manages a variety of hardware peripherals including rotary encoders and integrated lighting.
  • Pointing Hardware Integration - Integrates physical trackpads and trackballs to provide simultaneous keyboard and pointer input.
  • Behavior Parameterization - Allows passing additional arguments to bindings to modify actions based on whether a key is tapped or held.
  • Conditional Hold Triggers - Limits the hold action of a dual-function key to trigger only when specific other keys are pressed.
  • Immediate Action Triggers - Triggers hold behavior instantly upon press and cancels it if the key resolves to a tap.
  • Input Timing Logic - Tunes the resolution of dual-function keys using tapping terms and interrupt logic.
  • Solo Release Triggers - Provides specialized logic to execute tap actions if a dual-function key is released without other interactions.
  • Wireless Peripheral Pairing - Establishes and manages connections between the keyboard peripheral and several Bluetooth hosts simultaneously.
  • Battery Power Telemetry - Sends real-time battery power levels to connected host computers and updates on-board OLED or ePaper displays.
  • Peripheral Device Pairing - Bonds central controllers to peripherals using hardware addresses to ensure automatic wireless reconnection.
  • Input Output Routing - Selects whether keystrokes are sent via USB or Bluetooth when both connections are active.
  • Split-Half Synchronization - Establishes a wireless connection between two separate halves through a simultaneous reset.
  • Power State Controllers - Provides interfaces for triggering system power events such as sleep and soft-off states to conserve battery.
  • Peripheral Power Controllers - Cuts power output to external components to eliminate parasitic battery drain.
  • Chorded Key Mappings - Triggers specific outputs when a set of keys is pressed together within a defined time window.
  • Navigation and Function Keys - Assigns directional arrows, home/end keys, and function keys to physical switches.
  • Firmware Extension Modules - Allows adding third-party modules to a repository to enable support for new behaviors and features.
  • Split-Half State Synchronization - Coordinates behaviors across split hardware halves to trigger effects either globally or locally.
  • Secure Device Pairing - Uses encryption and long term keys to ensure secure communication between the keyboard and the host device.
  • Hardware Reset Triggers - Implements low-level mechanisms to restart firmware or enter bootloader mode for flashing new images.
  • Device Power Monitors - Monitors and transmits the remaining power capacity of the device to the connected host.
  • Modifier Key Configurations - Configures modifier keys like Shift, Control, and Alt to modify the behavior of other inputs.
  • Peripheral Input Drivers - Provides drivers and abstractions for integrating rotary encoders and pointing devices as input controls.
  • Rotary Encoder Input - Processes rotational input from physical knobs to trigger specific keycodes or keyboard commands.
  • Keypad Input Behaviors - Assigns numeric keypad digits and arithmetic operations to switches for data entry.
  • Sticky Modifier Modalities - Implements sticky modifier keys that remain active until the next non-modifier key is pressed.
  • Pointer Event Processing - Modifies raw pointer events to scale speed, convert movement to scrolling, or trigger layer changes.

Star history

Star history chart for zmkfirmware/zmkStar history chart for zmkfirmware/zmk

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Zmk

Similar open-source projects, ranked by how many features they share with Zmk.
  • qmk/qmk_firmwareqmk avatar

    qmk/qmk_firmware

    20,478View on GitHub↗

    This project is a keyboard firmware framework and programmable keyboard ecosystem designed for Atmel AVR and ARM microcontrollers. It provides the embedded software necessary to implement the USB Human Interface Device standard, allowing hardware to communicate keystrokes and mouse movements to a host computer. The framework distinguishes itself by offering a comprehensive toolchain for custom hardware development, including a command line interface for project scaffolding, firmware flashing, and configuration linting. It supports a variety of flexible configuration methods, allowing users to

    Catmel-avrcc-plus-plus
    View on GitHub↗20,478
  • kmonad/kmonadkmonad avatar

    kmonad/kmonad

    5,018View on GitHub↗

    Kmonad is a cross-platform keyboard remapper and advanced key mapping engine that intercepts physical keyboard inputs and transforms them into customized virtual output events. It functions as a programmable input wrapper and multi-layer keyboard manager, allowing users to redefine physical keys and route hardware inputs to virtual devices across different operating systems. The system distinguishes itself through a multi-layer management architecture that enables the definition of dynamic keyboard layers and overlays to change keyboard functions based on the current context. It implements co

    Haskellcross-platformhaskellkeyboard
    View on GitHub↗5,018
  • jtroo/kanatajtroo avatar

    jtroo/kanata

    6,840View on GitHub↗

    Kanata is a cross-platform keymap engine and keyboard firmware emulator that intercepts physical keystrokes to output modified signals on Windows, Linux, and macOS. It serves as a keyboard remapper and layer manager, allowing users to define custom key-map sequences and modal editing behaviors through a declarative configuration file. The system implements keyboard firmware features in software, enabling advanced behaviors such as tap-hold logic, unicode output, and dynamic macros. It utilizes a state-based layer stack to manage multiple sets of key assignments that toggle dynamically and sup

    Rustcross-platforminterception-driverkeyboard
    View on GitHub↗6,840
  • tmk/tmk_keyboardtmk avatar

    tmk/tmk_keyboard

    4,125View on GitHub↗

    tmk_keyboard is keyboard firmware for AVR and Cortex-M microcontrollers designed to handle key matrix scanning and HID communication. It functions as an embedded hardware control library for managing GPIO pins and EEPROM storage, as well as a driver that transmits keystroke and mouse data to a host computer via USB or PS/2 protocols. The project features a layer-based keymap engine that allows physical keys to be mapped to multiple virtual layers. It also includes a legacy keyboard protocol translator to convert signals from vintage hardware standards to modern computer interfaces. The firmw

    C
    View on GitHub↗4,125
See all 30 alternatives to Zmk→

Frequently asked questions

What does zmkfirmware/zmk do?

ZMK is a modular firmware framework built on the Zephyr RTOS for wireless keyboards. It functions as a programmable system for defining custom keymaps, layers, and input behaviors, acting as an HID device emulator for keyboard and mouse input on computers and mobile devices. It specifically provides a controller solution for synchronizing two separate keyboard halves over wireless or wired links.

What are the main features of zmkfirmware/zmk?

The main features of zmkfirmware/zmk are: Keyboard Key Mappings, Keyboard Firmware, Layered Keymaps, Modular Hardware Composition, Firmware Build Configuration, Bluetooth Connectivity, Bluetooth Host Profiles, Device Topology Definitions.

What are some open-source alternatives to zmkfirmware/zmk?

Open-source alternatives to zmkfirmware/zmk include: qmk/qmk_firmware — This project is a keyboard firmware framework and programmable keyboard ecosystem designed for Atmel AVR and ARM… kmonad/kmonad — Kmonad is a cross-platform keyboard remapper and advanced key mapping engine that intercepts physical keyboard inputs… jtroo/kanata — Kanata is a cross-platform keymap engine and keyboard firmware emulator that intercepts physical keystrokes to output… tmk/tmk_keyboard — tmk_keyboard is keyboard firmware for AVR and Cortex-M microcontrollers designed to handle key matrix scanning and HID… manna-harbour/miryoku — Miryoku is a universal mapping specification for ergonomic and orthogonal keyboards. It provides a standardized set of… peng-zhihui/helloword-keyboard — HelloWord-Keyboard is a modular keyboard hardware framework and a system for integrating interchangeable interaction…