我有一堆RWin+X => Y
映射。我想把RAlt
映射到RWin
,这样RWin+X
== RAlt+X
。例如:
; RWin+J => Left
>#j::SendInput,{LEFT}
它工作得很好,我可以按住RWin
并按下j
,它会继续发送Left
。现在让我们在映射之前添加以下内容:
RAlt::RWin
如果我按住RAlt
然后按下j
,它将正确发送Left
,但如果我继续按住RAlt
并再次按下j
,它将发送j
而不是Left
。我必须释放RAlt
并再次按下它。
有什么办法可以解决这个问题吗?
这是我根据你的问题想到的。这是一个变通的解决方案:
#J::
If (GetKeyState("RAlt", "P") Or GetKeyState("RWin", "P")) {
SendInput,{LEFT}
}
Return
RAlt::
While GetKeyState("RAlt", "P") {
; Add any Key in {Key} format followed by Period . that you want to act as an EndKey.
Input, Key, L1 M T1, {space}.{esc}.{shift}.{enter}
.{tab}.{backspace}.{alt}.{home}
.{delete}.{pgup}.{pgdn}.{end}
.{up}.{down}.{left}.{right}
If (Key <> "") {
SendInput, {RWin down}{%Key%}{Rwin Up}
}
If InStr(ErrorLevel, "EndKey:")
Send % "{" . StrReplace(ErrorLevel, "EndKey:") . "}"
}
Return