Esipode 0 : 起源 ~ The origin of the mind.

某一日,我正在逛数*之家。忽然,我看见了一个DIY机械键盘的帖子,型号是GH60。我去!简直就是放毒!我很久之前就想做or买一个机械键盘,但苦于没有Money or太麻烦,于是就暂时把这个计划搁置了。现在出现了一个这样的DIY的键盘,不是正适合我么?然而,理想很丰满,现实很骨感,我还是没有钱去DIY……于是乎,我转向了小键盘。

Esipode 1 : 探寻 ~ Explode the solution.

决定了要DIY一个小键盘后,我转向度娘,寻求解决方案。然而,度娘就是个坑货,百度到的东西没有一个是有用的,基本都是按键贴纸+按键映射,这不是我想要的。奈何鼓哥不好上,于是我转向bing.必应果然不同,我先找到了这样一个帖子:

多图,小学生之手自制20键无线LOL游戏黑轴小键盘

这个帖子告诉了我,确实有人DIY过,但是用的是现成的键盘主控。这并不符合我的要求,我希望要有一个可编程的小键盘。于是我继续放狗搜索,找到了这个玩意:

HHKB Type-S更换Teensy主控

Teensy?这是个什么玩意?淘宝一下似乎很贵的样子……人很穷的我继续搜寻,发现Teensy用的主控是ATmega32U4。等会……这个主控似乎在哪里见过的样子……是的,这个就是GH60的主控。于是我转向淘宝,发现使用这个主控的模块除了Teensy之外,还有一个,那就是Arduino Pro Micro。

选好了硬件,接下来选软件。为什么我要使用ATMega32U4?因为他有相应的开源固件,那就是TMK:

TMK_keyboard – Github

TMK是个好东西,它有以下特性:

  • 多层键盘布局
  • 鼠标键
  • 系统控制键
  • 媒体控制键
  • USB下的NKRO – 支持120键同时按下
  • 支持PS/2鼠标
  • 支持其他老旧键盘协议
  • 自定义功能
  • 按键宏
  • Debug控制台
  • EEPROM存储
  • 呼吸灯
  • 背光控制

就决定是你了!Pro Micro + TMK!

Esipode 2 : 硬件部分 ~ The hardware.

淘宝淘来一个机械小键盘和一个Pro Micro

IMG_2632

IMG_2640_看图王

请不要在意键盘上面的数码管。

将键盘的原有电路破坏后,将其连接为4×5的矩阵,这样可以节省IO口。

wMNx2u6

我将纵向四个IO连接到PB1、PB3、PB2、PB6上,把横向5个IO连到PC6、PD7、PE6、PB4、PB5口,这样,基本电路就制作完成了。

Esipode 3 : 软件修改 ~ The nightmare .

从Github把TMK clone下来后,我找到一个键盘配置文件作为蓝本,进行修改。首先我选择的是LightPad。我们需要修改matrix.c、LED.c、Config.h以适应我们的硬件配置,修改keymap.c与keymap.h以改变键位。

修改完成之后,使用make生成烧录所需的hex文件,接下来就可以烧录了。

 

然而,这就是噩梦的开始。

一开始是32U4的DFU驱动死活装不上去,后来不知道怎么的就解决了。

接下来是tkg-toolkit无法正常识别我的硬件,就算短接两次Reset也不行,只好换软件烧录。然而,无论是OpenJumper Serial Assistant、FLip还是avrdudeGUI都不行,而Arduino却可以,我只好用任务管理器找到执行的命令行,手工用avrdude刷。

烧录hex后,发现电脑无法正常识别这个坑爹东西,提示什么未及时响应。我很无语,刷入以及编译好的GHPAD的hex后发现正常了,于是判断Lightpad可能不兼容。

于是乎,找到国人的tmk_custom,找出ghpad,以ghpad为蓝本修改。修改后编译,简直holy shit,提示某个函数缺失。原来是custom的内核与键盘分开了,我用的是原版内核,所以无法编译通过。换过内核后继续编译,继续提示背光错误,于是我只好禁用背光,单独编译。这次终于编译好了。

烧录上去,一切正常。简直不能再开心。

Esipode 4 : 完成 ~ the good ending .

完成了这个计划,请允许我放一首红楼来舒缓一下心情。啊!今天也是平和的一天呢!

顺便说一句,这个键盘是可以拿来玩东方+OSU!的。按键配列:

http://www.keyboard-layout-editor.com/#/gists/f3bf297feb60fe42f2ec

["Num Lock","/","*","-"],
["7\nHome","8\n↑","9\nPgUp","bs"],
["4\n←","5","6\n→","+"],
["1\nEnd","2\n↓","3\nPgDn","Enter"],
["Fn","0\nIns",".\nDel","Enter"]

["Fn1","Fn2","Fn3","Fn5"],
["7\nHome","8\n↑","9\nPgUp","Fn6"],
["4\n←","5","6\n→","Fn7"],
["1\nEnd","2\n↓","3\nPgDn","Fn8"],
["Fn","0\nIns",".\nDel","Fn9"]

["Num Lock","","",""],
["Esc","↑","R",""],
["←","↓","→",""],
["","","",""],
["Fn","","",""]

["Num Lock","","",""],
["Esc","F1","F2","R"],
["","","wheel up","wheel down"],
["Z","X","C","V"],
["Fn","","",""]

["!\n1","@\n2","#\n3","$\n4"],
["Q","W","E","R"],
["A","S","D","F"],
["Tab","Esc","C","B"],
["Fn","LCtrl","LAlt","P"]

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注