当前键盘布局中不存在autohotkey - 解决方案示例

时间:2013-08-27 14:49:44

标签: autohotkey keyboard-layout

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

^+y::Run helper.py

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

^+y does not exist in current keyboard layout

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

这在理论层面对我来说有点模糊,但当我想用实际代码实现它时,我真的不知道该怎么做。对我而言似乎很难讨论这个主题(少数例外情况在例子中缺乏或难以理解),所以我想要一个包含以下内容的答案:

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

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

1 个答案:

答案 0 :(得分:1)

问题1

由于您想使用带有自动键的键,因此首先使用autohotkey检测键是有意义的。显然,此方法仅适用于运行autohotkey的窗口。

使用此行编写Autohotkey脚本并运行它。

#InstallKeybdHook

按下要检查的键。

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

选择OPEN,然后从菜单“View / Key history and script info”

中选择

每个按键都有一行。

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

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

问题2:

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

OR

#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

有关此内容的详细信息,请参见默认安装附带的autohotkey帮助文件“键,鼠标按键和操纵杆控件列表”页面。