mouse(4) последовательный интерфейс мыши

НАСТРОЙКА

Мышь подключается последовательному порту RS232/V24, описание см. в ttyS(4).

ОПИСАНИЕ

Введение

Описание разъёма c 9 контактами, используемого для подключения мыши:
контактназваниеназначение
2RXданные
3TX-12 V, Imax = 10 mA
4DTR+12 V, Imax = 10 mA
7RTS+12 V, Imax = 10 mA
5GNDземля

Такое описание приводится в документации, почти любой мыши хватает 9 V.

Драйвер мыши может распознать мышь, посылая ослабевающий сигнал RTS и затем увеличивая его. Примерно через 14 миллисекунд мышь пошлёт 0x4D ('M') по линии данных. Ещё через 63 миллисекунды трёх-кнопочная Microsoft-совместимая мышь пошлёт 0x33 ('3').

Относительное движение мыши посылается как dx (положительное значение означает движение направо) и dy (положительное значение означает движение вниз). Различные мыши могут работать на разных скоростях. Для определения скорости устанавливаются следующие её значения (по очереди): 9600, 4800, 2400 и 1200 бит/с; каждый раз при установке значения скорости пишутся 2 символа из таблицы, приведённой ниже, и после этого выполняется ожидание, равное 0,1 секунды. В таблице указаны скорости и символы, соответствующие им:

бит/ссимволы
9600*q
4800*p
2400*o
1200*n

Первый байт из пакета данных может использоваться для синхронизации.

Протокол Microsoft

В протоколе Microsoft используется один начальный бит, 7 битов данных (без проверки четности), один стоп-бит; протокол работает со скоростью 1200 бит/с. Данные пересылаются по RxD трёх-байтовыми пакетами. Движения по dx и dy пересылаются в коде дополнения до 2. Значения lb (rb), устанавливаемые при нажатии левой (правой) кнопки:
байтd6d5d4d3d2d1d0
11lbrbdy7dy6dx7dx6
20dx5dx4dx3dx2dx1dx0
30dy5dy4dy3dy2dy1dy0

Протокол Microsoft для трёх-кнопочной мыши

Первоначально мышь Microsoft имела две кнопки. Но есть несколько трёх-кнопочных мышей, также использующих протокол Microsoft. О нажатии или отпускании средней кнопки сообщается отправкой пакета с нулевым движением и ненажатыми клавишами. (Таким образом, в отличие от двух других кнопок, состояние средней в каждом пакете не передаётся).

Протокол Logitech

Трёх-кнопочная мышь Logitech представляет собой расширенный вариант протокола Microsoft: когда средняя кнопка отпущена, посылается вышеописанный трёх-байтовый пакет, а когда она нажата, посылается четырёх-байтовый пакет, где четвёртый байт имеет значение 0x20 (или, как минимум, в нём установлен бит 0x20). В частности, о нажатии средней кнопки сообщается с помощью пакета 0,0,0,0x20 при том, что остальные кнопки остаются ненажатыми.

Протокол Mousesystems

В протоколе Mousesystems используется один начальный бит, 8 битов данных, без проверки чётности и два стоп-бита при скорости 1200 бит/с. Данные посылаются по RxD пяти-байтовыми пакетами. dx посылается как сумма значений в коде дополнения до 2, dy посылается как отрицательная сумма значений в коде дополнения до 2. lb (mb, rb) обнуляются при нажатии левой (средней, правой) кнопки:
байтd7d6d5d4d3d2d1d0
110000lbmbrb
20dxa6dxa5dxa4dxa3dxa2dxa1dxa0
30dya6dya5dya4dya3dya2dya1dya0
40dxb6dxb5dxb4dxb3dxb2dxb1dxb0
50dyb6dyb5dyb4dyb3dyb2dyb1dyb0

Четвёртый и пятый байты описывают изменения, произошедшие за время передачи второго и третьего байта.

Протокол Sun

Протокол Sun представляет собой трёх-байтовую версию протокола Mousesystems (описанного выше): два последних байта не отсылаются.

Протокол MM

В протоколе MM используется один начальный бит, 8 битов данных, контроль по нечётности и один стоп-бит при скорости 1200 бит/с. Данные посылаются по RxD трёх-байтовыми пакетами. dx и dy отсылаются как единичные значения со знаком, бит знака указывает на отрицательное значение. lb (mb, rb) устанавливаются при нажатии левой (средней, правой) кнопки:
байтd7d6d5d4d3d2d1d0
1100dxsdyslbmbrb
20dx6dx5dx4dx3dx2dx1dx0
30dy6dy5dy4dy3dy2dy1dy0

ФАЙЛЫ

/dev/mouse
Обычно используется символьная ссылка на устройство мыши.