Puoi disabilitare la sequenza di tasti Ctrl-S (XOFF) in Putty?


42

Faccio molte cose, e periodicamente premo Ctrl+ S, che naturalmente invia un XOFFe causa tutti i tipi di problemi (per non parlare del fatto che ci vuole un po 'per capire cosa è successo, poi un altro mentre mi ricordo che ho bisogno per premere Ctrl+ Qper ripristinare.

Preferirei piuttosto a Putty di non lasciarmi mai scrivere XOFF.

Qualche idea?


6
+1 per indicare che il recupero è possibile con Ctrl + Q. Mi ha aiutato molto!
Demento,

1
+1 per aver effettivamente chiesto come disabilitare questo comportamento perché è completamente antiquato e inutile per i miei scopi. Tutti sul web hanno documentato il trucco CTRL + q, ma nessuno ha documentato come sbloccare del tutto le chiavi.
Andrew

1
tenere presente che ctrl+qripristinerà il flusso memorizzato nella cache. Ciò significa che se si preme ctrl+se poi si diventa pazzi premendo ctrl+co qualsiasi altra cosa, quando si preme ctrl+qtutto ciò che è stato premuto prima verrà riprodotto.
gcb,

Qual è l'effetto di un XOFF?
Snowcrash,

Risposte:


35

Non conosci Putty, ma puoi usare:

stty -ixon

sull'host remoto, per disabilitare i segnali START / STOP.


Grazie - qualche idea se o in che modo ciò influisce sulla console? Altererebbe il comportamento dei programmi shell? (L'unica cosa che so di XON / XOFF è che è usato per il controllo del flusso seriale). Sembra una buona impostazione per .bash_profile.
Seth,

Questo dovrebbe essere stty -ixon.
Pensando in modo strano il

Scusate. Aggiornato il mio post per correggere l'errore di battitura.
Bartosz,

1
Come ho appena commentato BlakBat sulla sua risposta , questo ^Snon fa inviare un messaggio XOFF, ma ora mi mette in i-searchmodalità. C'è un modo per ottenere bash (o PuTTY) solo per scartarne uno ^S? Ancora meglio sarebbe se potesse emettere un segnale acustico e / o lampeggiarmi; o)
Owen Blacker,

1
Ho aggiunto stty -ixonagli script del mio profilo. Ho letto circa 100 articoli su come quando si preme CTRL + s per caso, tutto ciò che è necessario fare è CTRL + q per riprendere di nuovo ... ma non voglio che la mia shell intercetti CTRL + s / q affatto da quando li uso parecchio con vim. Grazie mille per aver fornito una risposta che nessun altro sembra nemmeno prendere in considerazione.
Andrew

30

La soluzione PuTTY:

  1. prima di creare la sessione, vai su Connessione-> SSH-> TTY nell'elenco.
  2. nella casella a discesa "Modalità", selezionare IXON (nb: dalla versione 0.60, questo elenco non è in ordine alfabetico)
  3. metti "0" ( zero ) come valore di IXON .

Immagine dello schermo

Funziona come un incantesimo, anche se si apre uno "schermo GNU" sopra di esso, SSH a un altro host o "su" a un altro utente

Se stai usando GNU Bash, ctrl-S dovrebbe ora permetterti di fare una cronologia di ricerca in avanti (aka: i-search)

Puoi vedere la differenza nell'output di "stty -a | grep -o" .ixon " : Con putty configurato stampa " -ixon " , senza " ixon "


2
Ok, questo ^Snon fa inviare un XOFF, ma ora mi mette in i-searchmodalità. C'è un modo per ottenere PuTTY (o bash) solo per scartarne uno ^S? Ancora meglio sarebbe se potesse emettere un segnale acustico e / o lampeggiarmi; o)
Owen Blacker,

Per disattivare un'azione, puoi associare ^ S a nulla tramite il binding "" \ Cs "'. Questo fa lampeggiare il mio PuTTY perché l'azione non è mappata.
BlakBat,

1
Mi sono stancato di stucco 0,62 e l'impostazione sopra non aiuta. Ho provato a sostituire XON, XOFF e con valori diversi ma non cambia nulla.
Dennis C,

1
Questo funziona anche per sessioni SSH nidificate usando openssh come 2 °, 3 ° client (ecc.)
Felipe Alvarez,

1
L'upgrade di questa risposta è il modo migliore per disabilitare il controllo del flusso del software. Per controllare il comportamento dei terminali, l'emulatore di terminale è il posto migliore per configurarlo. Disabilitare il controllo del flusso XON / XOFF in Putty significa che quando uno pseudo-terminale viene richiesto da un host remoto, i server SSH rispettano tale impostazione durante l'allocazione dello pseudo-terminale. Vedi tools.ietf.org/html/rfc4254#section-6.2
Anthony G - giustizia per Monica

5
Esempio .bashrc:
#
# Impedisci a Putty di fare XOFF / XON con Ctrl-S / Ctrl-Q
# SOURCE: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14/07/08)
#
# stty ixany
# stty ixoff -ixon
### Se hai bisogno di ascoltare Ctrl-S per alcune app, usa invece questi due:
stty stop undef
stty start undef

5

Ho il problema opposto. Di tanto in tanto, l'host invia un messaggio XOFFa PuTTY ma non invia mai il corrispondente XONa PuTTY. In questo caso, nulla che tu faccia a PuTTY (a meno di riavviarlo) lo sbloccherà. In questo caso, tutti gli input da tastiera all'host sono bloccati, ma l'host può comunque inviare dati a PuTTY.

La disabilitazione del controllo del flusso in PuTTY non funziona.

Il modo per risolvere questo problema è utilizzare

stty -ixoff

nel tuo profilo. Ciò impedisce all'host di inviare XON/ XOFF. Si noti che i nomi delle opzioni sono totalmente confusi. ixon/ -ixonsignifica abilitare / disabilitare il controllo del flusso sul lato client (il che significa che il client non può emettere il controllo del flusso), ixoff/ -ixoffsignifica abilitare / disabilitare il controllo del flusso sul lato host (il che significa che l'host non può emettere il controllo del flusso).

A proposito, il codice ASCII per Ctrl- Se XOFF hanno lo stesso carattere ASCII (codice 19, 0x13). Non c'è alcuna differenza. Le impostazioni cambiano l'interpretazione di quel carattere ASCII.


Oh amico, ho cercato ovunque una spiegazione per ixon e ixoff. L'invio di XON / XOFF dal client all'host ha senso. Tuttavia, sono ancora confuso, in quali situazioni l'host invia al controllo del flusso client XON / XOFF? Vedo "quando la coda di input è quasi vuota / piena"? Questo succede con i computer moderni, come nel non collegarsi alle stampanti lente? Ma cosa significa praticamente? Cosa succede all'interfaccia utente del terminale?
CMCDragonkai,

Il controllo del flusso funziona in entrambe le direzioni. Un computer moderno fa sempre un milione di altre cose e può "bloccarsi" facendo attività critiche. Durante questo periodo, non può servire la porta seriale e la porta seriale traboccerà a meno che il terminale non si spenga. Quindi l'host invia XOFF al terminale richiedendogli di interrompere l'invio. Una volta disattivata la pressione, l'host invia XON. (a proposito, le porte seriali del computer di solito hanno solo un piccolo buffer hardware, diciamo 16 byte.) Anche se questa è una tecnologia antica, tutto ciò che non è progettato per il tempo reale si "blocca" di tanto in tanto, quindi è necessario il controllo del flusso.
Mark Lakata,

1
A proposito, ho trovato casi in cui un piccolo microcontrollore da 20 MHz è in grado di traboccare un computer host da 3 GHz, ma non viceversa. Questo perché il microcontrollore sta facendo solo una cosa e progettato pensando in tempo reale, mentre il computer host non lo è.
Mark Lakata,

4

Apri il tuo .bash_profilee metti:

stty -ixon

Il valore non -xionfunziona per me. È possibile vedere la voce dell'uomo: man stty.


+1 per stty -xion non funziona sul mio centos, ma stty -ixon funziona.
Jichao,

0

Eseguire questo comando nel terminale per disabilitarlo per la sessione corrente / aggiungerlo a .bashrc per disabilitarlo permanentemente

stty -ixon

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.