惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
宝玉的分享
宝玉的分享
V
Visual Studio Blog
B
Blog RSS Feed
G
Google Developers Blog
U
Unit 42
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Palo Alto Networks Blog
月光博客
月光博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
小众软件
小众软件
GbyAI
GbyAI
L
LangChain Blog
A
About on SuperTechFans
Attack and Defense Labs
Attack and Defense Labs
T
Tor Project blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
Recorded Future
Recorded Future
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
P
Privacy International News Feed
I
Intezer
W
WeLiveSecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Help Net Security
Help Net Security
NISL@THU
NISL@THU
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Vulnerabilities – Threatpost
N
News | PayPal Newsroom
Security Archives - TechRepublic
Security Archives - TechRepublic
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
Lohrmann on Cybersecurity
Schneier on Security
Schneier on Security

K.I.S.S

身在 Kimi 的 800 天 写在 Kimi K2 发布之后:再也不仅仅是 ChatBot macOS 按域名切换 DNS 解析 | K.I.S.S 为什么说 GPT 是无损压缩 | K.I.S.S 握着你的手训一个类GPT语言模型 (二) | K.I.S.S 握着你的手训一个类GPT语言模型 (一) | K.I.S.S Rosetta in Linux Virtual Machine on Apple Silicon Fit an Overfit with MegEngine 把 CUPS 扔进 docker 里 ASUS Chromebook Flip | K.I.S.S GPG 与 SSH Agent 转发 使用 dnsmasq 和 ipset 的策略路由 YubiKey 4 简介与配置 | K.I.S.S Debian 网络安装内核参数 | K.I.S.S 我的 Vim 配置 | K.I.S.S Libinput 与 Udev | K.I.S.S 给妹子看的 Arch Linux 桌面日常安装 | K.I.S.S 修复GTK3 CSD外观 | K.I.S.S 握着你的手教你画哀女王 | K.I.S.S R.I.P Google Reader | K.I.S.S Richard Stallman仍然是对的 | K.I.S.S Scala 自定义控制结构 | K.I.S.S 入手Wacom Bamboo CTL470 | K.I.S.S 转个型? | K.I.S.S Wish List | K.I.S.S pulseaudio音量问题 | K.I.S.S 入手yubikey,一点小心得 | K.I.S.S 迁移到Octopress | K.I.S.S 自动更新DNSPod记录 | K.I.S.S Linux 用作 IPv6 网关 | K.I.S.S Conky从豆瓣获取MPD专辑封面 | K.I.S.S 我和Linus大学时那些事儿 | K.I.S.S Micro$oft依然是那副老德行 | K.I.S.S 用PulseAudio TCP Forwarding实现网络传声 | K.I.S.S 利用tmpfs加速gnome-shell overview模式Applications索引 | K.I.S.S 新的短网址 | K.I.S.S 紧张的一个月 | K.I.S.S 5月11日活动有感 | K.I.S.S 西电开源社区2011年Tee 最终版 | K.I.S.S 多头多尾的Linux | K.I.S.S Linux的中文名称怎么翻译呢? | K.I.S.S iPhone使用OpenVPN | K.I.S.S 我的人人网敏感词 | K.I.S.S 纪念钱立生老师 | K.I.S.S twitter键盘控:Twittperator | K.I.S.S 天生的暴力倾向? | K.I.S.S The Open Source Spirit | K.I.S.S Libreoffice | K.I.S.S Hello world! | K.I.S.S Python 调用gnuplot的例子 | K.I.S.S The Beginning | K.I.S.S About Me | K.I.S.S
定制GH60机械键盘 | K.I.S.S
2015-07-03 · via K.I.S.S

引: 年初时开源哥搞了个喜闻乐见的团购定制vim键盘的活动, 我饶有兴致地参团了,然而这事儿最后被厂家(TEX)放了鸽子,也就不了了之了。

不过我对键盘的购买欲倒是被激活了,原有的FC660M是个好键盘,但是不能定制键位,切稍微比我的挎包长了那么一点点, 加之最近股市大跌,愈发觉得钱不花真不值钱(谁来打醒我),便总是想买个新的。

