This file is indexed.

/usr/share/doc/HOWTO/fr-html/Keyboard-and-Console-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.

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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<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 (&lt; 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\
         &lt;Key&gt;osfDelete: delete-previous-character()
  *XmTextField.translations: #override\n\
          &lt;Key&gt;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 -&gt; PC, b) VT100 graphique -&gt; PC, c) PC -&gt;
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 &lt;&lt; EOF
        alt keycode 103 = Spawn_Console
        EOF
        spawn_login &amp;
</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 &lt;= n &lt;= 12)
Console_{n+12}  AltGr-Fn                (1 &lt;= n &lt;= 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         &lt;pas défini&gt;  (Par défaut CapsLock est un va-et-vient,
Caps_Shift      &lt;pas defini&gt; 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 (&gt;= 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 &gt;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 &lt;KeyPress&gt; . : 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><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>