littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于C语言的ErgoDox键盘固件项目

项目简介

本项目是专门为ErgoDox键盘开发的可用固件。初始开发目的是实现I²C功能,从而避免在键盘两半之间使用16针连接器。这不仅是开发者首个纯C项目,也是在硬件编程领域的首次尝试。项目致力于提供稳定、功能丰富且易于理解的固件,便于用户更新键盘固件以及进行二次开发。

项目的主要特性和功能

  • 按键响应特性:支持6KRO,符合USB启动规范,扫描速率约167Hz(大部分时间用于I²C通信)。
  • 硬件适配:适配Teensy 2.0和MCP23018 I/O扩展器。
  • 功能按键:具备多种媒体按键(播放/暂停、上一曲、下一曲、停止、静音、音量增大、音量减小)以及粘滞键功能。
  • 分层设计:固件级别的层,激活时压入栈顶,停用则从栈中弹出,按键时顶层确定操作。
  • 按键函数化:每个按键的按下和释放对应不同函数,可执行多种操作,支持“透明”功能。

安装使用步骤

环境准备

按照PJRC的入门指南设置AVR编程环境,确保使用C语言和Make进行编译。同时,需要安装git

固件加载

  1. 将Teensy通过USB连接到计算机,安装Teensy加载器应用程序,了解Teensy上的“复位按钮”。
  2. 运行Teensy加载器程序,点击“自动”按钮。
  3. 找到.eep.hex文件,若没有可从此处下载。
  4. .eep文件拖放到Teensy加载器窗口,按下并释放Teensy复位按钮。
  5. .hex文件拖放到Teensy加载器窗口,再次按下并释放Teensy复位按钮。

编译源码

  1. 阅读依赖项部分和项目技术细节部分。
  2. 在终端中导航到src目录,输入make进行编译。
  3. 若编译成功,.hex.eep文件将位于src目录中。

创建新的按键映射

  1. 参考相关文件:
    • 键码宏:参考src/lib/usb/usage-page/keyboard--short-names.hsrc/lib/usb/usage-page/keyboard.h
    • 键盘功能:参考src/lib/key-functions/public文件夹中的所有文件。
    • 模板布局文件:参考src/keyboard/ergodox/layout文件夹中的QWERTY按键映射源文件。
  2. src/makefile-options中设置LAYOUT变量为新布局文件的基本名称。
  3. .h布局文件中定义控制键盘LED含义的宏,在.c布局文件中定义每个按键和每个层的键码、按下和释放函数。

添加不同类型键盘的代码

  1. 确保以下文件包含所需的函数原型和宏定义:
    • src/keyboard/ergodox/controller.h
    • src/keyboard/ergodox/layout.h
    • src/keyboard/ergodox/matrix.h
  2. src/makefile-options中设置KEYBOARD变量为新键盘文件夹的名称,并可根据需要更改其他选项。
  3. 确保上述.h文件存在于新键盘目录的顶级位置,避免循环包含。
  4. 注意src/makefile中的SRC变量,确保所有.c文件都被编译。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】