1 个不稳定版本

0.1.0 2023年2月17日
0.1.0-alpha2023年2月18日

1549硬件支持

MIT 许可证

9KB
119

Oak-Type

开源模拟键盘

目标

Oak-Type 的目的是成为键盘和其他计算机输入设备的首选模拟固件,具有易于调整的模块系统,用于定义新的输入和输出类型。

  • 应以控制器无关的方式使用特性和模块定义输入和输出类型
  • 针对特定硬件的实现应在 oak-type 库的基础上,与 HAL 配合使用,编写最少的代码
  • 应能够通过一个或多个配置文件来配置布局,这些配置文件独立于固件
  • 配置文件应能够以任何分层格式编写,例如 JSON、XML 和 YML
  • 配置文件应能够在不重新刷新固件的情况下加载,理想情况下是通过将文件保存到键盘内存的大容量存储区域
  • 配置的输入和输出类型在树形数据结构中进行映射

首选模拟

虽然 oak-type 应该能够处理数字输入,但第一等输入类型是模拟的。模拟键盘输入允许根据按键按下的深度变化输入;差分输入,例如在按键下落时发送信号,并在按键开始上升时停止;以及用于控制 wasd 的类似摇杆的输入。

固件无关的配置文件

有了可以在固件刷写后部署的配置文件,QOL 选项开始开放。

  • 无线键盘无需连接即可进行修改
  • 需要传输的数据更少,可以加快迭代速度并减少周转时间
  • 一个损坏的配置文件不能使一个正常工作的板卡损坏

树形结构中的配置层

层很棒,通过未在一层配置的键按下一层的方式传递,可以节省大量编写配置文件的时间,但还有一点不尽如人意。

在树形结构中,一个板卡的根层可以是典型的 qwerty、dvorak 或 colemak 布局。第一个分支可以是游戏,禁用 meta 键,针对您正在玩的游戏或类型有一些细微差别。另一个可以是用于编码,将下划线键修改为在蛇形和驼峰式语言之间切换时的粘性 shift。

另一个选项可能是针对操作系统级别的差异。我讨厌在一台操作系统上工作时按下meta键,当我的大脑告诉我需要按下cmd键。如果它们是同一个按钮,在大脑切换层级后就不必再关心了

root
├─ games
│  ├─ shooter
│  ├─ rhythm
│  ├─ rts
├─ coding
│  ├─ Rust
│  ├─ Python
│  ├─ Java
├─ vim

无运行时依赖