En un teclado Apple con Linux, ¿cómo hago para que las teclas de función funcionen sin la tecla modificadora fn?

19

Yo uso un teclado Apple con cable en Linux. Por defecto, las teclas de función (F1, F2, F3, etc.) requieren fnque se presione la tecla para que funcionen. Sin la fntecla, estas teclas controlan las funciones como Brillo de pantalla, Volumen y Control de pista de música.

¿Hay alguna forma de intercambiarlos, por lo que las teclas de función no requieren el fnmodificador, pero las otras funciones (Brillo, etc.) sí?

ryanlerch
fuente

Respuestas:

24

Es necesario añadir 0o 2dentro /sys/module/hid_apple/parameters/fnmode.

es decir:

echo 2 > /sys/module/hid_apple/parameters/fnmode

Parece haber cierta confusión sobre cuál podría ser la diferencia entre los dos valores. Citando la documentación de Ubuntu :

  1. 0 = deshabilitado: deshabilita la tecla 'fn'. Al presionar 'fn' + 'F8' se comportará como si solo presionaras 'F8'
  2. 1 = fkeyslast: las teclas de función se utilizan como última tecla. Presionar la tecla 'F8' actuará como una tecla especial. Al presionar 'fn' + 'F8' se comportará como un F8.
  3. 2 = fkeysfirst: las teclas de función se utilizan como primera tecla. Al presionar la tecla 'F8' se comportará como un F8. Presionando 'fn' + 'F8' actuará como tecla especial (reproducción / pausa).

Tenga en cuenta que esto también funciona para mí en Fedora.

incipiente
fuente
es fnmode = sin guión bajo
Yauhen Yakimovich
¡¡¡Muchas gracias!!!
Shivam
3

Descubrí que es bastante simple cambiar el comportamiento de este modificador, ya que la raíz cambia el valor del archivo /sys/module/hid_apple/parameters/fnmodede 1a 0. Por ejemplo:

# echo 0> / sys / module / hid_apple / parameters / fnmode

Tenga en cuenta que en algunas versiones anteriores de Linux, este archivo se encontraba en /sys/module/apple/parameters/fnmode. Además, este cambio no persistirá cuando reinicie.

ryanlerch
fuente
2

Para aquellos que tienen acceso denegado y no pueden simplemente prefijar el uso de "sudo":

sudo nano /sys/module/hid_apple/parameters/fnmode

Cambie a 2o lo que sea y luego Ctrl+Xpara guardar.

Bagazo
fuente
mejor forma de hacerlo es echo 2| sudo tee /sys/module/hid_apple/parameters/fnmode, pero todas estas soluciones son transitorias .... Una forma de hacer persistente (en systemdentornos como Fedora, por ejemplo): echo "w /sys/module/hid_apple/parameters/fnmode - - - - 2" | sudo tee /etc/tmpfiles.d/rev_fn_key.conf
NHED
2

Para cualquiera que se encuentre con este hilo utilizando uno de los MacBook Pros más nuevos (2016 y posteriores) que necesitan el controlador de Apple para hacer que el teclado y el panel táctil funcionen, he aquí cómo hacerlo funcionar, ya que no pude encontrar ningún otro hilo que explique esto para Macs más nuevos.

Según tengo entendido, el controlador reemplaza efectivamente la función del módulo hid_apple, por lo que los archivos para editar son ligeramente diferentes.

Primero, para verificar que está utilizando el controlador applespi y no el controlador hid_apple, verifique cuál de estos comandos (usando el terminal) devuelve algo. Lo que sea que le diga qué controlador está utilizando actualmente:

# If this returns "applespi", you are using applespi
ls /sys/module | grep applespi

# If this returns "hid_apple", you are using hid_apple
ls /sys/module | grep hid_apple

Para probar la configuración temporalmente (la configuración se restablecerá después de un reinicio):

echo 2 | sudo tee -a /sys/module/applespi/parameters/fnmode

Para aplicar los cambios de forma permanente (persistir con reinicios):

# Add the option for the fn key
echo options applespi fnmode=2 | sudo tee -a /etc/modprobe.d/applespi.conf
# Update initramfs bootfile
sudo update-initramfs -u -k all
# Reboot to test (optional)
sudo reboot

Para los MacBook Pros más antiguos que usan el módulo hid_apple, use "hid_apple" en lugar de "applespi" en los comandos.

Misha
fuente
1

En una discusión anterior, se proporciona una solución con un parámetro de arranque del núcleo que podría ser preferible (aplicación en todo el sistema, modificación de solo una línea de entrada /etc/default/grub, etc.).

Solo de acuerdo con esa solución, fnmodese establece en 2lugar de 0. Acabo intentado fijar hid_apple/parameters/fnmodea 2, y tiene el efecto deseado también. Tal vez la lógica es simplemente `1 → "requerir Fnal acceso F1, F2, F3, ..." frente a todos los demás valores?

RJVB
fuente
Hola RJVB, bienvenido a unix.SE. He editado tu respuesta para mejorar el formato. Echa un vistazo a la fuente para aprender algunos de los trucos.
Dres.