Neuverwendung der „Menü“-Taste auf Windows-Tastaturen, die in OS X verwendet werden

Windows-Tastaturen werden OS X ziemlich intuitiv zugeordnet, sodass nur die Schaltfläche "Kontextmenü" etwas zwecklos bleibt. Ich möchte, dass sich die Menütaste wie eine andere Befehlstaste verhält.

Wie definiert man, was die Taste "Kontextmenü" auf Windows-Tastaturen in OS X bewirkt?

Geben Sie hier die Bildbeschreibung ein

Auf dieser Tastatur befindet sich die Taste "Kontextmenü" direkt unter dem "." (Punkt/größer als) Schlüssel; in der unteren Reihe zwischen "alt" und "ctrl" auf der rechten Seite, zwei Tasten links von der "Pfeil nach links"-Taste. Was macht es in OS X und wie heißt es?

Es hat weder Zweck noch Namen in OS X. Meine Win-Tastatur hat dort tatsächlich eine zweite Windows-Taste, die rechts daneben. Vielleicht könnte Karabiner es tun, wenn Sie herausfinden können, welchen Schlüsselcode es sendet - versuchen Sie Key Codes , um zu sehen, ob es etwas Brauchbares generiert
Wir haben hier bei SE ein spezielles Wort für solche Informationen, Sir, und dieses Wort, Sir, ist Antwort ! Wenn Sie so freundlich sind, diese Informationen über das Antwortfeld zu liefern, werde ich sie auf jeden Fall als solche akzeptieren!
Ich bin froh, dass es geholfen hat - eine ziemlich klare und trockene Antwort unten :)

Antworten (8)

In OS X hat es weder Zweck noch Namen.

Vielleicht könnte Karabiner es tun, wenn Sie herausfinden können, welchen Schlüsselcode es sendet - versuchen Sie Key Codes , um zu sehen, ob es etwas Brauchbares generiert.

Key Codes meldet Code 110 für die Schaltfläche "Kontextmenü", und in der Tat fängt Karabiner ihn ein und verwendet ihn wieder, wie ich es wollte!
Karabiner hat den EventViewer integriert und bietet an, seine Ergebnisse in die Zwischenablage zu kopieren. Ich fand KeyCodes etwas verwirrend, da es viel mehr anzeigt, als von Karabiner benötigt wird. (Siehe meine "eigene" Antwort unten.)
Mit dem EventViewer von Karabiner habe ich festgestellt, dass sich die Kontextmenütaste auf meiner Microsoft-Tastatur als "Anwendung" registriert. In Karabiner konnte ich dann "application" auf "right_gui" abbilden und es verhält sich wie eine Befehlstaste.

Ab macOS 10.12 Sierra kann dies über die Befehlszeile mit dem hidutilDienstprogramm erfolgen, wie in Technical Note TN2450 beschrieben .

Unter Verwendung der Tabelle der Schlüsselverwendungs-IDs am Ende des technischen Hinweises finden Sie die IDs der Anwendungstaste (dh Kontextmenü) und der rechten GUI-Taste (dh Befehlstaste) als 0x65 bzw. 0xE7. Daher kann das Mapping von der Kommandozeile aus wie folgt durchgeführt werden:

hidutil property --set '{"UserKeyMapping":[
    {
        "HIDKeyboardModifierMappingSrc": 0x700000065,
        "HIDKeyboardModifierMappingDst": 0x7000000E7
    }
]}'

Die Zuordnung überlebt Neustarts nicht, kann aber mithilfe eines Agenten dauerhaft gemacht werden launchd, indem eine Eigenschaftsliste wie die folgende im entsprechenden Verzeichnis des Startagenten abgelegt wird (z. B. ~/Library/LaunchAgentsfür Ihren Benutzer):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.KeyRemapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[
            {
                "HIDKeyboardModifierMappingSrc": 0x700000065,
                "HIDKeyboardModifierMappingDst": 0x7000000E7
            }
        ]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
Dies ist die beste Antwort. Karabiner macht viel mehr und macht die Tastatur für Logitech-Software unkenntlich (in meinem Fall)
Ich habe die folgende Zuordnung "HIDKeyboardModifierMappingSrc": 0x700000065, "HIDKeyboardModifierMappingDst": 0x7000000E6 für Logitech G915 vorgenommen
Früher habe ich "HIDKeyboardModifierMappingDst": 0x7000000E6die Menü-/Hamburger-Taste auf einer Microsoft Sculpt Ergonomic-Tastatur der rechten Wahltaste zugeordnet.
Genial, wirklich zu schätzen, auch 0x7000000E6 stattdessen für eine richtige Option verwendet, hat einen Charme funktioniert.
Vielen Dank, dass Sie dies gepostet haben! Ich konnte meine Menütaste als "fn" -Taste festlegen"HIDKeyboardModifierMappingDst": 0xFF00000003

