A_MenuMaskKey

A_MenuMaskKey ist eine interne Variable, die die Taste bestimmt, mit der Win- oder Alt-Taste-Oben-Ereignisse maskiert werden.

A_MenuMaskKey kann verwendet werden, um eine Zeichenkette abzurufen oder zu setzen, die eine vkNNscNNN-Sequenz zur Identifizierung des virtuellen Tastencodes (NN) und Scancodes (NNN) in hexadezimaler Form repräsentiert. Wenn leer, ist die Maskierung deaktiviert.

Das Skript kann auch einen Tastennamen, eine vkNN-Sequenz oder eine scNNN-Sequenz zuweisen. In diesem Fall wird grundsätzlich entweder der VK- oder der SC-Code auf Null belassen, bis die Taste gesendet wird, und dann automatisch ermittelt. Die Zuweisung von "vk00sc000" deaktiviert die Maskierung und entspricht der Zuweisung von "".

Die zurückgegebene Zeichenkette ist immer eine vkNNscNNN-Sequenz, wenn aktiviert, oder leer, wenn deaktiviert, egal was zugewiesen wurde. Alle vkNNscNNN-Sequenzen und alle vkNN- oder scNNN-Sequenzen ungleich Null sind zulässig, aber es gibt Kombinationen, die das Menü nicht unterdrücken können. Alle anderen ungültigen Tasten bewirken, dass ein ValueError ausgelöst wird.

Die Standardeinstellung ist vk11sc01D (die linke Strg-Taste).

Bemerkungen

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

Diese Variable 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. Einige Werte, wie z.B. vk00 mit einem SC ungleich 0, scheitern beim Unterdrücken des Startmenüs. Tastencodes müssen nicht mit einer vorhandenen Taste übereinstimmen.

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.

Diese Einstellung ist global, d.h. sie muss nur einmal angegeben werden, um das Verhalten des ganzen Skripts zu beeinflussen.

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.

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 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::SendText 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.

A_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 Variable bewirkt, dass vkFF anstelle von LControl gesendet wird.

A_MenuMaskKey := "vkFF"  ; vkFF ist "no mapping".
#UseHook
#Space::
!Space::
{
    KeyWait "LWin"
    KeyWait "RWin"
    KeyWait "Alt"
    KeyHistory
}