2012-04-07 1 views
2

Я программист-любитель, который заинтересован в добавлении метода перетаскивания мышью к эмулятору терминала vt320 по адресу http://javassh.org/download/source/de/mud/terminal/vt320.html. Я смотрю через источник для мыши пресс-функции и наткнулся на это:Как получить эмулятор терминала для отправки сообщений перетаскивания кликов?

byte b[] = new byte[6]; 
b[0] = 27; 
b[1] = (byte) '['; 
b[2] = (byte) 'M'; 
b[3] = (byte) mousecode; 
b[4] = (byte) (0x20 + x + 1); 
b[5] = (byte) (0x20 + y + 1); 

write(b); // FIXME: writeSpecial here 

где х и у являются позиции символов и mousecode должен сделать с помощью кнопки мыши. Кажется довольно прямо, чтобы добавить сообщение перетаскивания мышью. Может ли кто-нибудь указать мне в сторону того, какими должны быть байты? Или я пропустил очень очевидный блокпост? В основном я заинтересован в отправке перетаскивания кликов в vim, работающем на Connectbot для Android. Похоже, это было бы очень мило.

ответ

2

Терминальный режим мыши, пожалуй, лучше всего описывается документом xterm's ctlseqs. Таким образом, когда терминал находится в одном из режимов отчетности мыши, он посылает события в виде

CSI М Пс Рх Py

Где CSI является либо один элемент управления C1-CSI (0x9b) или двух- последовательность байтов ESC (0x1b) [.

Ps, Px и Py кодируют «статус», координаты x и y как один байт, который смещается на 0x20, чтобы гарантировать, что он является управляемым байтом, а не байтом управления C0. Px и Py должны быть очевидны. Ps - это битовая маска, содержащая следующие поля:

  • Биты с 0 по 1 кодируют номер кнопки; 0 к 2 для кнопок 1 до 3, или 3 для выпуска (она не кодирует кнопка была отпущена)
  • Бит 2 устанавливается, если модификатор Shift проходит (хотя большинство терминалов будет захватывать мышь внутри, а не сообщать об этом приложения в этом состоянии)
  • Бит 3 устанавливается, если модификатор Alt удерживается
  • Бит 4 устанавливается, если модификатор Ctrl удерживается
  • Бит 5 установлен, если событие мыши представляет собой движение сопротивления, а не прессе ,
  • Бит 6 установлен для расширения диапазона кнопок мыши до кнопок 4 и 5, используемых для колеса прокрутки.

Существует три режима работы с мышью, которые используют эту отчетность, все они установлены в соответствии с DECSM; Установить Декабре приватный режим (? CSI Pn ч):

  • Mode 1000 сообщений мыши нажать и отпустить события только
  • Mode 1002 отчетов мыши нажмите, отпустите, и движение, когда удерживается кнопка (перетаскивание)
  • Режим 1003 сообщает событиям нажатия, отпускания и движения мыши, даже без удерживаемой кнопки
+0

Большое спасибо! То, что я искал ... Я собираюсь поиграть, просто отправив сигналы мыши, чтобы увидеть, работает ли это, не совсем уверен, что делать с кодами DECSM ... – q335r49

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

  • Нет связанных вопросов^_^