Antwort von @ Steph, aber mit Karabiner:

  1. Installieren Sie Karabiner von hier aus
  2. Wählen Sie auf der Registerkarte "Einfache Änderungen" Ihre Tastatur aus (meine war diese "Microsoft..")
  3. Drücken Sie auf „Element hinzufügen“, um diese 4 Änderungen im Screenshot unten vorzunehmen

Aufbau

Dadurch werden Ihre Schlüssel wie folgt abgebildet:

Geben Sie hier die Bildbeschreibung ein

Um die Antwort von @ Tetsujin zu erweitern: Sie können dies tatsächlich mit Karabiner erreichen . Hier sind einige detaillierte Anweisungen .

Kurz gesagt: Gehen Sie zur Registerkarte Misc & Unistall, öffnen Sie die private XML-Datei und ändern Sie sie in:

<?xml version="1.0"?>
<root>
  <item>
    <name>Menu key to option right</name>
    <identifier>private.menu_key_to_OPTION_R</identifier>
    <autogen>__KeyToKey__ KeyCode::PC_APPLICATION, KeyCode::OPTION_R</autogen>
  </item>
</root>

Gehen Sie zurück zur Registerkarte „Schlüssel ändern“, klicken Sie auf „XML neu laden“ und markieren Sie die neue Zuordnung, die Sie gerade erstellt haben, ganz oben in der Liste.

Karabiner hat einen eigenen Tastatur-EventViewer auf der Registerkarte „Misc“, sodass Sie KeyCode nicht benötigen.

Karabiner hat keinen EventViewer- oder private.xml-Link mehr im Misc-Tab. Scheint auch nicht die Menütaste neu zuzuordnen. Es löst jedoch als 110 in KeyCodes aus
EventViewer wurde in den Menüpunkt verschoben. Außerdem wird der Schlüssel im EventViewer als "Anwendung" registriert, sodass die Zuordnung dieses Schlüssels durchgeführt wurde. Ich habe immer noch keine XML-Option gesehen
Ab der Karabiner-Version 11.5.0 können Sie auf der Registerkarte „Einfache Änderungen“ eine weitere Befehlstaste auf der rechten Seite der Tastatur hinzufügen. Die Übersetzung der Tastennamen von Tastatur zu Karabiner lautet: Windows-Taste => linke Befehlstaste & Menütaste => Anwendung (zumindest auf meiner Tastatur, ymmv).

Ich habe festgestellt, dass Seil in El Capitan funktioniert, um die Taste "Kontextmenü" in die Funktion "Option" zu ändern (ich nehme an, es würde auch funktionieren, um in "Befehl" zu wechseln, obwohl ich es nicht versucht habe).

Unter 'Systemeinstellungen... | Tastatur' Ich habe die 'Option' in 'Command' und 'Command' in 'Option' geändert, damit die Tasten in der gleichen Reihenfolge wie auf meinem MacBook Pro sind, um das "Muskelgedächtnis" zu erleichtern.

