Si un programme utilisant le mode K_RAW
du clavier se termine sans
remettre le calvier en mode K_XLATE
, alors il est très difficile de
faire quoi que ce soit - même Ctrl-Alt-Del. Cependant il est parfois
possible d'éviter d'appuyer sur Reset (et même souhaitable: vos
utilisateurs risquent de ne pas apprécier qu'on leur tue leur Nethack,
et surtout il est possible d'endommager le système de fichiers).
Les solutions simples consistent à se loger à partir d'un autre
terminal ou une autre machine et faire kbd_mode -a
.
La procédure suivante suppose que X ne tourne pas, que l'écran est en
mode texte, que vous êtes à un prompt shell, que Ctrl-C est le
caractère d'interruption et que vous n'avez pas un clavier trop
exotique (i.e. la touche `=' est 2 touches à droite de `0').
1ère étape: Lancer X. Appuyez sur la combinaison 2-F12-= : appuyez sur 2 puis F12 (sans lâcher 2) et puis = (sans lâcher les deux autres), le tout assez rapidement! Ça lance X. (Explication: si l'appui sur une touche produit le keycode K, alors son relâchement produit K+128. Votre shell risque de na pas apprécier ces caractères, donc on évite de les lui envoyer en ne lâchant pas les touches. `2' produit un ^C qui annule tout ce qui a été tapé avant. F12 produit un X et `=' le code entrée. Et tout ça vite fait avant que la répétition des touches ne commence...)
Votre écran est alors probablement gris, puisqu'aucun .xinitrc
n'a été spécifié. Cependant Ctrl-Alt-Fn marche, et vous pouvez appeler
une autre console. (Ctrl-Alt-Backspace marche aussi, mais ça restaure
l'état initial du clavier qui justement n'est pas bon.)
2ème étape: Programmer le changement de mode du clavier.
(Par exemple, avec sleep 5; kbd_mode -a
.)
3ème étape: Quitter X. Alt-Fx (souvent Alt-F7) retourne sous X, ensuite Ctrl-Alt-Backspace tue X. Dans les 5 secondes le clavier redevient utilisable.
Si vous voulez vous préparer pour cette occasion, faites de
\215A\301
(3 symboles) un alias de kbd_mode -a
.
Désormais, l'appui sur F7 en mode RAW remettra tout en ordre.