目的はゲーム用であり、Winkey を他のキーに再マップして、Winkey を押してもスタート メニューが表示されないようにし、ゲーム中に Winkey + e (explorer.exe を開く) などの Winkey ショートカットを無効にしたいと考えています。
これまで試してみたのは以下のとおりです:
#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
(再マッピングの場合や、ホットキーで 1 行のみ実行する必要がある場合は、 return ステートメントは必要ありません。)
答え2
必要なのはキー自体を再マップすることだけです。LWin キーの組み合わせを再マップする必要はありません。
#IfWinActive ahk_class LWJGL
LWin::p
#IfWinActive
を使用すると、LWin & e::e
これを「e」に再マップします。したがって、修飾キーはすべて渡されます。この場合、Win キーは渡されるため、 になりますWin + E
。
すべての修飾キーが、押すキーに影響を与えることに注意してください{blind}
。たとえば、キーを「e」に再マップし、大文字にしたい場合は、「Shift」キーを押しながら「再マップされたキー」を押すことになります。
また、キーの再マップでは、Send, {DownR}
キーボード ショートカットで使用するためにキーを物理的に押すのと同様の効果を持つメソッドが使用されることに注意してください。