This file is indexed.

/usr/share/doc/HOWTO/fr-html/BackspaceDelete.html is in doc-linux-fr-html 2013.01-3.

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Petit guide pratique des touches Backspace et Suppr sous Linux</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/></head><body><div xml:lang="fr" class="article"><div class="titlepage"><div><div><h2 class="title"><a id="index"/>Petit guide pratique des touches <span class="keycap"><strong>Backspace</strong></span>
et <span class="keycap"><strong>Suppr</strong></span> sous Linux</h2></div><div><h3 class="subtitle"><em>
  
     Version française du petit guide <span class="foreignphrase"><em class="foreignphrase">Linux 
     Backspace/Delete mini-HOWTO</em></span>
  
  </em></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Sebastiano</span> <span class="surname">Vigna</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:vigna@acm.org">vigna@acm.org</a>&gt;</code></p></div></div></div></div><div><p class="othercredit"><span class="contrib">Adaptation française</span> : <span class="firstname">Baptiste</span> <span class="surname">Mélès</span></p></div><div><p class="othercredit"><span class="contrib">Préparation de la publication de la v.f.</span> : <span class="firstname">Jean-Philippe</span> <span class="surname">Guérard</span></p></div><div><p class="releaseinfo">Version : 1.6.fr.1.0</p></div><div><p class="pubdate">5 novembre 2004</p></div><div><div class="revhistory"><table summary="Historique des versions"><tr><th align="left" valign="top" colspan="3"><strong>Historique des versions</strong></th></tr><tr><td align="left">Version 1.6.fr.1.0</td><td align="left">2004-11-05</td><td align="left">BM, XX, JPG</td></tr><tr><td align="left" colspan="3">
                  
                      Première adaptation française.
                  
                  </td></tr><tr><td align="left">Version 1.6</td><td align="left">2002-01-19</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
                  
                  J'ai inclus de nombreux commentaires d'Alex Boldt et 
                  Chung-Rui Kao
                  
                  </td></tr><tr><td align="left">Version 1.5</td><td align="left">2001-05-03</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
                  
                  Mise à jour pour les nouvelles distributions et 
                  l'astuce du tput. <span xml:lang="en" class="emphasis"><em>Updated for new 
                  distros and the tput trick.</em></span>
                  
                  </td></tr><tr><td align="left">Version 1.4</td><td align="left">2000-12-07</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
                  
                  Mise à jour pour les conflits de Red Hat 7.0 et de 
                  Helix Gnome. <span xml:lang="en" class="emphasis"><em>Updated for Red Hat 
                  7.0 and Helix Gnome conflicts.</em></span>
                  
                  </td></tr><tr><td align="left">Version 1.3</td><td align="left">2000-10-15</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
                  
                  Changement du nom. <span xml:lang="en" class="emphasis"><em>Name 
                  change.</em></span>
                  
                  </td></tr><tr><td align="left">Version 1.2</td><td align="left">2000-10-15</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
                  
                  Mise à jour. Ajout de la section « Que faire si 
                  rien ne marche ». <span xml:lang="en" class="emphasis"><em>Updated. 
                  Added "What If Nothing Works" section.</em></span>
                  
                  </td></tr><tr><td align="left">Version 1.1</td><td align="left">2000-09-13</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">

             Ajout de réglages pour tcsh. <span xml:lang="en" class="emphasis"><em>Added tcsh 
             fixes</em></span>

         </td></tr><tr><td align="left">Version 1.0</td><td align="left">2000-09-05</td><td align="left">SV</td></tr><tr><td align="left" colspan="3">
          
             Première version. <span xml:lang="en" class="emphasis"><em>First 
             release</em></span>
             
         </td></tr></table></div></div></div><hr/></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#intro">1. Introduction</a></span></dt><dt><span class="sect1"><a href="#actions">2. Comment les touches sont converties en actions</a></span></dt><dt><span class="sect1"><a href="#why">3. Pourquoi ça ne marche pas (toujours)
</a></span></dt><dt><span class="sect1"><a href="#X">4. X</a></span></dt><dt><span class="sect1"><a href="#writing">5. Ce que vous devriez faire quand vous écrivez des 
applications</a></span></dt><dt><span class="sect1"><a href="#system">6. 

    Ce que vous devriez faire sur votre système

</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e601">6.1. Ce qui doit être fait</a></span></dt><dt><span class="sect2"><a href="#d0e761">6.2. Comment le faire</a></span></dt><dt><span class="sect2"><a href="#d0e958">6.3. Réglage de <span class="application">tcsh</span></a></span></dt></dl></dd><dt><span class="sect1"><a href="#notwork">7. Que faire si rien ne marche</a></span></dt><dt><span class="sect1"><a href="#morehack">8. Plus de bidouillage</a></span></dt><dt><span class="sect1"><a href="#concl">9. Conclusions</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="intro"/>1. Introduction</h2></div></div></div><p>
 
   Tout utilisateur de Linux a tôt ou tard été confronté à une situation 
   dans laquelle il semblait impossible d'avoir des touches 
   <span class="keycap"><strong>Backspace</strong></span> et <span class="keycap"><strong>Suppr</strong></span> qui 
   fonctionnent, en console comme sous X. Cette page explique ce  
   phénomène et y suggère des solutions. Dans l'ensemble, les notions 
   abordées ici sont indépendantes de la distribution utilisée : mais en 
   raison de l'étendue  des  différences  entre  les  fichiers  de 
   configuration du système  selon les distributions, j'essaierai de 
   donner au lecteur suffisamment  de  connaissances pour concevoir ses 
   propres réglages en cas de besoin.
   
</p><p>

