Как активировать / деактивировать скрипт AutoHotkey на основе активного метода ввода? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть скрипт autohotkey, который я использую только в сочетании с моим японским вводом.

У меня на компьютере только один язык ввода (японский), и я набираю английский с использованием буквенно-цифровой настройки (IЯ не переключаюсь на английский язык, технически это все еще японский метод ввода, но это алфавитно-цифровая клавиатура, которая имеет латинские буквы и все еще является частью пакета японского языка на моем компьютере).Я переключаюсь между буквенно-цифровыми символами и хираганой, используя встроенную горячую клавишу Alt + `.Прямо сейчас мой AHK-скрипт имеет переключатель Suspend, который я активирую комбинацией Alt + 1.

Я попытался изменить переключатель Suspend Toggle на Alt + grave, но если я это сделаю, я не смогу переключитьсяскрипт выключен.Мой компьютер меняет языки ввода (согласно встроенной горячей клавише), но ничего не делает для активации / деактивации сценария AHK.

Прямо сейчас, когда я меняю языки, мне приходится делать две комбинации горячих клавиш подряд(Сначала Alt + могила, затем Alt + 1).Это довольно избыточно.Я бы хотел, чтобы AHK узнал, какой метод ввода я использую (буквенно-цифровой или хирагана), и включил или выключил на основе этой информации.ИЛИ, если бы я мог просто использовать Alt + grave для одновременного переключения ввода и состояния (активного / неактивного) моего сценария AHK.

Для получения дополнительной, возможно, ненужной, подробной информации: Когда у меня естьКлавиатура хирагана включена, нажатие клавиши «s» выводит the, японское «TO».Обычно Shift + s все равно выдает と.Я написал свой AHK-скрипт для изменения Shift + s на ど или на японский «DO».

Как и сейчас, если я переключаюсь обратно на буквенно-цифровые символы и нажимаю «s», я, конечно, получаю «s»по желанию.Но если я попытаюсь набрать заглавную букву S, я все равно получу ど, потому что Shift + s по-прежнему отображается на эту хирагану.

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Самый простой способ сделать это - использовать эту горячую клавишу в Autohotkey:

~!`::

Тильда делает горячую клавишу «прозрачной»: она будет действовать на горячую клавишу, а затем передавать ее в Windows,так что другие программы тоже могут действовать на него.Таким образом, вы можете использовать эту горячую клавишу для переключения входа и выполнения действия Autohotkey.

0 голосов
/ 24 февраля 2019

Если, как вы сказали, ваш компьютер меняет языки ввода (согласно встроенной горячей клавише), вы можете попробовать это, чтобы активировать / деактивировать скрипт AHK:

SetTimer, SuspendScript, 500

    RETURN   ; === end of auto-execute section ===

; Your hotkeys here:
; ...

    SuspendScript:
If (GetKeyboardLanguage(WinActive("A")) = 0x0409) ; English
    Suspend Off
else
    Suspend On
Return   

; https://autohotkey.com/board/topic/116538-detect-which-language-is-currently-on/#entry672236
GetKeyboardLanguage(_hWnd=0){
    if !_hWnd
        ThreadId=0
    else
        if !ThreadId := DllCall("user32.dll\GetWindowThreadProcessId", "Ptr", _hWnd, "UInt", 0, "UInt")
            return false    
    if !KBLayout := DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
        return false    
    return KBLayout & 0xFFFF
}
...