/usr/share/doc/HOWTO/fr-html/Keyboard-and-Console-HOWTO.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>The Linux Keyboard HOWTO</title>
</head>
<body>
<h1>The Linux Keyboard HOWTO</h1>
<h2>Andries Brouwer, <code>aeb@cwi.nl</code></h2>
v2.1, 8 Novembre 1995 - version française Bruno Viaris
<hr>
<em>Ce document traite de l'utilisation du clavier, de la console
et de caractères non ASCII sous Linux.</em>
<hr>
<h2><a name="s1">1. Programmes utiles</a></h2>
<p>Les paquetages suivants contiennent des programmes en rapport
avec le clavier ou la console.</p>
<p><code>kbd-0.90.tar.gz</code> contient <code>loadkeys</code>,
<code>dumpkeys</code>, <code>showkey</code>,
<code>setmetamode</code>, <code>setleds</code>,
<code>setfont</code>, <code>showfont</code>, <code>mapscrn</code>,
<code>kbd_mode</code>, <code>chvt</code>, <code>resizecons</code>,
<code>disalloc</code>, <code>getkeycodes</code>,
<code>setkeycodes</code>.</p>
<p><code>util-linux-2.5</code> contient <code>setterm</code>,
<code>kbdrate</code>.</p>
<p><code>shellutils-1.8</code> (ou <code>stty.tar.gz</code>)
contient <code>stty</code>.</p>
<p><code>open-1.1.tgz</code> contient <code>open</code>. (Voir
aussi <code>dynamic-vc-1.1.tar.gz</code>.)</p>
<p><code>SVGATextMode-0.9.tar.gz</code> contient
<code>SVGATextMode</code>.</p>
<p>La distribution standard de X contient <code>xmodmap</code>,
<code>xset</code>, <code>kbd_mode</code>. (Voir aussi
X386keybd(1).)</p>
<h2><a name="s2">2. Le clavier -
généralités</a></h2>
<p>Quand on appuie sur une touche, le contrôleur clavier
envoie des scancodes au pilote clavier du noyau. Certains claviers
sont programmables, mais en général les scancodes
sont fixes. Quand le pilote clavier est en <em>mode scancode</em>
(dit aussi <em>mode raw</em>), le noyau se contente de transmettre
les codes tels quels à l'application, c'est ce qui se passe
sous <code>X</code>. Sinon le flux de scancodes est
décomposé en keycodes correspondant à l'appui
ou au relâchement d'une touche. (Le simple fait d'appuyer sur
une touche peut produire jusqu'à 6 scancodes, réduits
ici en un seul keycode.) Si le pilote clavier est en <em>mode
keycode</em> (ou <em>mode mediumraw</em>), l'application
reçoit les keycodes (ce mode est utilisé, par
exemple, par <code>showkey</code>). Sinon, les keycodes sont
traduits d'après une table (keymap), ensuite, soit un
caractère (ou un chaîne) est envoyé à
l'application, soit une action est déclenchée.
(Exemple: si on appuie et relâche la touche <code>q</code>,
le clavier envoie les scancodes 0x1E et 0x9E, ce qui est converti
en keycodes 30 et 158, puis en la valeur 113, qui est le code ASCII
ou Latin-1 de <code>q</code> (avec un clavier Azerty et une keymap
adaptée). Si on appuie et relâche la touche
<code>Suppr</code>, le clavier envoie les scancodes 0xE0 0x53 0xE0
0xD3, convertis en keycodes 111 et 239, ce qui donne finalement la
séquence ESC <code>[ 3 ~</code>. Ctrl-Alt-Suppr est une
combinaison de touches qui déclenche une action.)</p>
<p>La conversion de scancodes exotiques en keycodes peut être
programmée avec l'utilitaire <code>setkeycodes</code>, mais
peu de gens ont besoin. La table de traduction des keycodes en
caractères, chaînes ou actions, i.e. la keymap, se
manipule grâce à <code>loadkeys</code>. Pour plus de
détails, voir getkeycodes(8), setkeycodes(8), dumpkeys(1),
loadkeys(1).</p>
<p>Dans ce paragraphe, le terme `envoyé à
l'application' signifie en fait `transmis au pilote du terminal'.
Le texte est ensuite traité de la même façon
que s'il venait d'une ligne série. Les détails de ce
traitement sont ajustés par le programme
<code>stty</code>.</p>
<h2><a name="s3">3. La console -
généralités</a></h2>
<p>A l'inverse, quand on envoie des caractères à la
console, ils subissent un traitement standard (réglé
par <code>stty</code>), puis sont envoyés au pilote de la
console. Le pilote de la console émule un terminal VT100, et
scrute les données reçues pour intercepter les
séquences escape (du genre déplacement du curseur,
effacement de l'écran, etc.). Les autres octets sont,
après une éventuelle conversion par la table de
conversion de la console, écrits dans la mémoire
vidéo. La carte vidéo affiche ces caractèrs en
utilisant une police stockée dans sa mémoire. On peut
changer cette police en utilisant <code>setfont</code>, et la table
de conversion de la console peut être modifiée avec
<code>mapscrn</code>. Pour plus de détails, voir plus
bas.</p>
<h2><a name="s4">4. Réinitialiser le terminal</a></h2>
<p>L'écran est plein de cochonneries, tout ce qu'on tape
apparaît sous forme de petits dessins. Que faire ?</p>
<p>De nombreux programmes retracent l'écran quand on tape
^L, ce qui peut être utile en cas de modem bruité ou
de messages intempestifs à l'écran. La commande
<code>clear</code> efface l'écran.</p>
<p>La commande <code>reset</code> réinitialise le pilote de
la console. Elle est bien utile quand l'écran est plein de
ces jolis caractères graphiques illisibles, ou quand
l'affichage est réduit à la ligne du bas. Si vous ne
disposez pas de cette commande, ou si elle fait autre chose, voici
le remède: mettez ces deux lignes dans un fichier
exécutable <code>reset</code> quelque part dans votre
PATH:</p>
<blockquote>
<pre>
<code>#!/bin/sh
echo -e \\033c
</code>
</pre></blockquote>
ce qui envoie la séquence ESC c à la console. Si vous
avez chargé une police bizarre et que vous voulez revenir
à la police par défaut,
<blockquote>
<pre>
<code>% setfont
</code>
</pre></blockquote>
fera l'affaire (à condition que la police par défaut
soit à sa place). Sur de vieux terminaux, l'utilisation de
tabs peut demander un délai, exécuter alors
<blockquote>
<pre>
<code>% stty tab3
</code>
</pre></blockquote>
(voir stty(1)). Pour changer de mode vidéo, utiliser
<code>resizecons</code> ou <code>SVGATextMode</code>. Ceci
règle généralement la partie affichage.
Côté clavier, il peut y avoir encore pas mal de
problèmes. Si <code>X</code>, <code>DOOM</code> ou tout
autre programme travaillant en mode raw (ou mediumraw) se plante,
le clavier peut rester dans ce mode et il est alors difficile
d'exécuter la moindre commande. (Voir "Comment sortir du
mode raw" plus loin.)
<h2><a name="ss4.1">4.1 Keyboard hardware reset</a></h2>
<p>Le problème peut parfois se situer à un niveau
encore plus bas. Il y a au moins deux niveaux (le clavier et le
contrôleur clavier) où l'on peut envoyer la commande
"désactiver le clavier" au matériel. De plus les
claviers ont souvent trois tables de scancodes utilisables au
choix.</p>
<p>Je n'ai cependant jamais entendu parler de cas où cela
ait posé un problème.</p>
<p>Certains claviers ont une fonction de reprogrammation des
touches. Stormy Henderson (<code><a href=
"mailto:stromy@Ghost.Net">stormy@Ghost.Net</a></code>)
écrit:</p>
<blockquote>`Si votre clavier a été accidentellement
reprogrammé, vous pouvez (avec un clavier Gateway AnyKey)
appuyer sur control-alt-suspend_macro pour remettre les choses en
place.'</blockquote>
<h2><a name="s5">5. Delete et Backspace</a></h2>
<h2><a name="ss5.1">5.1 Comment choisir le caractère
à utiliser pour effacer le dernier caractère
tapé</a></h2>
<blockquote>
<pre>
<code>% stty erase ^?
</code>
</pre></blockquote>
Si le caractère est effacé, mais d'une manière
bizarre, c'est que les paramètres du terminal sont mauvais.
Si <code>echoprt</code> est activé, les caractères
effacés s'affichent entre <code>\</code> et <code>/</code>.
Si <code>echoe</code> est désactivé, les
caractères ne sont plus effacés à
l'écran, mais leur effacement est signalé par
l'affichage du caractère d'effacement, exemple:
<code>Libux###nux</code> (avec # comme caractère
d'effacement).
<p>On utilisera donc généralement <code>stty echoe
-echoprt</code>. La commande <code>stty sane</code> activera ces
paramètres et bien d'autres. La commande <code>stty
-a</code> affiche les paramètres actuels. Pourquoi ces
paramètres ne sont pas activés par défaut ? Il
suffit d'utiliser le bon <code>getty</code>.</p>
<p>Il est à noter que beaucoup de programmes (comme
<code>bash</code>, <code>emacs</code> etc.) ont leur propres
assignations de touches (définis dans
<code>~/.inputrc</code>, <code>~/.emacs</code>, etc.) et ne
tiennent pas compte de ces paramètres de terminal.</p>
<h3>`Getty comprenait bien DEL et BS, mais plus maintenant ?'</h3>
<p>Jadis, la console traduisait DEL (<code>\177</code>) en BS
Espace BS (<code>\010\040\010</code>).</p>
<p>Les DEL sont désormais ignorés (comme le devrait
toute émulation vt100 fidèle). Choisissez un meilleur
getty, i.e., qui n'affiche pas les DEL.</p>
<h3>`Login ne fait pas la même chose au premier et au
deuxième essai?'</h3>
<p>Au premier essai, on parle à <code>getty</code>, au
deuxième à <code>login</code>, deux programmes
distincts qui peuvent se comporter différemment.</p>
<h2><a name="ss5.2">5.2 Comment dire à Linux quel code
générer à l'appui sur une touche</a></h2>
<p>Quand on utilise la console, ou plus précisément,
quand le clavier n'est pas en mode (medium)raw, il faut
utiliser:</p>
<blockquote>
<pre>
<code>% loadkeys monclavier.map
</code>
</pre></blockquote>
Sous X, utiliser:
<blockquote>
<pre>
<code>% xmodmap monclavier.xmap
</code>
</pre></blockquote>
Remarque: depuis XFree86-2.1, X initialise son clavier à
partir de la configuration du clavier de la console. Bien que les
deux systèmes ne soient pas 100% compatibles, cette
technique rend généralement l'utilisation de
<code>xmodmap</code> superflue.
<p>Si, par exemple, si vous voulez que la touche Backspace
génère le code BackSpace (^H), au lieu du code par
défaut (Delete), faites:</p>
<blockquote>
<pre>
<code>% loadkeys
keycode 14 = BackSpace
%
</code>
</pre></blockquote>
<h3>`Pourquoi la touche BackSpace ne génère pas
BackSpace par défaut ?'</h3>
<p>(i) Parce que les terminaux VT100 ont une touche Delete au
dessus de la touche Entrée.</p>
<p>(ii) Parce que Linus en a décidé ainsi.</p>
<h2><a name="ss5.3">5.3 Comment dire à X d'échanger
Delete et Backspace</a></h2>
<blockquote>
<pre>
<code>% xmodmap -e "keysym BackSpace = Delete" -e "keysym Delete = BackSpace"
</code>
</pre></blockquote>
Ou, si vous voulez juste que Backspace génère le code
BackSpace:
<blockquote>
<pre>
<code>% xmodmap -e "keycode 22 = BackSpace"
</code>
</pre></blockquote>
Ou, si vous voulez juste que Delete génère le code
Delete:
<blockquote>
<pre>
<code>% xmodmap -e "keycode 107 = Delete"
</code>
</pre></blockquote>
(mais généralement c'est déjà la
disposition par défaut).
<h2><a name="ss5.4">5.4 Comment dire à emacs ce qu'il doit
faire des codes Delete et Backspace</a></h2>
<p>Mettez dans votre <code>.emacs</code> les lignes:</p>
<blockquote>
<pre>
<code> (global-set-key "\?" 'delete-backward-char)
(global-set-key "\C-h" 'help-command)
</code>
</pre></blockquote>
Bien sûr, vous pouvez associer d'autres commandes à
d'autres touches de la même manière.
<h2><a name="ss5.5">5.5 Comment dire à emacs de permuter
Delete et Backspace</a></h2>
<p>Mettez dans votre <code>.emacs</code> les lignes:</p>
<blockquote>
<pre>
<code> (setq keyboard-translate-table (make-string 128 0))
(let ((i 0))
(while (< i 128)
(aset keyboard-translate-table i i)
(setq i (1+ i))))
(aset keyboard-translate-table ?\b ?\^?)
(aset keyboard-translate-table ?\^? ?\b)
</code>
</pre></blockquote>
<h2><a name="ss5.6">5.6 Comment dire à kermit
d'échanger Delete et Backspace</a></h2>
<p>Mettez dans votre <code>.kermrc</code> les lignes:</p>
<blockquote>
<pre>
<code> set key \127 \8
set key \8 \127
</code>
</pre></blockquote>
<h2><a name="ss5.7">5.7 Comment régler xterm selon vos modes
de terminal préférés</a></h2>
<p>Normalement xterm hérite des modes de terminal du
processus qui l'appelle. Pour <code>xdm</code>, les
caractères erase et kill sont <code>#</code> et
<code>@</code>, comme sur les bons vieux Unix Version 6. Si
ça ne vous plaît pas, vous pouvez mettre</p>
<blockquote>
<pre>
<code> XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D susp ^Z start ^Q stop ^S eol ^@
</code>
</pre></blockquote>
dans <code>/usr/lib/X11/app-defaults/XTerm</code> ou dans
<code>$HOME/.Xresources</code>, à condition
d'exécuter la commande
<blockquote>
<pre>
<code> xrdb $HOME/.Xresources
</code>
</pre></blockquote>
dans votre <code>$HOME/.xinitrc</code>.
<h2><a name="ss5.8">5.8 Comment dire à xmosaic que la touche
Backspace génère une DEL</a></h2>
<p>Mettre</p>
<blockquote>
<pre>
<code> *XmText.translations: #override\n\
<Key>osfDelete: delete-previous-character()
*XmTextField.translations: #override\n\
<Key>osfDelete: delete-previous-character()
</code>
</pre></blockquote>
dans votre <code>$HOME/.Xresources</code> devrait faire l'affaire.
<p>Cependant, la FAQ de netscape dit:</p>
<pre>
Pourquoi ma touche Backspace ne marche pas dans les boites texte ?
Par défaut, Linux et XFree86 ont leur touches Backspace et Delete
mal configurées. Tous les programmes Motif (y compris Netscape
Navigator) auront les mêmes problèmes.
Les spécifications Motif disent que Backspace doit effacer le
caractère précédent et Delete le caractère suivant. Par défaut sous
Linux et XFree86 Backspace et Delete génèrent le code DEL.
Le problème peut être résolu en utilisant un programme tel que
xmodmap, xkeycaps, ou loadkeys pour que la touche Backspace
génère le code BackSpace au lieu de Delete.
Une autre solution consiste à avoir un fichier .motifbind;
voir la page de manuel de VirtualBindings(3).
Note: n'utilisez pas les ressources *XmText.translations ou
*XmTextField.translations pour essayer de résoudre ce problème.
Si vous le faites, vous annulez toutes les autres programmations
de touches dans les boites textes de Netscape Navigator.
</pre>
<h2><a name="ss5.9">5.9 Et les fichier termcap et
terminfo?</a></h2>
<p>Les gens qui ont des problèmes avec backspace ont
tendance à aller voir dans leur fichier termcap (ou
terminfo), et effectivement la ressource <code>kb</code> (ou
<code>kbs</code>) décrit le code généré
par la touche Backspace. Cependant peu de programmes utilisent ces
bases de données pour rechercher le code envoyé par
backspace, donc, à moins de n'avoir des problèmes
qu'avec certains programmes, il faut en général
chercher ailleurs. Cela dit, il vaut mieux de toute façon
avoir un termcap (ou terminfo) correct. Voir aussi "La variable
TERM" plus loin.</p>
<h2><a name="s6">6. Les tables de caractères de la
console</a></h2>
<p>Le noyau a quatre tables de conversion des octets en symboles
écran: a) Latin1 -> PC, b) VT100 graphique -> PC, c)
PC -> PC, d) utilisateur.</p>
<p>Il y a deux tables de caractères, appelées G0 et
G1, dont l'une est la table courante. (Initialement G0.) Taper ^N
fait passer à la table G1, ^O à la table G0.</p>
<p>Ces variables G0 et G1 pointent sur des tables de conversion et
peuvent êtres changées par l'utilisateur.
Initialement, elles pointent respectivement sur les tables a) et
b). Les séquences ESC ( B , ESC ( 0 , ESC ( U et ESC ( K
font respectivement pointer G0 sur les tables de conversion a), b),
c) et d). Les séquences ESC ) B , ESC ) 0 , ESC ) U et ESC )
K font respectivement pointer G0 sur les tables de conversion a),
b), c) et d).</p>
<p>La séquence ESC c provoque une réinitialisation
complète du terminal, ce qui peut être
nécessaire si l'écran est tout brouillé. La
commande <code>echo ^V^O</code>, souvent conseillée, ne fera
que rappeler la table G0, mais rien ne garantit que G0 pointe sur
la table a). Certaines distributions ont un programme reset(1) qui
fait juste un <code>echo ^[c</code>. Si votre termcap pour la
console est correcte (et a une entrée
<code>:rs=\Ec:</code>), alors vous pouvez utiliser <code>setterm
-reset</code>.</p>
<p>La table de conversion d) peut être définie par
mapscrn(8). Le résultat est que si un symbole c est
affiché, c'est le symbole <code>s = map[c]</code> qui est
mis dans la mémoire vidéo. L'image du
caractère <code>s</code> se trouve dans la mémoire de
la carte vidéo et peut être modifiée avec
setfont(8).</p>
<h2><a name="s7">7. Changer de console</a></h2>
<p>Par défaut, le changement de console se fait par Alt-Fn
ou Ctrl-Alt-Fn. Sous <code>X</code> (ou les versions
récentes de <code>dosemu</code>), seule la combinaison
Ctrl-Alt-Fn marche.</p>
<p>XFree86 1.3 ne sait pas que la touche Alt est enfoncée
quand on rappelle la fenêtre X. Il faut donc relâcher
Alt avant de pouvoir rechanger de console. Pourtant, ça
pourrait marcher: le noyau mémorise toujours l'état
appuyé/relâché des touches. (Autant que faire
se peut: certains clavier n'émettent pas de scancode quand
on appuie dessus (ex: les touches PFn d'un FOCUS 9000) ou quand on
les relâche (ex: la touche Pause de la plupart des
claviers).)</p>
<p>XFree86 1.3 sauve les polices chargées sur la carte
vidéo quand il est démarré, et les restaure
lors d'un changement de console. Donc le résultat d'un
<code>setfont</code> sur une console virtuelle est annulé
par un aller retour dans la fenêtre X. L'utilisation de
<code>setfont</code> sous X donne des résultats
bizarres...</p>
<p>Le changement de console par programme est possible grâce
à la commande <code>chvt</code>.</p>
<h2><a name="ss7.1">7.1 Changer le nombre de Consoles
Virtuelles</a></h2>
<p>Cette question est toujours posée de temps en temps, mais
la réponse est: il y en a déjà suffisament.
Depuis la version 1.1.54 du noyau, il y a entre 1 et 63 consoles
virtuelles. Une nouvelle console est créée dès
qu'elle est ouverte. Elle peut être supprimée avec
<code>disalloc</code> (mais il faut que plus aucun processus ne lui
soit associé).</p>
<p>Pour les vieux noyaux, changer la ligne</p>
<blockquote>
<pre>
<code>#define NR_CONSOLES 8
</code>
</pre></blockquote>
dans <code>include/linux/tty.h</code> (ne pas dépasser 63),
et recompiler. Il est possible que vous ayez à créer
le périphérique correspondant avec
<code>MAKEDEV</code> ou <code>mknod tty</code>N <code>c 4</code> N
où N est le numéro du terminal. Si vous voulez avoir
des <code>getty</code> sur ces nouvelles consoles, ajoutez des
lignes dans <code>/etc/inittab</code>.
<p>Quand les consoles sont allouées dynamiquement, il est
généralement plus simple de n'avoir qu'un ou deux
<code>getty</code>. D'autres consoles sont ouvertes par <code>open
-l -s bash</code>. Les consoles inutilisées (sans processus
associé) sont désallouées par
<code>disalloc</code>.</p>
<p>Si vous disposez de <code>spawn_login</code> (inclus dans
<code>kbd-0.90.tar.gz</code>) et que vous mettez</p>
<blockquote>
<pre>
<code> loadkeys << EOF
alt keycode 103 = Spawn_Console
EOF
spawn_login &
</code>
</pre></blockquote>
dans <code>/etc/rc.local</code>, taper Alt-FlècheHaute
créera (et affichera) une nouvelle console avec un
<code>login</code>. Voir aussi <code>open-1.3.tgz</code>.
<p>Vous ne pouvez vous loger sous "root" que sur les terminaux
listés dans <code>/etc/securetty</code>.</p>
<h2><a name="s8">8. Ctrl-Alt-Del et autres combinaisons
spéciales</a></h2>
<h2><a name="ss8.1">8.1 Ctrl-Alt-Del (Boot)</a></h2>
<p>Quand on appuie sur Ctrl-Alt-Del (ou toute autre combinaison
à laquelle loadkeys associe le keycode Boot), soit la
machine reboote immédiatement (sans sync), soit le signal
SIGINT est envoyé à <code>init</code> (ce qui est le
comportement par défaut, changeable par l'appel
système reboot(), voir ctrlaltdel(8)). Certains
<code>init</code> changent le défaut. Ce qui se produit
quand <code>init</code> reçoit SIGINT dépend de la
version du <code>init</code> utilisée et est souvent
déterminé par le ligne <code>pf</code> du fichier
<code>/etc/inittab</code> (on peut dans ce cas lancer n'importe
quel programme). Dans les versions actuelles du noyau
Ctrl-AltGr-Del n'est plus assigné par défaut à
Boot.</p>
<h2><a name="ss8.2">8.2 Autres combinaisons</a></h2>
<p>Combinaisons par défaut avant utilisation de loadkeys,
donc en qwerty.</p>
<pre>
Nom du keycode Combinaison
-------------------------------
Show_Memory Shift-Scrollock
Show_Registers AltGr-ScrollLock
Show_State Ctrl-ScrollLock
Console_n Alt-Fn and Ctrl-Alt-Fn (1 <= n <= 12)
Console_{n+12} AltGr-Fn (1 <= n <= 12)
Incr_Console Alt-FlècheDroite
Decr_Console Alt-FlècheGauche
Last_Console Alt[Gr]-ImprEcran
Scroll_Backward Shift-PgPrec
Scroll_Forward Shift-PgSuiv
Compose Ctrl-. (Ctrl-: sur clavier azerty)
Caps_On <pas défini> (Par défaut CapsLock est un va-et-vient,
Caps_Shift <pas defini> ces Keycodes servent à recréer le désagréable
comportement MS-Keyb Fr)
</pre>
<h2><a name="ss8.3">8.3 Combinaisons sous X</a></h2>
<pre>
Ctrl-Alt-Fn Affiche la console virtuelle n
Ctrl-Alt-KP+ Résolution suivante
Ctrl-Alt-KP- Résolution précédente
Ctrl-Alt-Backspace Tue le serveur X
</pre>
Sur certaines cartes-mères, Ctrl-Alt-KP- et Ctrl-Alt-KP+
émulent le bouton Turbo. Ces séquences produisent les
scancodes 1d 38 4a ca b8 9d et 1d 38 4e ce b8 9d, et toutes deux
changent la vitesse de Turbo (>= 25MHz) à non-Turbo (8 or
12 MHz) et vice-versa. (souvent ce comportement peut être
désactivé par un cavalier sur la carte-mère.)
<p>Perry F Nguyen (<code><a href=
"mailto:pfnguyen@netcom22.netcom.com">pfnguyen@netcom22.netcom.com</a></code>)
écrit:</p>
<blockquote>Les BIOS AMI permettent de bloquer le clavier et de
faire clignoter les LEDs quand on appuie sur Ctrl-Alt-Backspace et
qu'un mot de passe BIOS est défini, et ce jusqu'à ce
que celui-ci soit tapé.</blockquote>
<h2><a name="ss8.4">8.4 Combinaisons sous Dosemu</a></h2>
<pre>
Ctrl-Alt-Fn Rappelle la console n (versions >0.50; avant Alt-Fn)
Ctrl-Alt-PgDn Tue dosemu (quand le calvier est en mode RAW)
(et bien d'autres, voir la documentation de dosemu)
</pre>
<h2><a name="ss8.5">8.5 Composition de symboles</a></h2>
<p>Un symbole peut être construit en utilisant plusieurs
frappes.</p>
<ul>
<li>En mode Ascii, taper un code Ascii en décimal sur le
pavé numérique, tout en maintenant la touche Alt
enfoncée, produit le caractère en question quand on
relâche Alt. (En mode Unicode, il faut taper le code
hexadécimal à 4 chiffres du symbole)</li>
<li>L'appui sur un accent mort puis sur une lettre produit cette
lettre accentuée (si possible, sinon l'accent suivi de la
lettre). Les touche mortes sont définissables par
l'utilisateur (grâce à loadkeys(1)). Il y a cinq
possibilités:
<pre>
accent keycode mort keycode normal
------------------------------------------------------
accent grave dead_grave grave
accent aigu dead_acute apostrophe
accent circonflexe dead_circumflex asciicircum
tilde dead_tilde asciitilde
tréma dead_diaeresis diaeresis
</pre>
Par défaut aucune touche du clavier n'est morte. Le
résultat est celui de Compose + accent + lettre (et est donc
redéfinissable, cf plus bas).
<blockquote>NDT: pour des francophones utilisant un clavier Azerty,
il vaut généralement mieux se contenter de
définir comme touches mortes l'accent circonflexe et le
tréma de la touche à droite du `P'. Il est sinon
fastidieux voire parfois impossible (en particulier sous X) de
taper les symboles tilde et apostrophe, bien utiles sous Unix. Or
les tables standard pour clavier Latin-1 activent en
général toutes les touches mortes possibles. Il faut
donc pour ressusciter ces touches, remplacer le keycode mort par le
keycode normal dans la table chargée au démarrage par
loadkeys.</blockquote>
</li>
<li>Compose suivi de deux symboles produit une combinaison des
deux. Cette combinaison est redéfinissable. Il y a à
ce jour 68 combinaisons par défaut qui peuvent être
affichées par <code>dumpkeys | grep compose</code>.</li>
<li>Depuis la version 1.3.33 du noyau, il est possible d'avoir des
touches "collantes" (plus ou moins comme Escape) grâce aux
codes SControl et SAlt. Par exemple, on peut taper ^C par Scontrol
puis C et Ctrl-Alt-BackSpace par SControl puis SAlt puis
BackSpace.</li>
</ul>
<p>Il est à noter qu'il existe au moins trois
mécanismes de composition distincts:</p>
<ol>
<li>Le pilote clavier de Linux, configuré par loadkeys.</li>
<li>Le mécanisme de X - voir X386keybd(1), ou
XFree86kbd(1).<br>
Sous X11R6 : éditer
<code>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</code>.</li>
<li>Le mécanisme d'emacs, activé en chargeant
<code>iso-insert.el</code>.</li>
</ol>
Pour X, l'ordre des deux symboles n'a pas d'importance: Compose-,-c
et Compose-c-, donnent tous deux un c-cédille; pour Linux et
emacs, seule la première combinaison est correcte. Les
combinaisons de X sont fixes, celles de Linux et emacs sont
reconfigurables. Les trois listes par défaut sont assez
similaires, mais il y a quelques différences.
<h2><a name="s9">9. Diverses propriétés de la
console</a></h2>
<p>Voir loadkeys(1), setleds(1), setmetamode(1) pour les codes
générés par les diverses touches et
l'utilisation des leds quand on n'est pas sous X. Sous X, voir
xmodmap(1).</p>
<p>Voir setterm(1), kbdrate(8) pour les propriétés
telles que les couleurs de l'écriture et du fond,
l'économiseur d'écran et la vitesse de
répétition des touches quand on n'est pas sous X.
Sous X, voir xset(1), qui s'occupe aussi du clic des touches et du
volume des bips.</p>
<p>Le fichier <code>/etc/termcap</code> définit les
séquences escape utilisées par de nombreux programmes
utilisant la console (ou tout autre terminal). Une version plus
moderne se trouve dans <code>/usr/lib/terminfo</code>. (voir
terminfo(5). Les fichiers terminfo sont créés par le
compilateur terminfo <code>/usr/lib/terminfo/tic</code>, voir
tic(1).)</p>
<p>(Sur ma machine) <code>/dev/console</code> est lien symbolique
sur <code>/dev/tty0</code>, et le noyau considère
<code>/dev/tty0</code> comme un synonyme de la console virtuelle
courante. XFree86 1.3 change le propriétaire de
<code>/dev/tty0</code>, mais ne le restaure qu'à la sortie.
Or dumpkeys risque de ne pas marcher si quelqu'un d'autre est
propriétaire de <code>/dev/console</code>; dans ce cas,
lancer X et en sortir peut arranger les choses.</p>
<h2><a name="s10">10. Comment sortir du mode RAW</a></h2>
<p>Si un programme utilisant le mode <code>K_RAW</code> du clavier
se termine sans remettre le calvier en mode <code>K_XLATE</code>,
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 <code>kbd_mode -a</code>. 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').</p>
<p>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...)</p>
<p>Votre écran est alors probablement gris, puisqu'aucun
<code>.xinitrc</code> 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.)</p>
<p>2ème étape: Programmer le changement de mode du
clavier. (Par exemple, avec <code>sleep 5; kbd_mode -a</code>.)</p>
<p>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.</p>
<p>Si vous voulez vous préparer pour cette occasion, faites
de <code>\215A\301</code> (3 symboles) un alias de <code>kbd_mode
-a</code>. Désormais, l'appui sur F7 en mode RAW remettra
tout en ordre.</p>
<h2><a name="s11">11. La variable TERM</a></h2>
<p>De nombreux programmes utilisent la variable <code>TERM</code>
et la base de données <code>/etc/termcap</code> ou
<code>/usr/lib/terminfo/*</code> pour trouver quelle chaîne
de commande efface l'écran, déplace le curseur, etc.,
et parfois pour savoir quelle chaîne est envoyée par
la touche backspace, ou les touches de fonction, etc. Cette
variable est d'abord définie par le noyau (pour la console).
Généralement elle est redéfinie par
<code>getty</code>, en utilisant <code>/etc/ttytype</code> ou
l'argument spécifié dans <code>/etc/inittab</code>.
Parfois elle est encore changée par
<code>/etc/profile</code>.</p>
<p>Les anciens systèmes utilisent <code>TERM=console</code>
ou <code>TERM=con80x25</code>. Les plus récents (avec
ncurses 1.8.6) utilisent la valeur plus spécifique
<code>TERM=linux</code> ou <code>TERM=linux-80x25</code>.
Cependant, les vieilles versions de <code>setterm</code> cherchent
une valeur du type <code>TERM=con*</code> et ne marchent donc pas
avec <code>TERM=linux</code>.</p>
<p>Depuis la version 1.3.2 du noyau, la valeur par défaut
est <code>TERM=linux</code>.</p>
<p>Si votre termcap n'a pas d'entrée `linux', il suffit
d'ajouter l'alias linux dans la description de `console':</p>
<blockquote>
<pre>
<code> console|con80x25|linux:\
</code>
</pre></blockquote>
et de copier (ou faire un lien symbolique)
<code>/usr/lib/terminfo/c/console</code> en
<code>/usr/lib/terminfo/l/linux</code>.
<h2><a name="ss11.1">11.1 Terminfo</a></h2>
<p>Il manque, dans le fichier terminfo de la console linux fourni
avec ncurses 1.8.6, la ligne: <code>kich1=\E[2~</code>,
nécessaire à certains programmes. Editez ce fichier
et compilez-le avec <code>tic</code>.</p>
<h2><a name="s12">12. Comment faire pour que d'autres programmes
acceptent les caractères non-ASCII</a></h2>
<p>C'était jadis un véritable calvaire. Il fallait
convaincre individuellement chaque programme de travailler en 8
bits. Les choses ne sont pas encore idéales, mais
récemment de nombreux utilitaires GNU ont appris à
reconnaître les variables <code>LC_CTYPE=iso_8859_1</code> ou
<code>LC_CTYPE=iso-8859-1</code>. Essayez d'abord ça, et si
ça ne suffit pas essayez les trucs ci-dessous.</p>
<p>Tout d'abord, le huitième bit doit survivre au processus
d'entrée du noyau, assurez-vous-en donc avec <code>stty cs8
-istrip -parenb</code>.</p>
<p>A. Pour <code>emacs</code>, mettez les lignes</p>
<blockquote>
<pre>
<code> (standard-display-european t)
(set-input-mode nil nil 1)
(require 'iso-syntax)
</code>
</pre></blockquote>
et peut-être aussi
<blockquote>
<pre>
<code> (load-library "iso-insert.el")
(define-key global-map [?\C-.] 8859-1-map)
</code>
</pre></blockquote>
dans votre <code>$HOME/.emacs</code>. (Cette dernière ligne
marche dans un <code>xterm</code>, en utilisant <code>emacs
-nw</code>, mais il faut alors mettre
<blockquote>
<pre>
<code> XTerm*VT100.Translations: #override\n\
Ctrl <KeyPress> . : string("\0308")
</code>
</pre></blockquote>
dans votre <code>.Xresources</code>.) NDT: fichiers pour clavier
Qwerty, à vérifier pour azerty.
<p>B. Pour <code>less</code>, mettez
<code>LESSCHARSET=latin1</code> dans l'environment.</p>
<p>C. Pour <code>ls</code>, mettez l'option <code>-N</code>. (A
priori en faisant un alias.)</p>
<p>D. Pour <code>bash</code> (version 1.13.*), mettez</p>
<blockquote>
<pre>
<code> set meta-flag on
set convert-meta off
</code>
</pre></blockquote>
et, selon le Danish-HOWTO,
<blockquote>
<pre>
<code> set output-meta on
</code>
</pre></blockquote>
dans votre <code>$HOME/.inputrc</code>.
<p>E. Pour <code>tcsh</code>, définissez les variables:</p>
<blockquote>
<pre>
<code> setenv LANG fr_FR (ou fr_CA, fr_CH, fr_BE...)
setenv LC_CTYPE iso_8859_1
</code>
</pre></blockquote>
Si <code>nls</code> est installé, les routines
correspondantes sont utilisées. Sinon <code>tcsh</code> agit
en iso_8859_1, quelle que soit les valeurs données à
LANG et LC_CTYPE. voir la section NATIVE LANGUAGE SYSTEM de
tcsh(1). (d'après le Danish-HOWTO: <code>setenv LC_CTYPE
ISO-8859-1; stty pass8</code>)
<p>F. Pour <code>flex</code>, donnez l'option <code>-8</code> si
l'analyseur généré doit accepter les
entrées 8-bits. (Bien sur qu'il doit le faire !)</p>
<p>G. Pour <code>elm</code>, mettez <code>displaycharset</code>
à <code>ISO-8859-1</code>. (Danish HOWTO:
<code>LANG=C</code> et <code>LC_CTYPE=ISO-8859-1</code>)</p>
<p>H. Pour les programmes utilisant curses (comme
<code>lynx</code>) David Sibley dit:</p>
<blockquote>La version standard de curses utilise le
huitième bit pour la vidéo inversée (voir le
flag _STANDOUT défini dans
<code>/usr/include/curses.h</code>). Cependant <code>ncurses</code>
semble fonctionner en 8-bits et affiche le iso-latin-8859-1
correctement.</blockquote>
<p>I. Pour les programmes utilisant <code>groff</code> (comme
<code>man</code>), utilisez le <code>-Tlatin1</code> au lieu de
<code>-Tascii</code>. Les vieilles versions de <code>man</code>
utilisent aussi <code>col</code>, et le point suivant s'applique
aussi.</p>
<p>J. Pout <code>col</code>, assurez-vous 1) qu'il a
été corrigé et fait un
<code>setlocale(LC_CTYPE,"");</code> et 2) de définir
<code>LC_CTYPE=ISO-8859-1</code> dans l'environment.</p>
<p>K. Pour <code>rlogin</code>, utilisez l'option
<code>-8</code>.</p>
<p>L. Pour <code>joe</code>,
<code>sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz</code>
devrait marcher après édition du fichier de
configuration. J'ai aussi lu: <code>joe</code>: mettez l'option
<code>-asis</code> dans <code>/usr/lib/joerc</code> en
première colonne.</p>
<p>M. Pour LaTeX:
<code>\documentstyle[isolatin]{article}</code>.<br>
Pour LaTeX2e:
<code>\documentclass{article}\usepackage{isolatin}</code> ou
<code>isolatin.sty</code> est disponible à <code><a href=
"ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit">ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit</a></code>.</p>
<p>Une belle discussion sur le thème de l'ISO-8859-1 et sur
comment manipuler les caractères 8-bits est disponible dans
<code><a href=
"ftp://grasp.insa-lyon.fr/pub/faq/fr/accents">ftp://grasp.insa-lyon.fr/pub/faq/fr/accents</a></code>
(en français). Une autre, en anglais, peut être
trouvée à <code><a href=
"ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/character-sets/iso-8859-1-faq">
ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/character-sets/iso-8859-1-faq</a></code>.
Encore une autre(?):<code><a href=
"ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1">ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1</a></code>.</p>
<h2><a name="s13">13. Que fait exactement XFree86-2.1 à
l'initialisation de sa keymap?</a></h2>
<p>Depuis la version 2.1, XFree86 initialise sa keymap
d'après celle de Linux, dans les limites du possible. Linux
a 16 entrées par touches (une pour chaque combinaison de
Shift, AltGr, Ctrl, Alt; en fait il en a même 256), alors que
X n'en a que 4 (une pour chaque combinaison de Shift et Mod), il y
a donc forcément des informations perdues.</p>
<p>D'abord <code>X</code> lit le fichier <code>Xconfig</code>,
où il trouve les correspondances entre les touches Control,
Alt et ScrollLock avec les codes X Meta, ModeShift, Compose,
ModeLock et ScrollLock - voir X386keybd(1), ou XFree86kbd(1).</p>
<p>Par défaut, c'est la colonne LeftAlt qui sert pour Mod,
sauf si CtlDroit est défini comme ModeShift ou ModeLock,
dans ce cas ce sont les entrées RightCtl qui servent pour
Mod. (Sauf si AltGr est défini comme Mod dans Xconfig,
auquel cas c'est la colonne RightAlt qui sert.) Ceci
détermine comment les 4 entrées de XFree86 sont
choisies parmi les 16 de Linux. Notons que par défaut Linux
ne fait pas la différence entre les deux touche Control ou
Shift. <code>X</code> fait la dufférence.</p>
<p>Les touches "action" Show_Memory, Show_State, Show_Registers,
Last_Console, Console_n, Scroll_Backward, Scroll_Forward, Caps_On
et Boot sont ignorées, de même pour les touches
mortes, NumLock, ScrollLock et Alt+code-ASCII.</p>
<p>Ensuite, les définitions de <code>Xconfig</code> sont
utilisées. (Donc une définition de Compose dans
<code>Xconfig</code> annulera celle trouvée dans la keymap
du noyau.)</p>
<p>Que deviennent les chaînes associées aux touches
des fonctions ? Rien, ce concept n'existe pas sous X. (Mais il est
possible de définir des chaînes associées aux
touches de fonction dans <code>xterm</code> - mais elles ne doivent
pas être interceptées par le gestionnaire de
fenêtres.)</p>
<p>Je ne sais pas comment convaincre <code>xterm</code> qu'il
devrait utiliser la keymap de X quand Alt est enfoncé. Il
semble qu'il ne réagisse qu'en fonction de sa ressource
<code>eightBitInput</code>, et selon qu'elle est à vrai ou
faux, soit il met à 1 le huitième bit, soit il
génère un caractère escape devant le
caractère (comme le fait setmetamode(1) pour la
console).</p>
<h2><a name="s14">14. Touches et claviers particuliers</a></h2>
<p>Les deux touches ImprEcran/Syst et Pause/Attn sont
spéciales car elles ont deux keycodes: la première
produit le keycode 84 quand Alt est enfoncé et 99 sinon; la
seconde 101 si Ctrl est enfoncé, 119 sinon. (Il est donc
inutile d'assigner des fonctions à Alt-Keycode99 ou
Ctrl-Keycode119.)</p>
<p>Si votre clavier a des touches étranges qui ne
génèrent aucun code sous Linux (ou
génèrent des messages du genre "unrecognized
scancode"), vous pouvez, à partir du noyau 1.1.63, utiliser
setkeycodes(1) pour dire au noyau quel keycode assigner à
ces touches. (Leur utilisation sous X sera cependant impossible.)
Une fois qu'elles ont un keycode grâce à
<code>setkeycodes</code>, on peut leur associer une fonction avec
<code>loadkeys</code>.</p>
<h2><a name="s15">15. Exemples d'utilisation de loadkeys and
xmodmap</a></h2>
<p>Permuter ScrollLock et Control (en suposant que vous utilisez
les keymaps 0-15; vérifiez avec <code>dumpkeys | head
-1</code>)</p>
<blockquote>
<pre>
<code> % loadkeys
keymaps 0-15
keycode 58 = Control
keycode 29 = Caps_Lock
%
</code>
</pre></blockquote>
Les permuter sous X seulement:
<blockquote>
<pre>
<code> % xmodmap .xmodmaprc
</code>
</pre></blockquote>
où <code>.xmodmaprc</code> contient les lignes
<blockquote>
<pre>
<code> remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
</code>
</pre></blockquote>
Qu'en est-il de la numérotation des touches? Backspace a le
numéro 14 sous Linux et 22 sous X... En fait, la
numérotation est plus ou moins arbitraire. Le numéro
sous Linux peut être visualisé avec showkey(1), et le
numéro sous X avec xev(1). Souvent le numéro sous X
est 8 de plus que le numéro sous Linux.
<h2><a name="ss15.1">15.1 `Je ne peux taper qu'avec un seul
doigt'</a></h2>
<p>Les touches Shift, Ctrl et Alt peuvent-elles être des
commutateurs stables ? Oui, en faisant:</p>
<blockquote>
<pre>
<code>% loadkeys
keycode 29 = Control_Lock
keycode 42 = Shift_Lock
keycode 56 = Alt_Lock
%
</code>
</pre></blockquote>
les Control, Shift et Alt de gauche deviennent stables. Les
numéros à utiliser sont donnés par showkey (et
sont généralement 29 et 97 (Control), 42 et 54
(Shift), 56 et 100 (Alt)) et les fonctions possibles sont
Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.
<p>Et le touches `collantes'? Il n'y a pas encore eu de nouvelle
version du paquetage kbd depuis leur introduction dans le noyau
1.3.33, il faut donc utiliser leurs codes hexa, par example:</p>
<blockquote>
<pre>
<code>% loadkeys
keymaps 0-15
keycode 54 = 0x0c00
keycode 97 = 0x0c02
keycode 100 = 0x0c03
%
</code>
</pre></blockquote>
rend les Shift, Ctrl et Alt de droite collantes.
<h2><a name="s16">16. Changer le mode vidéo</a></h2>
<p>Pour autant que je sache, il y a 6 manières de changer de
mode résolution:</p>
<p>1. A la compilation: changer la ligne</p>
<blockquote>
<pre>
<code> SVGA_MODE= -DSVGA_MODE=NORMAL_VGA
</code>
</pre></blockquote>
dans <code>/usr/src/linux/Makefile</code>.
<p>1A. Après la compilation: utiliser <code>rdev -v</code> -
une affreuse magouille, mais bon, ça marche.</p>
<p>2. Au démarrage: mettre <code>vga=ask</code> dans le
fichier de config de lilo, qui demandera au boot le mode voulu. Une
fois décidé, remplacer par
<code>vga=</code>LePlusJoliMode.</p>
<p>3. En cours de route: A. Utiliser la commande
<code>resizecons</code>. (C'est un programme très primitif
utilisant l'ioctl VT_RESIZE.) B. Utiliser
<code>SVGATextMode</code>. (C'est une version moins primitive)</p>
<p>4. Pas "sur la console": Sous <code>dosemu</code>, ou avec
svgalib etc. on peut changer le mode vidéo de la carte
écran sans que le pilote de la console s'en
aperçoive. C'est parfois utile pour configurer
<code>resizecons</code> ou <code>SVGATextMode</code>:sous
<code>dosemu</code> se mettre dans le mode vidéo voulu
grâce à un programme DOS utilisant ce mode, puis dans
une autre console, récupérer les paramètres de
ce mode. Il ne reste plus qu'à utiliser ces données
pour l'initialisation de <code>resizecons</code> et
<code>SVGATextMode</code>. Dans certains cas la carte vidéo
se retrouve dans un mode inutilisable, le moyen le plus simple pour
se sortir de là est de lancer <code>dosemu</code>, laisser
le BIOS mettre un mode vidéo correct, puis tuer
<code>dosemu</code> (avec <code>kill -9</code>).</p>
<h2><a name="ss16.1">16.1 Instructions pour l'utilisation de
resizecons</a></h2>
<p>Récupérer svgalib et compiler le programme
<code>restoretextmode</code>. Booter la machine dans tous les modes
vidéo possibles (en mettant <code>vga=ask</code> dans le
fichier config de lilo), et sauvegarder les registres vidéo
dans des fichiers CxL (C=Colonnes, L=Lignes), par exemple 80x25,
132x44, etc. Placer ces fichiers dans
<code>/usr/lib/kbd/videomodes</code>. Désormais
<code>resizecons 132x44</code> changera le mode vidéo (et
enverra le signal SIGWINCH à tous les processus qui ont
besoin de savoir que la résolution a changé, et
chargera une nouvelle police si nécessaire).</p>
<p>A présent, <code>resizecons</code> ne change de mode que
s'il y a assez de mémoire pour contenir à la fois
l'ancienne et la nouvelle console.</p>
<h2><a name="s17">17. Changer la vitesse de
répétition du clavier</a></h2>
<p>Au démarrage, le noyau met la vitesse de
répétition à sa valeur maximale. Pour la
plupart des claviers c'est raisonnable, mais sur certains il
devient quasiment impossible d'effleurer une touche sans avoir
trois fois le même caractère. Dans ce cas utiliser le
programme kbdrate(8) pour changer la vitesse de
répétition ou si ça ne suffit pas supprimer la
section:</p>
<hr>
<pre>
! set the keyboard repeat rate to the max
mov ax,#0x0305
xor bx,bx ! clear bx
int 0x16
</pre>
<hr>
de <code>/usr/src/linux/[arch/i386/]boot/setup.S</code>.
<h2><a name="s18">18. Economiseur d'écran</a></h2>
<p><code>setterm -blank</code> <i>nn</i> règle le
délai d'extinction de l'écran à <i>nn</i>
minutes d'inactivité. (Avec <i>nn</i> = 0,
l'économiseur d'écran est
désactivé.)</p>
<p>L'option <code>s</code> de xset(1) règle les
paramètres de l'économiseur d'écran de X.</p>
<p>Les modes d'économie d'énergie du moniteur peuvent
être activés/désactivés par le programme
<code>setvesablank</code> donné dans les commentaires au
début du fichier
<code>/usr/src/linux/drivers/char/vesa_blank.c</code>.</p>
<h2><a name="s19">19. Quelques propriétés du VT100 -
mode application</a></h2>
<p>: Parfois les touches de curseur produisent des codes
bizarres?</p>
<p>Quand le terminal est en <code>mode application</code>, les
touches de curseur produisent les codes Esc O x et sinon Esc [ x,
avec x = A,B,C ou D. Certains programmes mettent le termnial en
mode application et si on les tue avec un <code>kill -9</code>, ou
s'il se plantent, le terminal restera dans ce mode.</p>
<pre>
% echo -e '\033c'
</pre>
réinitialise les propriétés du terminal
courant. Si on veut passer en mode application:
<pre>
% echo -e '\033[?1h'
</pre>
et si on veut en sortir:
<pre>
% echo -e '\033[?1l'
</pre>
<h2><a name="s20">20. Incompatibilité
matérielle</a></h2>
<p>Quelques personnes ont noté des pertes de
caractères tapés lors d'un accès disquette. Il
semblerait que ce soit un problème avec les cartes
mères Uni-486WB. (SVP envoyez moi un mail pour confirmer
[Oui, j'ai le même problème], infirmer [Non, tout va
bien avec ma carte Uni-486WB], ou modifier [Ma machine Xyzzy a le
même problème].)</p>
<p>Certaines personnes ont eu des blocages aléatoires du
clavier - parfois associés à une activité
disque dur ou une autre entrée/sortie.</p>
<p><a href="mailto:ulf@rio70.bln.sni.de">ulf@rio70.bln.sni.de</a>
(Ulf Tietz) écrit:</p>
<blockquote>`J'avais ce genre de problèmes quand ma carte
mère avait des réglages trop rapides. En remettant
les délais (CLK, wait-states, etc.) à des valeurs
plus raisonnables, tout est rentré dans
l'ordre.'</blockquote>
<p><a href="mailto:bhogan@crl.com">bhogan@crl.com</a> (Bill Hogan)
écrit:</p>
<blockquote>`Si vous avez un BIOS AMI, vous pouvez essayer de
mettre le paramètre Gate A20 emulation sur 'chipset' (si
cette option existe). Quand cette option était sur n'importe
quoi d'autre ('fast', 'both', 'disabled') j'avais souvent des
blocages du clavier.'</blockquote>
--------------------------------------------------------------------
<p>Additions et corrections sont les bienvenues.</p>
<p>Andries Brouwer - <a href="mailto:aeb@cwi.nl">aeb@cwi.nl</a></p>
<p>(Bruno Viaris - Viaris@Yoko.ENS-Cachan.Fr pour la
traduction)</p>
</body>
</html>
|