Dann in 'Seil Preferences | Einstellung | Keys on non-Apple keyboard' Ich habe 'Enable Application Key (Menu Key)' angehakt und den Keycode auf '54' gesetzt (laut 'Seil' ist das 'Right Command', aber wahrscheinlich liegt es an dem Schalter in 'Keyboard' fungiert als 'Option'.

Also das gibt mir das:

Klaviatur

Karabiner scheint OS Sierra noch nicht zu unterstützen, aber Karabiner Elements tut es. Die Installation erfordert ein wenig Arbeit, aber sobald Sie damit fertig sind, können Sie "application" beispielsweise "right_command" zuordnen, damit es so funktioniert, wie Sie es beschrieben haben.

Neuverwendung der „Menü“-Taste auf der Windows-Tastatur eines Notebooks in MacOS 10.12+

Es gibt eine neue Version von Karabiner ("Karabiner Elements 12.1" zur Verwendung mit MacOS 10.12+), die meiner Meinung nach das Hinzufügen einer separaten Antwort zu diesem Thema rechtfertigt, obwohl ich etwas gepostet habe. ähnlich hier vor.
[Als ich auf MacOS 10.13 (High Sierra) aktualisiert habe, musste ich ApplePS2SmartTouchPad.kext verwenden, um die Schaltfläche "Menü" neu zuordnen zu können, die jetzt als angezeigt wird scan_previous_track. ]

Bei Karabiner Elements muss man seine ~/.config/karabiner/karabiner.jsonDatei bearbeiten, etwas anders** als im obigen Code …

Finden Sie zuerst den Namen der "Menü"-Taste auf Ihrer Tastatur heraus über Karabiner EventViewer:
Drücken Sie einfach einmal darauf. [Meiner ist: scan_previous_track, deiner wahrscheinlich anders … ]

Hier ist ein Code, der zu Teilen von dem, was ich oben gepostet habe, analog ist und "Informationen" öffnet und schließt:

{"description": "Finder: 'menu' key to æ-I / æ-W by pressing or holding",
    "manipulators": [
        { "conditions": [{ "bundle_identifiers": ["^com.apple.finder"],
                                         "type": "frontmost_application_if" }
                        ],
                "from": { "consumer_key_code": "scan_previous_track" },
          "parameters": { "basic.to_if_alone_timeout_milliseconds": 200,
                          "basic.to_if_held_down_threshold_milliseconds": 500
                        },
         "to_if_alone": [{ "key_code": "i",
                           "modifiers": ["right_command"]
                        }],
     "to_if_held_down": [{ "key_code": "w",
                           "modifiers": ["right_command"],
                           "repeat": false
                        }],
        "type": "basic"
        }
                    ]
}

  (Bei kurzem Drücken wird Cmd-I ausgelöst, nach einer halben Sekunde gedrückt halten: Cmd-W)

from, to…und typesind obligatorische Ausdrücke für die Neuzuordnung
conditions, parametersdefinieren Sie ausschließlich betroffene App(s) und Zeitschwellen für Ereignisse**
– verhindert, dass "repeat": falsedieser Code unbeabsichtigt mehr als ein Fenster schließt
– Dieser Code würde zwischen "rules": [ ]'s Klammern eingefügt (möglicherweise mit ", " hinzugefügt)
    (Ich habe auch Verknüpfungen für die History-Back- und -Forward-Funktion meines Browsers mit Drücken und Halten erstellt)
– Werfen Sie einen Blick in Karabiner Elements json Reference Manual

(** KE unterstützt keine bedingte Auswahl mehr durch uielementrole, aber einige andere conditions.)

Ich verwende MacOSX 10.11.6 El Capitan (von einem kaputten Mac mini) auf einem HP-2570p EliteBook , daher wird die Windows-Menütaste nicht als "PC_APPLICATION" erkannt, sondern einfach als "FN" = Funktionstaste.
Leider blockiert diese Taste Sekundärtasten, sodass ich etwas aufwändiger zucken musste, um dorthin zu gelangen, wo ich wollte:

Mit Karabiner (mit integriertem EventViewer für Informationen zu Schlüsseln/Namen/Fensternamen) habe ich den Schlüssel wiederverwendet, um:
æ-i im Finder nachzuahmen (wiederholen zum Schließen )
æ-i in VLC mimixen ( – " – )
Geschichte zurück in Safari
Außerdem habe ich andere Nicht-Menü-Tasten-Änderungen vorgenommen:
einige Tasten neu definiert , die auf meiner deutschen Tastatur nicht richtig beschriftet sind
– den Zugriff auf Seite nach oben/unten "einhändig" auf meiner Tastatur gemacht (nicht gezeigt)

Wahrscheinlich werde ich im Laufe der Zeit noch weitere Vereinfachungen in anderen Anwendungen finden ...
Ich habe diesen "individuellen" Code in "private.xml" verwendet (Details: siehe Beitrag von antoine):

<!-- 1st item redefines <,>,^,° for my keyboard (effective for further items !!!)
<item>  
    <name>Switch_specialKeys_^_°</name>
    <identifier>private.Switch_specialKeys_^_°</identifier>
        <autogen>__KeyToKey__ KeyCode::BACKQUOTE, ModifierFlag::SHIFT_L, KeyCode::GERMAN_U_UMLAUT, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        <autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::6, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, KeyCode::BACKQUOTE</autogen>
        <autogen>__KeyToKey__ KeyCode::BACKQUOTE, KeyCode::DANISH_DOLLAR, ModifierFlag::SHIFT_L</autogen>
</item>

<!-- Next 2 items differentiate "Cmd-i/-w" via (not-)AXWindow for dual use -->
<item>
    <name>WinR-FNDR æ-I</name>
    <identifier>private.WinMenu_to_Cmd-I</identifier>
    <uielementrole_not>AXWindow</uielementrole_not>
    <only>FINDER</only>
        <autogen>
          __KeyToKey__ KeyCode::FN, KeyCode::I, ModifierFlag::COMMAND_L
        </autogen>
</item>
<item>
    <name>WinR-FNDR æ-W</name>
    <identifier>private.WinMenu_to_Cmd-W</identifier>
    <only>FINDER</only>
    <uielementrole_only>AXWindow</uielementrole_only>
        <autogen>
          __KeyToKey__ KeyCode::FN, KeyCode::W, ModifierFlag::COMMAND_L
        </autogen>
</item>

<!-- For VLC the <uielementrole_only> elements are "AXWindow" for the main
     window and "AXRadioButton" for its information window. -->

<!-- My shortcut for Safari's "history-back" consists of this definition:
     <autogen>
        __KeyToKey__ KeyCode::FN, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>      -->

Für PC-Anwendungen, die unter CrossOver laufen, werden die Anwendungsnamen von Karabiner nicht erkannt, also habe ich <appdef> verwendet, um ihre Namen (neu) zu definieren, und <windownamedef>, um ein bestimmtes Fenster anzusprechen; diese Definitionen waren dann in <only>- und <windowname_only>-Tags verfügbar.