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?
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?
Ab macOS 10.12 Sierra kann dies über die Befehlszeile mit dem hidutil
Dienstprogramm 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/LaunchAgents
fü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>
"HIDKeyboardModifierMappingDst": 0x7000000E6
die Menü-/Hamburger-Taste auf einer Microsoft Sculpt Ergonomic-Tastatur der rechten Wahltaste zugeordnet."HIDKeyboardModifierMappingDst": 0xFF00000003
Antwort von @ Steph, aber mit Karabiner:
Dadurch werden Ihre Schlüssel wie folgt abgebildet:
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.
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:
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.json
Datei 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 type
sind obligatorische Ausdrücke für die Neuzuordnung
– conditions, parameters
definieren Sie ausschließlich betroffene App(s) und Zeitschwellen für Ereignisse**
– verhindert, dass "repeat": false
dieser 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.
Tetsujin
Produktionswerte
Tetsujin
Rubén