重新映射 ctrl+win
Remapping ctrl+win
第一个脚本有效,但应重新映射 ctrl+win 的第二个脚本无效。这是为什么?
ctrl::Send {ALT down}{SHIFT down}{SHIFT up}{ALT up}
^lwin::Send {ALT down}{SHIFT down}{SHIFT up}{ALT up}
因为它们都是修饰键。
试试这个:
Ctrl & LWin::
编辑:
然后,也尝试使用 SetKeyDelay and possibly SendEvent。
等等,我发现这个现在可以工作了:
Ctrl & LWin::Send {ALT down}{SHIFT down}
Ctrl & LWin Up::Send {SHIFT up}{ALT up}
当然,作为修饰键,需要特殊对待。
编辑 2:
My shift+alt combination is for changing the keyboard language
你为什么不早说? :) 我以为你只是在替换修饰符组合。
那就简单多了。
这应该有效:
/*
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()
.
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
第一个脚本有效,但应重新映射 ctrl+win 的第二个脚本无效。这是为什么?
ctrl::Send {ALT down}{SHIFT down}{SHIFT up}{ALT up}
^lwin::Send {ALT down}{SHIFT down}{SHIFT up}{ALT up}
因为它们都是修饰键。
试试这个:
Ctrl & LWin::
编辑:
然后,也尝试使用 SetKeyDelay and possibly SendEvent。
等等,我发现这个现在可以工作了:
Ctrl & LWin::Send {ALT down}{SHIFT down}
Ctrl & LWin Up::Send {SHIFT up}{ALT up}
当然,作为修饰键,需要特殊对待。
编辑 2:
My shift+alt combination is for changing the keyboard language
你为什么不早说? :) 我以为你只是在替换修饰符组合。
那就简单多了。
这应该有效:
/*
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()
.
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