使用普通键作为修饰键,例如同时按 S 和 F 而不是 Ctrl+S 来保存文件

使用普通键作为修饰键,例如同时按 S 和 F 而不是 Ctrl+S 来保存文件

有没有办法将普通键用作修饰键?假设我的键盘正确记录了我同时按下的SF,有没有办法让我将该组合用作键盘快捷键,如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 上的指南以及一些有用的链接

相关内容