Sur un clavier Apple sous Linux, comment faire fonctionner les touches de fonction sans la touche de modification fn?

19

J'utilise un clavier filaire Apple sous Linux. Par défaut, les touches de fonction (F1, F2, F3, etc.) nécessitent fnd'appuyer sur la touche pour qu'elles fonctionnent. Sans la fnclé, ces touches contrôlent les fonctionnalités telles que la luminosité de l'écran, le volume et le contrôle des pistes musicales.

Y a-t-il un moyen de les échanger, donc les touches de fonction ne nécessitent pas le fnmodificateur, mais les autres fonctions (luminosité, etc.) le font?

ryanlerch
la source

Réponses:

24

Vous devez ajouter 0ou 2dans /sys/module/hid_apple/parameters/fnmode.

c'est à dire:

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

Il semble y avoir une certaine confusion quant à la différence entre les deux valeurs. Citant la documentation Ubuntu :

  1. 0 = désactivé: désactivez la touche 'fn'. En appuyant sur 'fn' + 'F8', vous vous comporterez comme vous n'appuyez que sur 'F8'
  2. 1 = fkeyslast: les touches de fonction sont utilisées comme dernière touche. Appuyer sur la touche 'F8' agira comme une touche spéciale. Appuyer sur 'fn' + 'F8' se comportera comme un F8.
  3. 2 = fkeysfirst: les touches de fonction sont utilisées comme première touche. Appuyer sur la touche «F8» se comportera comme un F8. Appuyer sur 'fn' + 'F8' fera office de touche spéciale (lecture / pause).

Notez que cela fonctionne également pour moi sur Fedora.

ffledgling
la source
c'est fnmode = pas de soulignement
Yauhen Yakimovich
Merci beaucoup!!!
Shivam
3

J'ai compris qu'il est assez simple de changer le comportement de ce modificateur, car en tant que root, changez la valeur du fichier /sys/module/hid_apple/parameters/fnmodede 1à 0. Par exemple:

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

Notez que dans certaines anciennes versions de linux, ce fichier se trouvait dans /sys/module/apple/parameters/fnmode. En outre, cette modification ne persistera pas au redémarrage.

ryanlerch
la source
2

Pour ceux dont l'accès est refusé et ne peut pas simplement utiliser le préfixe "sudo":

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

Remplacez-le par 2ou peu importe, puis Ctrl+Xenregistrez.

Marc
la source
le meilleur moyen est de le faire echo 2| sudo tee /sys/module/hid_apple/parameters/fnmode, mais toutes ces solutions sont transitoires .... Une façon de rendre persistant (sur des systemdenvironnements comme Fedora par exemple): echo "w /sys/module/hid_apple/parameters/fnmode - - - - 2" | sudo tee /etc/tmpfiles.d/rev_fn_key.conf
nhed
2

Pour toute personne tombant sur ce fil en utilisant l'un des plus récents MacBook Pros (2016 et versions ultérieures) qui ont besoin du pilote applespi pour faire fonctionner le clavier et le pavé tactile, voici comment faire fonctionner cela, car je n'ai trouvé aucun autre fil expliquant cela pour Macs plus récents.

Pour autant que je sache, le pilote remplace efficacement le rôle du module hid_apple, donc les fichiers à modifier sont légèrement différents.

Tout d'abord, pour vérifier que vous utilisez le pilote applespi et non le pilote hid_apple, vérifiez laquelle de ces commandes (à l'aide du terminal) renvoie quelque chose. Quel que soit le cas, vous direz quel pilote vous utilisez actuellement:

# 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

Pour tester temporairement les paramètres (les paramètres seront réinitialisés après un redémarrage):

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

Pour appliquer les modifications de façon permanente (persister avec les redémarrages):

# 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

Pour les MacBook Pro plus anciens utilisant le module hid_apple, utilisez "hid_apple" plutôt que "applespi" dans les commandes.

Misha
la source
1

Dans une discussion plus ancienne, une solution est donnée avec un paramètre de démarrage du noyau qui pourrait être préférable (application à l'échelle du système, modification d'une seule ligne /etc/default/grub, etc.).

Seulement selon cette solution, fnmodeest défini sur au 2lieu de 0. J'ai juste essayé de régler hid_apple/parameters/fnmodesur 2, et cela a aussi l'effet souhaité. Peut - être que la logique est tout simplement `1 → « besoin Fnd'accès F1, F2, F3... » par rapport à toutes les autres valeurs?

RJVB
la source
Salut RJVB, bienvenue sur unix.SE. J'ai modifié votre réponse pour améliorer la mise en forme. Jetez un oeil à la source pour apprendre certaines des astuces.
drs