这篇文章会介绍如何编译 GH60 键位程式,至於如何刷键位可以参考我的上一篇文章 。
编译键位程式:是指自已修改键盘每个按键设定后,再编译成键位档 Hex 格式,这个档案可以用来更新键盘韧体,达到自订热键的功能,这个动作英文叫 "Build Firmware"。
刷键位也可以叫刷机,中国用语叫"刷固件",英文叫 Program Controller:是指将键位档写入键盘的主控板,主控板就是电子用品背面常常看到扁扁黑黑的那一块东西。
之所以要提各国 GH60 相关的名词,是因为如果你在编译的过程中有任何问题,也可以用英文或简中去网路上搜寻看看有没有解法,毕竟台湾在玩 GH60 DIY 键盘的人真的不多,所以繁体中文的文章会比较少。
这篇文章会提到很多跟程式相关的行为,如果你不是软体工程师,看这篇文章可能会有一点辛苦,不过我会尽量将编译 GH60 键位方式写得白话一点。
首先 GH60 韧体开发已经是很开放的 open source ,每个人都可以下载回来自已修改使用,它的名称叫 tmk_keyboard ,下面两个都是 tmk keyboard ,其中 tmk_keyboard_custom 支援 GH60 较新的板子 REV. C ,功能也比较强,我个人就是使用 tmk_keyboard_custom 来改。
安装编译环境 - Docker
先教大家如何编译程式码,要编译程式码之前,我们得先安装编译的环境,但是这个动作太麻烦了,就连我本身是软体工程师,安装一堆有的没的,就只是为了编译程式码,所以我使用 Docker 这个虚拟环境来安装我们的编译用虚拟机。
请下载 docker toolbar 并安装
安装的过程中请勾选 VirtualBox, Kitematic (Alpha) 跟 git gui ,如果你对 GIT 很熟,也请一定要勾选 git gui ,不然会无法启动 Docker quickstart terminal.
安装完成后,点两下 Docker Quickstart terminal ,它会自动安装一个虚拟的 Unix 环境,安装的过程大约 1 分钟,请等他跑完,跑完后会留下一个黑色的 terminal,这个就是我们等一下要输入指令的地方,
跑完如下图所示,你会进入 Docker Terminal ,这个 Terminal 让你可以输入指令操控 Docker 虚拟机。
请你在 D 槽建一个目录叫 Docker ,然后在这个目录建一个档案叫 Dockerfile - D:\Docker\Dockerfile ,这个档案的内容如下:
- FROM debian
- LABEL Description="This image is used to be a simple linux machine"
- RUN apt-get update && apt-get install -y sudo wget telnet vim git ncurses-term
- RUN apt-get install make && ln -sf /usr/bin/make /usr/bin/gmake
- RUN apt-get install -y gcc-avr binutils-avr gdb-avr avr-libc avrdude dfu-programmer
- VOLUME ["/test"]
这个 Dockerfile 定义我们编译环境的所有软体 ,请一定要复制一模一样的内容,接著回到 Docker terminal ,输入以下指令:
- cd /d/Docker
- docker build -t keyboard .
这时 docker 就会开始安装虚拟的 debian OS ,并自动安装所有的软体,大约 1 ~ 2 分钟就安装完毕, Docker 可是非常的快速,安装好的 debian OS 会有一个名字叫 "keyboard"。
下图为安装完成的画面
Debian 安装完成后,你可以输入 docker images ,有看到 Images 资料的话,这样就代表安装成功罗。
下载与挂载刷键位原始码
下一步是要把 windows 资料夹挂载到 Docker machine 上,因为 Docker 本身是装在 VirtualBox 上的一台 unix 系统,这台系统没有 Windows 上的档案资料,为了让 Docker 可以顺利的读到 Windows 上的档案,我们要先打开 virtualBox ,点两下 VirtualBox 程式,在 VirtualBox 介面会看到一个叫 default 的机器名称,点它按右键选择设定值,再挂载 D:/Docker 这个目录。
你可以参考下图的设定方式,先选择共用资料夹右上角的增加选取 D:\Docker 这个资料夹。
挂载好之后在 Docker terminal 输入下面这个指令,Docker OS 就会重启,资料夹才会正确挂载上去, 如果你有使用 cygwin 的话,那么你也可以用这个指令来挂载目录 /cygdrive/c/Program\ Files/Oracle/VirtualBox/VBoxManage sharedfolder add default --name aaa--hostpath c:/cygwin64/aaa --automount
。
- docker-machine restart
输入下面这个指令,你应该要看到一个 Dockerfile 的档案。
- docker run -ti -v /Docker:/Docker -w /test keyboard ls /
再来先下载我的 tmk_keyboard_custom 版本,因为我的 tml_keyboard_custom 没事不会改版,所以编译一定会过,另补充说明我的 win10 有碰到 permission denied 的错误,这是因为 Docker 这个资料夹预设只有管理员可以修改,如果你也遇到这个问题,就先去修改资料夹权限即可。
下载方式,先在 Docker terminal 输入这个指令:
- git clone --recursive https://github.com/puritys/tmk_keyboard_custom pure_gh60 -b pure_gh60
接下来就可以编译看看是否可以产生 hex 键位设定档,请依序执行下列二个指令,第一个指令是为了进入 gh60 资料夹,第二个指令则是在 Docker 虚拟机中编译程式。
- cd tmk_keyboard_custom/keyboard/gh60/
- docker run -ti -v /Docker:/Docker -w /Docker/tmk_keyboard_custom/keyboard/gh60 keyboard gmake
顺序跑完的话 , D:/Docker/tmk_keyboard_custom/keyboard/gh6 会产生这个档案 gh60_lufa.hex ,这个档案就可以拿来刷键盘韧体罗,刷韧体可以参考这篇文章:如何使用 Atmel Flip 对 GH 60 PCB 刷键位、刷机 - Windows 系统 。