터미널에서 마우스 지원을 비활성화하는 방법은 무엇입니까?

터미널에서 마우스 지원을 비활성화하는 방법은 무엇입니까?

xfce4-terminal을 사용하는 동안 이 질문을 하고 있지만 일반적인 해결 방법에 관심이 있습니다. 터미널 에뮬레이터가 콘솔에서 마우스 지원을 알리는 것을 방지하는 방법이 있습니까? vim이나 다른 곳에서 마우스 지원이 필요한 것보다 훨씬 더 자주 마우스 선택과 복사-붙여넣기가 필요합니다.

답변1

이 키를 누르고 Shift있으면 일반 마우스를 사용하여 선택할 수 있습니다.xterm 마우스 추적활성화되었습니다. 이는 내가 아는 모든 터미널 에뮬레이터( xterm, vte또는 기반) 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)빈 문자열에 기능( 에 설명되어 있지 않지만 및 에 언급됨)을 추가합니다 . 이는 응용 프로그램이 터미널에서 보낸 마우스 이벤트를 처리하는 것을 막지는 않지만 응용 프로그램이 마우스 추적 모드로 들어가는 시퀀스를 보내는 것을 막습니다. 따라서 두 가지를 결합할 수 있습니다.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

관련 정보