<script src="../static/ga4.js" type="text/javascript"></script> </head> <body> <h1>A_MenuMaskKey</h1> <p><em>A_MenuMaskKey</em> ist eine <a href="../Concepts.htm#built-in-variables">interne Variable</a>, die die Taste bestimmt, mit der Win- oder Alt-Taste-Oben-Ereignisse maskiert werden.</p> <p><em>A_MenuMaskKey</em> kann verwendet werden, um eine <a href="../Concepts.htm#strings">Zeichenkette</a> 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.</p> <p>Das Skript kann auch einen <a href="../KeyList.htm">Tastennamen</a>, eine <a href="../KeyList.htm#vk">vkNN</a>-Sequenz oder eine <a href="../KeyList.htm#sc">scNNN</a>-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 <code>"vk00sc000"</code> deaktiviert die Maskierung und entspricht der Zuweisung von <code>""</code>.</p> <p>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 <a href="Error.htm#ValueError">ValueError</a> ausgelöst wird.</p> <p>Die Standardeinstellung ist vk11sc01D (die linke Strg-Taste).</p> <h2 id="Remarks">Bemerkungen</h2> <p>Die Maskierungstaste wird automatisch gesendet, um ein versehentliches Aktivieren des Startmenüs oder der Menüleiste des aktiven Fensters zu verhindern.</p> <p>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.</p> <p class="note"><strong>Hinweis:</strong> 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.</p> <p>Diese Einstellung ist global, d.h. sie muss nur einmal angegeben werden, um das Verhalten des ganzen Skripts zu beeinflussen.</p> <p><strong>Hotkeys:</strong> 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 <em>nur</em> 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.</p> <p>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:</p> <ul> <li>Der Hotkey wird unterdrückt (es fehlt der <a href="../Hotkeys.htm#Tilde">Tilde-Modifikator</a>).</li> <li><kbd>Alt</kbd> oder <kbd>Win</kbd> ist logisch nach unten gedrückt, wenn der Hotkey gedrückt wird.</li> <li>Der Modifikator ist physisch nach unten gedrückt oder der Hotkey erfordert zum Aktivieren den Modifikator. Zum Beispiel verursacht <code>$#a::</code> in Kombination mit <code>AppsKey::RWin</code> eine Maskierung, wenn <kbd>Menü</kbd>+<kbd>A</kbd> gedrückt wird, während die <kbd>Menü</kbd>-Taste selbst immer noch das Startmenü öffnen kann.</li> <li><kbd>Alt</kbd> wird nicht maskiert, wenn <kbd>Strg</kbd> beim Drücken des Hotkeys gedrückt gehalten wurde, da <kbd>Strg</kbd>+<kbd>Alt</kbd> die Menüleiste nicht aktiviert.</li> <li><kbd>Win</kbd> wird nicht maskiert, wenn das aktuellste Win-Tasten-Unten mit <kbd>Strg</kbd>, <kbd>Umschalt</kbd> oder <kbd>Alt</kbd> modifiziert wurde, da das Startmenü in solchen Fällen normalerweise nicht aktiviert wird. Allerdings kommt es auch bei <kbd>Win</kbd> zu einer Tastenwiederholung, wenn sie die letzte physisch gedrückte Taste war, daher kann nur schwer vorhergesagt werden, <em>wann</em> das aktuellste Win-Tasten-Unten war.</li> <li>Entweder ist der Tastatur-Hook nicht installiert (z.B. für einen Maus-Hotkey) oder es gab seit dem letzten Alt- oder Win-Taste-Unten keine weiteren (nicht unterdrückten) Taste-Unten- oder Taste-Oben-Ereignisse. Beachten Sie, dass die Tastenwiederholung auch bei Modifikatortasten und auch nach dem Senden anderer Tasten erfolgt, jedoch nur für die zuletzt physisch gedrückte Taste.</li> </ul> <p>Maus-Hotkeys können die Maskierungstaste sofort senden, wenn der Tastatur-Hook nicht installiert ist.</p> <p>Hotkeys mit dem <a href="../Hotkeys.htm#Tilde">Tilde-Modifikator</a> sind nicht dazu gedacht, die ursprüngliche Funktion der Taste zu blockieren, daher bewirken sie keine Maskierung. Hotkeys wie <code>~#a::</code> unterdrücken weiterhin das Menü, da das System in solchen Fällen erkennt, dass die <kbd>Win</kbd>-Taste in Kombination mit einer anderen Taste verwendet wurde. Maus-Hotkeys und die beiden <kbd>Win</kbd>-Tasten selbst (<code>~LWin::</code> und <code>~RWin::</code>) unterdrücken jedoch nicht das Startmenü.</p> <p>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 <kbd>Win</kbd>-Taste, das Startmenü zu aktivieren, lässt aber die Möglichkeit offen, sie weiterhin als Modifikator zu verwenden:</p> <pre>~LWin::Send "{Blind}{vkE8}"</pre> <p><strong>Send:</strong> <a href="Send.htm">Send</a>, <a href="ControlSend.htm">ControlSend</a> u.ä. haben als Teil ihres normalen Funktionsablaufs den Effekt, Modifikatortasten loszulassen. Zum Beispiel muss der Hotkey <code>&lt;#a::SendText Adresse</code> üblicherweise die linke <kbd>Win</kbd>-Taste loslassen, bevor der Inhalt von <em>Adresse</em> gesendet wird, und danach die linke <kbd>Win</kbd>-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.</p> <h2 id="Related">Siehe auch</h2> <p>Lesen Sie <a href="https://www.autohotkey.com/board/topic/20619-extraneous-control-key-presses-generated-by-or-hotkeys/">diesen archivierten Forumsthread</a>, um mehr zu erfahren.</p> <h2 id="Examples">Beispiele</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> Grundlegende Verwendung.</p> <pre>A_MenuMaskKey := "vkE8" <em>; Maskierungstaste zu etwas Unbelegtem ändern, wie z.B. vkE8.</em> #Space::Run A_ScriptDir <em>; Zusätzlicher Strg-Tastendruck wird nicht ausgelöst.</em></pre> </div> <div class="ex" id="ExAdvanced"> <p><a class="ex_number" href="#ExAdvanced"></a> Zeigt im Detail, wie diese Variable bewirkt, dass vkFF anstelle von LControl gesendet wird.</p> <pre>A_MenuMaskKey := "vkFF" <em>; vkFF ist "no mapping".</em> #UseHook #Space:: !Space:: { KeyWait "LWin" KeyWait "RWin" KeyWait "Alt" KeyHistory }</pre> </div> </body> </html>