
Probé esto en dos máquinas que ejecutan Mavericks (10.9.4), con y sin teclado externo, y en todos los casos el comportamiento es el que se describe a continuación.
BajoPreferencias del Sistema > Teclado > Atajosen la sección "Control de misión", habilité el acceso directo "Mostrar escritorio" y lo asigné a F5. De manera similar, asigné "Mostrar panel" a F6.
Independientemente de cómo esté configurado "Usar todas las teclas F1, F2, etc. como teclas de función estándar", elfnLa clave se ignora para estos atajos y la acción de atajo.siempreocurre, lo que hace imposible que F5 y F6 actúen "normalmente" (como en Terminal.app). Vale la pena señalar que las teclas de acceso directo "predeterminadas" (por ejemplo, F3 para Mission Control, F4 para LaunchPad)hacertrabajar confncomo se desea/espera: sosteniendo elfnmodificador al presionar esas teclas "invierte" el comportamiento (dependiendo de cómo esté configurada la opción "Usar todas las teclas F1, F2, etc.").
Instalé "KeyRemap4MacBook" (ahora llamadomosquetón) y habilitó el registro de depuración de eventos del teclado con:
sudo sysctl -w keyremap4macbook.debug=1
F5 sinfnllave
Jul 17 09:07:54 KeyboardEventCallback [sending]: eventType 10, flags 0x00000000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:07:54 KeyboardEventCallback [sending]: eventType 11, flags 0x00000000, key 0x0060, kbdType 46, repeat = 0
F5 confnllave
Jul 17 09:07:58 KeyboardEventCallback [sending]: eventType 12, flags 0x00800000, key 0x003f, kbdType 46, repeat = 0
Jul 17 09:07:59 KeyboardEventCallback [sending]: eventType 10, flags 0x00800000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:07:59 KeyboardEventCallback [sending]: eventType 11, flags 0x00800000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:08:01 KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003f, kbdType 46, repeat = 0
Y para comparar...
F1 sinfnllave
Jul 17 09:09:11 KeyboardEventCallback [sending]: eventType 10, flags 0x00000000, key 0x0091, kbdType 46, repeat = 0
Jul 17 09:09:11 KeyboardEventCallback [sending]: eventType 11, flags 0x00000000, key 0x0091, kbdType 46, repeat = 0
F1 confnllave
Jul 17 09:09:16 KeyboardEventCallback [sending]: eventType 12, flags 0x00800000, key 0x003f, kbdType 46, repeat = 0
Jul 17 09:09:17 KeyboardEventCallback [sending]: eventType 10, flags 0x00800000, key 0x007a, kbdType 46, repeat = 0
Jul 17 09:09:17 KeyboardEventCallback [sending]: eventType 11, flags 0x00800000, key 0x007a, kbdType 46, repeat = 0
Jul 17 09:09:19 KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003f, kbdType 46, repeat = 0
Observe que con F1, cuando elfnLa clave (código de clave 0x3F) está inactiva, el código de clave es 0x7A ("F1") en lugar de 0x91 ("BRIGHTNESS_DOWN"), pero para F5, la clave permanece 0x60 ("F5").
Parece que lo que sea que esté manejando los atajos de teclado en el panel previo no tiene una forma de incluir el estado delfnmodificador.
Así que aquí está mi pregunta: ¿hay alguna manera de asignar atajos de teclado a las teclas de función para que funcionen como los atajos predeterminados del sistema y respeten elfn¿Tecla para alternar entre comportamiento "normal" y "atajo"?
Respuesta1
Gracias a muchosarchivos de configuración de ejemploen mosquetón(anteriormente conocido como KeyRemap4MacBook
), pude crear lo siguiente y agregarlo a mi private.xml
archivo para obtener el comportamiento que deseaba, tanto en un teclado externo como en el teclado integrado de una MacBook:
<root>
<item>
<name>F5 to Show Desktop (Fn+F5 is still F5)</name>
<appendix>Enables F5 (Shift+F5 on laptops) as a Show Desktop shortcut</appendix>
<identifier>private.f5_to_show_desktop</identifier>
<autogen>--KeyToKey-- KeyCode::F5, ModifierFlag::FN, KeyCode::F5</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_LOW, ModifierFlag::FN, KeyCode::F5</autogen>
<autogen>--KeyToKey-- KeyCode::F5, KeyCode::MISSION_CONTROL, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_LOW, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_SHIFT, KeyCode::MISSION_CONTROL, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>
</item>
<item>
<name>F6 to Show Dashboard (Fn+F6 is still F6)</name>
<appendix>Enables F6 (Shift+F6 on laptops) as a Show Dashboard shortcut</appendix>
<identifier>private.f6_to_show_dashboard</identifier>
<autogen>--KeyToKey-- KeyCode::F6, ModifierFlag::FN, KeyCode::F6</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_HIGH, ModifierFlag::FN, KeyCode::F6</autogen>
<autogen>--KeyToKey-- KeyCode::F6, KeyCode::DASHBOARD, Option::NOREPEAT</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_HIGH, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_SHIFT, KeyCode::DASHBOARD, Option::NOREPEAT</autogen>
</item>
</root>
Tenga en cuenta que private.xml
se puede acceder rápidamente al archivo desde la pestaña "Varios y desinstalar" de la ventana de Karabiner, y hay un ReloadXML
botón en la pestaña "Cambiar clave".