Portages ] [ Debian pour PowerPC ] [ Installation ] [ Documentation ] [ Développement ]

Alerte concernant les codes clavier de Linux pour PowerPC !

Si vous utilisez un noyau compilé avant avril 2001 et vous songez à faire une mise à jour vers Woody, vers un noyau plus récent ou bien un changement dans la distribution des touches de votre clavier, il est ESSENTIEL d'être au courant du changement Debian des codes clavier pour PowerPC dans Woody.

Voilà ce qui s'est passé : pour inscrire PowerPC dans le source original de Linux et éliminer les conflits présents et futurs, le paquet console-data de Woody a remplacé les distributions des codes clavier ADB (qui étaient la norme pour les noyaux PowerPC) par celles fournies par Linux. Les définitions de codes clavier ADB ne sont plus officiellement soutenues par Debian.

Le système d'installation de noyau a été modifié en conséquence et ainsi les noyaux nouvellement installés utilisent les codes clavier de Linux et non ceux de ADB. Ceci est un changement définitif ; un noyau compilé sans la fonctionnalité des codes clavier ADB ne peut pas gérer les distributions ADB. Les codes clavier sont une caractéristique de la nouvelle couche d'entrée qui va devenir à terme le standard pour la gestion de tous les périphériques d'entrée pour toutes les architectures pour les versions postérieures au cycle des noyaux 2.4.

Si vous préférez conserver la norme ADB pour le moment mais que le noyau que vous utilisez a été compilé avec CONFIG_MAC_ADBKEYCODES=n, vous pouvez le recompiler avec CONFIG_MAC_ADBKEYCODES=y et continuer d'utiliser une distribution ADB.

Les distributions des claviers mac/apple pour les codes claviers ADB sont très différentes de celles Linux. C'est pourquoi vous devez être prêt. Si vous ne coordonnez pas vos instructions lors du démarrage, votre noyau et sa distribution des codes clavier, un jour vous allez taper « root » et vous lirez à l'écran « sswj ». Une situation très déconcertante.

Planifier à l'avance

Un cas classique est de mettre à jour depuis Potato vers Woody. À ce moment, une boîte de dialogue a été incorporé quand console-data est mis à jour. Une vérification est faite pour savoir quel noyau vous utilisez lors de cette mise à niveau et si vous utilisez la fonctionnalité ADB, vous serez averti de la situation et il faudra faire un choix.

Maintenant que vous êtes incollable sur le sujet, il vous sera facile de faire un choix. Mettez une distribution de touches pour le démarrage et puis après la mise à niveau du système fini (MAIS avant de redémarrer), modifiez votre configuration de démarrage (quik.conf ou yaboot.conf) pour ajouter une ligne comme suit à la section kernel image que vous utilisez au démarrage :

append="keyboard_sends_linux_keycodes=1"

Si vous avez déjà une option append=, ajoutez-le au reste à l'intérieur des guillemets comme cela

append="video=ofonly keyboard_sends_linux_keycodes=1"

N'oubliez pas d'exécuter quik ou ybin après avoir fini l'édition du fichier de configuration pour modifier les fichiers chargés du démarrage en conséquence.

Une autre apparition du problème est lors de la mise à jour de X depuis 4.0.x vers 4.1.x avec un noyau avec les codes clavier ADB. Votre XF86Config-4 a probablement pour le paramètre XkbModel la valeur "macintosh" mais sa signification a aussi changé pour celle d'un clavier macintosh utilisé avec les codes clavier Linux. Si vous conservez ceux ADB, vous devrez mettre la valeur "macintosh_old".

Les installations de Woody

Pour une installation (et non une mise à jour) de Woody, vous aurez une distribution de touches Linux et un noyau avec les codes clavier Linux. Donc, tout va correspondre et vous aurez aucun souci. Sauf si...

Sauf si vous changez le noyau après l'installation et que vous validez la fonction ADB. Alors vous aurez le problème strictement inverse. Ou alors...

Ou alors vous changez la distribution de touches manuellement en sélectionnant depuis /usr/share/keymaps/mac. Toutes les distributions de touches sont celles ADB et ne fonctionnent pas avec les codes clavier Linux !

Cela ne m'arrivera pas -- L'expérience montre que SI

Donc, comment vous sauver lorsqu'en tapant root, vous lisez sswj ? Ou à l'envers, vous tapez (tab)ssw et lisez root ?

Les utilisateurs de Linux déteste éteindre leurs ordinateurs. Et votre système de fichiers se corrompt à chaque fois un petit peu plus. Cette corruption peut être ou non corrigée. Donc, voilà quelques suggestions pour éteindre gracieusement votre système si cela arrive.

Si vous avez installé ssh sur votre système et vous pouvez vous connecter depuis une autre machine, vous pouvez temporairement corriger le problème à distance. Connectez-vous avec le compte root et faites ceci :

cd /proc/sys/dev/mac_hid/
echo 0 > keyboard_lock_keycodes
echo 1 > keyboard_sends_linux_keycodes

Votre clavier répondra alors normalement jusqu'au prochain redémarrage. Servez-vous de cette opportunité pour synchroniser votre distribution de touches, votre noyau et votre gestionnaire de démarrage !

