Autohotkey 重新映射ctrl+;赢

Autohotkey 重新映射ctrl+;赢,autohotkey,Autohotkey,第一个脚本可以工作,但是第二个应该重新映射ctrl+win的脚本不能工作。为什么呢 ctrl::Send{ALT down}{SHIFT down}{SHIFT up}{ALT up} ^lwin::发送{ALT down}{SHIFT down}{SHIFT up}{ALT up} 因为它们都是修改器关键点 请尝试以下方法: Ctrl & LWin:: 编辑: 然后,尝试使用,可能也使用 等等,我刚才发现它在工作: Ctrl & LWin::Send {ALT down}{

第一个脚本可以工作,但是第二个应该重新映射ctrl+win的脚本不能工作。为什么呢

  • ctrl::Send{ALT down}{SHIFT down}{SHIFT up}{ALT up}

  • ^lwin::发送{ALT down}{SHIFT down}{SHIFT up}{ALT up}


  • 因为它们都是修改器关键点

    请尝试以下方法:

    Ctrl & LWin::
    

    编辑
    然后,尝试使用,可能也使用

    等等,我刚才发现它在工作:

    Ctrl & LWin::Send {ALT down}{SHIFT down}
    Ctrl & LWin Up::Send {SHIFT up}{ALT up}
    
    当然,作为修改键,它们需要特殊处理

    编辑2

    我的shift+alt组合用于更改键盘语言

    你为什么不早点说我以为你只是在替换修改器组合

    那就简单多了

    这应该起作用:

    /*
    cf. https://www.autohotkey.com/docs/commands/PostMessage.htm
    cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms632630(v=vs.85).aspx
    
    0x50: WM_INPUTLANGCHANGEREQUEST
    0x02: INPUTLANGCHANGE_FORWARD
    */
    Ctrl & LWin::PostMessage, 0x50, 2,,, A
    
    或者:

    Ctrl & LWin::
        KeyWait Ctrl
        KeyWait LWin
        PostMessage, 0x50, 2,,, A
    Return
    

    以上两段代码各有利弊。尝试并选择适合您的需求。

    这对我来说很好:

    Ctrl & LWin:: msgbox hi
    
    我认为,
    Alt
    Shift
    键正在触发,而您仍然没有释放
    Ctrl
    Win
    ,因此它同时工作所有键:
    Alt
    Shift
    Ctrl
    Win

    因为您只需检查当时是否未按下按键。
    为此,我们将使用函数
    GetKeyState()


    这对我不起作用。你在用什么操作系统?我使用的是Windows7x64。这里也一样。那么,为什么不尝试查看按键历史记录呢?按键历史记录是什么意思?双击脚本的任务栏图标并按ctrl+k。按住ctrl+H键也会有帮助。
    d LControl
    d LWin
    后面跟着生成的
    LAlt
    LShift
    ,向上(
    u
    )事件也会正常处理和生成。这表明一点问题都没有,对我来说似乎不起作用。我的shift+alt组合用于更改键盘语言,但按ctrl+win时键盘语言不会更改。可以通过
    postmessage
    Ctrl & LWin Up::
        while(!GetKeyState("Ctrl", "P"))
            continue
        send {ALT down}{SHIFT down}
        sleep 40
        send {SHIFT up}{ALT up}
        ; or use “Send {ALT down}{SHIFT down}{SHIFT up}{ALT up}”
        ; if it works for you
    return