前篇文章《键盘手焊还不够?里面跑个Python更过瘾》下,有小伙伴留言问,跑Python的键盘延迟怎么样?实测了下,延迟在10ms左右,还有挺大的优化空间(之前说过可以做游戏键盘,挖的坑要填上),日常使用完全可以,而我正是用这个Python键盘在写这篇文章。
这个Python键盘和常见的键盘有很大的不同,它连上电脑,不仅是一个键盘,也是一个U盘,可以直接编辑U盘中Python文件即可修改或配置键盘,还会模拟出一个串口,打开之后是Python的REPL。
里面的代码放在了
python-keyboardgithub.com
其中实现了TMK和QMK中的一些功能,比如多层级、Tap-key等
- Tap-key,即按住某个键不放则激活另外的功能
类似《解开键盘封印,释放生产力》中的配置理念,这里把d
键用作Tap-key,短按d
键输出的d
(按下后,快速释放),按住d
不放则激活移动光标功能, h, j, k, l, u, n
被映射为方向键、PgUp和PgDn。
按住 d
+ h, j, k, l
映射为方向键← ↓ ↑ →
,而d + u = PgUp
,d + n = PgDn
当然你也可以根据自己的需求配置键位 (keymap),则打开U盘中的keyboard.py
编辑即可,以上功能的keymap是这样的:
KEYMAP = (
# layer 0
(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '-', '=', BACKSPACE,
TAB, Q, W, E, R, T, Y, U, I, O, P, '[', ']', '|',
CAPS, A, S, L2D, F, G, H, J, K, L, ';', '"', ENTER,
LSHIFT, Z, X, C, V, B, N, M, ',', '.', '/', RSHIFT,
LCTRL, LGUI, LALT, SPACE, RALT, MENU, L1, RCTRL
),
# layer 1
(
'`', F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL,
___, ___, UP, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
___,LEFT,DOWN,RIGHT,___, ___, ___, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___,BOOT, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___, ___
),
# layer 2
(
'`', F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL,
___, ___, ___, ___, ___, ___, ___,PGUP, ___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,LEFT, UP,DOWN,RIGHT, ___, ___, ___,
___, ___, ___, ___, ___, ___,PGDN, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___, ___, ___
),
)
keymap中也包含了用Fn将数字行切换为F1~F12的功能。
这样配置键盘是否比市面上的键盘更加简单呢?不需要下载任何软件,直接用文本编辑器修改保存即可。
这个 Python 键盘还支持了同时按下两个按键 (间隔不超过25ms) 激活特殊功能,比如,在游戏中,按住j
+ k
放个大招之类。
也计划支持长按;
用作Ctrl
,用;
+c
替代Ctrl
+c
,这个在 VS Code 中使用很方便。VS Code中,未选中文本时,Ctrl + c
是复制光标所在的行,之后Ctrl + v
,则把复制的行粘贴到光标下新的一行 ,右手按;
作为Ctrl
,左手按x
、c
或v
,还挺方便的。当然,这些都可以根据自己按键习惯更改。
另外,正在编写生成键盘击键热图(keyboard heatmap)的功能,可以通过keyboard heatmap帮助我们了解自己的打字习惯,然后配置适合自己的keymap,击键热图大概是这样的:
计划中,键盘的U盘中会有一个名为heatmap.html
的网页,这是一个动态生成的网页,打开这个网页则显示keyboard heatmap。
还用挺多可以做的,比如
- 更好的方式加入宏
- 添加鼠标功能
- 提升响应速度
如果你也对Python键盘很感兴趣,可以关注这个专栏,或者 github/python-keyboard
Stay tuned!