
基于QMK的87键复古机械键盘
简介
87键复古机械键盘,设计特点是将Function键拆分移动到主键区域的左右两边。主控为Teensy 2.0+,固件基于QMK,加入了VIA,底座和上盖使用OpenSCAD绘制。
简介:87键复古机械键盘,设计特点是将Function键拆分移动到主键区域的左右两边。主控为Teensy 2.0+,固件基于QMK,加入了VIA,底座和上盖使用OpenSCAD绘制。开源协议
:GPL 3.0
描述
制作动机
以前一直用 BFACE 的84键,但发现两个问题:一个是 Fn 键与 shift 键按下有先后差别,另一个是84键的 F1-F12 离主键区域太近,容易误触。于是想 DIY 一个类似IBM 3278、IBM5100、Fortune、Zenith Z100 的 Function 键在左右两边造型复古的机械键盘。
配列
借助 KLE 网站绘制键盘配列。
左下和右下两个键可以去掉,更有老键盘的味道;如果补上,则可多设置4个功能键。
PCB
- 不想自己焊贴片元件,不想花钱SMT,所以二极管和电阻均采用插针式,二极管方向采用 Col_to_Row;
- 不想自己焊主控芯片,不想自己折腾 bootloader,所以直接将 Teesy 2.0+ 系统板焊接到 PCB 上;
- 不想要光污染,所以最后只添加了 Caps Lock 一个灯。
定位板
借助 Plate & Case Builder 网站生成 DXF文件。不想纠结各种材质定位板的手感和价格对比,直接在立创做一个无电路的 PCB 当定位板。
事实上,虽然定位板并无电路也不铺铜,但因为需要激光切割方形孔,所以加工成本反而比PCB板还要贵(PCB上虽然也有密密麻麻的孔,但全是圆形通孔,用钻头即可)。
轴体
采用 TTC 金粉轴和腹灵卫星轴。金粉轴确实非常轻,很适合打字。卫星轴没有调明白,大键有点肉。
外壳
使用 OpenSCAD 绘制,纯代码建模。定位板和键帽的预览功能参考了 kbl2scad 的工作。
底座采用光固化 3D 打印,上盖用橡木加工制作,这两种材质均难以攻出耐用的螺纹,因此需要挖六边形槽以嵌入螺母。
不想使用 Teensy 上的 mini USB 接口,所以购买了一个带定位孔的 Type-C 模块,自制了一根 mini USB 转 Type-C 的线,并在底座上设计了用于固定 Type-C 模块的结构。
固件
- 利用 Keyboard Firmware Builder 网站生成源码;
- 修改 config.h 文件中
VENDOR_ID
和PRODUCT_ID
的值; - 在 rules.mk 文件中添加
VIA_ENABLE = yes
; - 在 QMK_MSYS 中编译生成固件;
注:需要根据错误提示修正 keymap.c 及 kb.h 文件中“陈旧”的代码 - 使用 Teensy Loader 烧写固件;
- 编写 via.json 文件,使用 VIA 软件实时修改键值。
组装
- 焊接 Teensy 2.0+ 系统板,并把针脚剪短(否则会抵住定位板);
- 把 Teensy 2.0+ 系统板上的 LED 灯拆焊掉(因其连接到了PD6端口,不拆会导致 5、T、G、B、空格这一列连带着旁边 4、R、F、V 键连击)
- 焊接二极管(可惜当时 PCB 上的封装画反了,所以不得不反着焊,当然也可以将错就错按封装的方向焊二极管,在固件中改成 Row_To_Col 就可以了),
3 个 2X 卫星轴附近的二极管必须焊到 PCB 背面,否则卫星轴安不上; - 用镊子测试所有按键;
- 安装调试卫星轴(这一步最好在焊轴体之前);
- 焊接轴体;
- 在外壳与上盖的六边形槽中滴上 502 胶,将螺母嵌入其中,风干固定后即可拧螺丝组装。
总结
- 这是我首个自主设计的键盘工程,感谢立创提供良好的软件生态和开源的社团氛围,可以快速找到可参考学习的相似方案,同时很容易获取各种元器件的封装,免去了自己手工测量绘制;
- 首个版本必有遗憾和疏漏,比如二极管封装画反、主控板端口没有做认真筛选、六角孔尺寸偏大、底座斜坡角度不够、底部的主控按钮洞可以设计成脚垫孔等等,如有创客 fork 本项目,一定注意文档中加粗体的部分,避免制作错误及返工。
- 虽然在 3D 打印前已使用 AutoCAD 完成了外壳和底座设计,但本着开源和挑战精神,自学了 OpenSCAD,采用“代码”方式重构了整个设计方案,避免了 AutoCAD 三维设计中由“非参数化”而导致的各种问题,400多行的设计代码也一并开源,供后来者参考。
附件说明
- my87keys.scad 文件由 kbl2scad.py 生成,主要包括键位信息;
- my87keys_full.scad 为绘制键盘各部件的文件,它调用了 my87keys.scad;
- via.json 文件用于 VIA 软件导入配列;
- my8387-qmk.zip 为修改后的键盘源码,解压后放在 qmk 路径下的 keyboard 文件夹中进行编译。
设计图
BOM


评论