web-dev-qa-db-fra.com

Ne peut pas obtenir le clavier pour fonctionner correctement dans le mastic

J'utilise le mastic sur Win7 en tant que client, pour vous connecter à SSH sur un serveur Debian. Mais j'ai rencontré un étrange problème sur les comportements du clavier sur la console de mastic.

J'ai remarqué que c'est à propos de la configuration du clavier dans le mastic. Après la lecture le manuel de mastic , j'ai fait avec succès backspace clé pour fonctionner, mais j'ai toujours des problèmes d'environ ESC, flèches, home et end, et F1-F12 clés.

Here is my keyboard config in PuTTY

Ici, je énumère leurs comportements ci-dessous. Il semble que l'intimement de ESC est la cause fondamentale.

  • ESC => ^ [
  • up => ^ [oa
  • down => ^ [OB
  • right => ^ [oc
  • left => ^ [od
  • home => ^ [[1 ~
  • end => ^ [4 ~
  • F1 => ^ [[11 ~
  • F12 => ^ [[24 ~

================================================

Ici, je vais montrer pourquoi je pense que l'ESC est une incidence sur:

Lorsque dans une console SSH de travail correctement, j'appuie esc, il ne devrait rien montrer.

(before)
root@somemachine:
(after)
root@somemachine:

Mais dans cette console SSH malfonctionnelle, j'appuie esc, il montre ^[.

(before)
root@somemachine:
(after)
root@somemachine: ^[

J'ai couru od -C sur la console SSH et appuyé sur esc, ils ont donné la même sortie.

(normal one)
root@opengg:~# od -c
^[

(malfunctioning one)
$ od -c
^[
7
Rufus

Le problème est la valeur de la variable de l'environnement terme ne correspond pas aux caractéristiques de terminal configurées - spécifiquement les paramètres "Touches Home and End" et "Touches de fonctionnement et clavier".

Ceux-ci peuvent être difficiles à obtenir.

Ce qui est attendu par le serveur Debian.

Taper infocmp -I Pour voir ce que votre ordinateur attend.

$ infocmp -I 
#       Reconstructed via infocmp from file: /usr/share/terminfo/a/ansi
ansi|ansi/pc-term compatible with color,
        …
        rmul=\E[m, il1=\E[L, kbs=^H, kcbt=\E[Z, kcud1=\E[B,
        khome=\E[H, kich1=\E[L, kcub1=\E[D, kcuf1=\E[C, kcuu1=\E[A,
        …

khome=\E[H signifie que le serveur prévoit de recevoir trois caractères ESC [ H quand vous appuyez sur Home.

Vous pouvez regarder ce qui est attendu pour d'autres valeurs de terme

$ infocmp -I xterm
#       Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm
xterm|X11 terminal emulator,
        …
        is2=\E[!p\E[?3;4l\E[4l\E>, il1=\E[L, ka1=\EOw, ka3=\EOu,
        kb2=\EOy, kbs=\177, kbeg=\EOE, kc1=\EOq, kc3=\EOs,
        kdch1=\E[3~, kcud1=\EOB, kend=\E[4~, kent=\EOM, kf1=\EOP,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
        kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
        kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR,
        kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
        kf9=\E[20~, khome=\E[1~, kich1=\E[2~, kcub1=\EOD,
        kmous=\E[M, knp=\E[6~, kpp=\E[5~, kcuf1=\EOC, kcuu1=\EOA,
        …

Ici, vous pouvez voir que si TERM a été défini sur xterm, ce serveur s'attendrait à recevoir ESC [ 1 ~ lorsque Home est pressé (khome)

Si ce qui précède est trop cryptique, essayez infocmp -L

Vous pouvez aussi faire des choses comme tput khome | hexdump -C Si vous connaissez les noms de capacité Terminfo pour les clés qui vous intéressent.

$ tput khome | hexdump -C
00000000  1b 5b 48                                          |.[H|

ou sans doute plus lisible

$ tput khome | hexdump -e '12/1 "%3_u" "\n"'
esc  [  H

ou pour voir quel paramètre un autre terme pourrait signifier

$ TERM=xterm tput khome | hexdump -e '12/1 "%3_u" "\n"'
esc  [  1  ~

si la sortie est vide, le serveur pense que le type de terminal (terme) n'a pas cette touche.

Ce qui est effectivement envoyé par mastic.

Pour voir ce qui Home En réalité envoie, exécutez vi, appuyez sur i (pour le mode insertion) Appuyez sur Ctrl+V puis appuyez Home et appuyer sur Esc pour quitter le mode insertion.

Solution

Ajustez la configuration du mastic (ou terme) jusqu'à ce que ce soit envoyé correspondant à ce que l'autre extrémité attendue.


Par exemple.

Faire comme spécifié dans https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/terminfo.html Ensuite, dans le mastic, la configuration, la connexion, les données, la chaîne de type bornes = Mastic et sauvegarder ça. Peut-être.

14
RedGrittyBrick

Dans mon expérience, c'est parce que Bash n'est pas en cours d'exécution, il suffit de courir / bin/bash pour profiter des couleurs, de l'histoire et plus encore. Et ces problèmes disparaissent d'ailleurs, rendant le clavier fonctionnant comme prévu.

Vous devrez peut-être exécuter cette commande à chaque fois que vous vous connectez ou changez d'utilisateur, mais ce n'est pas difficile à retenir.

1
JoelBonetR

Jusqu'à ce que vous trouviez une solution complète, essayez d'utiliser des touches de style VI au lieu des flèches.
[.____] H => GAUCHE
[.____] J => Down
etc.

0
Yitzchak