目的是為了遊戲,我想將 Winkey 重新映射到其他鍵,這樣當我點擊它時,開始功能表就不會彈出,並且我想禁用 Winkey 快捷方式,例如 Winkey+e(打開 explorer.exe),而我我在玩遊戲。
這是我到目前為止所嘗試過的:
#IfWinActive ahk_class LWJGL
LWin::p
return
LWin & e::e
return
#IfWinActive
遊戲不會重新映射,Lwin 被視為 Lwin,但開始選單被阻止,這只是我們目標的一半。
但是,如果我按住然後Winkey
它e
打開的鍵explorer.exe
不是預期的,我希望在這一步驟按下該p
鍵和鍵。e
有沒有 AHK 專家做到了這一點?
我嘗試像這樣阻止快捷方式:
#IfWinActive ahk_class LWJGL
LWin::p
return
Lwin & e::
return
#IfWinActive
但它只會發送p
密鑰,而忽略e
密鑰。
我還嘗試使用以下命令Send
:Up
#IfWinActive ahk_class LWJGL
LWin::p
return
LWin & e::
Send {LWin Up}
Send {e Down}
return
e Up::Send {e Up}
return
#IfWinActive
一切都是固定的,除了該e
鍵本身不執行任何操作(僅按下它不會執行任何操作,只有在按下 LWin 然後再e
按下時才起作用)。請注意,第一個問題在這裡也沒有解決,這意味著 LWin 鍵沒有p
在遊戲中重新映射。
我在這些腳本上測試的特定遊戲是 Minecraft,但我也在 CS:GO 上測試了它,並且 LWin 鍵沒有重新映射到p
,它仍然被視為 Winkey。 Notepad.exe 或其他非遊戲程式上的情況並非如此,LWin::p
重新映射Winkey
到p
.
答案1
Windows 鍵是在 AutoHotkey 中重新對應時有問題的按鍵。這是因為它實際上無法阻止 Windows 看到 Windows 鍵被按下,所以它需要發送額外的模擬擊鍵以防止打開開始功能表。保證遊戲可靠性的最佳選擇如下:
首先使用 SharpKeys 將按鍵重新映射到鍵盤上不存在的按鍵,例如 F15。然後根據您在遊戲中和不在遊戲中的情況分別重新映射此鍵:
#IfWinActive ahk_class LWJGL
F15::p
#IfWinActive
#IfWinNotActive ahk_class LWJGL
F15::LWin
#IfWinNotActive
(重新映射或熱鍵只需要執行一行時,您不需要 return 語句。)
答案2
您所需要做的就是重新映射按鍵本身,無需重新映射 LWin 按鍵組合。
#IfWinActive ahk_class LWJGL
LWin::p
#IfWinActive
隨著LWin & e::e
您將其重新映射為“e”。因此任何修飾鍵都會被傳遞。在這種情況下,Win 鍵正在傳遞,因此您得到Win + E
。
請注意,您{blind}
允許所有修飾鍵影響您按下的鍵,因為如果您將一個鍵重新映射到“e”,並且您希望它大寫,您將按住“Shift”並按下“重新映射的鍵” 。
另請注意,按鍵重新映射使用的Send, {DownR}
方法具有類似於實體按下按鍵以與鍵盤快捷鍵一起使用的效果。