端末でマウスサポートを無効にする方法は?

端末でマウスサポートを無効にする方法は?

xfce4-terminalの使用中にこの質問をしていますが、一般的な回避策に興味があります。端末エミュレータがコンソールからマウスのサポートを通知するのを防ぐ方法はありますか? vimや他の場所でマウスのサポートが必要なよりもはるかに頻繁にマウスの選択とコピー/貼り付けが必要です。

答え1

このキーを押し続けるShiftと、通常のマウスを使用して選択できます。xtermマウス追跡有効です。これは私が知っているすべての端末エミュレータ(xtermvteまたはベース)xfce-terminalで動作します。rxvt

特に、通常ターミナルではvimデフォルトmouseでは有効になっていません。したがって、set mouse=aシステムにvimrcがあるか、オペレーティングシステムによって提供される可能性があります。~/.vimrcいつでも以下を追加できます。

set mouse=

あなたのためにそれを無効にしてください~/.vimrc。または:

if !has("gui_running")
  set mouse=
endif

GUIバージョンで無効にしたくない場合はvim

terminfoマウスのサポートは、この機能を含むkmousデータベースで(ある程度)広告されます。これで、すべてのアプリケーションがマウストレースを有効にするかどうかを判断するためにこれに依存するわけではありません。

この機能を削除するには、端末エントリ(ローカルのterminfoデータベースから)をオーバーライドできます。

infocmp -1x | grep -v kmous= | TERMINFO=~/.terminfo tic -x -
export TERMINFO=~/.terminfo

設定を使用するアプリケーションにはncurses十分です。XM 習慣terminfo(5)空の文字列に機能(で説明されていませんが、で言及されています)を追加します。これは、アプリケーションが端末から送信されたマウスイベントを処理するのを妨げるのではなく、アプリケーションがマウス追跡モードに入るシーケンスを送信するのを防ぐ。したがって、2つを組み合わせることができます。curs_caps(5)curs_mouse(3)

infocmp -1x |
  sed '/kmous=/d;/XM=/d;$s/$/XM=,/' |
  TERMINFO=~/.terminfo tic -x -
export TERMINFO=~/.terminfo

答え2

/etc/vim/vimrc の末尾に次の 2 行を追加します。

set mouse=
set ttymouse=

答え3

私はこのパッチを使用しています:

--- a/src/vteseq.cc 2020-01-25 21:39:47.737317745 +0100
+++ b/src/vteseq.cc 2020-01-25 21:40:12.811424242 +0100
@@ -462,18 +462,7 @@
 void
 Terminal::update_mouse_protocol() noexcept
 {
-        if (m_modes_private.XTERM_MOUSE_ANY_EVENT())
-                m_mouse_tracking_mode = MOUSE_TRACKING_ALL_MOTION_TRACKING;
-        else if (m_modes_private.XTERM_MOUSE_BUTTON_EVENT())
-                m_mouse_tracking_mode = MOUSE_TRACKING_CELL_MOTION_TRACKING;
-        else if (m_modes_private.XTERM_MOUSE_VT220_HIGHLIGHT())
-                m_mouse_tracking_mode = MOUSE_TRACKING_HILITE_TRACKING;
-        else if (m_modes_private.XTERM_MOUSE_VT220())
-                m_mouse_tracking_mode = MOUSE_TRACKING_SEND_XY_ON_BUTTON;
-        else if (m_modes_private.XTERM_MOUSE_X10())
-                m_mouse_tracking_mode = MOUSE_TRACKING_SEND_XY_ON_CLICK;
-        else
-                m_mouse_tracking_mode = MOUSE_TRACKING_NONE;
+   m_mouse_tracking_mode = MOUSE_TRACKING_NONE;

         m_mouse_smooth_scroll_delta = 0.0;

vteはもはや私のマウスを気にしないので、vimは私がマウスを持っていることを知りません。

答え4

少なくともxterm(動作していないようですurxvt)次のように実行して「マウスを無効にする」ことができます。

xterm -xrm xterm*allowMouseOps:false

関連情報