Клавиша предназначена для игр, и я хочу переназначить клавишу 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}
метод, который имеет эффект, аналогичный физическому нажатию клавиши для использования с сочетаниями клавиш.