有没有办法将普通键用作修饰键?假设我的键盘正确记录了我同时按下的S和F,有没有办法让我将该组合用作键盘快捷键,如Ctrl+ S?
具体来说:
- 如何测试我的键盘是否能够检测同时按下的按键?
- 我如何重新映射该组合以便可以被 Emacs 这样的应用程序使用?
答案1
问:如何测试我的键盘是否能够检测同时按下的按键?
A:你可以使用键码监控按下键盘按键时 Windows 看到的内容。下图是同时按下的三个键。OnKeyDown
表示当前按下的是该键,OnKeyUp
释放按钮时会触发。
问:我该如何重新映射组合以便它可以被 Emacs 这样的应用程序使用?
一种可能的方法是使用 AutoHotKey。我建议AutoHotKey 的便携版本避免安装额外的软件
该示例展示了如何将键重新映射A到键B
A::SendInput {B}
还可以添加修饰符,如Win(#)、Alt(!)、Ctrl(^) 或Shift(+)。阅读 AHK 手册部分热键了解更多信息
+!A::SendInput {B}
我们的主要问题是 AHK 无法绑定多个基本键。基本键是除修饰键之外的所有键盘键。
幸运的是,有一个技巧。我们只使用S它来触发一个小宏,然后检查是否F按下了。如果是,我们发送新的按键组合Ctrl+S
~S::
GetKeyState, state, F
if state = D
SendInput ^{s}
Return
~F::
GetKeyState, state, S
if state = D
SendInput ^{s}
Return
- 缺点是我们必须反过来做同样的事情,F先按下,然后S
- 不要忘记
~
键前面的波浪号,这意味着不应阻止本机功能 - 不要发送大写字母
^{S}
,否则 AHK 会发送额外的Shift按键。我不知道为什么。不过,小写字母可以^{s}
正常工作
这里是 AutoHotKey 初学者Youtube 上的指南以及一些有用的链接