最近组了一个 GH60,过程相当波折,全过程大概有半个月吧,组键盘主要分成三步。
其中第3部分最最惊险,不过还是从第1步说起。
了解 GH60
我之前使用 HHKB 有些年头了,看到 GH60 之后,基本上是以 HHKB 备份键盘的心态,准备拼一个玩玩,也是可有可无的东西吧。总体价格不能太离谱,不能弄个 2-3k 的壳子 + 板子,再弄个 1k 的 sp 二色,激动的再弄个 cc,那完蛋了,4-5k 的价格要被老婆打死的。心里的预算在 600-800 左右吧,最后一共花了 1259,超出了一些预算,主要花在壳子上了。
组装 GH60
从得瑟的角度来看,这个键盘要有灯,最好还是彩虹的。既然有灯,就要有透光的键帽,我对原厂高度还是 OEM 高度没要求,但我希望这个键帽不要是 ABS 的,那就基本上只能是 PBT 的,毕竟 POM 的键帽还挺少的,而且也不好。总体色调黑色,我比较喜欢全黑色的。
在这个要求下,再加上预算问题。我选择了 IKBC 的 G104 黑色透光键帽,PBT 的,透光,价格比较便宜,taobao 能买到的价格大概 270 左右吧,我在 pcwaishe 买了个全新二手的,花了 180。这套键盘是 104 的,做工非常一般,不过介于 PBC 二色透光,其实也没什么选择的。
下一步,买 GH60 的板子,在 taobao 某卖家那里弄了一个 all in one 的方案,彩虹灯、GH60板子、五角 Cherry 青轴、大键位卫星轴,这是个无钢板的方案。
最后一步,买壳子。两个大选择,金属还是非金属。非金属的可以用 Poker 的壳子,塑料的,大概 70。或者定制的亚克力壳子,或者树脂,价格就完全不确定了。我要的是金属壳子,而且要低端,不能太贵,有几个选择吧。
1. 菜壳:就是 taobao 上最常见的阳极壳子,大概 350,也没用过,有一点点看不上。
2. Tex60壳子:据说是台湾产的,壳子底下比菜壳多了两个金属支架,原价 750,我 615 收了一个黑色的,其它颜色还有蓝色,银色等。
3. FMJ壳子:不知道哪里产的,比较有特点的是,壳子上有4个扑克牌的金属,价格较贵,要 1.5 左右。太贵了,不是我的菜啊。外观比较花,其实也不是我喜欢的。
4. KMac Happy/Mini:韩国产的,特别贵,是完整的方案,带板子的,价格 2.5K 左右。我要的是 GH60,不想要其它板子,而且价格也太贵了,不是我的菜啊。
基于性价比,买的 Tex60壳子,很低调,我喜欢。
买到之后安装键帽,然后直接就傻眼了。最下面一排装不上,因为没沟通好方案,导致我买的键帽和键盘几个地方不匹配。
1. 右上角是 Backspace,而 HHKB 是分开的两个键
2. 右 Shift 是个大的 Shift,大概是 3X Shift 吧。而 HHKB 是 1.75X Shift + 1X FN
3. 最下面一排完全不对,G104 应该是 6.25X 空格,板子上是 7X 的,左右也对不上。
没办法了,和卖家商量后,寄回去,免费帮我改改。对应上面的3点:
1. Backspace 一分二
2. Shift 一分二
3. 最下面一排,左3,右4,中间 6.25X 空格
经历了漫长的等待,重新寄过来。
在这个过程中,我到 taobao 上买了新的 1.75X Shift,IKBC 的。好像也没有别的选择。GMK 的 1.75 Shift 应该是原厂高度的,我也没法用。
组装成功!
回来之后,基本上是 Windows 键位,这肯定是无法满足我要求的,果断刷机。果断 google gh60 firmware,找到了(之前已经找到无数次)的 github tmk_keyboard 项目,clone 下来吧。
在 mac 下,只需要用 homebrew 把 crosspack 和 dfu-programmer 安装好就行了,前面的用来 build firmware,后面的用来将 build 的输出写到键盘里面去。
键盘后面有个按钮,按之前,键盘被识别成一个 GH60 USB 设备。Mac 下可以用命令 system_profiler SPUSBDataType 看 USB 设备列表,当然,也可以在系统报告里面看。按了那个按钮之后,键盘就变成一个 atmega32u4 设备,名字有一点儿区别,比如会带 DFU,表示在 DFU 模式下。这个状态下,就可以刷机了。
直接 make dfu KEYMAP=hhkb ,就行了,结果非常让人不爽,莫名其妙的打出几个字母,然后整个键盘全是乱的。
完了,这时候就想,要是不刷就好了,反复试了3个小时,还是没弄明白,放弃。等一位懂的同学,从香港回来,再弄!
这哥们终于回来了,发现,GH60 板子分很多种,如 Rev A, Rev B,我这个是 Rev CHN,要用 tmk_keyboard_custom 那个项目,才支持的。可以搜 gh60 rev chn,会找到那个 custom 的项目,在 keyboard/gh60 目录下,matrix.c 里面有支持 REV CHN 和 REV CNY 的代码,然后在 config.h 中,增加一句
就会开启 REV CHN build,从这时开始,我的键盘,就又能用了!
但是,还不够。因为有些键位是多出来的,比如 Backspace 拆开的两个键位,怎么才能知道这个键位的信息呢。这时候,就有一个工具了,在 Mac 下,叫 hid_listen.mac,执行了之后,会得到键盘的信息。还需要配合键盘的 Magic 键。Magic 键是左 Shift + 右 Shift,比如 Magic + x 就开启了 matrix debug,按下相应的键位,就会从 hid_listen.mac 的 console 上看到键位的位置和名称。太好用了,这样就很容易找到没有效果的键位了!
还有就是 Boot Magic Configuration 比较有用,就是在插 USB 之前,按住空格,然后再按相应的键,达到 Virtual DIP Switch 的效果。空格 + Backspace 比较实用,清空 EEPROM 数据。
到这里为止,其实大部分功能就已经可以工作了。最后就是优化功能了,把键盘配置成专人专用最顺手的工具。
补上我的配置吧,这个就要详细的参考 tmk 的文档了。
/*
* HHKB Layout
/
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/ 0: Default layer
* ,-----------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| | |
-----------------------------------------------------------'
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn |
* |-----------------------------------------------------------|
* | |Gui |Alt | Space | |Alt |Gui | |
*
/
KEYMAP_HHKB(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,FN0, \
FN2 ,LALT,LGUI, SPC, RGUI,RALT,RCTL,FN1),
/ 1: HHKB Fn layer
* ,-----------------------------------------------------------.
* |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
* |-----------------------------------------------------------|
* | |VoD|VoU|Mut|Ejc| | | /|Hom|PgU|Lef|Rig|Enter |
* |-----------------------------------------------------------|
* | | | | | | | +| -|End|PgD|Dow| | |
* |-----------------------------------------------------------|
* | | | | | | | | |
* -----------------------------------------------------------'
-----------------------------------------------------------'
*/
KEYMAP_HHKB(
PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \
TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
/* 2: HHKB FN1 layer Mouse
* ,-----------------------------------------------------------.
* |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
* |-----------------------------------------------------------|
* | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
* |-----------------------------------------------------------|
* | | | | | | | +| -|End|PgD|Dow| | |
* |-----------------------------------------------------------|
* | | | | | | | | |
*
*/
KEYMAP_HHKB(
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,BTN1,MS_U,BTN2,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,MS_L,MS_D,MS_R,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
/ 3: HHKB FN2 layer Idea
* ,-----------------------------------------------------------.
* |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
* |-----------------------------------------------------------|
* | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
* |-----------------------------------------------------------|
* | | | | | | | +| -|End|PgD|Dow| | |
* |-----------------------------------------------------------|
* | | | | | | | | |
* `-----------------------------------------------------------'
*/
KEYMAP_HHKB(
TRNS,FN11,FN3, TRNS,TRNS,TRNS,TRNS,FN4, FN12,FN5, FN6, TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,FN7, END, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP, FN8, FN9, TRNS, \
TRNS,HOME,TRNS,TRNS,RGHT,TRNS,TRNS,TRNS,TRNS,FN10,TRNS,TRNS, TRNS, \
TRNS,TRNS,TRNS,PGUP,PGDN,LEFT,DOWN,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
};
/*
* Fn action definition
*/
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1),
[1] = ACTION_LAYER_MOMENTARY(2),
[2] = ACTION_LAYER_MOMENTARY(3),
[3] = ACTION_MODS_KEY(MOD_LCTL, KC_F2),
[4] = ACTION_MODS_KEY(MOD_LALT, KC_F7),
[5] = ACTION_MODS_KEY(MOD_LSFT, KC_F9),
[6] = ACTION_MODS_KEY(MOD_LSFT, KC_F10),
[7] = ACTION_MODS_KEY(MOD_LGUI, KC_F4),
[8] = ACTION_MODS_KEY(MOD_LGUI | MOD_LALT, KC_LEFT),
[9] = ACTION_MODS_KEY(MOD_LGUI | MOD_LALT, KC_RGHT),
[10] = ACTION_MODS_KEY(MOD_LGUI | MOD_LCTL, KC_L),
[11] = ACTION_MODS_KEY(MOD_LALT, KC_F1),
[12] = ACTION_MODS_KEY(MOD_LGUI, KC_F8),
};
我把比 HHKB 多出来的一个键,给 Intellij Idea 专用了,配置了一个层,专门给 Idea 的快捷键,实在是,再也不用鸡爪了!
右边那个多出来的,我现在只是简单的弄了个鼠标键,后续,可以考虑更加丰富的功能吧。
1
Muninn 2015-01-14 01:36:33 +08:00 1
佩服啊...
我一直想搞个这样的 因为机械的手感真的比HHKB好... 前几天出来个团购的 但是我仔细看了 这几个地方确实和HHKB不一样. 就犹豫了下没买.. 什么时候才能简单一点搞到一个 这个太小众了 估计没人做. |
2
tywtyw2002 2015-01-14 13:15:11 +08:00 1
|
3
ooxxcc 2015-01-17 15:36:22 +08:00
求一下hid_listen.mac 的具体使用方式
|
4
ooxxcc 2015-01-17 22:12:13 +08:00
没太看懂第一行最右的键怎么配的,感觉好像不太对,矩阵少了一列
求详情 |
5
haha1903 OP @ooxxcc
在这里 https://www.pjrc.com/teensy/hid_listen.html 下载 hid_listen.mac,执行之后。 在键盘上 左shift+右shift+x 然后随便按个键,hid_listen.mac 上,就会显示哪个键位被按下,就可以去配置了。 第一排由于是帖过来的,好像有转义,少了字符。可以看一下这个 http://www.scalaone.com/?p=291 |
6
igboy 2015-01-19 20:40:26 +08:00
悲剧,同用tmk_keyboard 刷挂中T^T
|
10
hncqp 2015-01-20 13:54:16 +08:00
|
11
haha1903 OP @hncqp 遇到过,2指用不了,应该是指所有键都冲突吧。
我刷错固件之后,每次插上,都会打出几个字母,同时,全键盘冲突。 奇怪的是,我重启电脑(注意是电脑)之后,冲突问题就解决了。但接上出字母问题还在。 |
12
ooxxcc 2015-01-21 00:39:14 +08:00
|
13
ooxxcc 2015-01-21 00:40:12 +08:00
@hncqp 滚动条是mousekey的问题,屏蔽就好,另一个解决方案是系统偏好设置->通用 里面,把“显示滚动条”调到 “滚动时”
|
14
ooxxcc 2015-01-21 00:41:31 +08:00
@haha1903 我后来解决了。。团购的板子自己摸索出才知道是AMJ60版本,没源代码,刷出来都是乱的,各种坑,花了一天时间调。。
|
15
ooxxcc 2015-01-21 00:42:23 +08:00
|
22
igboy 2015-02-05 12:23:31 +08:00 1
@libotony @ooxxcc 我的操作是先把caps Lock/Control 的键帽取下,按一下下面的按钮。此时系统应该可以识别出atmega32u4,装上相关驱动。
先刷固件gh60_Amj60.hex,板子是amj60的,只有杰少的群里面有固件, http://pan.baidu.com/s/1hqu0EFi ,密码:au3e 然后刷配列,配列可以去 http://www.keyboard-layout-editor.com 生成,然后把raw data 拷贝到www.enjoyclick.org/tkg/ 里面,层模式选简单,标准,还是多合一,看你是怎么写配列的,选择GH60{Rev CHN),自己选择FN键的功能,下载 .eep文件,用工具把 eep文件刷到键盘里面。 应该就差不多了。 这是我的配列: http://www.keyboard-layout-editor.com/#/layouts/4ff1bae6152305d7ff4c84e276d15777 tkg那里是选的简单 我是用的Archlinux,操作不是gui的 ```` sh sudo dfu-programmer atmega32u4 erase --debug 5 sudo dfu-programmer atmega32u4 flash gh60_Amj60.hex --debug 5 sudo dfu-programmer atmega32u4 flash-eep xxx.eep --debug 5 sudo dfu-programmer atmega32u4 start --debug 5 ```` 第一条命令,擦除原先的固件,加入 --debug 5 是为了打印更多的信息 第二条命令,输入 gh60_Amj60.hex 固件 第三条命令,输入配列 第四条命令,不知道怎么说,反正就是启动啦,键盘可以用了 |
25
haha1903 OP |
26
ooxxcc 2015-02-05 15:42:51 +08:00
|
27
haha1903 OP @ooxxcc 你现在刷是写 eep 还是直接改代码刷的?amj60 用的 tmk 和标准的不一样吧,用 CHN 的可以刷吗?
|
28
libotony 2015-02-05 18:12:04 +08:00
@ooxxcc 我的有问题,返回去了,今晚回家折腾,没搞过avr,如何清空eep?dfu-programmer可以清空?我用mac环境,我也想问,用tmk的固件eep还是可以用之前的方法刷?
|
30
igboy 2015-02-05 19:01:08 +08:00
|
31
haha1903 OP @igboy 明白了,看来是通病,@raptium 的键盘问题和你的一模一样,esc 和左 shift 不能用。
使用 space + x + d 开启了 matrix debug,发现这两个键应该是物理上坏了。 |
32
haha1903 OP @igboy 可以看一下 https://github.com/tmk/tmk_keyboard,下面有清空的方法
General Skip reading EEPROM to start with default configuration(ESC) Clear configuration stored in EEPROM to reset configuration(Backspace) 就是插键盘之前,按住 Space 和 Backspace 就清了,下面还有好多这样的控制键,写 eep 的,你可以试一下。 除了 boot magic,如果左 shift 好用的话,magic command 更方便一些,不用插拨键盘。 |
33
ooxxcc 2015-02-05 21:24:58 +08:00 1
@haha1903 我刷了个空的eep进去。。。然后我之前贴了个github链接,有一个能用的tmk_keyboard版本
|
36
ooxxcc 2015-02-05 21:31:07 +08:00 1
|
38
libotony 2015-02-06 09:38:53 +08:00
@ooxxcc 昨天回家编译了一下,有点事还没来得及刷呢,你的keymap我有个问题哈,你的空格右边怎么是三个键?另外我的没用最边上的两个ctrl,需要在keymap里写上么
|
42
libotony 2015-02-06 14:37:24 +08:00
@ooxxcc make dfu 确实没有生成eep文件,不过只执行make的话会生成eep文件,另外我想问下你的键帽用的是?
|
45
kai1103 2015-03-06 15:48:56 +08:00 2
@ooxxcc @haha1903
tkg除了action_function和action_macro没法定制以外其他功能基本都支持,甚至还自带一些方便的action_function,由于eep容量问题GH60预设支持最多8层,我想稍微复杂点的配置还是可以实现的吧。最不济还可以download .c file之后自己再改改。 如果不需要结合tkg使用的话,编译固件的时候推荐关闭KEYMAP_IN_EEPROM选项,这样就可以免去每次清空eeprom的麻烦了。 另外如果使用tkg的话,推荐配合tkg-toolkit使用,虽然目前只有windows版,过后会有mac/linux版更新。或者还可以直接在tkg上启用高级模式在线刷。 |
48
ooxxcc 2015-03-06 17:11:27 +08:00
|
50
kai1103 2015-03-24 16:01:08 +08:00
@ooxxcc 我最早是出于不重复发明轮子和网络分享的精神,才设计的这套WebUI。从头编辑确实很麻烦,但是在模版的基础上修改的话就轻松多了。比如这里就收录了一些模版和范例 http://www.enjoyclick.org/wiki/tkg
|
51
rdfewxf 2015-09-09 13:15:44 +08:00
@tywtyw2002 三百多刀都可以买 HHKB 了.
不太划算哦. |
52
tywtyw2002 2015-09-10 14:45:42 +08:00
@rdfewxf 写错了 是 rmb 。。。。。
|
53
clydelin 2016-10-07 20:07:48 +08:00
gh60 可以实现 control + h j k l 映射 方向吗?
求个淘宝地址 我想弄个无钢板的方案 大部分店套装都是有钢板的 |