{"id":47699617,"url":"https://github.com/fuchskurt/keychron_q6_he_rmk","last_synced_at":"2026-04-29T23:13:51.061Z","repository":{"id":332064642,"uuid":"1132578957","full_name":"fuchskurt/keychron_q6_he_rmk","owner":"fuchskurt","description":"Custom RMK firmware for the Keychron Q6 HE ANSI in Rust","archived":false,"fork":false,"pushed_at":"2026-04-01T17:41:34.000Z","size":198,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T03:30:38.291Z","etag":null,"topics":["embassy","firmware","hall-effect","hall-effect-keyboard","keyboard","keychron","rmk","rust","stm32"],"latest_commit_sha":null,"homepage":"https://fuchskurt.github.io/keychron_q6_he_rmk/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fuchskurt.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-12T06:50:54.000Z","updated_at":"2026-04-02T02:38:37.000Z","dependencies_parsed_at":"2026-04-02T18:03:53.764Z","dependency_job_id":null,"html_url":"https://github.com/fuchskurt/keychron_q6_he_rmk","commit_stats":null,"previous_names":["fuchskurt/keychron_q6_he_rmk"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/fuchskurt/keychron_q6_he_rmk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuchskurt%2Fkeychron_q6_he_rmk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuchskurt%2Fkeychron_q6_he_rmk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuchskurt%2Fkeychron_q6_he_rmk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuchskurt%2Fkeychron_q6_he_rmk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuchskurt","download_url":"https://codeload.github.com/fuchskurt/keychron_q6_he_rmk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuchskurt%2Fkeychron_q6_he_rmk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31418287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["embassy","firmware","hall-effect","hall-effect-keyboard","keyboard","keychron","rmk","rust","stm32"],"created_at":"2026-04-02T17:03:26.947Z","updated_at":"2026-04-29T23:13:51.055Z","avatar_url":"https://github.com/fuchskurt.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keychron Q6 HE - Custom RMK Firmware\n\n[![Docs](https://img.shields.io/badge/docs-latest-blue?style=flat-square)](https://fuchskurt.github.io)\n[![Release](https://img.shields.io/github/v/release/fuchskurt/keychron_q6_he_rmk?style=flat-square)](https://github.com/fuchskurt/keychron_q6_he_rmk/releases)\n[![License](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue?style=flat-square)](#license)\n\n![Keychron Q6 HE](https://cdn.shopify.com/s/files/1/0059/0630/1017/files/Keychron-Q6-HE-Wireless-QMK-Custom-Magnetic-Switch-Keyboard-White.jpg)\n\nOpen-source replacement firmware in `RUST` based on [RMK](https://github.com/HaoboGu/rmk) for\nthe [Keychron Q6 HE](https://www.keychron.com/products/keychron-q6-he-qmk-wireless-custom-keyboard).\nCompatible with [Vial](https://get.vial.today) for live keymap editing without reflashing.\n\nSupports **ANSI**, **ISO**, and **JIS** layouts, select the right build for your board variant.\n\n---\n\n## Features\n\n- **Analog actuation point**: Keys actuate at 0.8 mm by default and Rapid Trigger sensitivity starts at 0.3 mm, both\n  adjustable in 0.1 mm increments, with no fixed reset point.\n- **Two hardware layers**: Mac and Windows base layers, switchable via the physical toggle on the side of the keyboard.\n- **Vial keymap editing**: Remap any key, encoder action, or layer live from [Vial](https://get.vial.today)\n  or [vial.rocks](https://vial.rocks) without reflashing.\n- **RGB backlight**: Full per-key RGB. Caps Lock lights red when active; Num Lock lights white when active.\n- **Rotary encoder**: Volume up/down by default; remappable via Vial.\n- **Automatic calibration**: Guided first-boot calibration with backlight feedback. On subsequent boots the keyboard\n  re-measures key resting positions automatically and refines calibration silently in the background, so drift is\n  corrected without any user action.\n- **Thermal protection**: LED brightness is automatically reduced if the backlight driver chip gets too hot, and\n  restored when it cools down.\n\n---\n\n## Layout variants\n\n| Layout | Feature flag  | Cargo profile                      |\n| ------ | ------------- | ---------------------------------- |\n| ANSI   | `ansi_layout` | `--features ansi_layout` (default) |\n| ISO    | `iso_layout`  | `--features iso_layout`            |\n| JIS    | `jis_layout`  | `--features jis_layout`            |\n\nExactly one layout feature must be enabled at a time. Each layout ships its own `vial.json`, LED mapping, and sensor\npresence map.\n\n---\n\n## Flashing\n\n### One-time setup\n\nInstall [Rust nightly](https://rustup.rs) and the required tools:\n\n```sh\nrustup toolchain install nightly\nrustup target add thumbv7em-none-eabihf\nrustup component add rust-src llvm-tools\ncargo make install\n```\n\n### Build and flash (ANSI)\n\n1. Enter DFU mode: hold the reset button on the underside of the keyboard, then plug it in (or press reset while\n   plugged in).\n\n2. Flash:\n\n   ```sh\n   cargo make flash\n   ```\n\n   The keyboard reboots automatically when flashing completes.\n\n\u003e `cargo make flash` defaults to the ANSI layout. To flash a different layout, pass the feature flag directly:\n\u003e\n\u003e ```sh\n\u003e cargo dfu --vid 0x483 --pid 0xdf11 --release --features iso_layout\n\u003e cargo dfu --vid 0x483 --pid 0xdf11 --release --features jis_layout\n\u003e ```\n\n### Pre-built binaries\n\nDownload the `.bin` matching your layout from\n[Releases](https://github.com/fuchskurt/keychron_q6_he_rmk/releases) and flash with any STM32 DFU tool:\n\n```sh\ndfu-util -a 0 -s 0x08000000:mass-erase:force:leave \\\n  -D keychron-q6-he-rmk-\u003clayout\u003e-\u003cversion\u003e.bin \\\n  -S \u003cserial number\u003e\n```\n\nReplace `\u003clayout\u003e` with `ansi`, `iso`, or `jis`.\n\n---\n\n## First-boot calibration\n\nThe first time the firmware runs, or whenever saved calibration is missing or corrupt, the backlight guides you through\na two-step setup. Follow the colors:\n\n| Backlight                | What to do                                                                                                                                                                            |\n| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Solid amber**          | Leave all keys fully released                                                                                                                                                         |\n| **Red -\u003e blue gradient** | Press every key all the way to the bottom and hold it for 1 second. Each key lights up **green** when accepted. The background shifts from red toward blue as more keys are accepted. |\n| **Green blink × 3**      | All keys accepted, you may release them now                                                                                                                                           |\n| **Solid green for 2 s**  | Calibration saved, keyboard is ready                                                                                                                                                  |\n\n\u003e **If the backlight returns to amber** after the green blink, saving to the EEPROM failed. Power-cycle the keyboard and\n\u003e repeat calibration on the next boot.\n\nOn every subsequent boot the keyboard briefly re-measures key resting positions to compensate for temperature changes,\nthen starts normally.\n\n---\n\n## Keymap editing\n\nConnect the keyboard and open [Vial](https://get.vial.today) (desktop app or [vial.rocks](https://vial.rocks) in a\nbrowser). Select the keyboard, then remap keys, layers, or encoder actions. Changes take effect immediately without\nreflashing.\n\n---\n\n## License\n\nLicensed under either of [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuchskurt%2Fkeychron_q6_he_rmk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuchskurt%2Fkeychron_q6_he_rmk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuchskurt%2Fkeychron_q6_he_rmk/lists"}