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