1 个不稳定版本
| 0.0.1 | 2024年6月30日 |
|---|
#66 在 #rp2040
78KB
2K SLoC
rktk
Rust 键盘工具包。
目前,固件是为Keyball61设计的,但通过将核心功能与驱动程序分离,核心功能是架构和硬件独立的,可以很容易地扩展。
我们的当前目标是将其移植到NRF52840芯片并通过蓝牙连接。
功能
- ✅ : 已完成
- 🟡 : 进行中,部分实现。
- 🔴 : 进行中,尚未工作。
- ❌ : 计划中。尚未实现。
- 空:未计划/不需要。
核心功能
| 功能 | 状态 |
|---|---|
| 按键扫描 | ✅ |
| 媒体按键支持 | ✅ |
| 鼠标 | ✅ |
| 层系统 | 🟡 |
| 分割键盘 | ✅ |
| 非分割键盘 | 🟡 |
| 显示 | 🟡 |
| 背光LED | 🟡 |
| USB | ✅ |
| 蓝牙 | ❌ |
| VIA/Vial 支持 | ❌ |
| 双击重置 | ✅ |
驱动程序
按键扫描器
| 驱动程序 | RP2040 | NRF52840 |
|---|---|---|
| 全双工矩阵扫描器 | ✅ | 🔴 |
鼠标
| 驱动程序 | RP2040 | NRF52840 |
|---|---|---|
| PMW3360 | ✅ | 🔴 |
显示
| 驱动程序 | RP2040 | NRF52840 |
|---|---|---|
| SSD1306 | ✅ | 🔴 |
分割
| 驱动程序 | RP2040 | NRF52840 |
|---|---|---|
| 半双工pio | ✅ | |
| 位带 | ❌ | ❌ |
背光
| 驱动程序 | RP2040 | NRF52840 |
|---|---|---|
| ws2812 pio | ✅ | |
| 位带 | ❌ | ❌ |
USB
| RP2040 | NRF52840 |
|---|---|
| ✅ | 🔴 |
蓝牙
| RP2040 | NRF52840 |
|---|---|
| ❌ |
双击重置
| RP2040 | NRF52840 |
|---|---|
| ✅ |
架构
有 rktk、rktk-drivers-common、rktk-drivers-{rp2040,nrf52} 和每个键盘的crate。
rktk crate 完全与硬件无关,并提供键盘的核心功能。
rktk-drivers-common 使用嵌入式-hal 和嵌入式-hal-async 的抽象,为可以在各种芯片上通用的驱动程序提供基础。这使得将驱动程序移植到各种芯片变得非常容易。
rktk-drivers-* crate 为每个芯片提供驱动程序。大多数驱动程序是 rktk-drivers-common 的封装,但也有一些是专有实现,如 ws2812-pio。
每个键盘箱可以创建适用于相应芯片的驱动程序,并将其传递给 rktk::task::start 来配置实际工作的键盘固件。目前唯一工作的键盘是 keyball61-rp2040,但根据 keyboards/keyball61-rp2040 目录创建自己的键盘并不困难。
致谢
- rumcake(rp2040 双击进入引导加载程序驱动程序)
- uf2(uf2conv.py,uf2families.json)
- ARM GNU 工具链(arm-none-eabi-objcopy)
- rusty-dilemma 和 qmk 用于 pio 半双工
依赖关系
~11MB
~184K SLoC