pytest自动化实现长按键盘 python长按键盘键_Python


前篇文章《键盘手焊还不够?里面跑个Python更过瘾》下,有小伙伴留言问,跑Python的键盘延迟怎么样?实测了下,延迟在10ms左右,还有挺大的优化空间(之前说过可以做游戏键盘,挖的坑要填上),日常使用完全可以,而我正是用这个Python键盘在写这篇文章。


pytest自动化实现长按键盘 python长按键盘键_pytest自动化实现长按键盘_02


这个Python键盘和常见的键盘有很大的不同,它连上电脑,不仅是一个键盘,也是一个U盘,可以直接编辑U盘中Python文件即可修改或配置键盘,还会模拟出一个串口,打开之后是Python的REPL。


pytest自动化实现长按键盘 python长按键盘键_swt 键盘事件ctrl+c_03


里面的代码放在了

python-keyboardgithub.com

其中实现了TMK和QMK中的一些功能,比如多层级、Tap-key等

  • Tap-key,即按住某个键不放则激活另外的功能

类似《解开键盘封印,释放生产力》中的配置理念,这里把d键用作Tap-key,短按d键输出的d(按下后,快速释放),按住d不放则激活移动光标功能, h, j, k, l, u, n被映射为方向键、PgUp和PgDn。


pytest自动化实现长按键盘 python长按键盘键_swt 键盘事件ctrl+c_04


按住 d + h, j, k, l 映射为方向键← ↓ ↑ →,而d + u = PgUpd + 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,左手按xcv,还挺方便的。当然,这些都可以根据自己按键习惯更改。

另外,正在编写生成键盘击键热图(keyboard heatmap)的功能,可以通过keyboard heatmap帮助我们了解自己的打字习惯,然后配置适合自己的keymap,击键热图大概是这样的:


pytest自动化实现长按键盘 python长按键盘键_github_05


计划中,键盘的U盘中会有一个名为heatmap.html 的网页,这是一个动态生成的网页,打开这个网页则显示keyboard heatmap。

还用挺多可以做的,比如

  • 更好的方式加入宏
  • 添加鼠标功能
  • 提升响应速度

如果你也对Python键盘很感兴趣,可以关注这个专栏,或者 github/python-keyboard

Stay tuned!