Autohotkey AHK递归映射?(将RAlt映射到已映射到其他键的RWin)
我有一堆Autohotkey AHK递归映射?(将RAlt映射到已映射到其他键的RWin),autohotkey,keymapping,alt-key,windows-key,Autohotkey,Keymapping,Alt Key,Windows Key,我有一堆RWin+X=>Y映射。我希望RAlt映射到RWin,以便RWin+X=RAlt+X。例如: ; RWin+J => Left >#j::SendInput,{LEFT} 这很好,我可以按住RWin并按j,它将继续向左侧发送。现在,让我们在该映射之前添加以下内容: RAlt::RWin 如果我按住RAlt,然后按j,它将正确地向左侧发送RAlt,但如果我按住RAlt并再次按j,它将向左侧发送j。我必须释放拉尔特,然后再按一次 有没有办法解决这个问题?这是我根据您的问题提出
RWin+X=>Y
映射。我希望RAlt
映射到RWin
,以便RWin+X
=RAlt+X
。例如:
; RWin+J => Left
>#j::SendInput,{LEFT}
这很好,我可以按住RWin
并按j
,它将继续向左侧发送。现在,让我们在该映射之前添加以下内容:
RAlt::RWin
如果我按住RAlt
,然后按j
,它将正确地向左侧发送RAlt
,但如果我按住RAlt
并再次按j
,它将向左侧发送j
。我必须释放拉尔特,然后再按一次
有没有办法解决这个问题?这是我根据您的问题提出的。这是一个解决方案:
#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
#J::
如果(GetKeyState(“RAlt”、“P”)或GetKeyState(“RWin”、“P”)){
SendInput,{LEFT}
}
返回
拉尔特::
而GetKeyState(“RAlt”、“P”){
;添加{Key}格式的任何键,后跟句点。您希望用作结束键。
输入,键,L1 M T1,{space}.{esc}.{shift}.{enter}
.{tab}.{backspace}.{alt}.{home}
.{delete}.{pgup}.{pgdn}.{end}
.{上}.{下}.{左}.{右}
如果(键“”){
SendInput,{RWin down}{%Key%}{RWin Up}
}
如果安装(错误级别,“结束键:”)
发送%“{”.StrReplace(ErrorLevel,“EndKey:”)。“}”
}
返回
我认为这是不可能的。为什么不能将相同的操作分配给两个键?我在映射RAlt
时遇到了一些问题,例如,我有一个映射#^!j::SendInput,^!{LEFT}
-它将RWin+Ctrl+Alt+j
映射到Ctrl+Alt+LEFT
-问题是如果我使用>代码>而不是#
ahk会感到困惑,因为现在涉及到两个ALT。我尝试指定我想要而不是
记不清它到底给了我什么,但它要么是一个错误,要么是给了我错误的地图,它又被弄糊涂了。RWin工作得很好,所以我想我应该将RAlt映射到它,因为它更容易按压,并且对我的手施加的压力更小。我可能只使用RAlt映射,而忽略那些具有的映射代码>可能是您的键盘有AltGr键而不是右Alt键吗`错误:传递给函数的参数太少。特别是:StrReplace(ErrorLevel,“EndKey:”)。“}”``您使用的是最新版本的自动热键吗?在我的系统上运行良好。