【问题标题】:How to activate/deactivate AutoHotkey script based on active input method?如何根据活动输入法激活/停用 AutoHotkey 脚本?
【发布时间】:2019-07-17 16:19:55
【问题描述】:

我有一个自动热键脚本,仅与我的日语输入一起使用。

我的电脑只有一种输入语言(日文),我使用字母数字设置输入英文(我没有切换到英文,从技术上讲,它仍然是日文输入法。但它是字母数字键盘有罗马字母,仍然是我电脑上日语语言包的一部分)。我使用内置热键 Alt + ` 在字母数字字符和平假名之间切换。现在,我的 AHK 脚本有一个暂停开关,我用 Alt + 1 组合激活它。

我尝试将 Suspend Toggle 更改为 Alt + Grave,但如果这样做,我将无法关闭脚本。我的电脑更改了输入语言(根据内置热键),但没有激活/停用 AHK 脚本。

现在,当我更改语言时,我必须连续执行两个热键组合(首先 Alt + Grave,然后 Alt + 1)。这是相当多余的。我想让 AHK 识别我正在使用的输入法(字母数字或平假名),并根据该信息打开或关闭。或者,如果我可以简单地使用 Alt + Grave 同时切换 AHK 脚本的输入和状态(活动/非活动)。

更多——也许是不必要的——细节: 当我打开平假名键盘时,按“s”键输出 と,日语“TO”。通常,Shift + s 仍然会输出 と。我编写了我的 AHK 脚本,将 Shift + s 更改为ど,或日语“DO”。

现在,如果我切换回字母数字字符并点击“s”,我当然会根据需要得到“s”。但如果我尝试输入大写字母 S,我仍然会得到一个 ど,因为 Shift + s 仍然映射到那个平假名。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    如您所说,如果您的计算机更改了输入语言(根据内置热键),您可以尝试使用此方法来激活/停用 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
    }
    

    【讨论】:

      【解决方案2】:

      最简单的方法是在 Autohotkey 中使用这个热键:

      ~!`::
      

      波浪号使热键“透明”:它将作用于热键,然后将其传递给 Windows,因此其他程序也可以作用于它。因此,您可以使用这个热键来切换输入和执行 Autohotkey 操作。

      【讨论】:

        猜你喜欢
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-02-18
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        相关资源
        最近更新 更多