¿Se puede deshabilitar la combinación de teclas Ctrl-S (XOFF) en Putty?

42

Hago muchos cambios, y periódicamente presiono Ctrl+ S, lo que naturalmente envía un XOFF, y causa todo tipo de problemas (sin mencionar que me lleva un tiempo descubrir qué sucedió, luego otro tiempo para recordar que necesito presionar Ctrl+ Qpara recuperar.

Prefiero instruir a Putty para que nunca me deje escribir XOFF.

¿Algunas ideas?

Seth
fuente
66
+1 para señalar que la recuperación es posible con Ctrl + Q. ¡Me ayudo mucho!
Demento
1
+1 por preguntar cómo deshabilitar este comportamiento porque es completamente anticuado e inútil para mis propósitos. Todos en la web tienen documentado el truco CTRL + q, pero nadie ha documentado cómo desvincular las claves por completo.
Andrew
1
tenga en cuenta que ctrl+qrestaurará el flujo en caché. Eso significa que si presiona ctrl+sy luego se vuelve loco presionando ctrl+co cualquier otra cosa, cuando presiona ctrl+qtodo lo que presionó antes se reproducirá.
gcb
¿Cuál es el efecto de un XOFF?
Snowcrash

Respuestas:

35

No sé sobre Putty, pero puedes usar:

stty -ixon

en host remoto, para deshabilitar las señales START / STOP.

Bartosz
fuente
Gracias. ¿Alguna idea de si esto o cómo afecta esto a la consola? ¿Alteraría el comportamiento de los programas shell? (Lo único que sé sobre XON / XOFF es que se usa para el control de flujo en serie). Suena como una buena configuración para .bash_profile.
Seth
Eso debería ser stty -ixon.
Pensamiento extraño
Lo siento. Actualicé mi publicación para corregir el error tipográfico.
Bartosz
1
Como acabo de comentar a BlakBat sobre su respuesta , eso hace que ^Sno envíe un mensajeXOFF , pero ahora me pone en i-searchmodo. ¿Hay alguna forma de obtener bash (o PuTTY) solo para descartar alguno ^S? Aún mejor sería si pudiera emitir un pitido y / o destellar hacia mí; o)
Owen Blacker
1
He agregado stty -ixona mis guiones de perfil. He leído unos 100 artículos sobre cómo cuando presionas CTRL + s por accidente, todo lo que tienes que hacer es CTRL + q para reanudar de nuevo ... pero no quiero que mi shell intercepte CTRL + s / q ya que los uso bastante con vim. Muchas gracias por dar una respuesta que nadie más parece considerar.
Andrew
30

La solución PuTTY:

  1. antes de crear la sesión, vaya a Conexión-> SSH-> TTY en la lista.
  2. en el cuadro desplegable "Modo", seleccione IXON (nb: a partir de la versión 0.60, esta lista no está ordenada alfabéticamente)
  3. ponga "0" ( cero ) como el valor de IXON .

Captura de pantalla

Funciona como un encanto, incluso si abre una "pantalla GNU" encima, SSH a otro host o "su" a otro usuario

Si está utilizando GNU Bash, ctrl-S debería permitirle ahora hacer un historial de búsqueda hacia adelante (también conocido como: i-search)

Puede ver la diferencia en la salida de "stty -a | grep -o" .ixon " : con la masilla configurada imprime " -ixon " , sin " ixon "

