![Autohotkey + 自定义拉丁布局 + 非拉丁布局](https://linux22.com/image/1494821/Autohotkey%20%2B%20%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8B%89%E4%B8%81%E5%B8%83%E5%B1%80%20%2B%20%E9%9D%9E%E6%8B%89%E4%B8%81%E5%B8%83%E5%B1%80.png)
这个问题 VK 虚拟键和 ScanCodes 都无济于事。
自定义拉丁布局是默认输入系统。
从自定义拉丁布局切换到非拉丁布局时,在非拉丁模式下,Autohotkey 会“认为”它现在使用的是美国国际布局,而不是自定义拉丁布局。因此,按键会混淆,它们现在位于键盘上的其他地方。按键仍然有效,但它们现在位于键盘的其他按钮上...
有没有简单的方法可以解决这个问题,比如更改 Autohotkey 程序的一些注册表项,以便无论采用什么布局,它都可以继续使用自定义拉丁布局?
Autohotkey 使用哪些 Windows dll?
答案1
您可以尝试简单地设置两个不同的热键和热字符串集,每个布局一个,并使用#If 使其中一个集成为活动集,这是从下面的 AutoHotkey 论坛复制的一个示例。
; question: http://autohotkey.com/board/topic/150272-allow-script-to-run-only-with-one-keyboard/
; code from: http://forum.script-coding.com/viewtopic.php?id=7396
#If (GetKeyboardLayout("A") = 4105) ; 4105 = 0x1009 https://msdn.microsoft.com/en-us/library/aa912040
; your hotkeys here
#If
GetKeyboardLayout(ByRef window)
{
return DllCall("GetKeyboardLayout", "UInt", DllCall("GetWindowThreadProcessId", "Int", WinExist(window), "Int", 0), "UShort")
}