Je suppose que la touche <span class="keycap"><strong>Backspace</strong></span> doit revenir d'un 
caractère puis effacer le caractère qui est placé sous le curseur. Au 
contraire, la touche <span class="keycap"><strong>Suppr</strong></span> doit effacer le caractère 
qui est placé sous le curseur, sans que ce dernier ne bouge. Si vous 
pensez que la fonction des deux touches doit être intervertie, en dépit 
du fait que la majorité des claviers fournisse une flèche orientée vers 
la <span class="emphasis"><em>gauche</em></span> (<span class="keycap"><strong></strong></span>) sur la touche 
<span class="keycap"><strong>Backspace</strong></span>, alors cette page ne vous donnera pas de 
solutions immédiates, mais vous pourrez néanmoins trouver très utiles 
les explications données ici.

</p><p>

Je suppose également que les réglages ne devraient modifier que des 
fichiers locaux (d'un utilisateur). Aucune partie standard de la 
distribution ne devrait être altérée. Enfin, ce document traite de la 
façon dont il faut configurer votre système pour que les applications 
reçoivent les bons événements clavier. Si une application décide 
d'interpréter de tels événements d'une façon idiosyncratique, le seul 
réglage possible est de reconfigurer l'application.

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Depuis la première version de ce petit guide pratique, les choses se 
sont encore embrouillées. Différentes distributions d'un même émulateur 
de terminal (par exemple <span class="application">gnome-terminal</span> tel 
qu'il est fourni par Red Hat 7.0, Helix Code/Ximian ou même Red 
Hat≥7.1) génèrent des séquences <acronym class="acronym">ASCII</acronym>. En 
raison de cette dissonnance, les actuelles bases de données de terminal  
correspondent encore moins aux émulateurs de terminal qu'elles sont 
supposées décrire. Afin de donner un fondement solide aux explications 
qui suivent, nous supposons foncièrement corrects les paramètres 
proposés par la <a class="ulink" href="http://www.debian.org/doc/debian-policy/" target="_top">politique relative au 
clavier adoptée par Debian</a>.
 
</p></td></tr></table></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="actions"/>2. Comment les touches sont converties en actions</h2></div></div></div><p>

Lorsque l'on appuie sur une touche, un nombre de composants matériels et 
logiciels coopèrent afin de garantir que la signification de la touche 
que l'on a dans l'esprit (par exemple, d'émettre un certain caractère) 
concorde avec le comportement effectif de la touche. Je me concentrerai 
sur l'aspect logiciel (dans la mesure où notre contrôle sur le matériel 
est inexistant), et en particulier, provisoirement, sur les événements 
clavier liés à la sortie en console.
 
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

L'appui sur une touche génère de purs <em class="firstterm">codes de 
balayage</em> 
(<span class="emphasis"><em><em class="firstterm">scancodes</em></em></span>) du clavier ; ces 
codes de balayage sont ensuite transformés en un <em class="firstterm">code 
touche</em> 
(<span class="emphasis"><em><em class="firstterm">keycode</em></em></span>). Sur un système 
i386, en général, la touche <span class="keycap"><strong>Backspace</strong></span> émet 
<span class="keycode">14</span> et la touche <span class="keycap"><strong>Suppr</strong></span> émet 
<span class="keycode">111</span>.

</p></li><li class="listitem"><p>

Les codes touche sont traduits par la bibliothèque clavier en un 
<em class="firstterm">symbole clavier</em> (<em class="firstterm"><span class="emphasis"><em>keyboard 
symbol : keysym</em></span></em>) eu moyen de la définition 
du clavier chargée par l'utilisateur. Si vous regardez dans votre base 
de données de clavier (par exemple dans <code class="filename">/lib/kbd/</code>), 
vous découvrirez plusieurs définitions pour plusieurs ordinateurs, 
différentes répartitions et probablement différentes interprétations des 
mêmes touches (par exemple, on peut vouloir que les deux touches 
<span class="keycap"><strong>Alt</strong></span> se comportent vraiment comme deux modificateurs 
distincts). La répartition du clavier de la console Linux assigne la 
touche symbolique <span class="keysym">Suppr</span> au code touche 14 et la touche 
symbolique <span class="keysym">Remove</span>au code touche 111. Cela peut sembler 
étrange, mais la console Linux émule un terminal VT100, et c'est ainsi 
que vont les choses ici-bas. <a href="#ftn.d0e253" class="footnote" id="d0e253"><sup class="footnote">[1]</sup></a>

</p></li><li class="listitem"><p>

Notre voyage touche déjà à sa fin. Les applications en console lisent 
des séquences <acronym class="acronym">ASCII</acronym>, pas des touches symboliques. La 
console doit donc lire des touches symboliques et les traduire en des 
séquences <acronym class="acronym">ASCII</acronym> chiffrant convenablement les touches. 
Bien sûr, cette opération doit être effectuée d'une manière qui soit 
compréhensible par les applications. En l'occurrence, dans la console 
Linux, la touche symbolique <span class="keysym">Suppr</span> est mappée vers le 
code <acronym class="acronym">ASCII</acronym> 127 (<span class="symbol">DEL</span>), la touche 
symbolique <span class="keysym">Remove</span> vers une séquence d'échappement 
adéquate, et la touche symbolique <span class="keysym">BackSpace</span> vers le 
code <acronym class="acronym">ASCII</acronym> 8 (<span class="symbol">BS</span>).

</p></li><li class="listitem"><p>

Enfin, nous devons en quelque sorte revenir sur nos pas et traduire les 
séquences <acronym class="acronym">ASCII</acronym> générées par chaque touche en 
capabilité de touche. Cet objectif est atteint par une <em class="firstterm">base 
de données de terminal</em>, qui contient, pour chaque type de 
terminal, le mappage inversé des séquences de caractères vers les 
capabilités de touche (qui sont essentiellemnt un sous-ensemble des 
touches symboliques). <a href="#ftn.d0e296" class="footnote" id="d0e296"><sup class="footnote">[2]</sup></a>

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Malheureusement, il y a deux bases de données de terminal 
<span class="quote">« <span class="quote">standard</span> »</span>, <span class="application">termcap</span> et 
<span class="application">terminfo</span>. Selon votre distribution, vous 
pouvez tout aussi bien utiliser l'une de ces deux là, ou la base de 
donnés peut encore dépendre de l'application. Nos explications se 
concentreront sur la base de données 
<span class="application">terminfo</span>, qui est plus récente, mais les 
réglages suggérés ici prennent les deux en considération.

</p></td></tr></table></div><p>

En l'occurrence, dans la console Linux, <span class="keycap"><strong>F1</strong></span> génère un 
échappement suivi de <code class="literal">[[A</code>, qui peut être traduit par 
la capabilité <code class="literal">key_f1</code> en regardant dans l'entrée de la 
base de données du terminal de la console (essayez <span class="command"><strong>infocmp 
linux</strong></span> si vous voulez regarder l'entrée). On peut trouver une 
très bonne explication des bases de données du terminal dans le manuel 
du <span class="application">termcap</span> de <acronym class="acronym">GNU</acronym>. En 
général, les applications Linux utilisent la base de données 
<span class="application">terminfo</span>, plus récente, contenue dans le 
paquetage <span class="application">ncurses</span>.

</p><p>

D'une façon qui n'est peut-être pas si étonnante, l'entrée de terminfo 
en console Linux mappe <span class="symbol">DEL</span> vers la capabilité 
<code class="literal">kbs</code> (touche backspace), et Échap suivi de 
<code class="literal">[3~</code> vers la capabilité <code class="literal">kdch1</code> 
(touche <span class="quote">« <span class="quote">delete-one-char</span> »</span>). Même si vous pouvez trouver 
étrange que la touche <span class="keycap"><strong>Backspace</strong></span> émette un 
<span class="symbol">DEL</span>, la base de données de terminal remet tout à sa 
place, et les applications qui se comportent correctement interpréteront 
<span class="symbol">DEL</span> comme la capabilité <code class="literal">kbs</code>, 
effaçant ainsi le caractère situé à gauche du curseur.

</p></li></ol></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="why"/>3. Pourquoi ça ne marche pas (toujours)
</h2></div></div></div><p>

J'espère qu'au point où nous en sommes, le problème de base est clair : 
il y a un goulet d'étranglement entre le clavier et les applications 
console, à savoir, le fait qu'ils ne puissent communiquer que par 
séquences <acronym class="acronym">ASCII</acronym>. Les touches spéciales sont ainsi 
d'abord traduites de touches symboliques en séquences, puis de séquences 
en capabilités de touche. Comme des consoles différentes ont des idées 
divergentes sur l'aspect que doit prendre cette traduction, nous avons 
besoin d'une base de données de terminal. Le système marcherait 
parfaitement, à un petit problème près : la base de données n'est pas 
toujours configurée correctement, et tout le monde ne l'utilise pas.

</p><p>

Les applications peuvent avoir un moyen de savoir quelle entrée de base 
de données utiliser : ce qui le rend réalisable, c'est une configuration 
adéquate de la variable d'environnement <code class="envar">TERM</code>. Dans 
certains cas, il y a une dissonnance entre l'émulateur de terminal et le 
contenu de l'entrée de la base de données suggérée par 
<code class="envar">TERM</code>.

</p><p>

En outre, de nombreuses applications <span class="emphasis"><em>n'utilisent 
pas</em></span> la base de données de terminal (ou au moins pas 
entièrement), et considèrent les codes <acronym class="acronym">ASCII</acronym> 
<span class="symbol">BS</span> et <span class="symbol">DEL</span> avec un sens qu'elles ne 
font que présumer : par conséquent, sans regarder dans la base de 
données, elles leur assignent une signification (en général, bien sûr, 
la signification est d'effacer le caractère situé avant ou sous le 
curseur). Ainsi notre beau schéma est complètement détruit (tout 
utilisateur de Linux en fait l'amère expérience). En l'occurrence, 
<span class="application">bash</span> suppose que <span class="symbol">DEL</span> doit 
faire un <span class="action">backward-delete-char</span>, c'est-à-dire backspace.

</p><p>

Partant, tout fraîchement installé, il permet que la touche 
<span class="keycap"><strong>Backspace</strong></span> fonctionne en console comme on peut s'y 
attendre, mais uniquement à cause de la succession de deux renversements 
! Bien sûr, la touche <span class="keycap"><strong>Suppr</strong></span> ne fonctionne pas. La cause 
de ce phénomène est que <span class="application">bash</span> ne cherche pas 
dans la base de données de terminal la capabilité 
<code class="literal">kdch1</code>.

</p><p>

Juste pour illustrer la façon dont les choses se sont embrouillées, 
considérez le script <span class="command"><strong>fix_bs_and_del</strong></span> fourni avec la 
distribution Red Hat (et peut-être d'autres). Il assigne à la volée la 
touche symbolique <span class="keysym">BackSpace</span> à la touche 
<span class="keycap"><strong>Backspace</strong></span>, et la touche symbolique 
<span class="keysym">Suppr</span> à la touche <span class="keycap"><strong>Suppr</strong></span>. Désormais le 
shell fonctionne ! Malheureusement, tous les programmes qui se 
reposaient sur l'association correcte de la génération de touches 
symboliques et de mappages de la base de données de terminal ne marchent 
plus du tout maintenant, car la touche symbolique <span class="keysym">Suppr</span> 
est mappée par la base de données terminfo vers <span class="symbol">DEL</span>, et 
celui-ci vers la capabilité de touche <code class="literal">kbs</code>, de telle 
sorte que dans de tels programmes, les deux touches produisent un 
backspace.

</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="X"/>4. X</h2></div></div></div><p>

Sous X, la situation n'est pas vraiment différente. Il y a juste une 
couche différente, à savoir que le système X Window traduit les 
scancodes en ses propres touches symboliques, qui sont bien plus variées 
et plus précises que celles de la console, et les fournit aux 
applications (au fait, c'est la raison pour laquelle 
<span class="application">XEmacs</span> n'est pas tourmenté par ce problème : 
X traduit le code touche 22 par la touche symbolique 
<span class="keysym">BackSpace</span> et le code touche 107 par la touche 
symbolique <span class="keysym">Suppr</span>, puis l'utilisateur peut facilement 
assigner à ces touches symboliques le comportement désiré). Bien sûr, un 
programme d'émulation de terminal (en général un émulateur de VT100 dans 
le monde X) doit traduire les touches symboliques X en séquences ASCII, 
de telle sorte que nous en revenons à notre douloureuse affaire.

</p><p>

Plus précisément, en général <span class="application">xterm</span> se 
comporte exactement comme la console (i.e. il émet les mêmes séquences 
<acronym class="acronym">ASCII</acronym>), mais, par exemple, 
<span class="application">gnome-terminal</span> dans la Red Hat &lt;7.0 or 
≥7.1 émet <span class="symbol">BS</span> pour <span class="keycap"><strong>Backspace</strong></span> et 
<span class="symbol">DEL</span> pour <span class="keycap"><strong>Suppr</strong></span>. Là où ça commence à 
devenir drôle, c'est quand vous vous rendez compte qu'ils utilisent par 
défaut la <span class="emphasis"><em>même</em></span> entrée de base de donnée de terminal 
; ainsi, le fait que la capabilité <code class="literal">kbs</code> soit associée 
à un <span class="symbol">DEL</span> <acronym class="acronym">ASCII</acronym> fait que toutes les 
applications qui se comportent correctement produisent le même 
comportement pour les touches <span class="keycap"><strong>Backspace</strong></span> et 
<span class="keycap"><strong>Suppr</strong></span> dans <span class="application">gnome-terminal</span>. 
La simple commande

</p><pre class="screen">
bash$ export TERM=gnome
</pre><p>

peut résoudre le problème, dans ce cas, pour les applications qui se 
comportent correctement. Bon, pas toujours, parce qu'il pourrait manquer 
une entrée appelée <code class="literal">gnome</code> à votre système dans la base 
de données de terminal, en particulier s'il n'est pas parfaitement à 
jour.

</p><p>

Dans certains cas, ce n'est pas toujours une solution : si, par exemple, 
vous avez une distribution Red Hat 7.0, votre 
<span class="application">gnome-terminal</span> se comporte comme une console. 
Mais attention : si vous avez mis à jour votre bureau en utilisant la 
distribution Helix, alors, votre 
<span class="application">gnome-terminal</span> se comporte comme une Red Hat 
antérieure à la version 7.0.

</p><p>

À la seule fin de faciliter la compréhension de ce qui va suivre, 
appelons <em class="firstterm">standard</em> un émulateur de VT100 se 
comportant comme la console, et <em class="firstterm">non-standard</em> un 
qui émet <span class="symbol">BS</span> pour <span class="keycap"><strong>Backspace</strong></span> et 
<span class="symbol">DEL</span> pour <span class="keycap"><strong>Suppr</strong></span><a href="#ftn.d0e555" class="footnote" id="d0e555"><sup class="footnote">[3]</sup></a>.

</p><p>

Ainsi, par exemple, <span class="application">xterm</span> a toujours été 
standard dans la distribution Debian, tandis qu'il a oscillé à de 
nombreuses reprises entre les états standard et non-standard dans la Red 
Hat ; le comportement de <span class="application">gnome-terminal</span> est 
encore plus erratique. Voir <a class="xref" href="#morehack" title="8. Plus de bidouillage">Section 8, « Plus de bidouillage »</a> pour quelques 
renseignements sur la façon de rendre standard un terminal non-standard.

</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="writing"/>5. Ce que vous devriez faire quand vous écrivez des 
applications</h2></div></div></div><p>

Lorsque vous écrivez une application en console, soyez gentils pour 
l'utilisateur et essayez de comprendre ce qui vient de l'entrée standard 
au moyen de la procédure de restauration suivante :
 
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

ouvrez la bonne entrée <span class="application">terminfo</span> et essayez de 
traiter la séquence afin de découvrir si elle a une signification 
particulière dans le terminal courant ; si c'est le cas, utilisez 
la sémantique <span class="application">terminfo</span> ;

</p></li><li class="listitem"><p>

utilisez la signification <acronym class="acronym">ASCII</acronym> voulue sur les 
contenus de ligne, les retours chariot, les tabulations et, bien sûr, 
<span class="symbol">BS</span> et <span class="symbol">DEL</span>. Croiser les doigts pourrait 
également se révéler utile.

</p></li></ol></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="system"/>6. 

    Ce que vous devriez faire sur votre système

</h2></div></div></div><p>

Remarquez encore que le problème qui égare souvent les gens qui essayent 
de régler leur système est qu'il règlent les choses au mauvais endroit. 
Puisque les parties qui fonctionnent ne fonctionnent souvent que par 
chance, essayer de régler le système en supposant que quelque chose est 
cassé mènera souvent à changer des paramètres corrects en paramètres 
incorrects.

</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e601"/>6.1. Ce qui doit être fait</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="deviance"/>6.1.1. La détection des comportements non-standards
</h4></div></div></div><p>

La première étape d'une solution propre est de savoir exactement quels 
terminaux sont standards et lesquels ne le sont pas. En général, ils se 
comportent tous comme la console, et dans ce cas les modifications à 
faire pour que tout fonctionne bien sont minimes. Si, cependant, vous 
avez un terminal non-standard (par exemple, une version non-standard de 
<span class="application">gnome-terminal</span>), vous aurez à le traiter 
d'une façon spécifique.

</p><p>

Le programme suivant, composé d'une ligne de C,

</p><pre class="programlisting" width="70">
void main(void) {int c; while(c = getchar()) printf("%d 0x%02X\n", c, c);}
</pre><p>

pourrait vous aider. Mettez cette ligne dans un fichier intitulé 
<code class="filename">ascii.c</code>, compilez-le avec <span class="command"><strong>gcc ascii.c -o 
ascii</strong></span>, tapez <span class="command"><strong>./ascii</strong></span> et appuyez sur une 
touche suivie de <span class="keycap"><strong>Entrée</strong></span>. Le programme affichera les 
codes décimal et hexadécimal de la séquence <acronym class="acronym">ASCII</acronym> 
produite (vous pourriez d'abord vouloir faire un <span class="command"><strong>stty erase 
^-</strong></span> pour obtenir vraiment tous les codes). Vous pouvez 
désormais voir facilement ce que la touche <span class="keycap"><strong>Backspace</strong></span> 
fait : si elle émet un <span class="symbol">DEL</span> (127), vous avez un 
émulateur standard, si elle émet un <span class="symbol">BS</span> (8), vous en 
avez un non-standard.

</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e645"/>6.1.2. Distinguer les émulateurs
</h4></div></div></div><p>

Si vous avez un émulateur de terminal non-standard, vous devez le 
distinguer des émulateurs standards. Théoriquement, cela ne devrait pas 
être un problème parce qu'il y a différentes entrées dans la base de 
données de terminal avec différentes séquences (l'entrée utilisée dépend 
de la valeur de la variable <code class="envar">TERM</code>).

</p><p>

Nous en venons ici au fait que l'entrée <code class="literal">gnome</code> doit 
être utilisée pour tous les émulateurs de VT100 non-standards, et 
l'entrée<code class="literal">xterm</code> pour les émulateurs standards. C'est 
avec de nombreuses distributions (sauf quelques cas comme la Red Hat 
≤5.0, où l'entrée <code class="literal">xterm</code> est non-standard).

</p><p>

Cependant, <span class="application">gnome-terminal</span> utilise par défaut 
la même entrée que <span class="application">xterm</span> ; ainsi, si 
l'un est non-standard et que l'autre est standard, vous devrez trouver 
un moyen de le leur dire séparément. L'option 
<code class="literal">termname</code> de <span class="application">gnome-terminal</span> 
permet à l'utilisateur de choisir la variable <code class="envar">TERM</code>. 
Cependant, dans d'anciennes versions de 
<span class="application">gnome-terminal</span>, l'option ne fonctionne pas. 
En outre, il n'est parfois pas facile de modifier la façon dont 
<span class="application">gnome-terminal</span> est démarré.

</p><p>

C'est une bonne idée que d'exploiter ici le fait que 
<span class="application">gnome-terminal</span> règle la variable 
<code class="envar">COLORTERM</code> sur <code class="literal">gnome-terminal</code>. Ainsi, 
par le simple ajout d'un test aux fichiers de configuration du shell, 
nous pouvons régler la variable <code class="envar">TERM</code>.

</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e701"/>6.1.3. Réglage des bases de données de terminal
</h4></div></div></div><p>

Notre problème est désormais qu'il pourrait manquer à la base de données 
de terminal une entrée <code class="literal">gnome</code> pour les terminaux non 
standards (c'est le cas dans un certain nombre de versions de 
<span class="application">termcap</span> et de 
<span class="application">terminfo</span>). Les bases de données 
<span class="application">terminfo</span> récentes ont une entrée 
<code class="literal">gnome</code>, mais, dans certains cas, comme 
<span class="application">gnome-terminal</span> se comporte dans l'ensemble 
comme <span class="application">xterm</span>, à nos deux fameuses touches 
près, il est possible de générer automatiquement une entrée flambant 
neuve et correcte.

</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e727"/>6.1.4. Réglage du comportement du shell
</h4></div></div></div><p>

La bibliothèque <span class="application">readline</span>, utilisée par 
<span class="application">bash</span> et de nombreux autres programmes pour 
lire la ligne d'entrée, peut être personnalisée de façon à reconnaître 
les séquances spécifiques de caractères. La personnalisation peut 
également dépendre de la variable <code class="envar">TERM</code>, si bien qu'une 
fois que l'on peut distinguer les terminaux, on peut régler finement le 
clavier.

</p><p>

Par ailleurs, si vous voulez que <span class="application">less</span> et 
autres applications en mode texte marchent correctement, vous devez 
convaincre le shell du fait que sous un émulateur de terminal 
non-standard, le caractère d'effacement soit <span class="symbol">BS</span>, et pas 
<span class="symbol">DEL</span> (dans le cas contraire, la touche 
<span class="keycap"><strong>Backspace</strong></span> émet déjà <span class="symbol">DEL</span>, donc nous 
n'avons rien à faire). On peut le faire à l'aide de la commande 
<span class="command"><strong>stty</strong></span>.

</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e761"/>6.2. Comment le faire</h3></div></div></div><div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Caution"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Attention]" src="images/caution.png"/></td><th align="left">Attention</th></tr><tr><td align="left" valign="top"><p>

Ces réglages peuvent avoir quelques effets pervers. D'abord, ils ne 
marchent que pour les terminaux spécifiés. Ensuite, en théorie (mais il 
est peu probable que cela arrive) ils pourraient embrouiller la 
bibliothèque <span class="application">readline</span> sur d'autres terminaux. 
Mais ces deux limitations sont en général sans inoffensives.

</p></td></tr></table></div><p>

Tout d'abord, vérifiez avec <span class="command"><strong>infocmp gnome</strong></span> si vous 
avez déjà une entrée <code class="literal">gnome</code> dans votre base de données 
<span class="application">terminfo</span> (nous réglerons plus tard le cas de 
<span class="application">termcap</span>). Si l'entrée n'existe pas, la 
commande suivante

</p><pre class="programlisting">
bash$ tic &lt;(infocmp xterm |\
sed 's/xterm|/gnome|/' |\
sed 's/kbs=\\177,/kbs=^H,/' |\
sed 's/kdch1=\\E\[3~,/kdch1=\\177,/')
</pre><p>

en créera une correcte dans <code class="filename">~/.terminfo</code>. Si la même 
commande est lancée par l'administrateur, elle générera l'entrée dans la 
base de données globale (vous pouvez transgresser ce comportement en 
réglant <code class="envar">TERMINFO</code> sur <code class="filename">~/.terminfo</code>). 
Notez que si votre entrée <code class="literal">xterm</code> est déjà non-standard 
(par exemple, vous avez une Red Hat ≤5.0), le script la copiera sans 
la changer, et c'est précisément ce que nous voulons.

</p><p>

Ajoutez maintenant le fragment suivant à 
<code class="filename">~/.inputrc</code><a href="#ftn.addinputrc" class="footnote" id="addinputrc"><sup class="footnote">[4]</sup></a> :

</p><pre class="programlisting">
"\e[3~": delete-char
</pre><p>

Cette commande apprend à la bibliothèque 
<span class="application">readline</span> comment gérer votre touche standard 
<span class="keycap"><strong>Suppr</strong></span> pour des émulateurs standards, et avec un peu de 
chance, cela ne devrait pas interférer avec d'autres terminaux. 
Cependant, nous devons maintenant expliquer à la bibliothèque la 
signification du caractère <span class="symbol">DEL</span> dans les terminaux 
non-standards, en ajoutant par exemple

</p><pre class="programlisting">
$if term=gnome
DEL: delete-char
Meta-DEL: kill-word
"\M-\C-?": kill-word
$endif
</pre><p>

à <code class="filename">~/.inputrc</code>. Si <span class="application">xterm</span> 
est non-standard également, vous devez ajouter trois autres lignes pour 
lui. Inversement, si tous les terminaux sont standards, cette partie 
n'est pas requise. Toutes ces modifications peuvent être étendues en 
changeant le fichier <code class="filename">/etc/inputrc</code>.

</p><p>

Remarquez que les assignements conditionnels font que les terminaux 
non-standards fonctionnent <span class="emphasis"><em>pour autant que la variable 
<code class="envar">TERM</code> soit configurée correctement</em></span>. Pour le 
garantir, il y a plusieurs techniques. D'abord, comme la valeur par 
défaut de la variable <code class="envar">TERM</code> est, pour 
<span class="application">gnome-terminal</span>, <code class="literal">xterm</code>, si 
tous les terminaux sont standards, nous n'avons rien à faire. Si, 
cependant, un terminal qui utilise par défaut l'entrée 
<code class="literal">xterm</code> est non-standard, vous devez trouver un moyen 
de régler correctement la variable <code class="envar">TERM</code> ; supposez 
par exemple que ceci est vrai de 
<span class="application">gnome-terminal</span>.

</p><p>

Le moyen le plus simple d'obtenir cet effet est de démarrer 
<code class="literal">--termname=gnome</code>, par exemple en réglant correctement 
la ligne de commande dans le lanceur de la barre d'outils 
<acronym class="acronym">GNOME</acronym>. Si vous avez cependant une version plus 
ancienne et que cette méthode ne fonctionne pas, vous pouvez ajouter les 
lignes

</p><pre class="programlisting">
if [ "$COLORTERM" = "gnome-terminal" ]
then
export TERM=gnome
fi
</pre><p>

à votre fichier de configuration 
<code class="filename">~/.bashrc</code><a href="#ftn.d0e887" class="footnote" id="d0e887"><sup class="footnote">[5]</sup></a>. L'assignement n'est 
exécuté que sous <span class="application">gnome-terminal</span>, et règle 
correctement la variable <code class="envar">TERM</code>.

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Régler le terminal sur <code class="literal">gnome</code> pourrait empêcher 
<span class="command"><strong>ls</strong></span> d'utiliser des couleurs, car de nombreuses 
versions de <span class="command"><strong>ls</strong></span> ignorent que 
<span class="application">gnome-terminal</span> supporte les couleurs. Afin 
d'éviter ce problème, créez un fichier de configuration 
<code class="filename">~/.dircolors</code> avec <span class="command"><strong>dircolors 
--print-database &gt;~/.dircolors</strong></span>, et ajoutez une ligne 
<strong class="userinput"><code>TERM=gnome</code></strong> au fichier de configuration.

</p></td></tr></table></div><p>

Nous allons maintenant générer à la volée une entrée 
<span class="application">termcap</span> qui convienne pour les émulateurs de 
terminaux non-standards ; on peut le faire comme suit, toujours 
dans <code class="filename">~/.bashrc</code> :

</p><pre class="programlisting">
if [ "$TERM" = "gnome" ]
then
export TERMCAP=$(infocmp -C gnome | grep -v '^#' | \
tr '\n\t' '  ' | sed 's/\\  //g' | sed s/::/:/g)
fi
</pre><p>

Enfin, nous devons expliquer au périphérique de terminal quel caractère 
est généré par la touche d'effacement. Comme en général la touche 
d'effacement est supposée faire un retour arrière, il y a une astuce 
sympathique et efficace tirée du <code class="filename">/etc/bashrc</code> de Red 
Hat : ajoutez ceci à <code class="filename">~/.bashrc</code> :

</p><pre class="programlisting">
KBS=$(tput kbs)
if [ ${#KBS} -eq 1 ]; then stty erase $KBS; fi
</pre><p>

C'est une idée toute simple : nous lisons la capabilité 
<code class="literal">kbs</code> à partir de la base de données de terminal, et 
réglons le caractère d'effacement sur sa valeur si c'est un caractère 
simple (ce qui est le cas aussi bien dans les terminaux standards que 
dans les non-standards).

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Certaines distributions peuvent avoir des réglages déjà en place dans le 
fichier de configuration <code class="filename">/etc/inputrc</code>, valable à 
l'échelle du système tout entier. Dans ce cas, vous pouvez éliminer les 
lignes redondantes de votre <code class="filename">~/.inputrc</code>.

</p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e958"/>6.3. Réglage de <span class="application">tcsh</span></h3></div></div></div><p>

Dans le cas de <span class="application">tcsh</span>, les réglages vont tous 
dans <code class="filename">~/.tcshrc</code>, et suivent la même logique que pour 
<span class="application">bash</span> :

</p><pre class="programlisting" width="80">
bindkey "^[[3~" delete-char

if ($?COLORTERM) then
   if ($COLORTERM == "gnome-terminal") then
  setenv TERM gnome
   endif
endif

if ($?TERM) then
   if ($TERM == "gnome") then
  setenv TERMCAP \
   "`infocmp -C gnome | grep -v '^#' | tr '\n\t' '  ' | sed 's/\\  //g' | sed s/::/:/g`"
  bindkey "^?" delete-char
  bindkey "^[^?" delete-word
  bindkey "\377" delete-word
   endif
endif

set KBS=`tput kbs`
if (${%KBS} == 1) then 
   stty erase $KBS
endif
</pre><p>

La seconde partie doit être répétée pour chaque terminal non-standard. 
Bien sûr, si une entrée <span class="application">termcap</span> existe déjà, 
il n'est pas nécessaire de la générer.

</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="notwork"/>7. Que faire si rien ne marche</h2></div></div></div><p>

La première chose à faire est de comprendre quels codes 
<acronym class="acronym">ASCII</acronym> sont produits par une certaine touche utilisant 
le <a class="link" href="#deviance" title="6.1.1. La détection des comportements non-standards">programme d'une ligne de C</a>.

</p><p>

Une fois que vous savez quelles séquences sont produites, vous devez 
vérifier l'entrée <span class="application">terminfo</span> en cours avec 
<span class="command"><strong>infocmp</strong></span> (ne soyez pas effrayé par la somme des 
informations affichées !) et assurez-vous que les capabilités 
<code class="literal">kbs</code> et <code class="literal">kdch1</code> correspondent aux 
bonnes séquences (c'est-à-dire celles produites par les touches 
respectives). En outre, vous devez vérifier avec <span class="command"><strong>stty 
-a</strong></span> que le caractère d'effacement est celui qui est émis par la 
touche <span class="keycap"><strong>Backspace</strong></span> (remarquez que <code class="literal">^H</code> 
représente <span class="symbol">BS</span> tandis que <code class="literal">^?</code> 
représente <span class="symbol">DEL</span>).

</p><p>

S'il y a dissonnance, il peut y avoir plusieurs raisons : mauvais 
contenu de la variable <code class="envar">TERM</code>, mauvaise entrée de la base 
de données de terminal, mauvaise émulation de terminal sous X. J'espère 
qu'arrivé à ce point, vous avez suffisamment d'informations pour creuser 
la solution par vous-même.

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Si différentes applications se comportent différemment, il est possible 
que certaines d'entre elles utilisent correctement la base de données de 
terminal, et d'autres non. Rappelez-vous que le fait que les touches 
adoptent le bon comportement dans une application donnée ne signifie pas 
que l'application utilise correctement la base de données de 
terminal— elles peuvent ne fonctionner que par chance. Si vous 
voulez avoir une vérification indépendante, vous pouvez essayer de voir 
si l'éditeur <a class="ulink" href="http://ne.dsi.unimi.it/" target="_top"><span class="command"><strong>ne</strong></span></a> fonctionne 
ou non. <span class="command"><strong>ne</strong></span> utilise toutes les capabilités du 
terminal, y compris <code class="literal">kbs</code> et <code class="literal">kdch1</code>, 
et n'utilise la signification désirée qu'en dernier recours.

</p></td></tr></table></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="morehack"/>8. Plus de bidouillage</h2></div></div></div><p>

Ainsi, vous n'êtes pas satisfait par toutes ces informations. Dans ce 
cas, vous pouvez faire encore plus de bidouillage sur la sortie de 
Backspace et de Suppr, en ayant recours aux commandes qui conviennent 
pour observer ou régler la façon dont X et la console traitent les 
touches.

</p><p>

Il peut arriver que, pour quelque raison, ce que j'ai dit sur <a class="link" href="#X" title="4. X">X</a> ne soit pas vrai, c'est-à-dire que X ne traduise 
<span class="emphasis"><em>pas</em></span> le code touche 22 en touche symbolique 
<span class="keysym">BackSpace</span>, ni le code touche 107 en touche symbolique 
<span class="keysym">Suppr</span> (ou même que, sur votre clavier particulier, les 
codes touche associés à <span class="keycap"><strong>Backspace</strong></span> et 
<span class="keycap"><strong>Suppr</strong></span> ne soient pas 22 et 107). Afin de vous en 
assurer, vous devez utiliser <span class="command"><strong>xev</strong></span>, une application X 
simple qui affichera le code touche et la touche symbolique associés à 
la touche que vous enfoncez. Si quelque chose va de travers, il y a 
plusieurs façons de régler le problème : le moyen simple et 
provisoire est d'utiliser <span class="command"><strong>xmodmap</strong></span>, une commande qui 
vous permet de changer de nombreux réglages relatifs au traitement du 
clavier par X. Par exemple,

</p><pre class="screen">
xmodmap -e "keycode 22 = BackSpace"
xmodmap -e "keycode 107 = Delete"
</pre><p>

réglera correctement les touches symboliques (en supposant que 22 et 107 
sont les codes touches corrects pour vous). Dans le cas où vous voudriez 
opérer quelques modifications sur le long terme, vous pouvez jouer avec 
les ressources <code class="varname">vt100.backArrowKey</code>, 
<code class="varname">vt100.translations</code> et <code class="varname">ttyModes</code> de 
<span class="application">xterm</span> (et les applications de terminal 
similaires) dans le fichier de configuration 
<code class="filename">~/.Xdefaults</code>. Une possibilité, par exemple, 
consiste en ceci :

</p><pre class="programlisting">
XTerm.VT100.Translations: \
&lt;Key&gt;BackSpace: string(0x7F)\n\
&lt;Key&gt;Delete:string("\033[3~")
</pre><p>

Vous devriez jeter un coup d'œil dans la page de manuel de
<span class="application">xterm</span> pour obtenir plus d'informations.

</p><p>

Le programme faisant pour la console ce que <span class="command"><strong>xev</strong></span> fait 
pour X est <span class="command"><strong>showkeys</strong></span> : il renverra les codes 
touche de console des touches que vous enfoncez. En combinant 
<span class="command"><strong>showkeys</strong></span> avec <span class="command"><strong>dumpkeys</strong></span>, qui 
affichera sur la sortie standard le mappage clavier de la console, vous 
pouvez facilement régler les dissonnances entre les codes touche et les 
touches symboliques. Parallèlement à <span class="command"><strong>xmodmap</strong></span>, 
<span class="command"><strong>loadkeys</strong></span> peut ensuite régler des associations 
isolées, ou charger des mappages clavier entièrement nouveaux. Avec 
cela, vous pouvez même changer la chaîne associée à une touche 
symbolique donnée. Si vous voulez enregistrer ces modifications, vous 
devrez définir un nouveau mappage clavier pour la console (vous devriez 
jeter un coup d'œil sur les mappages clavier du système, en 
général situés dans <code class="filename">/lib/kbd</code>).

</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="concl"/>9. Conclusions</h2></div></div></div><p>

Les réglages suggérés ici devraient résoudre une grande étendue de 
problèmes liés à l'effacement du texte que vous avez écrit (cependant, 
ils n'aident pas à en créer du nouveau <code class="literal">:)</code>).

</p><p>

Il y a un petit bug dans le réglage tout entier : si vous utilisez 
l'astuce du <code class="envar">COLORTERM</code> et que vous démarrez 
<span class="application">xterm</span> depuis 
<span class="application">gnome-terminal</span>, le premier verra 
<code class="envar">TERM</code> se régler sur <code class="literal">gnome</code>. Cet 
inconvénient est, bien sûr, en général complètement inoffensif, et n'a 
pas lieu si vous avez tout simplement démarré 
<span class="application">gnome-terminal</span> avec un <code class="envar">TERM</code> 
convenablement réglé.

</p><p>

Un autre problème non trivial, et qui n'a pas vraiment de solution, est 
celui qui concerne la connexion à distance : si vous vous connectez 
sur un hôte dont la base de données de terminal est incohérente avec la 
vôtre, vous aurez à configurer les choses à la main.
 
</p><p>

Enfin, il faut observer que les réglages ne marcheront pas pour des 
applications cassées (par exemple, des applications ignorant la 
capabilité de touche <code class="literal">kbs</code>). Il n'y a pas grand chose à 
faire dans ce cas, car régler le problème d'une application cassée 
présente de fortes chances de casser toutes celles qui se comportent 
correctement.

</p></div><div class="footnotes"><br/><hr width="100" align="left"/><div id="ftn.d0e253" class="footnote"><p><a href="#d0e253" class="para"><sup class="para">[1] </sup></a>Cette affirmation a été 
confirmée et discutée plusieurs fois dans les commentaires sur ce 
document. Si vous avez quelque information décisive à ce sujet, prière 
de m'écrire.</p></div><div id="ftn.d0e296" class="footnote"><p><a href="#d0e296" class="para"><sup class="para">[2] </sup></a>Certains programmes s'en remettent 
au pilote du terminal pour l'édition de la ligne d'entrée, comme 
l'effacement de caractères ou de mots. Avec <span class="command"><strong>stty</strong></span>, 
vous pouvez dire au pilote du terminal quel caractère il doit utiliser 
pour effacer le caractère placé à gauche du curseur (le caractère 
<em class="firstterm">erase</em>). Vous pouvez contrôler vos paramètres 
courants avec <span class="command"><strong>stty a</strong></span> et les choisir avec 
<span class="command"><strong>stty erase 
<em class="replaceable"><code>character</code></em></strong></span>.</p></div><div id="ftn.d0e555" class="footnote"><p><a href="#d0e555" class="para"><sup class="para">[3] </sup></a>Même ces 
définitions ont été confirmées et discutées de nombreuses fois au sujet 
de ce document. Si vous avez une information décisive sur ce sujet, vous 
êtes prié de m'écrire.</p></div><div id="ftn.addinputrc" class="footnote"><p><a href="#addinputrc" class="para"><sup class="para">[4] </sup></a> Sur les 
anciennes versions de <span class="application">bash</span>, vous devez vous 
souvenir de régler correctement <code class="envar">INPUTRC</code>, par exemple en 
ajoutant

</p><pre class="programlisting">
export INPUTRC=~/.inputrc
</pre><p>

à votre <code class="filename">~/.profile</code> (ou au fichier, quel qu'il soit, 
qui n'est lu que par les shells de login).

</p></div><div id="ftn.d0e887" class="footnote"><p><a href="#d0e887" class="para"><sup class="para">[5] </sup></a>Plus précisément, au 
fichier de configuration du shell qui est lu dans n'importe quel shell, 
pas seulement dans les shells de login. Le bon fichier dépend de la 
séquence de démarrage de votre 
<span class="application">bash</span>.</p></div></div></div></body></html>