Si votre système a une combinaison de touches pour le redémarrer ou l'éteindre, vous pouvez utiliser les tables ci-dessous pour trouver ce qu'est devenue cette combinaison. Sur PowerPC, une combinaison de touche classique est Ctrl-Shift-Suppr. Avec une distribution de touches ADB chargée, interprétée comme des codes claviers Linux, cela devient Ctrl-F6-F12. Dans le cas opposé, à savoir une distribution Linux, interprétée par un noyau ADB, il vous faudra appuyer sur Shift-AltGr-=. Bonne chance.

Mon clavier n'a pas la touche Delete, donc quand j'ai la distribution de touches Linux chargée par un noyau avec ADB, je devine grâce à la table que pour se connecter en tant que root, il faut taper 2==3 validé par F5. Pour le mot de passe, j'utilise encore la table. Pour redémarrer, je tape 21 tab ==3 validé par F5. Vous pouvez aussi utiliser halt p]j3 validé par F5.

Certains caractères ne peuvent être tapés avec la mauvaise distribution de touches. Ceci explique les blancs laissés dans les tables.

Distribution de touches Linux chargée par un noyau configuré pour ADB

 

Si vous voulez :  a b   c d e f g h i j      k l m n     o p q r s t u v w
Au lieu, tapez :  ] TAB m u 1 [ i p 5 Return l j ` Space = 9 y 2 o 3 6 . t

               x y z 0 1 2 3 4 5 6 7 8 9 *   /  [ ] ,         = - ` \ ;
               n 4 / b d f h g z x c v   Alt F7 7 - Backspace w q ; , '

              Control Shift     Enter Tab Backspace Fwd-Del Space
              F6      Ctrl or \ F5, 8 r   e         F12     CapsLock

              Home   NumLock   Clear  AltGr =(numkpd) Escape F11 F12
              Clear  +(numkpd) F6-6   Shift Fwd-Del   s      kp-5 kp-6

              F1         F2          F3         F4       F7   F9
              Left-Arrow Right-Arrow Down-Arrow Up-Arrow kp-. kp-*

              Left-Arrow Right-Arrow Up-Arrow Down-Arrow
              F13                    F11

Noyau avec les codes claviers Linux mais la distribution ADB

Si vous voulez : a b c d e         f g h i j k l m n o p q r   s   t u v w
Au lieu, tapez : 0 7 1 Backspace 2 4 3 g l ' k c x s h - Tab Esc w d 8 =

              x y z 0       1 2 3 4 5 6 7 8      9 * /  [ ] , = - ` ;
              6 q 5 Control e r t y i u [ Return p   z  f a \ o ] m `

              Control Shift Return Tab Backspace Fwd-Del   \     Space
              Shift   AltGr j      b   ,         =(numkpd) Shift n

              Clear  AltGr    =(numkpd) CapsLock Escape Alt
              Home   CapsLock Fwd-Del   Space    /       kp-*

              F1 F2 F3 F4 F5    F6   F7 F8 F9 F0 F11 F12
                          Enter Ctrl /               Fwd-Del

              Left-Arrow Right-Arrow Up-Arrow Down-Arrow
              F1         F2          F4       F3

Comment savoir où vous en êtes

Les distributions de touches n'ont pas de commentaires à l'intérieur. Donc, si vous vous demandez quel type de distribution vous utilisez, vous pouvez toujours regarder la ligne concernant les codes clavier 1 avec

zgrep 'keycode *1 =' /etc/console/boottime.kmap.gz

Si keycode 1 = Escape, c'est la version Linux (celle pour i386) de la distribution de codes claviers.

Si keycode 1 = s, c'est celle ADB (excepté les dvorak ADB où on obtient keycode 1 = o).

Les fichiers de configuration config-XXXXX de /boot vous informent sur le type de noyau que vous utilisez et si la fonctionnalité des distributions de touches ADB est active. Pour le découvrir, faites

grep MAC_ADB /boot/*

Vous devriez avoir en réponse une liste de fichiers de configuration pour les noyaux utilisables. S'il existe une entrée comme

/boot/config-2.4.12-powerpc:CONFIG_MAC_ADBKEYCODES=y

alors votre noyau est compilé avec les distributions ADB. Si la dernière lettre est n, c'est un noyau avec les codes clavier Linux.

Comment régler le problème

Une fois que le système fautif est éteint, vous aurez toujours à régler le problème. Comment savoir ce qu'il faut faire ? Il vous faudra sûrement utiliser votre disquette de dépannage ou bien démarrer sur une autre partition pour corriger tout ça.

Si votre problème est un noyau avec le support ADB tentant d'utiliser une distribution de touches Linux, ajoutez simplement

keyboard_sends_linux_keycodes=1

lors de l'affichage du prompt de démarrage après avoir tapé le nom de l'image du noyau. Mais c'est une solution qui ne marche qu'un temps. Il va donc falloir que ce changement soit permanent en modifiant votre fichier de configuration du démarrage et en le validant auprès de votre gestionnaire de démarrage.

Si votre problème est le cas contraire (à savoir un noyau avec les codes clavier Linux mais une distribution ADB), vous devez abandonner la distribution ADB. Vous pouvez copier n'importe quelle distribution du répertoire /usr/share/keymaps/i386, il y en a plusieurs parmi lesquels choisir. Par exemple

cd /usr/share/keymaps/i386/qwerty/
cp mac-usb-us.kmap.gz /etc/console/boottime.kmap.gz