如何禁用终端中的鼠标支持?

如何禁用终端中的鼠标支持?

我在使用 xfce4-terminal 时问这个问题,但我对通用解决方案感兴趣:有没有办法阻止终端模拟器在控制台中宣布鼠标支持?我需要鼠标选择和复制粘贴的频率比我在 vim 或其他地方需要鼠标支持的频率要高得多。

答案1

您可以按住该Shift键以使用普通鼠标选择,同时xterm 鼠标跟踪已启用。这适用于我所知道的所有终端模拟器(xtermvte(如xfce-terminal) 或rxvt基于 的)。

具体来说vimmouse终端中通常默认不启用。因此,您或操作系统提供的系统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)中提到)添加到空字符串。这不会阻止应用程序处理由终端发送的鼠标事件,但会阻止应用程序发送进入鼠标跟踪模式的序列。所以你可以将两者结合起来: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 末尾添加以下两行:

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

相关内容