Précédent Remonter Suivant

7  Clavier

Un conseil, avoir un autre ordinateur connecté à l'ibook pour faire les essais, c'est toujours désagreable de se retrouver avec un clavier inutilisable et de devoir faire un reboot hard (bouton on/off pendant 5s). J'ai trouvé la config clavier particulièrement pénible, et visiblement la config clavier console influence la config clavier pour X...

7.1  Configuration du noyau

Première précaution à prendre, s'assurer que le driver clavier génère les scancodes (ou les keycodes, j'y ai jamais rien compris) linux, plutot que ceux dits ``ADB'' : si il y'a un ``fichier'' /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes, alors il faut s'assurer qu'il contient "1". Sinon faire :
echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
Et pour que ce soit remis à 1 à chaque reboot, rajouter :
dev/mac_hid/keyboard_sends_linux_keycodes=1
Dans /etc/sysctl.conf. Attention, dans ce cas, il faudra que les scripts d'initialisation rechargent les scancodes après que ce fichier ait été traité (par /etc/init.d/procfs.sh) ; pour ça, rajouter le script /etc/init.d/rekeymap.sh suivant :
#!/bin/sh
/bin/loadkeys /etc/console/boottime.kmap.gz
Puis faire :
chmod 755 /etc/init.d/rekeymap.sh
update-rc.d start rekeymap.sh 60 S .
Autre solution (alternative à tout ce qui precede), compiler le noyau sans CONFIG_MAC_ADBKEYCODES (menu ``Macintosh device drivers'').

7.2  Config en console et sous X

Faire la manip suivante (inspirée de celle décrite par David Mentré dans http://www.linux-france.org/macintosh/clavier_rpm3.html) :
  1. récupérer ftp://ftp.linux-france.org/pub/macintosh/kbd-mac-fr.tar.gz
  2. clavier sous X
    1. recopier fr_new dans /usr/X11R6/lib/X11/xkb/symbols/macintosh/
    2. dans /etc/X11/XF86Config-4, les options pour la config du clavier sont :
      Option "XkbRules"   "xfree86"
      Option "XkbModel"   "macintosh"
      Option "XkbLayout"  "fr_new"
      Option "XkbOptions" "ctrl:nocaps"
      
      IMPORTANT : veiller a ce que XkbDisable ne soit pas activée !
    3. Le nouveau layout sera pris au prochain redémarrage ou après avoir tué le serveur X (Ctrl-Option-Del ou /etc/init.d/gdm restart).
  3. clavier console
    1. recopier mac-fr-ext_new.kmap.gz dans /usr/share/keymaps/mac/
    2. faire install-keymap /usr/share/keymaps/mac/mac-fr-ext_new.kmap.gz
    3. le nouveau clavier est utilisé par la console.
Le clavier devrait se comporter convenablement. En console : Sous X : En console et sous X : À partir de maintenant on devrait pouvoir relancer X sans surprise, et constater avec émerveillement que glxgears fait du 1200 fps en 16bpp (beaucoup moins en 24bpp), et que tuxracer marche a merveille (environ 45fps en 16bpp, un peu plus de 10 en 24bpp) !

7.3  Touches spéciales Apple pour le son et l'eject du CD

Par défaut, seules les touches spéciales de réglage de la luminosité sont accessibles (F1/F2), pas les touches de volume ni celle d'eject du CD. Il y'a plusieurs manières de s'en sortir pour en profiter. Pour ma part, je me contente de la première méthode ci-dessous (ikeyd), qui marche très bien.

7.3.1  Debian stable : ikeyd

C'est un petit démon dispo par défaut avec la debian, et qui scrute /dev/input/event à la recherche des touches frappées : ça court-circuite donc à la fois X et la console, et ça permet de gérer le son directement (via /dev/mixer), et le cd aussi (/dev/cdrom avec un umount préalable si besoin). Pour l'installer, un simple :
apt-get install ikeyd
suffit. C'est plus réactif que pbbuttonsd (voir section 7.3.4), et ça ne fait juste que gérer les touches ``spéciales'' contrairement à pbbuttonsd qui fait plein d'autres choses très bien supportées par ailleurs, comme remplacer pmud, gérer le rétro-éclairage...

7.3.2  Debian testing/unstable : pbbuttonsd

En testing/unstable, préférer utiliser pbbuttonsd qui s'occupe également de remplacer avantageusement pmud pour la gestion de la mise en veille. Voir la section 19.1.1.

7.3.3  Raccourcis clavier sous X

On peut aussi définir un raccourci du style Ctrl-fn-F3/F4/F5/F12 dans son gestionnaire de fenêtres (sawfish) pour faire quasiment la même chose, au prix d'une combinaison de touches un peu plus compliquée : il suffit de définir un raccourci clavier de type Run shell command dans sawfish pour ces combinaisons, avec respecitivement /usr/local/bin/beep 0 (voir script /usr/local/bin/beep que je fournis), /usr/local/bin/beep -10, /usr/local/bin/beep +10 et eject comme commandes associées.

7.3.4  pbuttonsd

Il y a une troisième solution, un peu usine à gaz celle-ci, car elle permet en plus de remplacer pmud (section 9) : le logiciel pbbuttonsd (http://www.cymes.de/members/joker/), à récupérer, compiler et installer à la main.

Le fichier de config pbbuttonsd.conf installé par défaut redéfinit en profondeur le mapping des touches de fonction pour qu'on n'ait pas à taper fn quand on veut accéder aux touches de fonction, et ce mapping reste sous MacOS X : en conséquence, avec ce fichier de configuration de base, il faut maintenant taper fn quand on veut accéder aux fonctionnalités luminosité/volume/eject, même sous MacOS X. Pour revenir au comportement ``normal'' (ie fn-F1..F12 pour accéder aux touches de fonction, F1/F2/F3/F4/F5/F12 direct pour accéder aux fonctionnalités de luminosité/volume/eject), modifier l'option kbdmode du pbbuttonsd.conf pour préciser fkeyslast. Je n'ai pas résussi à faire fonctionner la touche F12 (eject du CD), même en repositionnant correctement son scancode à 108 (au lieu de 69 par défaut). Et au final je n'utilise pas pbbuttonsd parce que je trouve que son temps de réaction à l'appui des touches de volume est plus lent qu'en utilisant ikeyd ou en définissant un raccourci à la mano dans le window manager (cf ci-dessus).

7.4  Bug X debian unstable semaine du 20/02/2004

Voir le bug debian #234113 : X cherche la map fr_new dans un sous-répertoire pc au lieu de tenir compte du fichier XF86Config-4 qui indique d'utiliser un sous-répertoire macintosh. Bref, une fois X lancé, la touche alt n'est plus prise en compte, plus moyen de taper un |, ~, ..., et évidemment plus moyen de revenir en console... En attendant que ce soir réparé, une fois dans une xterm, faire setxkbmap fr_new et voilà.


Précédent Remonter Suivant