Переназначить Winkey и отключить его сочетания клавиш

Переназначить Winkey и отключить его сочетания клавиш

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

Связанный контент