跳至内容
返回

复刻 Stack Overflow 愚人节“神作”:3 键机械键盘实战指南

更新于:  at  04:10 上午

背景

2021 年愚人节,Stack Overflow 搞了一个非常有意思的彩蛋:限制用户的复制次数,并“推销”了一款只有三个键的定制键盘。

这个小巧精致的键盘激发了我的创作欲。思考了一下,实现逻辑其实非常简单,基本上把我之前做的“原神自动弹琴装置”稍加修改即可,核心代码甚至在百行以内。 键盘 by StackOverflow

随后我打开 KiCad 直接开干,从原理图到 3D 渲染一气呵成。

🛠️ 核心设计思路:为什么是 ATMega32u4?

在开始制作之前,选型是关键。Stack Overflow 官方彩蛋中的键盘只有三个键:CtrlCV

为了实现这个功能,我选择了 ATMega32u4 作为主控:


📐 硬件开发:KiCad 流程与 PCB 细节

在 KiCad 中,我设计了一块极简的 3% 配列 线路板。

渲染效果

渲染效果图 - 键盘 渲染效果图 - 键盘

关键电路特性

  1. 热插拔支持: 引入了凯华热插拔轴座(1511 系列),这意味着你可以随时更换青轴、红轴或静音轴。
  2. 电源管理: 使用了 AP2112K-3.3 LDO 芯片,确保 32u4 在稳定的电压下工作,并加入肖特基二极管防止 Type-C 接口反向供电。
  3. 模式切换: 增加了一个 2 位拨码开关。这不仅可以用来切换不同的按键映射(如 Mac/Win 切换),还能开启或关闭“连发模式”。

💻 软件实现:组合键逻辑

固件的核心逻辑是将物理按键的电平变化映射为标准的 HID 编码。实现 Ctrl + C 的逻辑如下:

// 示例:实现 Ctrl + C 的伪代码
if (digitalRead(KEY_C_PIN) == LOW) {
    Keyboard.press(KEY_LEFT_CTRL); // 先按下 Ctrl
    Keyboard.press('c');           // 再按下 C
    delay(100);                    // 保持一小段时间
    Keyboard.releaseAll();         // 释放所有按键
}

材料清单 (BOM)

预览图

序号名称数量备注
1ATMega32u41主控芯片 QFN44封装
2AP2112K-3.315V转3.3V芯片 SOT-23-5
316Mhz晶振12.0*1.6
41uF电容10603
522pf电容20603
610uf电容20603
71KΩ电阻50805
810KΩ电阻10805
922Ω电阻20805
10凯华热插拔轴座31511系列
11轴体3任意轴体
122位拨码开关11.27mm
13Type-C接口116p
14肖特基二极管1BAT60JFILM SOD-323
15微动开关13x4x2.5 四脚贴片

焊接与组装

焊接心得: QFN44 封装虽然引脚密集,但在涂抹适量锡膏后,配合热风枪(建议 350°C,中等风速)可以实现自动对准吸附。

PCB 电路板

组装: 简单的画了个方盒子作为外壳,然后从我的旧键盘上扣下来三个键帽装上去。

实物照片 实物照片

进阶特性与开源

这把键盘虽然源于彩蛋,但具备很强的实用性:

连发模式: 通过拨码开关开启,适合某些需要快速重复操作的场景。

全平台兼容: 基于标准 HID 协议,插上即用,无需安装驱动。

开源地址: https://github.com/chaosgoo/HairsPP

附:HID 扫描码速查表 (部分)

为了方便自定义按键,我整理了常用的非标准按键编码。你可以通过修改固件,实现 F13-F24 等宏功能。

控制与修饰键 (Modifier Keys)

定义编码 (Hex)功能描述
KEY_LEFT_CTRL0x80左侧 Ctrl 键
KEY_LEFT_SHIFT0x81左侧 Shift 键
KEY_LEFT_ALT0x82左侧 Alt 键
KEY_LEFT_GUI0x83左侧 Win / Command 键
KEY_RIGHT_CTRL0x84右侧 Ctrl 键
KEY_RIGHT_SHIFT0x85右侧 Shift 键
KEY_RIGHT_ALT0x86右侧 Alt 键
KEY_RIGHT_GUI0x87右侧 Win / Command 键

系统与导航键 (System & Navigation)

定义编码 (Hex)功能描述
KEY_UP_ARROW0xDA方向键:上
KEY_DOWN_ARROW0xD9方向键:下
KEY_LEFT_ARROW0xD8方向键:左
KEY_RIGHT_ARROW0xD7方向键:右
KEY_BACKSPACE0xB2退格键 (Backspace)
KEY_TAB0xB3制表键 (Tab)
KEY_RETURN0xB0回车键 (Enter)
KEY_ESC0xB1退出键 (Esc)
KEY_INSERT0xD1插入键 (Insert)
KEY_DELETE0xD4删除键 (Delete)
KEY_PAGE_UP0xD3上翻页键 (Page Up)
KEY_PAGE_DOWN0xD6下翻页键 (Page Down)
KEY_HOME0xD2起始键 (Home)
KEY_END0xD5结束键 (End)
KEY_CAPS_LOCK0xC1大写锁定键 (Caps Lock)

功能键 (Function Keys)

定义编码 (Hex)功能描述
KEY_F1 - KEY_F120xC2 - 0xCD标准功能键 F1 至 F12
KEY_F13 - KEY_F240xF0 - 0xFB扩展功能键(常用于绑定宏命令,不会与系统快捷键冲突)

总结与展望

这把复刻自 Stack Overflow 愚人节彩蛋的 3 键宏键盘,虽然初衷是为了好玩,但在实际制作过程中,它涵盖了 原生 USB-HID 通信、硬件电路设计以及人体工程学按键映射等多个核心知识点。

通过本项目,我们不仅实现了一个极简的生产力工具,更深入理解了:


在以下平台分享此文章: