1

我为我的同事编写了一个 python 脚本,然后创建了一个自动热键脚本来在每次有人按下++Ctrl时运行它。看起来像这样:LShiftY

^+y::Run helper.py

python 脚本很好,但是 ahk 脚本不能在所有计算机上运行。有时它工作正常,有时你会得到这个错误:

^+y does not exist in current keyboard layout

现在,在网上搜索这似乎是多语言键盘的问题(我们同时使用希伯来语和英语),因为不同的语言意味着不同的布局(我猜?)。我还发现有人解释说要解决这个问题,您需要使用扫描码而不是通常的 ^ 和 + 等等(我会链接到它,但我现在似乎找不到它)。

这一切在理论上对我来说都是模糊的,但是当我想用实际的代码来实现它时,我真的不知道该怎么做。对我来说,似乎这个话题几乎没有被讨论过(少数例外是缺乏例子或难以理解),所以我喜欢一个包含以下内容的答案:

  1. 确定密钥扫描码的一些简单方法。这应该最好是一个pythonic解决方案(出于好奇,我也很想知道如何用linux来做到这一点)。这可能是更容易的部分(但我认为这是完整答案的固有部分)。

  2. 这是重要的部分:如何在自动热键脚本中实现扫描代码的示例,包括边缘情况(如果有的话)。

4

1 回答 1

1

问题 1

由于您想将密钥与 autohotkey 一起使用,因此首先使用 autohotkey 检测密钥是有意义的。显然,此方法仅适用于运行 autohotkey 的窗口。

用这一行编写一个 Autohotkey 脚本并运行它。

#InstallKeybdHook

按您要检查的键。

右键单击屏幕右下角的脚本图标,打开脚本菜单。

选择打开,然后从菜单“查看/密钥历史记录和脚本信息”中选择

每个按键都有一行。

第一列是 VK(虚拟密钥)代码,接下来是扫描代码。

例如对于 CAPSLOCK,VK 是 14,扫描码是 03a

问题2:

#InstallKeybdHook
VK14::
msgbox, you pressed capslock!
return

或者

#InstallKeybdHook
SC03a::
msgbox, you pressed capslock!
return

两者都有效。

请注意,您可以通过将两个键与 & 组合成一个热键(但不是 3)

#InstallKeybdHook
RShift & SC03a::
msgbox, you pressed Rshift capslock!
return

您可以使用 + 和 ^ 修改扫描码

#InstallKeybdHook
^+SC02C::
msgbox, you pressed Ctrl Shift and Y(maybe)!
return

有关这方面的更多信息,请参见默认安装附带的自动热键帮助文件的“键、鼠标按钮和操纵杆控件列表”页面。

于 2013-08-27T18:36:58.453 回答