This file is indexed.

/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/x86 (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&ccedil;aise Bruno Viaris
<hr>
<em>Ce document traite de l'utilisation du clavier, de la console
et de caract&egrave;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&eacute;n&eacute;ralit&eacute;s</a></h2>
<p>Quand on appuie sur une touche, le contr&ocirc;leur clavier
envoie des scancodes au pilote clavier du noyau. Certains claviers
sont programmables, mais en g&eacute;n&eacute;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 &agrave; l'application, c'est ce qui se passe
sous <code>X</code>. Sinon le flux de scancodes est
d&eacute;compos&eacute; en keycodes correspondant &agrave; l'appui
ou au rel&acirc;chement d'une touche. (Le simple fait d'appuyer sur
une touche peut produire jusqu'&agrave; 6 scancodes, r&eacute;duits
ici en un seul keycode.) Si le pilote clavier est en <em>mode
keycode</em> (ou <em>mode mediumraw</em>), l'application
re&ccedil;oit les keycodes (ce mode est utilis&eacute;, par
exemple, par <code>showkey</code>). Sinon, les keycodes sont
traduits d'apr&egrave;s une table (keymap), ensuite, soit un
caract&egrave;re (ou un cha&icirc;ne) est envoy&eacute; &agrave;
l'application, soit une action est d&eacute;clench&eacute;e.
(Exemple: si on appuie et rel&acirc;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&eacute;e). Si on appuie et rel&acirc;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&eacute;quence ESC <code>[ 3 ~</code>. Ctrl-Alt-Suppr est une
combinaison de touches qui d&eacute;clenche une action.)</p>
<p>La conversion de scancodes exotiques en keycodes peut &ecirc;tre
programm&eacute;e avec l'utilitaire <code>setkeycodes</code>, mais
peu de gens ont besoin. La table de traduction des keycodes en
caract&egrave;res, cha&icirc;nes ou actions, i.e. la keymap, se
manipule gr&acirc;ce &agrave; <code>loadkeys</code>. Pour plus de
d&eacute;tails, voir getkeycodes(8), setkeycodes(8), dumpkeys(1),
loadkeys(1).</p>
<p>Dans ce paragraphe, le terme `envoy&eacute; &agrave;
l'application' signifie en fait `transmis au pilote du terminal'.
Le texte est ensuite trait&eacute; de la m&ecirc;me fa&ccedil;on
que s'il venait d'une ligne s&eacute;rie. Les d&eacute;tails de ce
traitement sont ajust&eacute;s par le programme
<code>stty</code>.</p>
<h2><a name="s3">3. La console -
g&eacute;n&eacute;ralit&eacute;s</a></h2>
<p>A l'inverse, quand on envoie des caract&egrave;res &agrave; la
console, ils subissent un traitement standard (r&eacute;gl&eacute;
par <code>stty</code>), puis sont envoy&eacute;s au pilote de la
console. Le pilote de la console &eacute;mule un terminal VT100, et
scrute les donn&eacute;es re&ccedil;ues pour intercepter les
s&eacute;quences escape (du genre d&eacute;placement du curseur,
effacement de l'&eacute;cran, etc.). Les autres octets sont,
apr&egrave;s une &eacute;ventuelle conversion par la table de
conversion de la console, &eacute;crits dans la m&eacute;moire
vid&eacute;o. La carte vid&eacute;o affiche ces caract&egrave;rs en
utilisant une police stock&eacute;e dans sa m&eacute;moire. On peut
changer cette police en utilisant <code>setfont</code>, et la table
de conversion de la console peut &ecirc;tre modifi&eacute;e avec
<code>mapscrn</code>. Pour plus de d&eacute;tails, voir plus
bas.</p>
<h2><a name="s4">4. R&eacute;initialiser le terminal</a></h2>
<p>L'&eacute;cran est plein de cochonneries, tout ce qu'on tape
appara&icirc;t sous forme de petits dessins. Que faire ?</p>
<p>De nombreux programmes retracent l'&eacute;cran quand on tape
^L, ce qui peut &ecirc;tre utile en cas de modem bruit&eacute; ou
de messages intempestifs &agrave; l'&eacute;cran. La commande
<code>clear</code> efface l'&eacute;cran.</p>
<p>La commande <code>reset</code> r&eacute;initialise le pilote de
la console. Elle est bien utile quand l'&eacute;cran est plein de
ces jolis caract&egrave;res graphiques illisibles, ou quand
l'affichage est r&eacute;duit &agrave; la ligne du bas. Si vous ne
disposez pas de cette commande, ou si elle fait autre chose, voici
le rem&egrave;de: mettez ces deux lignes dans un fichier
ex&eacute;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&eacute;quence ESC c &agrave; la console. Si vous
avez charg&eacute; une police bizarre et que vous voulez revenir
&agrave; la police par d&eacute;faut,
<blockquote>
<pre>
<code>% setfont
</code>
</pre></blockquote>
fera l'affaire (&agrave; condition que la police par d&eacute;faut
soit &agrave; sa place). Sur de vieux terminaux, l'utilisation de
tabs peut demander un d&eacute;lai, ex&eacute;cuter alors
<blockquote>
<pre>
<code>% stty tab3
</code>
</pre></blockquote>
(voir stty(1)). Pour changer de mode vid&eacute;o, utiliser
<code>resizecons</code> ou <code>SVGATextMode</code>. Ceci
r&egrave;gle g&eacute;n&eacute;ralement la partie affichage.
C&ocirc;t&eacute; clavier, il peut y avoir encore pas mal de
probl&egrave;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&eacute;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&egrave;me peut parfois se situer &agrave; un niveau
encore plus bas. Il y a au moins deux niveaux (le clavier et le
contr&ocirc;leur clavier) o&ugrave; l'on peut envoyer la commande
"d&eacute;sactiver le clavier" au mat&eacute;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&ugrave; cela
ait pos&eacute; un probl&egrave;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>)
&eacute;crit:</p>
<blockquote>`Si votre clavier a &eacute;t&eacute; accidentellement
reprogramm&eacute;, 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&egrave;re
&agrave; utiliser pour effacer le dernier caract&egrave;re
tap&eacute;</a></h2>
<blockquote>
<pre>
<code>% stty erase ^?
</code>
</pre></blockquote>
Si le caract&egrave;re est effac&eacute;, mais d'une mani&egrave;re
bizarre, c'est que les param&egrave;tres du terminal sont mauvais.
Si <code>echoprt</code> est activ&eacute;, les caract&egrave;res
effac&eacute;s s'affichent entre <code>\</code> et <code>/</code>.
Si <code>echoe</code> est d&eacute;sactiv&eacute;, les
caract&egrave;res ne sont plus effac&eacute;s &agrave;
l'&eacute;cran, mais leur effacement est signal&eacute; par
l'affichage du caract&egrave;re d'effacement, exemple:
<code>Libux###nux</code> (avec # comme caract&egrave;re
d'effacement).
<p>On utilisera donc g&eacute;n&eacute;ralement <code>stty echoe
-echoprt</code>. La commande <code>stty sane</code> activera ces
param&egrave;tres et bien d'autres. La commande <code>stty
-a</code> affiche les param&egrave;tres actuels. Pourquoi ces
param&egrave;tres ne sont pas activ&eacute;s par d&eacute;faut ? Il
suffit d'utiliser le bon <code>getty</code>.</p>
<p>Il est &agrave; noter que beaucoup de programmes (comme
<code>bash</code>, <code>emacs</code> etc.) ont leur propres
assignations de touches (d&eacute;finis dans
<code>~/.inputrc</code>, <code>~/.emacs</code>, etc.) et ne
tiennent pas compte de ces param&egrave;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&eacute;sormais ignor&eacute;s (comme le devrait
toute &eacute;mulation vt100 fid&egrave;le). Choisissez un meilleur
getty, i.e., qui n'affiche pas les DEL.</p>
<h3>`Login ne fait pas la m&ecirc;me chose au premier et au
deuxi&egrave;me essai?'</h3>
<p>Au premier essai, on parle &agrave; <code>getty</code>, au
deuxi&egrave;me &agrave; <code>login</code>, deux programmes
distincts qui peuvent se comporter diff&eacute;remment.</p>
<h2><a name="ss5.2">5.2 Comment dire &agrave; Linux quel code
g&eacute;n&eacute;rer &agrave; l'appui sur une touche</a></h2>
<p>Quand on utilise la console, ou plus pr&eacute;cis&eacute;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 &agrave;
partir de la configuration du clavier de la console. Bien que les
deux syst&egrave;mes ne soient pas 100% compatibles, cette
technique rend g&eacute;n&eacute;ralement l'utilisation de
<code>xmodmap</code> superflue.
<p>Si, par exemple, si vous voulez que la touche Backspace
g&eacute;n&egrave;re le code BackSpace (^H), au lieu du code par
d&eacute;faut (Delete), faites:</p>
<blockquote>
<pre>
<code>% loadkeys
keycode 14 = BackSpace
%
</code>
</pre></blockquote>
<h3>`Pourquoi la touche BackSpace ne g&eacute;n&egrave;re pas
BackSpace par d&eacute;faut ?'</h3>
<p>(i) Parce que les terminaux VT100 ont une touche Delete au
dessus de la touche Entr&eacute;e.</p>
<p>(ii) Parce que Linus en a d&eacute;cid&eacute; ainsi.</p>
<h2><a name="ss5.3">5.3 Comment dire &agrave; X d'&eacute;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&eacute;n&egrave;re le code
BackSpace:
<blockquote>
<pre>
<code>% xmodmap -e "keycode 22 = BackSpace"
</code>
</pre></blockquote>
Ou, si vous voulez juste que Delete g&eacute;n&egrave;re le code
Delete:
<blockquote>
<pre>
<code>% xmodmap -e "keycode 107 = Delete"
</code>
</pre></blockquote>
(mais g&eacute;n&eacute;ralement c'est d&eacute;j&agrave; la
disposition par d&eacute;faut).
<h2><a name="ss5.4">5.4 Comment dire &agrave; 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&ucirc;r, vous pouvez associer d'autres commandes &agrave;
d'autres touches de la m&ecirc;me mani&egrave;re.
<h2><a name="ss5.5">5.5 Comment dire &agrave; 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 &agrave; kermit
d'&eacute;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&eacute;gler xterm selon vos modes
de terminal pr&eacute;f&eacute;r&eacute;s</a></h2>
<p>Normalement xterm h&eacute;rite des modes de terminal du
processus qui l'appelle. Pour <code>xdm</code>, les
caract&egrave;res erase et kill sont <code>#</code> et
<code>@</code>, comme sur les bons vieux Unix Version 6. Si
&ccedil;a ne vous pla&icirc;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>, &agrave; condition
d'ex&eacute;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 &agrave; xmosaic que la touche
Backspace g&eacute;n&egrave;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&eacute;faut, Linux et XFree86 ont leur touches Backspace et Delete
        mal configur&eacute;es. Tous les programmes Motif (y compris Netscape
        Navigator) auront les m&ecirc;mes probl&egrave;mes.

        Les sp&eacute;cifications Motif disent que Backspace doit effacer le
        caract&egrave;re pr&eacute;c&eacute;dent et Delete le caract&egrave;re suivant. Par d&eacute;faut sous
        Linux et XFree86 Backspace et Delete g&eacute;n&egrave;rent le code DEL.

        Le probl&egrave;me peut &ecirc;tre r&eacute;solu en utilisant un programme tel que 
        xmodmap, xkeycaps, ou loadkeys pour que la touche Backspace
        g&eacute;n&egrave;re le code BackSpace au lieu de Delete.

        Une autre solution consiste &agrave; 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&eacute;soudre ce probl&egrave;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&egrave;mes avec backspace ont
tendance &agrave; aller voir dans leur fichier termcap (ou
terminfo), et effectivement la ressource <code>kb</code> (ou
<code>kbs</code>) d&eacute;crit le code g&eacute;n&eacute;r&eacute;
par la touche Backspace. Cependant peu de programmes utilisent ces
bases de donn&eacute;es pour rechercher le code envoy&eacute; par
backspace, donc, &agrave; moins de n'avoir des probl&egrave;mes
qu'avec certains programmes, il faut en g&eacute;n&eacute;ral
chercher ailleurs. Cela dit, il vaut mieux de toute fa&ccedil;on
avoir un termcap (ou terminfo) correct. Voir aussi "La variable
TERM" plus loin.</p>
<h2><a name="s6">6. Les tables de caract&egrave;res de la
console</a></h2>
<p>Le noyau a quatre tables de conversion des octets en symboles
&eacute;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&egrave;res, appel&eacute;es G0 et
G1, dont l'une est la table courante. (Initialement G0.) Taper ^N
fait passer &agrave; la table G1, ^O &agrave; la table G0.</p>
<p>Ces variables G0 et G1 pointent sur des tables de conversion et
peuvent &ecirc;tres chang&eacute;es par l'utilisateur.
Initialement, elles pointent respectivement sur les tables a) et
b). Les s&eacute;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&eacute;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&eacute;quence ESC c provoque une r&eacute;initialisation
compl&egrave;te du terminal, ce qui peut &ecirc;tre
n&eacute;cessaire si l'&eacute;cran est tout brouill&eacute;. La
commande <code>echo ^V^O</code>, souvent conseill&eacute;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&eacute;e
<code>:rs=\Ec:</code>), alors vous pouvez utiliser <code>setterm
-reset</code>.</p>
<p>La table de conversion d) peut &ecirc;tre d&eacute;finie par
mapscrn(8). Le r&eacute;sultat est que si un symbole c est
affich&eacute;, c'est le symbole <code>s = map[c]</code> qui est
mis dans la m&eacute;moire vid&eacute;o. L'image du
caract&egrave;re <code>s</code> se trouve dans la m&eacute;moire de
la carte vid&eacute;o et peut &ecirc;tre modifi&eacute;e avec
setfont(8).</p>
<h2><a name="s7">7. Changer de console</a></h2>
<p>Par d&eacute;faut, le changement de console se fait par Alt-Fn
ou Ctrl-Alt-Fn. Sous <code>X</code> (ou les versions
r&eacute;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&eacute;e
quand on rappelle la fen&ecirc;tre X. Il faut donc rel&acirc;cher
Alt avant de pouvoir rechanger de console. Pourtant, &ccedil;a
pourrait marcher: le noyau m&eacute;morise toujours l'&eacute;tat
appuy&eacute;/rel&acirc;ch&eacute; des touches. (Autant que faire
se peut: certains clavier n'&eacute;mettent pas de scancode quand
on appuie dessus (ex: les touches PFn d'un FOCUS 9000) ou quand on
les rel&acirc;che (ex: la touche Pause de la plupart des
claviers).)</p>
<p>XFree86 1.3 sauve les polices charg&eacute;es sur la carte
vid&eacute;o quand il est d&eacute;marr&eacute;, et les restaure
lors d'un changement de console. Donc le r&eacute;sultat d'un
<code>setfont</code> sur une console virtuelle est annul&eacute;
par un aller retour dans la fen&ecirc;tre X. L'utilisation de
<code>setfont</code> sous X donne des r&eacute;sultats
bizarres...</p>
<p>Le changement de console par programme est possible gr&acirc;ce
&agrave; 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&eacute;e de temps en temps, mais
la r&eacute;ponse est: il y en a d&eacute;j&agrave; suffisament.
Depuis la version 1.1.54 du noyau, il y a entre 1 et 63 consoles
virtuelles. Une nouvelle console est cr&eacute;&eacute;e d&egrave;s
qu'elle est ouverte. Elle peut &ecirc;tre supprim&eacute;e avec
<code>disalloc</code> (mais il faut que plus aucun processus ne lui
soit associ&eacute;).</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&eacute;passer 63),
et recompiler. Il est possible que vous ayez &agrave; cr&eacute;er
le p&eacute;riph&eacute;rique correspondant avec
<code>MAKEDEV</code> ou <code>mknod tty</code>N <code>c 4</code> N
o&ugrave; N est le num&eacute;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&eacute;es dynamiquement, il est
g&eacute;n&eacute;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&eacute;es (sans processus
associ&eacute;) sont d&eacute;sallou&eacute;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&egrave;cheHaute
cr&eacute;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&eacute;s dans <code>/etc/securetty</code>.</p>
<h2><a name="s8">8. Ctrl-Alt-Del et autres combinaisons
sp&eacute;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
&agrave; laquelle loadkeys associe le keycode Boot), soit la
machine reboote imm&eacute;diatement (sans sync), soit le signal
SIGINT est envoy&eacute; &agrave; <code>init</code> (ce qui est le
comportement par d&eacute;faut, changeable par l'appel
syst&egrave;me reboot(), voir ctrlaltdel(8)). Certains
<code>init</code> changent le d&eacute;faut. Ce qui se produit
quand <code>init</code> re&ccedil;oit SIGINT d&eacute;pend de la
version du <code>init</code> utilis&eacute;e et est souvent
d&eacute;termin&eacute; 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&eacute; par d&eacute;faut &agrave;
Boot.</p>
<h2><a name="ss8.2">8.2 Autres combinaisons</a></h2>
<p>Combinaisons par d&eacute;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&egrave;cheDroite
Decr_Console    Alt-Fl&egrave;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&eacute;fini&gt;  (Par d&eacute;faut CapsLock est un va-et-vient,
Caps_Shift      &lt;pas defini&gt; ces Keycodes servent &agrave; recr&eacute;er le d&eacute;sagr&eacute;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&eacute;solution suivante
Ctrl-Alt-KP-            R&eacute;solution pr&eacute;c&eacute;dente
Ctrl-Alt-Backspace      Tue le serveur X
</pre>
Sur certaines cartes-m&egrave;res, Ctrl-Alt-KP- et Ctrl-Alt-KP+
&eacute;mulent le bouton Turbo. Ces s&eacute;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) &agrave; non-Turbo (8 or
12 MHz) et vice-versa. (souvent ce comportement peut &ecirc;tre
d&eacute;sactiv&eacute; par un cavalier sur la carte-m&egrave;re.)
<p>Perry F Nguyen (<code><a href=
"mailto:pfnguyen@netcom22.netcom.com">pfnguyen@netcom22.netcom.com</a></code>)
&eacute;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&eacute;fini, et ce jusqu'&agrave; ce
que celui-ci soit tap&eacute;.</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 &ecirc;tre construit en utilisant plusieurs
frappes.</p>
<ul>
<li>En mode Ascii, taper un code Ascii en d&eacute;cimal sur le
pav&eacute; num&eacute;rique, tout en maintenant la touche Alt
enfonc&eacute;e, produit le caract&egrave;re en question quand on
rel&acirc;che Alt. (En mode Unicode, il faut taper le code
hexad&eacute;cimal &agrave; 4 chiffres du symbole)</li>
<li>L'appui sur un accent mort puis sur une lettre produit cette
lettre accentu&eacute;e (si possible, sinon l'accent suivi de la
lettre). Les touche mortes sont d&eacute;finissables par
l'utilisateur (gr&acirc;ce &agrave; loadkeys(1)). Il y a cinq
possibilit&eacute;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&eacute;ma                    dead_diaeresis          diaeresis
</pre>
Par d&eacute;faut aucune touche du clavier n'est morte. Le
r&eacute;sultat est celui de Compose + accent + lettre (et est donc
red&eacute;finissable, cf plus bas).
<blockquote>NDT: pour des francophones utilisant un clavier Azerty,
il vaut g&eacute;n&eacute;ralement mieux se contenter de
d&eacute;finir comme touches mortes l'accent circonflexe et le
tr&eacute;ma de la touche &agrave; 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&eacute;n&eacute;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&eacute;e au d&eacute;marrage par
loadkeys.</blockquote>
</li>
<li>Compose suivi de deux symboles produit une combinaison des
deux. Cette combinaison est red&eacute;finissable. Il y a &agrave;
ce jour 68 combinaisons par d&eacute;faut qui peuvent &ecirc;tre
affich&eacute;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&acirc;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 &agrave; noter qu'il existe au moins trois
m&eacute;canismes de composition distincts:</p>
<ol>
<li>Le pilote clavier de Linux, configur&eacute; par loadkeys.</li>
<li>Le m&eacute;canisme de X - voir X386keybd(1), ou
XFree86kbd(1).<br>
Sous X11R6 : &eacute;diter
<code>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</code>.</li>
<li>Le m&eacute;canisme d'emacs, activ&eacute; 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&eacute;dille; pour Linux et
emacs, seule la premi&egrave;re combinaison est correcte. Les
combinaisons de X sont fixes, celles de Linux et emacs sont
reconfigurables. Les trois listes par d&eacute;faut sont assez
similaires, mais il y a quelques diff&eacute;rences.
<h2><a name="s9">9. Diverses propri&eacute;t&eacute;s de la
console</a></h2>
<p>Voir loadkeys(1), setleds(1), setmetamode(1) pour les codes
g&eacute;n&eacute;r&eacute;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&eacute;t&eacute;s
telles que les couleurs de l'&eacute;criture et du fond,
l'&eacute;conomiseur d'&eacute;cran et la vitesse de
r&eacute;p&eacute;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&eacute;finit les
s&eacute;quences escape utilis&eacute;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&eacute;&eacute;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&egrave;re
<code>/dev/tty0</code> comme un synonyme de la console virtuelle
courante. XFree86 1.3 change le propri&eacute;taire de
<code>/dev/tty0</code>, mais ne le restaure qu'&agrave; la sortie.
Or dumpkeys risque de ne pas marcher si quelqu'un d'autre est
propri&eacute;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&egrave;s difficile de faire quoi que ce soit -
m&ecirc;me Ctrl-Alt-Del. Cependant il est parfois possible
d'&eacute;viter d'appuyer sur Reset (et m&ecirc;me souhaitable: vos
utilisateurs risquent de ne pas appr&eacute;cier qu'on leur tue
leur Nethack, et surtout il est possible d'endommager le
syst&egrave;me de fichiers). Les solutions simples consistent
&agrave; se loger &agrave; partir d'un autre terminal ou une autre
machine et faire <code>kbd_mode -a</code>. La proc&eacute;dure
suivante suppose que X ne tourne pas, que l'&eacute;cran est en
mode texte, que vous &ecirc;tes &agrave; un prompt shell, que
Ctrl-C est le caract&egrave;re d'interruption et que vous n'avez
pas un clavier trop exotique (i.e. la touche `=' est 2 touches
&agrave; droite de `0').</p>
<p>1&egrave;re &eacute;tape: Lancer X. Appuyez sur la combinaison
2-F12-= : appuyez sur 2 puis F12 (sans l&acirc;cher 2) et puis =
(sans l&acirc;cher les deux autres), le tout assez rapidement!
&Ccedil;a lance X. (Explication: si l'appui sur une touche produit
le keycode K, alors son rel&acirc;chement produit K+128. Votre
shell risque de na pas appr&eacute;cier ces caract&egrave;res, donc
on &eacute;vite de les lui envoyer en ne l&acirc;chant pas les
touches. `2' produit un ^C qui annule tout ce qui a
&eacute;t&eacute; tap&eacute; avant. F12 produit un X et `=' le
code entr&eacute;e. Et tout &ccedil;a vite fait avant que la
r&eacute;p&eacute;tition des touches ne commence...)</p>
<p>Votre &eacute;cran est alors probablement gris, puisqu'aucun
<code>.xinitrc</code> n'a &eacute;t&eacute; sp&eacute;cifi&eacute;.
Cependant Ctrl-Alt-Fn marche, et vous pouvez appeler une autre
console. (Ctrl-Alt-Backspace marche aussi, mais &ccedil;a restaure
l'&eacute;tat initial du clavier qui justement n'est pas bon.)</p>
<p>2&egrave;me &eacute;tape: Programmer le changement de mode du
clavier. (Par exemple, avec <code>sleep 5; kbd_mode -a</code>.)</p>
<p>3&egrave;me &eacute;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&eacute;parer pour cette occasion, faites
de <code>\215A\301</code> (3 symboles) un alias de <code>kbd_mode
-a</code>. D&eacute;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&eacute;es <code>/etc/termcap</code> ou
<code>/usr/lib/terminfo/*</code> pour trouver quelle cha&icirc;ne
de commande efface l'&eacute;cran, d&eacute;place le curseur, etc.,
et parfois pour savoir quelle cha&icirc;ne est envoy&eacute;e par
la touche backspace, ou les touches de fonction, etc. Cette
variable est d'abord d&eacute;finie par le noyau (pour la console).
G&eacute;n&eacute;ralement elle est red&eacute;finie par
<code>getty</code>, en utilisant <code>/etc/ttytype</code> ou
l'argument sp&eacute;cifi&eacute; dans <code>/etc/inittab</code>.
Parfois elle est encore chang&eacute;e par
<code>/etc/profile</code>.</p>
<p>Les anciens syst&egrave;mes utilisent <code>TERM=console</code>
ou <code>TERM=con80x25</code>. Les plus r&eacute;cents (avec
ncurses 1.8.6) utilisent la valeur plus sp&eacute;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&eacute;faut
est <code>TERM=linux</code>.</p>
<p>Si votre termcap n'a pas d'entr&eacute;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&eacute;cessaire &agrave; 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&egrave;res non-ASCII</a></h2>
<p>C'&eacute;tait jadis un v&eacute;ritable calvaire. Il fallait
convaincre individuellement chaque programme de travailler en 8
bits. Les choses ne sont pas encore id&eacute;ales, mais
r&eacute;cemment de nombreux utilitaires GNU ont appris &agrave;
reconna&icirc;tre les variables <code>LC_CTYPE=iso_8859_1</code> ou
<code>LC_CTYPE=iso-8859-1</code>. Essayez d'abord &ccedil;a, et si
&ccedil;a ne suffit pas essayez les trucs ci-dessous.</p>
<p>Tout d'abord, le huiti&egrave;me bit doit survivre au processus
d'entr&eacute;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-&ecirc;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&egrave;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, &agrave; v&eacute;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&eacute;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&eacute;, les routines
correspondantes sont utilis&eacute;es. Sinon <code>tcsh</code> agit
en iso_8859_1, quelle que soit les valeurs donn&eacute;es &agrave;
LANG et LC_CTYPE. voir la section NATIVE LANGUAGE SYSTEM de
tcsh(1). (d'apr&egrave;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&eacute;n&eacute;r&eacute; doit accepter les
entr&eacute;es 8-bits. (Bien sur qu'il doit le faire !)</p>
<p>G. Pour <code>elm</code>, mettez <code>displaycharset</code>
&agrave; <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&egrave;me bit pour la vid&eacute;o invers&eacute;e (voir le
flag _STANDOUT d&eacute;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
&eacute;t&eacute; corrig&eacute; et fait un
<code>setlocale(LC_CTYPE,"");</code> et 2) de d&eacute;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&egrave;s &eacute;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&egrave;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 &agrave; <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&egrave;me de l'ISO-8859-1 et sur
comment manipuler les caract&egrave;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&ccedil;ais). Une autre, en anglais, peut &ecirc;tre
trouv&eacute;e &agrave; <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 &agrave;
l'initialisation de sa keymap?</a></h2>
<p>Depuis la version 2.1, XFree86 initialise sa keymap
d'apr&egrave;s celle de Linux, dans les limites du possible. Linux
a 16 entr&eacute;es par touches (une pour chaque combinaison de
Shift, AltGr, Ctrl, Alt; en fait il en a m&ecirc;me 256), alors que
X n'en a que 4 (une pour chaque combinaison de Shift et Mod), il y
a donc forc&eacute;ment des informations perdues.</p>
<p>D'abord <code>X</code> lit le fichier <code>Xconfig</code>,
o&ugrave; 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&eacute;faut, c'est la colonne LeftAlt qui sert pour Mod,
sauf si CtlDroit est d&eacute;fini comme ModeShift ou ModeLock,
dans ce cas ce sont les entr&eacute;es RightCtl qui servent pour
Mod. (Sauf si AltGr est d&eacute;fini comme Mod dans Xconfig,
auquel cas c'est la colonne RightAlt qui sert.) Ceci
d&eacute;termine comment les 4 entr&eacute;es de XFree86 sont
choisies parmi les 16 de Linux. Notons que par d&eacute;faut Linux
ne fait pas la diff&eacute;rence entre les deux touche Control ou
Shift. <code>X</code> fait la duff&eacute;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&eacute;es, de m&ecirc;me pour les touches
mortes, NumLock, ScrollLock et Alt+code-ASCII.</p>
<p>Ensuite, les d&eacute;finitions de <code>Xconfig</code> sont
utilis&eacute;es. (Donc une d&eacute;finition de Compose dans
<code>Xconfig</code> annulera celle trouv&eacute;e dans la keymap
du noyau.)</p>
<p>Que deviennent les cha&icirc;nes associ&eacute;es aux touches
des fonctions ? Rien, ce concept n'existe pas sous X. (Mais il est
possible de d&eacute;finir des cha&icirc;nes associ&eacute;es aux
touches de fonction dans <code>xterm</code> - mais elles ne doivent
pas &ecirc;tre intercept&eacute;es par le gestionnaire de
fen&ecirc;tres.)</p>
<p>Je ne sais pas comment convaincre <code>xterm</code> qu'il
devrait utiliser la keymap de X quand Alt est enfonc&eacute;. Il
semble qu'il ne r&eacute;agisse qu'en fonction de sa ressource
<code>eightBitInput</code>, et selon qu'elle est &agrave; vrai ou
faux, soit il met &agrave; 1 le huiti&egrave;me bit, soit il
g&eacute;n&egrave;re un caract&egrave;re escape devant le
caract&egrave;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&eacute;ciales car elles ont deux keycodes: la premi&egrave;re
produit le keycode 84 quand Alt est enfonc&eacute; et 99 sinon; la
seconde 101 si Ctrl est enfonc&eacute;, 119 sinon. (Il est donc
inutile d'assigner des fonctions &agrave; Alt-Keycode99 ou
Ctrl-Keycode119.)</p>
<p>Si votre clavier a des touches &eacute;tranges qui ne
g&eacute;n&egrave;rent aucun code sous Linux (ou
g&eacute;n&egrave;rent des messages du genre "unrecognized
scancode"), vous pouvez, &agrave; partir du noyau 1.1.63, utiliser
setkeycodes(1) pour dire au noyau quel keycode assigner &agrave;
ces touches. (Leur utilisation sous X sera cependant impossible.)
Une fois qu'elles ont un keycode gr&acirc;ce &agrave;
<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&eacute;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&ugrave; <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&eacute;rotation des touches? Backspace a le
num&eacute;ro 14 sous Linux et 22 sous X... En fait, la
num&eacute;rotation est plus ou moins arbitraire. Le num&eacute;ro
sous Linux peut &ecirc;tre visualis&eacute; avec showkey(1), et le
num&eacute;ro sous X avec xev(1). Souvent le num&eacute;ro sous X
est 8 de plus que le num&eacute;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 &ecirc;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&eacute;ros &agrave; utiliser sont donn&eacute;s par showkey (et
sont g&eacute;n&eacute;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&eacute;o</a></h2>
<p>Pour autant que je sache, il y a 6 mani&egrave;res de changer de
mode r&eacute;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&egrave;s la compilation: utiliser <code>rdev -v</code> -
une affreuse magouille, mais bon, &ccedil;a marche.</p>
<p>2. Au d&eacute;marrage: mettre <code>vga=ask</code> dans le
fichier de config de lilo, qui demandera au boot le mode voulu. Une
fois d&eacute;cid&eacute;, 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&egrave;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&eacute;o de la carte
&eacute;cran sans que le pilote de la console s'en
aper&ccedil;oive. C'est parfois utile pour configurer
<code>resizecons</code> ou <code>SVGATextMode</code>:sous
<code>dosemu</code> se mettre dans le mode vid&eacute;o voulu
gr&acirc;ce &agrave; un programme DOS utilisant ce mode, puis dans
une autre console, r&eacute;cup&eacute;rer les param&egrave;tres de
ce mode. Il ne reste plus qu'&agrave; utiliser ces donn&eacute;es
pour l'initialisation de <code>resizecons</code> et
<code>SVGATextMode</code>. Dans certains cas la carte vid&eacute;o
se retrouve dans un mode inutilisable, le moyen le plus simple pour
se sortir de l&agrave; est de lancer <code>dosemu</code>, laisser
le BIOS mettre un mode vid&eacute;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&eacute;cup&eacute;rer svgalib et compiler le programme
<code>restoretextmode</code>. Booter la machine dans tous les modes
vid&eacute;o possibles (en mettant <code>vga=ask</code> dans le
fichier config de lilo), et sauvegarder les registres vid&eacute;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&eacute;sormais
<code>resizecons 132x44</code> changera le mode vid&eacute;o (et
enverra le signal SIGWINCH &agrave; tous les processus qui ont
besoin de savoir que la r&eacute;solution a chang&eacute;, et
chargera une nouvelle police si n&eacute;cessaire).</p>
<p>A pr&eacute;sent, <code>resizecons</code> ne change de mode que
s'il y a assez de m&eacute;moire pour contenir &agrave; la fois
l'ancienne et la nouvelle console.</p>
<h2><a name="s17">17. Changer la vitesse de
r&eacute;p&eacute;tition du clavier</a></h2>
<p>Au d&eacute;marrage, le noyau met la vitesse de
r&eacute;p&eacute;tition &agrave; 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&ecirc;me caract&egrave;re. Dans ce cas utiliser le
programme kbdrate(8) pour changer la vitesse de
r&eacute;p&eacute;tition ou si &ccedil;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'&eacute;cran</a></h2>
<p><code>setterm -blank</code> <i>nn</i> r&egrave;gle le
d&eacute;lai d'extinction de l'&eacute;cran &agrave; <i>nn</i>
minutes d'inactivit&eacute;. (Avec <i>nn</i> = 0,
l'&eacute;conomiseur d'&eacute;cran est
d&eacute;sactiv&eacute;.)</p>
<p>L'option <code>s</code> de xset(1) r&egrave;gle les
param&egrave;tres de l'&eacute;conomiseur d'&eacute;cran de X.</p>
<p>Les modes d'&eacute;conomie d'&eacute;nergie du moniteur peuvent
&ecirc;tre activ&eacute;s/d&eacute;sactiv&eacute;s par le programme
<code>setvesablank</code> donn&eacute; dans les commentaires au
d&eacute;but du fichier
<code>/usr/src/linux/drivers/char/vesa_blank.c</code>.</p>
<h2><a name="s19">19. Quelques propri&eacute;t&eacute;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&eacute;initialise les propri&eacute;t&eacute;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&eacute;
mat&eacute;rielle</a></h2>
<p>Quelques personnes ont not&eacute; des pertes de
caract&egrave;res tap&eacute;s lors d'un acc&egrave;s disquette. Il
semblerait que ce soit un probl&egrave;me avec les cartes
m&egrave;res Uni-486WB. (SVP envoyez moi un mail pour confirmer
[Oui, j'ai le m&ecirc;me probl&egrave;me], infirmer [Non, tout va
bien avec ma carte Uni-486WB], ou modifier [Ma machine Xyzzy a le
m&ecirc;me probl&egrave;me].)</p>
<p>Certaines personnes ont eu des blocages al&eacute;atoires du
clavier - parfois associ&eacute;s &agrave; une activit&eacute;
disque dur ou une autre entr&eacute;e/sortie.</p>
<p><a href="mailto:ulf@rio70.bln.sni.de">ulf@rio70.bln.sni.de</a>
(Ulf Tietz) &eacute;crit:</p>
<blockquote>`J'avais ce genre de probl&egrave;mes quand ma carte
m&egrave;re avait des r&eacute;glages trop rapides. En remettant
les d&eacute;lais (CLK, wait-states, etc.) &agrave; des valeurs
plus raisonnables, tout est rentr&eacute; dans
l'ordre.'</blockquote>
<p><a href="mailto:bhogan@crl.com">bhogan@crl.com</a> (Bill Hogan)
&eacute;crit:</p>
<blockquote>`Si vous avez un BIOS AMI, vous pouvez essayer de
mettre le param&egrave;tre Gate A20 emulation sur 'chipset' (si
cette option existe). Quand cette option &eacute;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>