Reutilización del botón "menú" en los teclados de Windows utilizados en OS X

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?

ingrese la descripción de la imagen aquí

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?

No tiene propósito ni nombre en OS X. Mi teclado Win en realidad tiene una segunda tecla de Windows allí, con la que está al lado a la derecha. Tal vez Karabiner podría hacerlo, si puede averiguar qué código clave envía; intente Códigos clave para ver si genera algo utilizable
¡Tenemos una palabra especial para información como esta aquí en SE, señor, y esa palabra, señor, es respuesta ! Si fuera tan amable de proporcionar esta información utilizando el cuadro de respuesta, ¡ciertamente lo aceptaré como tal!
Me alegro de que haya ayudado: se proporcionó una respuesta bastante nítida y seca, a continuación :)

Respuestas (8)

No tiene propósito ni nombre en OS X.

Tal vez Karabiner podría hacerlo, si puede averiguar qué código de clave envía; pruebe Key Codes para ver si genera algo utilizable.

Key Codes informa el código 110 para el botón "menú contextual" y, de hecho, Karabiner lo atrapa y lo reutiliza como yo quería.
Karabiner tiene integrado EventViewer y ofrece copiar sus hallazgos al portapapeles. Encontré KeyCodes un poco confuso ya que muestra mucho más de lo que necesita Karabiner. (Vea mi respuesta "propia" a continuación).
Con EventViewer de Karabiner, descubrí que la tecla del menú contextual en mi teclado de Microsoft se registra como "aplicación". En Karabiner, pude asignar "aplicación" a "right_gui" y se comporta como una tecla de Comando.

A partir de macOS 10.12 Sierra, esto se puede lograr desde la línea de comandos usando la hidutilutilidad 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 launchdagente colocando una lista de propiedades como la siguiente en el directorio del agente de inicio adecuado (por ejemplo, ~/Library/LaunchAgentspara 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>
Esta es la mejor respuesta. Karabiner hace mucho más, además de hacer que el software logitech no reconozca el teclado (en mi caso)
Hice el siguiente mapeo "HIDKeyboardModifierMappingSrc": 0x700000065, "HIDKeyboardModifierMappingDst": 0x7000000E6 para logitech G915
Solía "HIDKeyboardModifierMappingDst": 0x7000000E6​​asignar el botón de menú/hamburguesa en un teclado ergonómico de Microsoft Sculpt a la tecla de opción derecha.
Impresionante, realmente aprecio esto, también usé 0x7000000E6 en su lugar para una opción correcta, funcionó de maravilla.
¡Gracias por publicar esto! Pude configurar mi botón de menú para que fuera una tecla "fn" usando"HIDKeyboardModifierMappingDst": 0xFF00000003

Haciendo la respuesta de @Steph pero con Karabiner:

  1. Instalar Karabiner desde aquí
  2. En la pestaña "Modificaciones simples", seleccione su teclado (el mío era este de "Microsoft...")
  3. Presione en "Agregar elemento" para hacer esas 4 modificaciones en la captura de pantalla a continuación

configuración

Esto mapeará sus claves de la siguiente manera:

ingrese la descripción de la imagen aquí

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.

Karabiner ya no tiene un enlace EventViewer o private.xml en la pestaña misc. Tampoco parecerá reasignar la tecla de menú. Sin embargo, se activa como 110 en KeyCodes
EventViewer se movió al elemento del menú. Además, la clave se registra como "aplicación" en EventViewer, por lo que la asignación de esa clave lo hizo. Todavía no vi ninguna opción xml
A partir de la versión 11.5.0 de Karabiner, puede usar la pestaña Modificaciones simples para agregar otra tecla de comando en el lado derecho del teclado. La traducción del nombre de la tecla del teclado a Karabiner es: tecla de Windows => comando izquierdo y tecla de menú => aplicación (al menos en mi teclado, ymmv).

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:

Teclado

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.jsonarchivo, 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 typeson expresiones obligatorias para la reasignación
conditions, parametersdefine exclusivamente las aplicaciones afectadas y los umbrales de tiempo para los eventos**
"repeat": falseevita 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 uielementrolela 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>.