шпаклевка поддерживает SET_ANY_EVENT_MOUSE, если да, то как ее включить? - PullRequest
0 голосов
/ 31 января 2020

Я добавляю поддержку мыши в ncurses-подобную библиотеку и отправляю управляющую последовательность:

SET_ANY_EVENT_MOUSE (1003h), но кажется, что замазка ее не поддерживает?

Это поддерживает поддержка SET_BTN_EVENT_MOUSE (1002h)

Все остальные терминалы, которые я пробовал (xterm, терминалы баз данных, iterm), работают нормально. Замазка также поддерживает SET_ANY_EVENT_MOUSE и должен ли я включить что-то еще?

Как бы вы отладили такие последовательности управления?

1 Ответ

2 голосов
/ 31 января 2020

Я бы посмотрел на исходный код PuTTY, который находится в Git хранилище. Соответствующее место для поиска находится в terminal.c в функции toggle_mode. Оператор switch / case упорядочен по номеру режима:

      case 1000:                   /* xterm mouse 1 (normal) */
        term->xterm_mouse = state ? 1 : 0;
        win_set_raw_mouse_mode(term->win, state);
        break;
      case 1002:                   /* xterm mouse 2 (inc. button drags) */
        term->xterm_mouse = state ? 2 : 0;
        win_set_raw_mouse_mode(term->win, state);
        break;
      case 1006:                   /* xterm extended mouse */
        term->xterm_extended_mouse = state;
        break;
      case 1015:                   /* urxvt extended mouse */
        term->urxvt_extended_mouse = state;
        break;
      case 1047:

и, как вы видите, ничего не делает для 1003 (и нигде в журнале об этом нигде не упоминается).

Я бы связался с источником, но хост не отвечает в данный момент. Однако из моей локальной копии я вижу, что здесь была добавлена ​​функция 1002:

commit 93101b5a716c3464789ecf5af6403c68559afa43
Author: Simon Tatham <anakin@pobox.com>
Date:   Sun May 6 14:20:41 2001 +0000

    Wez Furlong's patch to add xterm mouse reporting and proper mouse
    wheel support.

    [originally from svn r1097]

diff --git a/terminal.c b/terminal.c

, так что это не недавно забытая проблема.

...