場合によっては、マウスをサポートするアプリケーション(Midnight Commanderなど)がクラッシュしたり切断されたりしますが、その端末が一部のモードに残っているため、マウスの動きを文字列コマンドとして許可することがあります。
(base) dimskraft@studebaker:~$ set mouse=
(base) dimskraft@studebaker:~$ set ttymouse=
(base) dimskraft@studebaker:~$ 0;32;19M32;33;19M32;34;19M32;36;19M32;37;19M32;38;20M32;39;20M32;41;20M32;42;20M32;43;20M32;44;20M32
そのようなことが起こったらどうやって無効にしますか?
私はそれを観察Terminator
し、別のウィンドウで異なる動作を見ることができます。ご覧のとおり、空白に設定することは役に立ちmouse
ませttymouse
ん。
答え1
この設定が適用されますvimへ、シェルではありません。
最良の方法は端末をリセットすることです。
reset
これにより、マウストレースが無効になり、Midnight Commanderなどのツールで行われた他の変更もキャンセルされます(CtrlC例:MCがクラッシュした後に押す試み)。
または、次のことを決定できます。使用するマウス追跡モード、明示的に無効にします(例えば echo -e '\e[?1002;1005l'
私の端末でクラッシュが発生した後、Midnight Commander)、他の設定はそのまま残ります。stty sane
これらの問題を担当するライン規律の完全な精神を取り戻します。
答え2
reset
途方もない過剰です。まず、単にアプリケーションを再起動してから適切に終了すると、この問題は解決されます。最終的に終了時に必要なマウスレポート機能がオフになります。
または、制御シーケンスを端末に直接送信してマウスレポートをオフにすることもできます。printf
シェルユーティリティを使用してエスケープシンボルを使用して制御シーケンスを手動で入力します。
setterm
利便性とユーザースペースの仮想端末のためにこれを行うための拡張されたポータブルバージョンのユーティリティを作成しました。 util-linux とは異なり、GUI 端末エミュレータおよび BSD で使用でき、特定の端末ファミリだけが制御シーケンスを正しく処理するという事実に敏感です。
%printenv用語 無音 %setterm -7 --xterm-mouse-reports を閉じる --dec-locator-reports を閉じる %setterm -7 --xterm-mouse-reports off --dec-locator-reports off コンソールデコード ECMA48 | REVOLVE %setterm -7 --xterm-mouse-reports off --dec-locator-reports off | %輸出港=xterm-256color %エクスポートXTERM_VERSION=999 %setterm -7 --xterm-mouse-reports off --dec-locator-reports off コンソールデコード ECMA48 | REVOLVE 減速度0 デセル0 デCRM 1006 デCRM 1003 デCRM 1002 デCRM 1000 %setterm -7 --xterm-mouse-reports off --dec-locator-reports off | 00000000 1b 5b 30 27 7a 1b 5b 30 27 7b 1b 5b 3f 31 30 30 |.[0'z.[0'{.[?100|] 00000010 36 6c 1b 5b 3f 31 30 30 33 6c 1b 5b 3f 31 30 30 |6l.[?1003l.[?100|] 00000020 32 6c 1b 5b 3f 31 30 30 30 6c | 2l。 [?1000l| 0000002a %
制御シーケンスがあります。
追加読書
- ジョナサンデボインポラード(2018)。
setterm
。 スナックガイド。ソフトウェア。 - https://unix.stackexchange.com/a/482782/5132
- なぜprintfがechoより優れているのですか?
- https://unix.stackexchange.com/a/491883/5132