Update readme

This commit is contained in:
Christoffer Martinsson 2025-09-18 14:40:46 +02:00
parent 6530b4adf8
commit dd1f9cd918

View File

@ -30,24 +30,24 @@ _This HW(PCB) was original made for use with the TeensyLC module and is reused b
------------------- -------------------
```
## Features
## Firmware features
- 42 keys "Split" keyboard layout. 36 finger buttons and 6 thumb buttons.
- Extreme low profile (only one pcb).
- Cost efficient solution with one pcb and one 3D printed cover.
- Function layers provide three active maps (primary + two Fn layers) with sticky-lock support.
- High-speed key scanning: 250µs cadence with enhanced 5-scan debounce (1.25ms) and anti-bounce protection to prevent double characters.
- Status indication driven by the joystick-style heartbeat model:
- Heartbeat green while waiting for USB enumeration.
- Solid green during normal operation; automatic heartbeat idle animation after 5s inactivity.
- Blue solid / flashing when sticky lock is armed / latched.
- Red solid on firmware error, red flashing for Caps Lock.
- LED turns off during USB suspend for power savings.
- Power management for USB suspend/resume:
- Automatic power saving when USB host suspends device.
- Reduced key scanning frequency (20x slower) during suspend.
- Wake-on-input detection for any key press.
- Immediate resume response when keys are pressed.
- 42 key split layout (36 finger keys + 6 thumb keys) with a Swedish-centric NKRO HID mapping across three layers.
- Function layer system with two Fn keys (40/43/44) enabling sticky lock, OS lock and deep modifier combos without ghosting.
- High-speed matrix scanning (250µs cadence) with scan-based debounce, per-key press spacing protection and idle/suspend rate throttling.
- Bootloader entry options including `Fn+Fn+LCtrl+LShift+RShift` runtime chord and power-on detection on button index 0.
- Status LED heartbeat derived from joystick firmware: startup heartbeat, activity/idle transitions, sticky-state colors, Caps Lock flash, suspend blanking and error signalling.
- Power-aware USB handling that drops scan frequency 20× during suspend while honouring wake-on-input and immediate resume.
## Install script (`install.sh`)
The repository includes a host automation helper for the RP2040 firmware.
- Quick start: `./install.sh check` (compilation + clippy) or `./install.sh test` (full suite including host-side tests).
- Flashing: `./install.sh flash --local` for direct UF2 copy on Linux/macOS, or `./install.sh flash --ssh --target user@host --mount /path` for remote deployments.
- Cleaning: `./install.sh clean` removes cargo artefacts, generated binaries and UF2 images.
- Prerequisites are validated automatically (Rust toolchain, `thumbv6m-none-eabi`, `cargo-binutils`, `uf2conv.py`, optional SSH settings).
- Script output uses colour-coded sections for readability and fails fast on missing dependencies or connectivity issues.
## Build environment rp2040 Zero
@ -55,10 +55,11 @@ Rust embedded, rp2040 HAL
- Cargo (cargo.toml)
- rustup target add thumbv6m-none-eabi
- cargo install elf2uf2-rs --locked
- Use install script to flash device
- Flashing via rp2040 USB bootloader
- Pressing reset/boot button on rp2040 Zero board
- Pressing upper left corner on the keyboard when connecting the usb cable
- Pressing Fn+Fn+Shift+Shift+Ctrl
## Hardware