nazo6 / rktk

Rust keyboard toolkit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rktk

Rust keybord toolkit.

Currently, the firmware is for the Keyball61, but by separating the core functionality from the driver, the core functionality is architecture- and hardware-independent and can be easily extended.

Our current goal is to port it to the NRF52840 chip and connect it via bluetooth.

Features

  • βœ… : Working
  • 🟑 : WIP, partly implemented.
  • πŸ”΄ : WIP, not working yet.
  • ❌ : Only planned. Not implemented yet.
  • Empty: Not planned/Not needed.

Core features

Feature Status
Keyscan βœ…
Media key support βœ…
Mouse βœ…
Layer system 🟑
Split keyboard βœ…
Non-Split keyboard 🟑
Display 🟑
Backlight LED 🟑
USB βœ…
Bluetooth ❌
VIA/Vial support ❌
Double-tap reset βœ…

Drivers

Key scanner

Driver RP2040 NRF52840
Duplex-Matrix Scanner βœ… πŸ”΄

Mouse

Driver RP2040 NRF52840
PMW3360 βœ… πŸ”΄

Display

Driver RP2040 NRF52840
SSD1306 βœ… πŸ”΄

Split

Driver RP2040 NRF52840
Half-duplex pio βœ…
Bitbang ❌ ❌

Backlight

Driver RP2040 NRF52840
ws2812 pio βœ…
Bitbang ❌ ❌

USB

RP2040 NRF52840
βœ… πŸ”΄

Bluetooth

RP2040 NRF52840
❌

Double tap reset

RP2040 NRF52840
βœ…

Architecture

There are rktk, rktk-drivers-common, rktk-drivers-{rp2040,nrf52} and a crate for each keyboard.

The rktk crate is completely hardware independent and provides the core functionality of the keyboard.

The rktk-drivers-common uses the abstraction of embedded-hal and embedded-hal-async to provide the basis for drivers that can be used universally on a variety of chips. This makes porting drivers to various chips very easy.

The rktk-drivers-* crate provides drivers for each chip. Most drivers are wrappings of rktk-drivers-common, but some are proprietary implementations, such as ws2812-pio.

Each keyboard crate can then create a driver for the appropriate chip and pass it to rktk::task::start to configure the actual working keyboard firmware. The only keyboard that currently works is keyball61-rp2040, but it is not too difficult to create your own keyboard by referring to the keyboards/keyball61-rp2040 directory.

Credits

  • rumcake (rp2040 double-tap-to-bootloader driver)
  • uf2 (uf2conv.py, uf2families.json)
  • ARM GNU Toolchain (arm-none-eabi-objcopy)
  • rust-dilemma and qmk for pio half-duplex

About

Rust keyboard toolkit

License:MIT License


Languages

Language:Rust 93.3%Language:Python 6.1%Language:RPC 0.4%Language:Batchfile 0.1%