Czy można wyłączyć naciśnięcie klawisza Ctrl-S (XOFF) w Putty?

41

Robię dużo ssh-s i okresowo uderzam w Ctrl+ S, który naturalnie wysyła XOFFi powoduje różnego rodzaju problemy (nie wspominając o tym, że zajmuje mi trochę czasu, aby dowiedzieć się, co się stało, a potem jeszcze raz pamiętać, że potrzebuję naciśnij Ctrl+, Qaby odzyskać.

Wolałbym poinstruować Putty, żeby nigdy nie pozwalał mi pisać XOFF.

Jakieś pomysły?

Seth
źródło
6
+1 za wskazanie, że odzyskanie jest możliwe za pomocą Ctrl + Q. Bardzo mi pomogło!
Demento
1
+1 za faktyczne pytanie, jak wyłączyć to zachowanie, ponieważ jest ono całkowicie przestarzałe i bezużyteczne dla moich celów. Wszyscy w Internecie mają udokumentowaną sztuczkę CTRL + q, ale nikt nie udokumentował, jak całkowicie usunąć klucze.
andrew
1
pamiętaj, że ctrl+qprzywróci buforowany przepływ. Oznacza to, że jeśli naciśniesz, ctrl+sa następnie zwariujesz, naciśnij ctrl+ccokolwiek innego, gdy naciśniesz ctrl+qwszystko, co naciskałeś wcześniej, zostanie odtworzone.
gcb 17.04.13
Jaki jest efekt XOFF?
Snowcrash

Odpowiedzi:

35

Nie wiem o Putty, ale możesz użyć:

stty -ixon

na zdalnym hoście, aby wyłączyć sygnały START / STOP.

Bartosz
źródło
Dzięki - jakiś pomysł, czy lub jak to wpływa na konsolę? Czy zmieniłoby to zachowanie programów powłoki? (Jedyne, co wiem o XON / XOFF, to to, że jest on używany do szeregowej kontroli przepływu). Brzmi jak dobre ustawienie dla .bash_profile.
Seth
Tak powinno być stty -ixon.
Dziwne,
Przepraszam. Zaktualizowałem mój post, aby naprawić literówkę.
Bartosz
1
Jak tylko skomentował BlakBat na jego odpowiedź , która sprawia, że ^Snie wysłać XOFF, ale teraz stawia mnie w i-searchtrybie. Czy istnieje sposób, aby uzyskać bash (lub PuTTY) po prostu, aby go odrzucić ^S? Jeszcze lepiej byłoby, gdyby mógł wydać mi dźwięk i / lub błyskać; o)
Owen Blacker
1
Dodałem stty -ixondo moich skryptów profilowych. Przeczytałem około 100 artykułów na temat tego, jak przypadkowo naciskasz CTRL + s, wszystko co musisz zrobić, to CTRL + q, aby wznowić ... ale nie chcę, aby moja powłoka przechwytywała CTRL + s / q ponieważ używam ich dość często z vimem. Dziękuję bardzo za udzielenie odpowiedzi, której nikt inny nawet nie rozważa.
andrew
29

Rozwiązanie PuTTY:

  1. przed utworzeniem sesji przejdź na liście Połączenie-> SSH-> TTY na liście.
  2. w menu rozwijanym „Tryb” wybierz IXON (nb: od wersji 0.60 ta lista nie jest uporządkowana alfabetycznie)
  3. wstaw „0” ( zero ) jako wartość IXON .

Zrzut ekranu

Działa jako urok, nawet jeśli otworzysz na nim „ekran GNU”, SSH do innego hosta lub „su” dla innego użytkownika

Jeśli używasz GNU Bash, ctrl-S powinien pozwolić ci teraz na wykonanie historii wyszukiwania do przodu (aka: i-search)

Możesz zobaczyć różnicę w wynikach „stty -a | grep -o” .ixon : Po skonfigurowaniu kit wypisuje „-ixon” , bez „ixon”

