{"id":13544518,"url":"https://github.com/TeXitoi/keyberon","last_synced_at":"2025-04-02T14:31:24.274Z","repository":{"id":34802212,"uuid":"176914072","full_name":"TeXitoi/keyberon","owner":"TeXitoi","description":"A rust crate to create a pure rust keyboard firmware.","archived":false,"fork":false,"pushed_at":"2025-01-07T19:16:15.000Z","size":9964,"stargazers_count":1110,"open_issues_count":29,"forks_count":81,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-17T11:58:43.545Z","etag":null,"topics":["embedded","firmware","keyboard","rust","usb","usb-hid"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TeXitoi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-21T09:37:24.000Z","updated_at":"2025-03-17T02:23:57.000Z","dependencies_parsed_at":"2023-11-16T08:26:42.595Z","dependency_job_id":"1e853f54-993a-434b-be3c-a3cac49938b6","html_url":"https://github.com/TeXitoi/keyberon","commit_stats":{"total_commits":198,"total_committers":27,"mean_commits":7.333333333333333,"dds":0.3282828282828283,"last_synced_commit":"18f663b1a13af6c6e55455b8185f7d05c08a67ea"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeXitoi%2Fkeyberon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeXitoi%2Fkeyberon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeXitoi%2Fkeyberon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeXitoi%2Fkeyberon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TeXitoi","download_url":"https://codeload.github.com/TeXitoi/keyberon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246395572,"owners_count":20770239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embedded","firmware","keyboard","rust","usb","usb-hid"],"created_at":"2024-08-01T11:00:50.482Z","updated_at":"2025-04-02T14:31:19.259Z","avatar_url":"https://github.com/TeXitoi.png","language":"Rust","funding_links":[],"categories":["Support crates for USB Host and USB Device Support","Rust"],"sub_categories":["Work in progress"],"readme":"# Keyberon [![Build status](https://travis-ci.org/TeXitoi/keyberon.svg?branch=master)](https://travis-ci.org/TeXitoi/keyberon) [![](https://img.shields.io/crates/v/keyberon.svg)](https://crates.io/crates/keyberon) [![](https://docs.rs/keyberon/badge.svg)](https://docs.rs/keyberon)\n\nA rust crate to create a pure rust keyboard firmware.\n\nIt is exposed as a library giving you the different building blocks to\ncreate a featureful keyboard firmware. As the different functionality\nare interconected by the user of the crate, you can use only the parts\nyou are interested in or easily insert your own code in between.\n\nThis crate is a no_std crate, running on stable rust. To use it on a\ngiven MCU, you need GPIO throw the [embedded hal\ncrate](https://crates.io/crates/embedded-hal) to read the key states,\nand the [usb-device crate](https://crates.io/crates/usb-device) for\nUSB communication.\n\n## Projects using this firmware\n\n[List of Repositories using Keyberon](./KEYBOARDS.md)\n\nThe first project using this firmware is [Keyberon\ngrid](https://github.com/TeXitoi/keyberon-grid), a handwired keyboard\nwith a grid of keys. It is based on the blue pill, a cheap development\nboard based on a STM32F103 MCU.\n\n![keyberon-grid](https://raw.githubusercontent.com/TeXitoi/keyberon-grid/master/images/keyberon.jpg)\n\nThere is a [port](https://github.com/TeXitoi/ortho60-keyberon) to\n[Cannon Keys](https://cannonkeys.com/)'s [Ortho60 keyboard\nkit](https://cannonkeys.com/collections/frontpage/products/ortho60)\n(blue pill based).\n\n![Ortho60](https://cdn.shopify.com/s/files/1/0238/7342/1376/products/Ortho60_1024x1024@2x.jpg)\n\nAnother handwired project using keyberon is\n[keyberon-f4](https://github.com/TeXitoi/keyberon-f4), a unsplitted\nergo keyboard. It runs on a [WeAct\nMiniF4](https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1) based on a\nSTM32F401 MCU.\n\n![keyberon-f4](https://raw.githubusercontent.com/TeXitoi/keyberon-f4/master/images/keyberon-44.jpg)\n\n[TssT16](https://github.com/TssT16)'s 4x12 keyboard (blue pill based):\n\n![TssT16's](https://user-images.githubusercontent.com/12481562/81586297-97996e80-93b5-11ea-86e1-c4358854477e.jpg)\n\n[gilescope](https://github.com/gilescope)'s 4x12 keyboard (keyberon\ngrid, blue pill based):\n\n![gilescope's](https://i.redd.it/syvlwmkd77851.jpg)\n\n[covah901](https://www.reddit.com/user/covah901/)'s keyboard ([WeAct\nMiniF4](https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1) based):\n\n![covah901](https://i.redd.it/gnkfymu0gwo41.jpg)\n\n[KeySeeBee](https://github.com/TeXitoi/keyseebee), a split ergo\nkeyboard (STM32F072 based).\n\n![KeySeeBee](https://raw.githubusercontent.com/TeXitoi/keyseebee/master/images/keyseebee.jpg)\n\n[Arisu handwired](https://github.com/help-14/arisu-handwired) using STM32F401.\n\n![Arisu handwired](https://camo.githubusercontent.com/4fca994ac2b7c1b1874d4331c2428cac211ff80c2891c75c971d15630ef0a948/68747470733a2f2f692e696d6775722e636f6d2f30334c356f63702e6a7067)\n\n## Features\n\nThe supported features are:\n - Layers when holding a key (aka the fn key). When holding multiple\n   layer keys, the last pressed layer action sets the layer.\n - Transparent key, i.e. when on an alternative layer, the key will\n   inherit the behavior of the default layer.\n - Change default layer dynamically.\n - Multiple keys sent on an single key press. It allows to have keys\n   for complex shortcut, for example a key for copy and paste or alt tab, or\n   for whatever you want.\n - Chording multiple keys together to act as a single key\n - hold tap: different action depending if the key is held or\n   tapped. For example, you can have a key acting as layer change when\n   held, and space when tapped.\n   \n\n## FAQ\n\n### Keyberon, what's that name?\n\nTo 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](https://tokio.rs/) that derive its name from the Japanese capital Tokyo and IO for Input Output, the main subject of this project.\n\nSo, 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](https://en.wikipedia.org/wiki/Quiberon), and thus I named the project Keyberon.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeXitoi%2Fkeyberon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTeXitoi%2Fkeyberon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeXitoi%2Fkeyberon/lists"}