Imansible get la tastiera per funzionare correttamente in mastice

Sto usando il putty su win7 come client, per accedere a ssh su un server debian. Ma ho incontrato un strano problema sui comportmenti della tastiera sulla consolle di mastice.

Ho notato che si tratta di config tastiera in mastice. Dopo aver letto il manuale di mastice , ho eseguito con successo il key backspace per lavorare, ma ho ancora problemi riguardo ESC , frecce, home e end e tasti F1F12 .

Ecco la mia configurazione della tastiera in mastice

Qui elenchi i loro comportmenti qui sotto. Sembra che la mismapping di ESC sia la causa principale.

  • ESC => ^ [
  • up => ^ [OA
  • down => ^ [OB
  • right => ^ [OC
  • left => ^ [OD
  • home => ^ [[1 ~
  • end => ^ [[4 ~
  • F1 => ^ [[11 ~
  • F12 => ^ [[24 ~

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

Qui mostrerò perché penso che esc sia mismapping:

Quando in una console corretta ssh, premo esc , non dovrebbe mostrare nulla.

 (before) [email protected]: (after) [email protected]: 

Ma in questa console malfunzionante di ssh, premo esc , mostra ^[ .

 (before) [email protected]: (after) [email protected]: ^[ 

Ho eseguito od -c su entrambi i console ssh, e premuto esc , hanno dato la stessa output.

 (normal one) [email protected]:~# od -c ^[ (malfunctioning one) $ od -c ^[ 

Il problema è che il valore della variabile di ambiente TERM non corrisponde alle caratteristiche del terminal configurate, in particolare le impostazioni di "Home e Fine" e "Tasti function e tastiera".

Questi possono essere difficili da get.

Cosa si aspetta dal server Debian.

Digita infocmp -I per vedere cosa sta aspettando il computer.

 $ 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 significa che il server prevede di ricevere tre caratteri ESC [ H quando si preme Home .

Puoi guardare ciò che si aspetta per altri valori di TERM

 $ 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, … 

Qui potete vedere che, se TERM fosse impostato su xterm , questo server si aspetta di ricevere ESC [ 1 ~ quando viene premuto Home ( khome )

Se la precedente è troppo criptica, provate infocmp -L

È anche ansible fare cose come tput khome | hexdump -C tput khome | hexdump -C se si conoscono i nomi delle capacità di terminfo per le chiavi in ​​cui si è interessati.

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

o, probabilmente più leggibile

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

o per vedere che cosa potrebbe significare un'altra impostazione TERM

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

se l'output è vuoto, il server pensa che il tipo di terminal (TERM) non abbia tale chiave.

Che cosa è effettivamente inviato da Putty.

Per vedere cosa Home effettua effettivamente, esegui vi , premi i (per la modalità di inserimento) premere Ctrl + V, quindi premere Home e premere Esc per uscire dalla modalità di inserimento.

Soluzione

Regolare la configuration di Putty (o TERM) finché ciò che viene inviato corrisponde a quello che l'altra estremità si aspettava.

Non c'è mismapping del tasto ESC – ^ [significa Control-LeftSquareBracket che è ASCII 27 che è ESC

Se si sospetta che le chiavi forniscano sequenze erronee, controllarle con od -c e confrontarle con l'output infocmp :

  $ od -c (hit F1 Ctrl-D Ctrl-D) 

L'output può essere ( 033 è ESC ):

  0000000 033 [ 1 1 ~ 

Confronta l'output di infocmp (qui \E significa ESC ):

  $ infocmp -1 | grep 'kf1=' kf1=\E[11~, 

Breve introduzione all'output infocmp:

kbs = Backspace

kcub1 , kcud1 , kcuf1 , kcuu1 = Tasti cursore

kf * = tasti function

kpp / knp = Pagina su / giù

khome / kend = tasti Home / End

kich1 / kdch1 = tasti Inserisci / Elimina

Usando queste informazioni dovrebbe essere facile configurare correttamente il mastice per il proprio sistema.

Fino a quando non si trova una soluzione completa, provare a utilizzare i tasti vi-style invece delle frecce.
H => sinistra
J => verso il basso
eccetera.