TeXitoi/keyberon

A rust crate to create a pure rust keyboard firmware.

Rust

1,192

184 commits

updated Oct 13, 2025

See the code

README

Keyberon Build status

A rust crate to create a pure rust keyboard firmware.

It is exposed as a library giving you the different building blocks to create a featureful keyboard firmware. As the different functionality are interconected by the user of the crate, you can use only the parts you are interested in or easily insert your own code in between.

This crate is a no_std crate, running on stable rust. To use it on a given MCU, you need GPIO throw the embedded hal crate to read the key states, and the usb-device crate for USB communication.

Projects using this firmware

List of Repositories using Keyberon

The first project using this firmware is Keyberon grid, a handwired keyboard with a grid of keys. It is based on the blue pill, a cheap development board based on a STM32F103 MCU.

keyberon-grid

There is a port to Cannon Keys's Ortho60 keyboard kit (blue pill based).

Ortho60

Another handwired project using keyberon is keyberon-f4, a unsplitted ergo keyboard. It runs on a WeAct MiniF4 based on a STM32F401 MCU.

keyberon-f4

TssT16's 4x12 keyboard (blue pill based):

TssT16's

gilescope's 4x12 keyboard (keyberon grid, blue pill based):

gilescope's

covah901's keyboard (WeAct MiniF4 based):

covah901

KeySeeBee, a split ergo keyboard (STM32F072 based).

KeySeeBee

Arisu handwired using STM32F401.

Arisu handwired

Features

The supported features are:

  • Layers when holding a key (aka the fn key). When holding multiple layer keys, the last pressed layer action sets the layer.
  • Transparent key, i.e. when on an alternative layer, the key will inherit the behavior of the default layer.
  • Change default layer dynamically.
  • Multiple keys sent on an single key press. It allows to have keys for complex shortcut, for example a key for copy and paste or alt tab, or for whatever you want.
  • Chording multiple keys together to act as a single key
  • hold tap: different action depending if the key is held or tapped. For example, you can have a key acting as layer change when held, and space when tapped.

FAQ

Keyberon, what's that name?

To find new, findable and memorable project names, some persons in the rust community try to mix the name of a city with some keyword related to the project. For example, you have the Tokio project that derive its name from the Japanese capital Tokyo and IO for Input Output, the main subject of this project.

So, I have to find such a name. In the mechanical keyboard community, "keeb" is slang for keyboard. Thus, I searched for a city with the sound [kib], preferably in France as it is the country of origin of the project. I found Quiberon, and thus I named the project Keyberon.

embedded
firmware
keyboard
rust
usb
usb-hid

TeXitoi/keyberon

A rust crate to create a pure rust keyboard firmware.

Rust

1,192

184 commits

updated Oct 13, 2025

See the code

README

Keyberon Build status

A rust crate to create a pure rust keyboard firmware.

It is exposed as a library giving you the different building blocks to create a featureful keyboard firmware. As the different functionality are interconected by the user of the crate, you can use only the parts you are interested in or easily insert your own code in between.

This crate is a no_std crate, running on stable rust. To use it on a given MCU, you need GPIO throw the embedded hal crate to read the key states, and the usb-device crate for USB communication.

Projects using this firmware

List of Repositories using Keyberon

The first project using this firmware is Keyberon grid, a handwired keyboard with a grid of keys. It is based on the blue pill, a cheap development board based on a STM32F103 MCU.

keyberon-grid

There is a port to Cannon Keys's Ortho60 keyboard kit (blue pill based).

Ortho60

Another handwired project using keyberon is keyberon-f4, a unsplitted ergo keyboard. It runs on a WeAct MiniF4 based on a STM32F401 MCU.

keyberon-f4

TssT16's 4x12 keyboard (blue pill based):

TssT16's

gilescope's 4x12 keyboard (keyberon grid, blue pill based):

gilescope's

covah901's keyboard (WeAct MiniF4 based):

covah901

KeySeeBee, a split ergo keyboard (STM32F072 based).

KeySeeBee

Arisu handwired using STM32F401.

Arisu handwired

Features

The supported features are:

  • Layers when holding a key (aka the fn key). When holding multiple layer keys, the last pressed layer action sets the layer.
  • Transparent key, i.e. when on an alternative layer, the key will inherit the behavior of the default layer.
  • Change default layer dynamically.
  • Multiple keys sent on an single key press. It allows to have keys for complex shortcut, for example a key for copy and paste or alt tab, or for whatever you want.
  • Chording multiple keys together to act as a single key
  • hold tap: different action depending if the key is held or tapped. For example, you can have a key acting as layer change when held, and space when tapped.

FAQ

Keyberon, what's that name?

To find new, findable and memorable project names, some persons in the rust community try to mix the name of a city with some keyword related to the project. For example, you have the Tokio project that derive its name from the Japanese capital Tokyo and IO for Input Output, the main subject of this project.

So, I have to find such a name. In the mechanical keyboard community, "keeb" is slang for keyboard. Thus, I searched for a city with the sound [kib], preferably in France as it is the country of origin of the project. I found Quiberon, and thus I named the project Keyberon.

embedded
firmware
keyboard
rust
usb
usb-hid

Project health

crates.io

Latest release

0.1.1 · Sep 28, 2020

Releases this year

0

Significant stargazers

(top 24 of 50)

Łukasz Jan Niemier

349 followers · starred Jun 2023

Oli Scherer

849 followers · starred Apr 2019

Aaron Hill

553 followers · starred Oct 2020

Jesse Vincent

8,954 followers · starred Nov 2020