/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"><<a class="email" href="mailto:vigna@acm.org">vigna@acm.org</a>></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 <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 <(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 >~/.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: \
<Key>BackSpace: string(0x7F)\n\
<Key>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>
|