2 releases
0.0.1 | Jun 30, 2024 |
---|---|
0.0.0 | Oct 26, 2024 |
#62 in #rp2040
78KB
2K
SLoC
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
Dependencies
~11MB
~169K SLoC