Habilitar el bloqueo de teclas de función cuando se usa un teclado externo/Deshabilitar cuando se usa un teclado interno en Mac Book Pro

Cuando estoy desarrollando, casi siempre tengo un teclado Bluetooth externo conectado a mi Mac Book Pro y prefiero que el bloqueo de funciones esté activo para que las teclas F1-F12 funcionen sin tener que presionar la tecla fn. Pero cuando uso el teclado interno, tiendo a hacer cosas más informales y el brillo/volumen, etc., se usan con más frecuencia.

¿Puedo habilitar/deshabilitar el bloqueo de funciones según el teclado que esté usando?

¿Cuál es la marca del teclado externo?
Es uno de los nuevos Apple Magic Keyboard

Respuestas (1)

Para que esto funcione, debe usar una herramienta de terceros: Karabiner.

Para habilitar esto, debe crear un filtro para el teclado externo e invertir todas las teclas de función/consumidor.

requisitos previos:

  1. Descargar, instalar y abrir Karabiner
  2. Abrir en el menulet Mosquetón -> Preferencias
  3. Abre la pestaña Varios y Desinstalar
  4. Pulsa el botónLaunch EventViewer
  5. Presiona la pestaña Dispositivos
  6. Tome nota del ID del proveedor y del producto del teclado externo
  7. Cierra el visor de eventos
  8. Pulsa el botónOpen private.xml
  9. Abra el archivo private.xml con un editor apropiado
  10. Ingrese el código clave personalizado y reemplace la identificación del proveedor y del producto por las identificaciones que se encuentran arriba

    <?xml version="1.0"?>
    <root>
      <devicevendordef>
        <vendorname>Apple</vendorname>
        <vendorid>0x05ac</vendorid>
      </devicevendordef>
      <deviceproductdef>
        <productname>ExternalKeyboard</productname>
        <productid>0x0256</productid>
      </deviceproductdef>
      <item>
        <name>Function to Consumer for External Keyboard</name>
        <identifier>private.function2consumerExtK</identifier>
        <device_only>DeviceVendor::Apple, DeviceProduct::ExternalKeyboard</device_only>
        <autogen>__KeyToKey__ KeyCode::F1, ConsumerKeyCode::BRIGHTNESS_DOWN</autogen>
        <autogen>__KeyToKey__ KeyCode::F2, ConsumerKeyCode::BRIGHTNESS_UP</autogen>
        ...
      </item>
      <item>
        <name>Consumer to Function for External Keyboard</name>
        <identifier>private.consumer2functionExtK</identifier>
        <device_only>DeviceVendor::Apple, DeviceProduct::ExternalKeyboard</device_only>
        <autogen>__KeyToKey__ KeyCode::BRIGHTNESS_DOWN, ModifierFlag::FN, KeyCode::F1</autogen>
        <autogen>__KeyToKey__ KeyCode::BRIGHTNESS_UP, ModifierFlag::FN, KeyCode::F2</autogen>
        ...
      </item>
    </root>
    

    Reemplace los puntos suspensivos por todas las demás teclas de consumo y función necesarias

  11. Guarda el archivo

  12. Abra en el menulet Mosquetón -> Preferencias la pestaña Cambiar clave
  13. Presiona el botón RecargarXML
  14. Habilite las reasignaciones. Deben estar enumerados al principio.

El comportamiento final debería ser el siguiente con el bloqueo de funciones activado:

Teclado interno:

F1: F1
Fn+ F1: brillo arriba

Teclado externo:

F1: brillo arriba
Fn+ F1: F1

etc.

Si deshabilita u omite la parte Consumidor a función para teclado externo, debería actuar así:

F1: aumento de brillo
Fn+ F1: aumento de brillo

lo que significa que la "capa de tecla de función" está deshabilitada y solo funciona la capa de tecla de consumidor.

etc.


Otros posibles códigos clave:

KeyCode::EXPOSE_ALL,                 KeyCode::F3</autogen>
KeyCode::DASHBOARD,                  KeyCode::F4</autogen>
KeyCode::LAUNCHPAD,                  KeyCode::F4</autogen>
ConsumerKeyCode::KEYBOARDLIGHT_LOW,  KeyCode::F5</autogen>
ConsumerKeyCode::KEYBOARDLIGHT_HIGH, KeyCode::F6</autogen>
ConsumerKeyCode::MUSIC_PREV,         KeyCode::F7</autogen>
ConsumerKeyCode::MUSIC_PLAY,         KeyCode::F8</autogen>
ConsumerKeyCode::MUSIC_NEXT,         KeyCode::F9</autogen>
ConsumerKeyCode::VOLUME_MUTE,        KeyCode::F10</autogen>
ConsumerKeyCode::VOLUME_DOWN,        KeyCode::F11</autogen>
ConsumerKeyCode::VOLUME_UP,          KeyCode::F12</autogen>
Realmente lo siento por la lenta aceptación, gracias por la gran respuesta.