Los teclados de Windows se asignan de manera bastante intuitiva a OS X, dejando solo el botón "menú contextual" un poco sin propósito. Me gustaría que la tecla de menú se comporte como otra tecla de Comando.
¿Cómo se define lo que hace la tecla "menú contextual" en los teclados de Windows en OS X?
En este teclado, la tecla "menú contextual" está directamente debajo de "." tecla (punto/mayor que); en la fila inferior entre "alt" y "ctrl" en el lado derecho, dos teclas a la izquierda de la tecla de "flecha izquierda". ¿Qué hace en OS X y cómo se llama?
A partir de macOS 10.12 Sierra, esto se puede lograr desde la línea de comandos usando la hidutil
utilidad como se describe en la Nota técnica TN2450 .
Usando la tabla de ID de uso de claves en la parte inferior de la nota técnica, puede encontrar las ID de la tecla de la aplicación (es decir, el menú contextual) y la tecla GUI (es decir, el comando) correcta como 0x65 y 0xE7 respectivamente. Por lo tanto, el mapeo se puede hacer desde la línea de comando de la siguiente manera:
hidutil property --set '{"UserKeyMapping":[
{
"HIDKeyboardModifierMappingSrc": 0x700000065,
"HIDKeyboardModifierMappingDst": 0x7000000E7
}
]}'
La asignación no sobrevivirá a los reinicios, pero se puede hacer persistente usando un launchd
agente colocando una lista de propiedades como la siguiente en el directorio del agente de inicio adecuado (por ejemplo, ~/Library/LaunchAgents
para su usuario):
<?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
asignar el botón de menú/hamburguesa en un teclado ergonómico de Microsoft Sculpt a la tecla de opción derecha."HIDKeyboardModifierMappingDst": 0xFF00000003
Haciendo la respuesta de @Steph pero con Karabiner:
Esto mapeará sus claves de la siguiente manera:
Para ampliar la respuesta de @ Tetsujin: de hecho, puedes lograr esto con Karabiner . Aquí hay algunas instrucciones detalladas .
En resumen: vaya a la pestaña Misc & Unistall, abra el xml privado, cámbielo a:
<?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>
Vuelva a la pestaña Cambiar clave, haga clic en Recargar XML y marque la nueva asignación que acaba de realizar en la parte superior de la lista.
Karabiner tiene su propio EventViewer de teclado en la pestaña Varios, por lo que no necesita KeyCode.
Descubrí que Seil funciona para cambiar la tecla "menú contextual" a la función "Opción" (supongo que también funcionaría para cambiar a "Comando", aunque no lo he probado) en El Capitán.
En 'Preferencias del Sistema... | Teclado' Cambié la 'Opción' a 'Comando' y 'Comando' a 'Opción', para que las teclas estén en el mismo orden que en mi MacBook Pro, para facilitar la "memoria muscular".
Luego en 'Preferencias de Seil | Configuración | Teclas en un teclado que no es de Apple' Verifiqué 'Habilitar tecla de aplicación (tecla de menú)' y configuré el código de tecla en '54' (según 'Seil' esto es 'Comando derecho', pero probablemente debido al interruptor en 'Teclado') funciona como 'Opción'.
Entonces eso me da esto:
Karabiner no parece ser compatible con OS Sierra todavía, pero Karabiner Elements sí. Instalarlo requiere un poco de trabajo, pero una vez que lo haya hecho, puede asignar "aplicación" a, por ejemplo, "right_command" para que funcione como lo describió.
Reutilización del botón "menú" en el teclado de Windows de una computadora portátil en MacOS 10.12+
Hay una nueva versión de Karabiner ("Karabiner Elements 12.1" para usar con MacOS 10.12+) que en mi humilde opinión justifica agregar una respuesta separada a este tema, aunque publiqué algo. similar aquí antes.
[Como actualicé a MacOS 10.13 (High Sierra), tuve que usar ApplePS2SmartTouchPad.kext para poder reasignar el botón "menú", que ahora se ve como scan_previous_track
. ]
Con Karabiner Elements tienes que editar su ~/.config/karabiner/karabiner.json
archivo, algo diferente** al código anterior...
Primero averigüe el nombre del botón "menú" en su teclado a través de Karabiner EventViewer
:
simplemente presiónelo una vez. [El mío es: scan_previous_track
, el tuyo probablemente sea diferente...]
Aquí hay un código análogo a partes de lo que publiqué anteriormente, abriendo y cerrando "Información":
{"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"
}
]
}
(Si se presiona brevemente Cmd-I se activa, después de mantener presionado el botón durante medio segundo: Cmd-W)
– from, to…
y type
son expresiones obligatorias para la reasignación
– conditions, parameters
define exclusivamente las aplicaciones afectadas y los umbrales de tiempo para los eventos**
– "repeat": false
evita que este código cierre involuntariamente más de una ventana
– Este código se insertaría entre "rules": [ ]
corchetes (posiblemente con ", "agregado)
(Hice accesos directos para la función de retroceso y avance del historial de mi navegador con presionar y mantener presionado, también)
- Eche un vistazo al Manual de referencia de Karabiner Elements json ...
(** KE ya no admite uielementrole
la selección condicional por , pero algunos otros conditions
).
Uso MacOSX 10.11.6 El Capitan (de una Mac mini rota) en un EliteBook hp-2570p , por lo que la tecla de menú de Windows no se reconoce como "PC_APPLICATION" sino simplemente como "FN" = tecla de función.
Desafortunadamente, esta tecla bloquea las teclas secundarias, así que tuve que hacer algunos movimientos más elaborados para llegar a donde quería:
Utilizando Karabiner (con EventViewer integrado para obtener información sobre claves/nombres/nombres de ventana) reutilicé la clave para:
– imitar æ-i en Finder (repetir para cerrar )
– imitar æ-i en VLC (– "–)
– hacer historial en Safari
Además, realicé otros cambios que no son de teclas de menú:
– redefinido algunas teclas que no están etiquetadas correctamente en mi teclado alemán
– accedí a PageUp/Down "con una sola mano" en mi teclado (no se muestra)
Probablemente encontraré más simplificaciones en otras aplicaciones con el tiempo...
Usé este código "individual" en "private.xml" (detalles: ver publicación de 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> -->
Para las aplicaciones de PC que se ejecutan bajo CrossOver, Karabiner no reconoce los nombres de las aplicaciones, por lo que usé <appdef> para (re)definir sus nombres y <windownamedef> para abordar una ventana en particular; estas definiciones estaban entonces disponibles en las etiquetas <only> y <windownname_only>.
Tetsujin
Valores de producción
Tetsujin
ruben