挑了半天,poker2 和即将上市的 poker3 还是不够灵活,不能为所欲为…… 所以目光转向了硬件开源的 GH60。

在哪儿买的

首先调研了一番,在这里看见博主推荐一个 常州的卖家,于是也就找这个卖家做了。掌柜很nice,我对键盘并不是很懂, 也是第一次买定制键盘,掌柜给我科普了挺多。

最后选了无钢板茶轴+塑料外壳+HHKB配列(左shift和backspace拆成两个按键),卖家帮我焊接组装,3天搞定发货了。

上王道。

先说下手感吧,感觉远不如原先的FC660M手感好,轴感觉有些「松」,不知是不是没有钢板的原因,虽然同为原厂茶轴, 这块键盘的轴感觉很硬,按键不干脆,有一种「没上润滑油」的摩擦感。另外就是空格键,卫星轴做过工很一般,左边 稍微用点力敲,右边就会脱出,需要再按回去。

卫星轴的问题,想了个土办法解决了,在空格键右边卫星轴孔处塞了点纸巾 -_-||| 。轴太硬的问题,淘宝买了WD40 润滑剂,打算加点试试。

所以如果想follow自己也去买的话,注意一定要买带钢板的,当然有能力的同学就自己组装了。

刷固件

说完不开心的,来说点开心的。GH60最爽的就是完全可编程。中国买到的GH60基本都是satan的版本,与GeekHack的有所不同, 需要用tmk_keyboard_custom 这个项目编译出来的固件, 并且在config.h中加入一行

你可以选择自己定义keymap或者已有的keymap,不过 tmk_keyboard_custom 的 gh60 中 keymap_common.h 有些问题, 建议手动跟 tmk_keyboard 中的代码 merge 一下。另外,即使不少自带的keymap 也会报 keys_count 找不到的错,需要在对应的 keymap_xxx.c 中加入以下代码

#ifdef KEYMAP_IN_EEPROM_ENABLE
uint16_t keys_count(void) {
    return sizeof(keymaps) / sizeof(keymaps[0]) * MATRIX_ROWS * MATRIX_COLS;
}

uint16_t fn_actions_count(void) {
    return sizeof(fn_actions) / sizeof(fn_actions[0]);
}
#endif

也可以直接使用我 fork 的 tmk_keyboard_custom,就不用改那么多代码了。

git clone --recursive https://github.com/bigeagle/tmk_keyboard_custom.git

计算机上要装 avr-gccdfu-programmer,Arch 的话源和 AUR 里就有。进入 keyboard/gh60 目录可以看到一群 keymap_xxx.c, 首先把固件编译出来:

make KEYMAP=xxx

刷固件时需要按下键盘背面的按钮进入dfu模式。

sudo sleep 5; sudo make KEYMAP=xxx dfu # 先把 sudo 密码敲了,在之后的 5 秒期间,按下键盘背面的按钮进入 dfu 模式

可以看到内部其实就是一个Atmel的单片机。

另外比较坑的一点就是,刷完之后一定要清空EEPROM,否则keymap不生效。清空的方法是,刷完dfu之后, 拔USB,按住space+backspace,插USB,等三秒,松开。注意这里的 space 和 backspace 都是键位刷新之前对应的键位。 而某次和 @jeasinema 折腾的时候,把 space 键给弄没了,于是无法刷新键位,解决办法是,把 tmk_core/common/bootmagic.h 中的 BOOTMAGIC_KEY_SALT 定义到别的按键上去,再用 X+backspace 刷新键位……

更高级的用法可以参见项目文档

我的Keymap

这里发一下我的keymap,除了Fn0之外,把数字键3也变成了一个Fn键,也就是正常按时候是3,按住不放就是一个Fn,于是 3+hjkl = 左下上右(vim用户都懂的)。

代码在这里,实现了 tricky_esc 功能(就是shift+ESC=~)。