PuttyでCtrl-S(XOFF)キーストロークを無効にできますか?


41

私は多くのssh-ingを行い、定期的にCtrl+ Sを押します。これは自然にを送信しXOFF、あらゆる種類の問題を引き起こします(もちろん、何が起こったのかを理解するのに時間がかかりますCtrl+ を押しQて回復します。

私は入力を絶対に許可しないようにむしろパテに指示したいですXOFF

何か案は?


6
+1は、Ctrl + Qで回復が可能であることを指摘するために。私を大いに助けてくれました!
デメント

1
これは完全に時代遅れであり、私の目的には役に立たないので、この動作を無効にする方法を実際に尋ねた+1 。ウェブ上の誰もがCTRL + qトリックを文書化していますが、キーを完全にアンバインドする方法を文書化した人はいません。
アンドリュー

1
ctrl+qキャッシュされたフローを復元することに注意してください。つまり、押してctrl+sからクレイジープレスctrl+cなどをctrl+q行うと、前に押したすべてを押すと再生されます。
gcb

の効果は何XOFFですか?
スノークラッシュ

回答:


35

Puttyについては知りませんが、以下を使用できます。

stty -ixon

リモートホストで、START / STOP信号を無効にします。


ありがとう-これがコンソールに影響するかどうか、またはどのように影響するか?シェルプログラムの動作を変更しますか?(XON / XOFFについて知っている唯一のことは、シリアルフロー制御に使用されることです)。.bash_profileの適切な設定のようです。
セス

それはあるはずですstty -ixon
奇数思考

ごめんなさい。誤植を修正するために私の投稿を更新しました。
バルトス

1
私はちょうどにコメントしたようBlakBat彼の答えになるがあること、^S送信しないXOFFが、それは今に私を置くi-searchモード。破棄するだけでbash(またはPuTTY)を取得する方法はあります^Sか?さらに良いのは、ビープ音を鳴らしたり、私にフラッシュしたりできる場合です; o)
オーウェンブラッカー

1
stty -ixonプロファイルスクリプトに追加しました。誤ってCTRL + sを押したときに、Ctrl + qを押して再開する方法についての記事を100件ほど読みましたが、シェルがCTRL + s / qをインターセプトしたくない私はvimでかなり使っているので。他の誰も考えていないような答えを提供してくれてありがとう。
アンドリュー

29

PuTTYソリューション:

  1. セッションを作成する前に、リストの[接続]-> [SSH]-> [TTY]に移動します。
  2. [モード]ドロップダウンボックスで、IXONを選択します(nb:バージョン0.60以降、このリストはアルファベット順ではありません)
  3. 置く「0」ゼロの値として)IXON

スクリーンショット

その上で「GNU画面」を開いたり、別のホストにSSHでアクセスしたり、別のユーザーに「su」でアクセスしたりしても、魅力として機能します。

GNU Bashを使用している場合、ctrl-Sでforward-search-history(別名:i-search)を実行できるようになります。

あなたがの出力の違いを見ることができる「のstty -a | grepの-o」.ixonを」:パテは、それが印刷さに構成して『』 -ixonせず、IXON 『』


2
OK、それは^Sを送信しませんXOFFが、今ではi-searchモードになります。PuTTY(またはbash)を取得して破棄する方法はあり^Sますか?さらに良いのは、ビープ音を鳴らしたり、フラッシュしたりすることができれば; o)
オーウェンブラッカー

アクションを無効にするには、バインド '"\ Cs"'を使用して^ Sを何にもバインドしません。アクションがマッピングされていないため、PuTTYが点滅します。
BlakBat

1
パテ0.62に疲れたので、上記の設定は役に立ちません。XON、XOFF、および異なる値をオーバーライドしようとしましたが、何も変わりません。
デニスC

1
これはまた、第二としてのOpenSSHを使用して、ネストされたSSHセッションのために働く3日(など)クライアント
フェリペ・アルバレス

1
ソフトウェアフロー制御を無効にする最良の方法として、この回答を支持します。端末の動作を制御するには、端末エミュレータを設定するのが最適です。PuttyでXON / XOFFフロー制御を無効にすると、擬似端末がリモートホストから要求されたときに、SSHサーバーが擬似端末を割り当てるときにその設定を優先します。参照してくださいtools.ietf.org/html/rfc4254#section-6.2
モニカのための正義-アンソニー・G

5
.bashrcの例:
#
#PuttyがCtrl-S / Ctrl-QでXOFF / XONを実行しないようにする
#SOURCE:http://raamdev.com/recovering-from-ctrls-in-putty(Morgy、7/14/08)
#
#stty ixany
#stty ixoff -ixon
###一部のアプリでCtrl-Sをリッスンする必要がある場合は、代わりに次の2つを使用します。
stty stop undef
stty start undef

5

私は反対の問題を抱えています。XOFF時々ホストはPuTTYにを送信しますが、対応XONするPuTTYに送信することはありません。この場合、PuTTYに対して何も(再起動するまで)何もしません。この場合、ホストへのキーボード入力はすべてブロックされますが、ホストは引き続きデータをPuTTYに送信できます。

PuTTYでフロー制御を無効にしても機能しません。

この問題を修正する方法は

stty -ixoff

.profileで。これにより、ホストがXON/ を送信できなくなりXOFFます。オプションの名前は完全に紛らわしいことに注意してください。ixon/ -ixonクライアント側のフロー制御の有効化/無効化(クライアントがフロー制御を発行できないことを意味します)、ixoff/ -ixoffホスト側のフロー制御の有効化/無効化(ホストがフロー制御を発行できないことを意味します)を意味します。

ところで、Ctrl- SとXOFFのASCIIコードは同じASCII文字(コード19、0x13)です。違いはありません。設定により、そのASCII文字の解釈が変更されます。


ああ、私はixonとixoffの説明をどこでも探しました。クライアントからホストにXON / XOFFを送信することは理にかなっています。しかし、ホストはどのような状況でクライアントフロー制御XON / XOFFに送信するのでしょうか?「入力キューがほぼ空/満杯のとき」が表示されますか?これは、遅いプリンターに接続しないなど、最新のコンピューターでも起こりますか?しかし、それは実際にはどういう意味ですか?ターミナルUIはどうなりますか?
CMCDragonkai

フロー制御は両方向で機能します。現代のコンピューターは、常に他の何百万ものことを行っており、重要な活動を「ロックアップ」する可能性があります。この間、シリアルポートを処理できず、端末がシャットダウンしない限りシリアルポートはオーバーフローします。そのため、ホストはXOFFを端末に送信して、送信の停止を要求します。圧力がオフになると、ホストはXONを送信します。(ところで、コンピュータのシリアルポートには通常16バイトなどの小さなハードウェアバッファしかありません。)これは古代の技術ですが、リアルタイム用に設計されていないものは時々「ハング」するため、フロー制御が必要です。
マークラカタ

ところで、小さな20 MHzのマイクロコントローラーが3 GHzのホストコンピューターをオーバーフローさせることはできますが、その逆はできない場合があります。これは、マイクロコンピューターが行うことは1つだけであり、リアルタイムを念頭に置いて設計されているのに対し、ホストコンピューターはそうではないためです。
マークラカタ

4

を開き、以下を入力します.bash_profile

stty -ixon

この価値-xionは私には役に立たない。次のmanエントリを確認できますman stty


stty -xionの+1は私のcentosでは機能しませんが、stty -ixonは機能します。
Jichao

0

ターミナルでこのコマンドを実行して現在のセッションで無効にし、.bashrcに追加して永続的に無効にします

stty -ixon

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.