mouse - interfejs myszy szeregowej
Myszy szeregowe podłączane są do linii szeregowej
RS232/V24, której opis można znaleźć w
ttyS(4).
Połączenia zwykłej wtyczki 9-pinowej stosowanej w myszach
to:
pin |
nazwa |
zastosowanie |
2 |
RX |
Dane |
3 |
TX |
-12 V, Imax = 10 mA |
4 |
DTR |
+12 V, Imax = 10 mA |
7 |
RTS |
+12 V, Imax = 10 mA |
5 |
GND |
Masa |
Taka jest specyfikacja, ale w praktyce dla większości myszy
wystarcza 9 V.
The mouse driver can recognize a mouse by dropping RTS to low and raising it
again. About 14 ms later the mouse will send 0x4D ('M') on the data line.
After a further 63 ms, a Microsoft-compatible 3-button mouse will send 0x33
('3').
Względne przemieszczenie myszy wysyłane jest jako
dx
(wartość dodatnia oznacza w prawo) i
dy
(wartość dodatnia oznacza w dół). Myszy
mogą pracować z różnymi
prędkościami. Wybór prędkości odbywa
się poprzez cykliczne przejście przez prędkości
9600, 4800, 2400 i 1200 bitów/s, za każdym razem
zapisując dwa znaki z poniższej tabeli i czekając 0,1
sekundy. Następująca tabela pokazuje dostępne
prędkości i sekwencje znaków,
służące do ich wyboru:
bitów/s |
sekwencja |
9600 |
*q |
4800 |
*p |
2400 |
*o |
1200 |
*n |
The first byte of a data packet can be used for synchronization purposes.
Protokół
Microsoft używa 1 bitu startu, 7
bitów danych, bez parzystości i z jednym bitem stopu przy
prędkości 1200 bitów/sekundę. Dane są
przesyłane do RxD w 3-bajtowych pakietach. Przesunięcia
dx i
dy są przesyłane jako uzupełnienie do
dwóch,
lb (
rb) są ustawiane, gdy
wciśnięty jest lewy (prawy) przycisk myszy:
bajt |
d6 |
d5 |
d4 |
d3 |
d2 |
d1 |
d0 |
1 |
1 |
lb |
rb |
dy7 |
dy6 |
dx7 |
dx6 |
2 |
0 |
dx5 |
dx4 |
dx3 |
dx2 |
dx1 |
dx0 |
3 |
0 |
dy5 |
dy4 |
dy3 |
dy2 |
dy1 |
dy0 |
Oryginalne myszy Microsoft mają jedynie dwa przyciski. Istnieją
jednak myszy trójprzyciskowe, które również
korzystają z protokołu Microsoft. Wciśnięcie
trzeciego przycisku zgłaszane jest przez wysłanie pakietu z
zerowym przesunięciem i bez wciśniętych
przycisków. (Zatem, w odróżnieniu od pozostałych
dwu przycisków, stan przycisku środkowego nie jest
zgłaszany w każdym pakiecie).
Szeregowa 3-przyciskowa mysz Logitech korzysta z innego rozszerzenia
protokołu Microsoft: gdy środkowy przycisk jest zwalniany,
wysyłany jest 3-bajtowy pakiet opisany powyżej. Gdy
środkowy przycisk jest naciskany, wysyłany jest 4-bajtowy
pakiet, w którym czwarty bajt ma wartość 0x20 (lub ma
ustawiony przynajmniej bit 0x20). W szczególności,
naciśnięcie środkowego przycisku jest sygnalizowane jako
0,0,0,0x20, gdy żaden inny przycisk nie jest wciśnięty.
The
Mousesystems protocol uses 1 start bit, 8 data bits, no parity, and
two stop bits at the speed of 1200 bits/sec. Data is sent to RxD in 5-byte
packets.
dx is sent as the sum of the two two's-complement values,
dy is send as negated sum of the two two's-complement values.
lb
(
mb,
rb) are cleared when the left (middle, right) button is
pressed:
bajt |
d7 |
d6 |
d5 |
d4 |
d3 |
d2 |
d1 |
d0 |
1 |
1 |
0 |
0 |
0 |
0 |
lb |
mb |
rb |
2 |
0 |
dxa6 |
dxa5 |
dxa4 |
dxa3 |
dxa2 |
dxa1 |
dxa0 |
3 |
0 |
dya6 |
dya5 |
dya4 |
dya3 |
dya2 |
dya1 |
dya0 |
4 |
0 |
dxb6 |
dxb5 |
dxb4 |
dxb3 |
dxb2 |
dxb1 |
dxb0 |
5 |
0 |
dyb6 |
dyb5 |
dyb4 |
dyb3 |
dyb2 |
dyb1 |
dyb0 |
Bajty 4 i 5 opisują zmianę, która nastąpiła
od chwili wysłania bajtów 2 i 3.
Protokół
Sun jest 3-bajtową wersją opisanego
powyżej 5-bajtowego protokołu Mousesystemsi: ostatnie dwa bajty
nie są wysyłane.
The
MM protocol uses 1 start bit, 8 data bits, odd parity, and one stop
bit at the speed of 1200 bits/sec. Data is sent to RxD in 3-byte packets.
dx and
dy are sent as single signed values, the sign bit
indicating a negative value.
lb (
mb,
rb) are set when the
left (middle, right) button is pressed:
bajt |
d7 |
d6 |
d5 |
d4 |
d3 |
d2 |
d1 |
d0 |
1 |
1 |
0 |
0 |
dxs |
dys |
lb |
mb |
rb |
2 |
0 |
dx6 |
dx5 |
dx4 |
dx3 |
dx2 |
dx1 |
dx0 |
3 |
0 |
dy6 |
dy5 |
dy4 |
dy3 |
dy2 |
dy1 |
dy0 |
- /dev/mouse
- A commonly used symbolic link pointing to a mouse
device.
ttyS(4),
gpm(8)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Paweł Olszewski <
[email protected]>, Andrzej
Krzysztofowicz <
[email protected]> i Michał Kułach
<
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]