Clavier Apple Mac sous Ubuntu
OSes
Le clavier Mac n'est toujours pas reconnu correctement dans la version 18.04 LTS d'Ubuntu et ça dure depuis un moment déjà.
En cause, le module hid_apple du kernel GNU/Linux qui ne distingue pas correctement la disposition du clavier, ça ne touche pas que Ubuntu mais bien l'ensemble des distributions.
Ca entraine des problèmes bien génants, les touches sont inversées ou n'ont pas le comportement attendu. Les instructions contenues dans cet article sont valides pour Ubuntu et Debian. Dans le cas d'une autre distribution, adapter la configuration de la méthode de saisie par l'utilitaire le plus adapté.
Méthode de saisie
Configurer les paramètres de saisie de texte, soit avec l'utiltaire "Saisie de texte" / "Keyboard Layouts" ou directement via le terminal dans /etc/default/keyboard en y définissant les valeurs suivantes :
XKBMODEL="pc105" # Generic 105-key PC (intl.)
XKBLAYOUT="fr" # French
XKBVARIANT="mac" # French (Macintosh)
Puis appliquer les changements :
sudo dpkg-reconfigure -f noninteractive keyboard-configuration
Disposition des touches
En Europe, on utilise habituellement le standard ISO pour nos claviers. Mais là il faut le désactiver.
echo 0 | sudo tee /sys/module/hid_apple/parameters/iso_layout
Inversion des touches Cmd et Alt
echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd
Comportement des touches de fonction
- 0 - Désactive complètement la touche
fn. - 1 - Activé par défaut. La touche
F8déclenche l'action play/pause.fn + F8déclencheF8. - 2 - Désactivé par défaut. La touche
F8déclencheF8.fn + F8déclenche l'action play/pause.
echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
Persister les changements
Pour que ces changements survivent au prochain reboot, il faut les persister dans modprobe et regénérer l'initramfs :
echo options hid_apple iso_layout=0 | sudo tee -a /etc/modprobe.d/hid_apple.conf
echo options hid_apple swap_opt_cmd=0 | sudo tee -a /etc/modprobe.d/hid_apple.conf
echo options hid_apple fnmode=2 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all