BlakBat
źródło
2
Ok, to sprawia, że ^Snie wysyłam an XOFF, ale teraz i-searchprzełącza mnie w tryb. Czy istnieje sposób, aby uzyskać PuTTY (lub bash) po prostu, aby go odrzucić ^S? Jeszcze lepiej byłoby, gdyby mógł wydać mi dźwięk i / lub błysnąć; o)
Owen Blacker
Aby dezaktywować akcję, możesz powiązać ^ S z niczym przez powiązanie „\ Cs”. To powoduje, że mój PuTTY miga, ponieważ akcja nie jest odwzorowana.
BlakBat,
1
Zmęczyłem się kitem 0,62 i powyższe ustawienie nie pomaga. Próbowałem zastąpić XON, XOFF i innymi wartościami, ale nic się nie zmieniło.
Dennis C
1
Działa to również w przypadku zagnieżdżonych sesji SSH, w których klient openssh jest drugim, trzecim (itd.) Klientem
Felipe Alvarez
1
Uaktualnienie tej odpowiedzi jako najlepszego sposobu na wyłączenie kontroli przepływu oprogramowania. Emulator terminala jest najlepszym miejscem do konfiguracji zachowania terminalu. Wyłączenie kontroli przepływu XON / XOFF w Putty oznacza, że ​​gdy żądany jest pseudo-terminal od zdalnego hosta, serwery SSH zaakceptują to ustawienie podczas przydzielania pseudo-terminalu. Zobacz tools.ietf.org/html/rfc4254#section-6.2
Anthony G - sprawiedliwość dla Moniki
5
Przykład .bashrc:
#
# Zatrzymaj Putty przed zrobieniem XOFF / XON za pomocą Ctrl-S / Ctrl-Q
# ŹRÓDŁO: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14.07.08)
#
# stty Ixany
# stty ixoff -ixon
### Jeśli chcesz słuchać Ctrl-S dla niektórych aplikacji, użyj tych dwóch:
stty stop undef
stty start undef
Jack Hamilton
źródło
5

Mam odwrotny problem. Od czasu do czasu host wysyła komunikat XOFFdo PuTTY, ale nigdy nie wysyła odpowiedniego XONdo PuTTY. W takim przypadku nic, co zrobisz PuTTY (poza ponownym uruchomieniem), nie rozłączy go. W takim przypadku wszystkie dane wejściowe klawiatury do hosta są zablokowane, ale host może nadal wysyłać dane do PuTTY.

Wyłączenie kontroli przepływu w PuTTY nie działa.

Sposobem na rozwiązanie tego problemu jest użycie

stty -ixoff

w Twoim profilu. Zabrania to hostowi wysyłania XON/ XOFF. Pamiętaj, że nazwy opcji są całkowicie mylące. ixon/ -ixonoznacza włączanie / wyłączanie kontroli przepływu po stronie klienta (co oznacza, że ​​klient nie może wydać kontroli przepływu), ixoff/ -ixoffoznacza włączanie / wyłączanie kontroli przepływu po stronie hosta (co oznacza, że ​​host nie może wydawać kontroli przepływu).

Btw, kod ASCII dla Ctrl- Si XOFF to ten sam znak ASCII (kod 19, 0x13). Nie ma różnicy. Ustawienia zmieniają interpretację tego znaku ASCII.

Mark Lakata
źródło
O rany, szukałem wszędzie wyjaśnień dla ixona i ixoffa. Wysyłanie XON / XOFF z klienta do hosta ma sens. Jednak nadal jestem zdezorientowany, w jakich sytuacjach host wysyła do klienta kontrolę przepływu XON / XOFF? Widzę „kiedy kolejka wejściowa jest prawie pusta / pełna”? Czy dzieje się tak w przypadku nowoczesnych komputerów, takich jak brak połączenia z wolnymi drukarkami? Ale co to właściwie znaczy? Co dzieje się z interfejsem terminalu?
CMCDragonkai
Kontrola przepływu działa w obu kierunkach. Nowoczesny komputer zawsze robi milion innych rzeczy i może „zablokować się”, wykonując kluczowe czynności. W tym czasie nie może obsłużyć portu szeregowego, a port szeregowy przepełni się, chyba że terminal się wyłączy. Tak więc host wysyła XOFF do terminala, prosząc go o zaprzestanie wysyłania. Po wyłączeniu ciśnienia host wysyła XON. (btw, porty szeregowe komputera zwykle mają tylko mały bufor sprzętowy, powiedzmy 16 bajtów.) Mimo że jest to starożytna technologia, wszystko, co nie jest zaprojektowane w czasie rzeczywistym, czasami „zawiesza się”, więc konieczna jest kontrola przepływu.
Mark Lakata
BTW, znalazłem przypadki, w których mały mikrokontroler 20 MHz jest w stanie przepełnić komputer hosta 3 GHz, ale nie odwrotnie. Jest tak, ponieważ mikrokontroler robi tylko jedną rzecz i jest zaprojektowany z myślą o czasie rzeczywistym, podczas gdy komputer-host nie.
Mark Lakata
4

Otwórz .bash_profilei umieść:

stty -ixon

Wartość -xionnie działa dla mnie. Można zobaczyć wejście człowieka: man stty.

Fids
źródło
+1 za stty-xion nie działa na moich centos, ale stty -ixon działa.
Jichao,
0

Uruchom tę komendę w terminalu, aby ją wyłączyć dla bieżącej sesji / dodaj ją do .bashrc, aby trwale ją wyłączyć

stty -ixon

Aldrin Bennet
źródło