安装必要的工具
brew install Caskroom/cask/crosspack-avr
brew install dfu-programmer
cd ~
git clone --recursive https://github.com/kairyu/tmk_keyboard_custom.git
检查
avr-gcc
命令是否可用直接在命令行执行
avr-gcc
, 如果出现command not found, 在命令行执行:PATH="/usr/local/CrossPack-AVR/bin:$PATH" export $PATH
以上命令是临时把路径
/usr/local/CrossPack-AVR/bin
放到PATH
中,关闭Terminal后失效
修改配置文件来支持GH60_REV_CHN
cd ./tmk_keyboard_custom/keyboard/gh60
vi config.h
找到
#define CONFIG_H
, 在底下加上#define GH60_REV_CHN
vi Makefile
注释或删掉下面这行代码
KEYMAP_IN_EEPROM_ENABLE = yes # Read keymap from eeprom
连接测试键盘
连接后输入入下列指令
system_profiler SPUSBDataType
应该会出现:
GH60:
Product ID: 0x6060
Vendor ID: 0xfeed
Version: 0.01
Speed: Up to 12 Mb/sec
Manufacturer: geekhack
Location ID: 0x14400000 / 37
Current Available (mA): 500
Current Required (mA): 100
Extra Operating Current (mA): 0
然后按下键盘背部的按钮
再次执行命令
system_profiler SPUSBDataType
应该会出现:
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)
可以开始刷配置了,如果没信心,还是先用 poker 的 layout 来试试吧
poker layout
切换到目录
gh60
下执行make dfu
刷出以下内容表示成功
Creating load file for Flash: gh60_lufa.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature gh60_lufa.elf gh60_lufa.hex
dfu-programmer atmega32u4 erase --force
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
dfu-programmer atmega32u4 flash gh60_lufa.hex
Checking memory from 0x0 to 0x61FF... Empty.
0% 100% Programming 0x6200 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
0x6200 bytes written into 0x7000 bytes memory (87.50%).
dfu-programmer atmega32u4 reset
开始制作自己的layout
http://www.keyboard-layout-editor.com/ 生成raw data
https://yang.hging.net/tkg/ 把raw data生成
.c
文件参考dm4设计的layout,觉得不错稍加改了下:
Layer 0 (Default)
http://www.keyboard-layout-editor.com/#/gists/907d4f327ee92188cb929044ec186c39
Layer 1 (Fn0层)
http://www.keyboard-layout-editor.com/#/gists/a460aca35c9eedab94433f6c297ef94c
keymap generator 的设定
Keyboard - GH60 (RevCHN) Layer Mode - Normal Number of Layers - 2 Layer0 - Default Layer1 - Function layer Fn - Layer action > Momentary layer 1
Fn Momentary layer 1 的意思就是当 fn 按下时是 layer 1 的 keymap 但不按 fn 时就关掉 layer1
下载
.c
文件, 把名字改成keymap_tkg.c
放到
gh60
目录下边执行
make KEYMAP=tkg dfu
Done
记录下现有的问题
- `Fn+RCommand+Delete 连按几下会导致 Command 键按下事件,每次再按其他键的时候都成了Command+键的效果。现在的解决方案就是重新多按几个那个组合。。。。