Проблема, при которой не помогают ни виртуальные ключи VK, ни ScanCodes.
Пользовательский латинский макет является системой ввода по умолчанию.

При переключении с пользовательского латинского макета на нелатинский макет в нелатинском режиме Autohotkey «думает», что теперь работает с международным макетом в США, а не с пользовательским латинским макетом. Таким образом, клавиши перепутаны, теперь они находятся в других местах на клавиатуре. Клавиши все еще работают, но теперь они находятся на других кнопках клавиатуры ...

Есть ли простой способ решить эту проблему, например, изменить какой-то ключ реестра для программы Autohotkey, чтобы она могла продолжать использовать пользовательский латинский макет, независимо от того, какой макет включен?

Какие библиотеки Windows использует Autohotkey?

1 ответ1

0

Вы можете попробовать просто установить два разных набора горячих клавиш и горячих строк, по одному для каждого макета, и использовать #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")
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .