2017-02-03 5 views
0

Я использую библиотеку curses для Python, чтобы реализовать некоторый пользовательский интерфейс, управляемый мышью, в терминале Linux. Я заметил, что, когда ширина экрана больше, чем 250 столбцов, или таким образом, если словоPython curses getmouse возвращает отрицательное число

_, mouse_x, mouse_y, _, mouse_event_type = curses.getmouse() 

mouse_x будет отрицательным числом (например, -33)

Любая идея, почему это может быть в случае?

ответ

2

Преобладающий протокол мыши xterm допускает только значения до 224 (т. Е. 256-32). Когда вы выходите за пределы этого диапазона, вы получите интересные результаты.

Некоторые (но не всех) из терминалов, которые поддерживают протокол Xterm мышей были изменены, чтобы поддержать новый протокол XTerm (SGR 1006), который позволяет больше значения координат. Некоторые (опять же не все) приложения, которые используют протокол мыши, могут использовать новый протокол.

Если у вас установлена ​​полная база данных терминалов ncurses и используются приложения (в том числе ncurses), которые работают с этим протоколом, вы можете использовать TERM=xterm-1006 для получения этой функции.

Смежные вопросы