gh60折腾记录

Tags c gh60


2016-01-03 21:42:25


version : 1.1

意义

  1. 整个组装过程非常有乐趣
  2. 好用不贵
  3. 满足自己各种各样奇怪的要求,可玩度非常高。

版本更新记录VER:1.1

主要是找到了所有的keymap文档,然后大概扫了一眼源代码,它是自动前面给你加上KC_的所以源代码不太好找。

调整一下文字渲染,使文档更加容易阅读。

我通过找到keymap文档找到了音乐控制的快捷键。非常方便,只是不兼容网易云音乐,还未解决。你可以在这里找到我的最新keymap。

硬件组装过程

可以直接参考淘宝店里面的教程

我的组装焊锡的过程不表示,淘宝店直接买的是白杨外设店的套餐,选来选去,一次性完成最方便了。

总结一下我遇到的坑,以及犯的错误:

  1. 钢板先要套上pcb然后然后一个一个插入键轴,不是先插入到钢板然后再对准主板的,尤其是有热插拔的时候,几乎不可能完成两块板对接。
  2. 一定要先看淘宝店主给的教程啊,不然洞插错了,很蛋疼。我就是典型的悲剧。
  3. 卫星轴的调整很重要,首先钢丝跟轴体的摩擦力,太大的情况下,键盘的反馈是非常差的,按下去也非常吃力。其次当你发现有这个问题的时候,想再调整就很困难了。
  4. 完美注意深入此键盘,首先淘宝店主给你做的时候就有可能有各种瑕疵,然而这种瑕疵(误差)是不可避免的,其次自己做手都不熟,很有可能蛋疼。

固件定制

这个路程走的还是比较艰辛的,因为教程非常少,而且找到的也非常针对个人的来写的。我使用的是C语言代码来定制layout 并没有使用网上各种工具,使用我这种方法刷进去比较省心,并且也不用研究那么多东西。我使用的电脑是osx,我写的 方法适用于linux 和osx。至于其他操作系统通过查看doc配置cygwin就一样了。

固件环境安装:

  1. homebrew不多做解释。
  2. crosspack编译器安装,参考osx这里就行了
  3. 最后 brew install dfu-programmer

整个过程还是比较简单的 但是有部分大下载不下来,或者gist被墙,可以自己先找个地方下载下来之后。 使用 brew edit修改下载脚本来帮助brew完成整个下载流程。

固件代码下载

git clone https://github.com/kairyu/tmk_keyboard_custom.git

代码下载之后我发现了一个问题submode并没有被克隆然后使用递归也没有克隆成功,反正依赖模块不多先手动搞定。 操作如下:

cd tmk_keyboard_custom
git clone https://github.com/kairyu/tmk_core_custom.git
rm -rf tmk_core
ln -s tmk_core_custom tmk_core

对上面的操作进行解释: 主要是在编译的时候遇到了不少坑,找不到头文件之类的,后来我主动查看了github上的源码目录才发现里面有一个子模块引用的还是一个比较老的版本的源码,在这里经过我的测试使用最新版的是没有问题的。

到这里固件源代码都已经准备好。

源码调整

主要是两个地方需要调整

  1. 指定gh60主板的型号
  2. 在Makefile里面去掉编译条件: KEYMAP_IN_EEPROM_ENABLE = yes

第一条调整,只需要在config.h中 #define CONFIG_H的下面加上代码 #define GH60_REV_CHN 1 即可完成,注意 : 貌似有些教程比较坑,define语法明显不对,后面少了个1

第二条调整,在目标代码前面加 #就可以了。

keymap调整

首先说明一下为啥不想用网页上的工具来生成C文件:

  1. 网页上的流程太繁琐,然后失去了很多可玩度。参考这位大神给出的keymap https://gist.github.com/bigeagle/16a6c48dde34076f7649注意看他的函数,看他是怎么调整vim键位的。
  2. 我刚开始不了解的时候也试过了网上的方法压根编译就过不去。然后我就放弃了这也是一大原因。
  3. 主要还是为了以后的乐趣。

然后说明一些我已经遇到的坑。

  1. 在左上角的位置如果想调整成键位GRV 那么你需要吧所有的layer的左上角的键位都改成GRV,原因不明,如果不照做结果就是ESC
  2. 键盘最多能有8层,存储空间有限,且玩且珍惜。
  3. 经过我这么多坑走过来,建议跟我一样的程序员们上来先试试poker键位,然后慢慢改源代码试试就知道怎么玩了,其实挺简单的,只要掌握了方法。

注意: 如果你不知道所有的功能请参考这里:tmk_core/doc/keycode.txt你会找到所有TMK支持的键位。

keymap源代码分析

需要注意的主要是两个部分的代码

  1. 刚上来的那个数组是需要注意的
    /* 0: qwerty */
    KEYMAP_ANSI(
        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
        ESC,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          FN0, \
        LCTL,LGUI,LALT,          SPC,                     DEL, UP,HOME, END),

这里的注释非常有用哦,提示你这里是什么index,键盘布局,以及下面的详细布局可以自己调整哦。

  1. 然后再注意FN层的这个数组
const uint16_t PROGMEM fn_actions[] = {
    /* Poker Layout */
    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
};

layout里面存储的是,八层键盘布局。 注意函数内参数为上面数组的index 看函数的内容不难看出来是什么意思。 然后自己定制调整就非常简单了。

刷入键盘

一个键盘两种device,一种是输入,一种是刷机状态的,如果想进入刷机状态直接按主板背面的小按钮就行了。(不需要三秒钟,按一下就行了)

查看device:system_profiler SPUSBDataType

键盘模式:

GH60:

          Product ID: 0x6060
          Vendor ID: 0xfeed
          Version: 0.01
          Speed: Up to 12 Mb/sec
          Manufacturer: geekhack
          Location ID: 0x14100000 / 14
          Current Available (mA): 500
          Current Required (mA): 100

可以刷机的模式:

ATm32U4DFU:

          Product ID: 0x2ff4
          Vendor ID: 0x03eb  (Atmel Corporation)
          Version: 0.00
          Serial Number: 1.0.0
          Speed: Up to 12 Mb/sec
          Manufacturer: ATMEL
          Location ID: 0x14100000 / 15
          Current Available (mA): 500
          Current Required (mA): Unknown (Device has not been configured)

注意区分即可。如果要刷入信的layout进入到键盘中直接使用命令make dfu即可

总结

值得参考的文档:

  1. 根目录下面的doc文件夹内的文档,这里会及时的给你当前代码目录中到底怎么构建开发环境,非常实用。
  2. gh60 下的readme文档,会告诉你怎么修改layout

由于搞键盘的时间非常紧,而且我也是个机械键盘的新手,所以这里有一些用词不准确,方法不正确,还请大神批评指正! 给各位新手一个参考时间,我从所有都是零件开始组装到最后修改完成整个键盘大概需要一天的时间,从早10点到半夜。

最后上一个工作时候的图作为本文的结束


本人博客文章采用CC Attribution-NonCommercial协议: CC Attribution-NonCommercial 必须保留原作者署名,并且不允许用于商业用途,其他行为都是允许的。