#MenuMaskKey [AHK_L 38+]

Ändert die Taste, mit der Win- oder Alt-Taste-Oben-Ereignisse maskiert werden.

#MenuMaskKey TasteName

Parameter

TasteName

Ein Tastenname oder eine VKnn-Sequenz, die einen virtuellen Tastencode ungleich 0 spezifiziert. [v1.1.28+]: Es können auch Scancodes in Form von SCnnn und VKnnSCnnn angegeben werden.

Bemerkungen

Die Maskierungstaste wird automatisch gesendet, um ein versehentliches Aktivieren des Startmenüs oder der Menüleiste des aktiven Fensters zu verhindern.

Wenn diese Direktive im Skript nicht angegeben ist, verhält sie sich so, als wäre sie auf Strg gesetzt. Diese Direktive kann verwendet werden, um eine andere Maskierungstaste zu bestimmen, die weniger Nebeneffekte hat.

Gute Kandidaten dafür sind virtuelle Tastencodes, die in der Regel keinen Effekt haben, wie z.B. vkE8, das von Microsoft als "unassigned" dokumentiert ist, oder vkFF, das als "no mapping" (eine funktionslose Taste) reserviert ist.

Hinweis: Microsoft kann einem unbelegten Tastencode jederzeit nachträglich einen Effekt zuweisen. Zum Beispiel war vk07 einst undefiniert und konnte bedenkenlos verwendet werden, aber seit Windows 10 1909 ist vk07 für das Öffnen der "Game Bar" reserviert.

[v1.1.28+]: Es können sowohl VK als auch SC angegeben werden, die nicht mit einer vorhandenen Taste übereinstimmen müssen. Durch die Angabe von vk00sc000 wird die automatische Maskierung vollständig deaktiviert. Einige Werte, wie z.B. vk00 mit einem SC ungleich 0, scheitern beim Unterdrücken des Startmenüs.

Diese Einstellung ist global, d.h. die Direktive muss nur einmal irgendwo im Skript angegeben werden, um das Verhalten des ganzen Skripts zu beeinflussen.

#MenuMaskKey kann wie alle anderen Direktiven nicht bedingt ausgeführt werden.

Hotkeys: Wenn ein Hotkey via Tastatur- oder Maus-Hook implementiert ist, kann es vorkommen, dass der finale Tastendruck nicht vom aktiven Fenster und System gesehen wird. Wenn das System nur ein Win- oder Alt-Taste-Unten/Oben ohne intervenierenden Tastendruck erkennen konnte, würde es normalerweise ein Menü aktivieren. Um das zu verhindern, kann der Tastatur- oder Maus-Hook automatisch die Maskierungstaste senden.

[v1.1.27+]: Das Drücken eines Hook-Hotkeys bewirkt, dass das nächste Alt- oder Win-Taste-Oben maskiert wird, wenn alle folgenden Bedingungen erfüllt sind:

Maus-Hotkeys können die Maskierungstaste sofort senden, wenn der Tastatur-Hook nicht installiert ist.

Hotkeys mit dem Tilde-Modifikator sind nicht dazu gedacht, die ursprüngliche Funktion der Taste zu blockieren, daher bewirken sie in [v1.1.27+] keine Maskierung. Hotkeys wie ~#a:: unterdrücken weiterhin das Menü, da das System in solchen Fällen erkennt, dass die Win-Taste in Kombination mit einer anderen Taste verwendet wurde. Maus-Hotkeys und die beiden Win-Tasten selbst (~LWin:: und ~RWin::) unterdrücken jedoch nicht das Startmenü.

Das Startmenü (oder die Menüleiste des aktiven Fensters) kann durch Drücken einer beliebigen Taste unterdrückt werden. Das folgende Beispiel deaktiviert die Fähigkeit der linken Win-Taste, das Startmenü zu aktivieren, lässt aber die Möglichkeit offen, sie weiterhin als Modifikator zu verwenden:

~LWin::Send {Blind}{vkE8}

Send: Send, ControlSend u.ä. haben als Teil ihres normalen Funktionsablaufs den Effekt, Modifikatortasten loszulassen. Zum Beispiel muss der Hotkey <#a::SendRaw %Adresse% üblicherweise die linke Win-Taste loslassen, bevor der Inhalt von Adresse gesendet wird, und danach die linke Win-Taste wieder nach unten drücken (damit andere Win-Tastenkombinationen weiterhin funktionieren). In solchen Fällen kann die Maskierungstaste gesendet werden, um ein Win- oder Alt-Taste-Oben daran zu hindern, ein Menü zu aktivieren.

Lesen Sie diesen Thread, um mehr zu erfahren.

Beispiele

Grundlegende Verwendung.

#MenuMaskKey vkE8  ; Maskierungstaste zu etwas Unbelegtem ändern, wie z.B. vkE8.
#Space::Run % A_ScriptDir  ; Zusätzlicher Strg-Tastendruck wird nicht ausgelöst.

Zeigt im Detail, wie diese Direktive bewirkt, dass vkFF anstelle von LControl gesendet wird.

#MenuMaskKey vkFF  ; vkFF ist "no mapping".
#UseHook
#Space::
!Space::
    KeyWait LWin
    KeyWait RWin
    KeyWait Alt
    KeyHistory
return