BlakBat
fuente
2
Ok, eso hace que ^Sno envíe un XOFF, pero ahora me pone en i-searchmodo. ¿Hay alguna manera de obtener PuTTY (o bash) solo para descartar alguno ^S? Aún mejor sería si pudiera emitir un pitido y / o destellar hacia mí; o)
Owen Blacker
Para desactivar una acción, puede vincular ^ S a nada mediante la vinculación '"\ Cs"'. Esto hace que mi PuTTY parpadee porque la acción no está asignada.
BlakBat
1
Me cansé de la masilla 0.62 y la configuración anterior no ayuda. Traté de anular XON, XOFF y con diferentes valores, pero nada cambió.
Dennis C
1
Esto también funciona para sesiones SSH anidadas usando openssh como el segundo, tercer (etc.) cliente
Felipe Alvarez
1
Votar esta respuesta como la mejor manera de deshabilitar el control de flujo de software. Para controlar el comportamiento del terminal, el emulador de terminal es el mejor lugar para configurarlo. Deshabilitar el control de flujo XON / XOFF en Putty significa que cuando se solicita un pseudo-terminal desde un host remoto, los servidores SSH respetarán esa configuración al asignar el pseudo-terminal. Ver tools.ietf.org/html/rfc4254#section-6.2
Anthony G - justicia para Monica
5
Ejemplo de .bashrc:
# #
# Evite que Putty haga XOFF / XON con Ctrl-S / Ctrl-Q
# FUENTE: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14/07/08)
# #
# stty ixany
# stty ixoff -ixon
### Si necesita escuchar Ctrl-S para algunas aplicaciones, use estas dos en su lugar:
stty stop undef
stty start undef
Jack Hamilton
fuente
5

Tengo el problema opuesto. De vez en cuando, el anfitrión envía un XOFFmensaje a PuTTY pero nunca envía el correspondiente XONa PuTTY. En este caso, nada de lo que haga a PuTTY (salvo reiniciarlo) lo eliminará. En este caso, toda la entrada del teclado al host está bloqueada, pero el host aún puede enviar datos a PuTTY.

Deshabilitar el control de flujo en PuTTY no funciona.

La forma de solucionar este problema es usar

stty -ixoff

en tu perfil. Esto prohíbe que el host envíe XON/ XOFF. Tenga en cuenta que los nombres de las opciones son totalmente confusos. ixon/ -ixonsignifica habilitar / deshabilitar el control de flujo en el lado del cliente (lo que significa que el cliente no puede emitir control de flujo), ixoff/ -ixoffsignifica habilitar / deshabilitar el control de flujo en el lado del host (lo que significa que el host no puede emitir control de flujo).

Por cierto, el código ASCII para Ctrl- Sy XOFF son el mismo carácter ASCII (código 19, 0x13). No hay diferencia La configuración cambia la interpretación de ese carácter ASCII.

Mark Lakata
fuente
Oh hombre, he buscado en todas partes una explicación para ixon e ixoff. Enviar XON / XOFF desde el cliente al host tiene sentido. Sin embargo, todavía estoy confundido, ¿en qué situaciones el host envía al control de flujo del cliente XON / XOFF? Veo "cuando la cola de entrada está casi vacía / llena". ¿Esto sucede con las computadoras modernas, como no conectarse a impresoras lentas? Pero, ¿qué significa eso prácticamente? ¿Qué le sucede a la interfaz de usuario de la terminal?
CMCDragonkai
El control de flujo funciona en ambas direcciones. Una computadora moderna siempre está haciendo un millón de otras cosas y puede "encerrarse" haciendo actividad crítica. Durante este tiempo, no puede dar servicio al puerto serie y el puerto serie se desbordará a menos que el terminal se cierre. Entonces el host envía XOFF al terminal solicitándole que deje de enviar. Una vez que la presión está apagada, el host envía XON. (por cierto, los puertos serie de la computadora generalmente solo tienen un pequeño búfer de hardware, digamos 16 bytes). Aunque esta es una tecnología antigua, cualquier cosa que no esté diseñada para el tiempo real ocasionalmente se "colgará", por lo que se necesita control de flujo.
Mark Lakata
1
Por cierto, he encontrado casos en los que un pequeño microcontrolador de 20 MHz puede desbordar una computadora host de 3 GHz, pero no al revés. Esto se debe a que el microcontrolador solo hace una cosa y está diseñado pensando en tiempo real, mientras que la computadora host no lo hace.
Mark Lakata
4

Abre tu .bash_profiley pon:

stty -ixon

El valor -xionno funciona para mí. Se puede ver la entrada del hombre: man stty.

Fids
fuente
+1 para stty -xion no funciona en mis centos, pero stty -ixon funciona.
Jichao
0

Ejecute este comando en la terminal para deshabilitarlo para la sesión actual / agréguelo a .bashrc para deshabilitarlo permanentemente

stty -ixon

Aldrin Bennet
fuente