1 | /*- |
---|
2 | * Copyright (c) 1992, 1993 Erik Forsberg. |
---|
3 | * Copyright (c) 1996, 1997 Kazutaka YOKOTA |
---|
4 | * All rights reserved. |
---|
5 | * |
---|
6 | * Redistribution and use in source and binary forms, with or without |
---|
7 | * modification, are permitted provided that the following conditions |
---|
8 | * are met: |
---|
9 | * 1. Redistributions of source code must retain the above copyright |
---|
10 | * notice, this list of conditions and the following disclaimer. |
---|
11 | * |
---|
12 | * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED |
---|
13 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
---|
14 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN |
---|
15 | * NO EVENT SHALL I BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
---|
16 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
---|
17 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
---|
18 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
---|
19 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
---|
20 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
---|
21 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
22 | * |
---|
23 | * $FreeBSD$ |
---|
24 | */ |
---|
25 | |
---|
26 | #ifndef _SYS_MOUSE_H_ |
---|
27 | #define _SYS_MOUSE_H_ |
---|
28 | |
---|
29 | #include <sys/types.h> |
---|
30 | #include <sys/ioccom.h> |
---|
31 | |
---|
32 | /* ioctls */ |
---|
33 | #define MOUSE_GETSTATUS _IOR('M', 0, mousestatus_t) |
---|
34 | #define MOUSE_GETHWINFO _IOR('M', 1, mousehw_t) |
---|
35 | #define MOUSE_GETMODE _IOR('M', 2, mousemode_t) |
---|
36 | #define MOUSE_SETMODE _IOW('M', 3, mousemode_t) |
---|
37 | #define MOUSE_GETLEVEL _IOR('M', 4, int) |
---|
38 | #define MOUSE_SETLEVEL _IOW('M', 5, int) |
---|
39 | #define MOUSE_GETVARS _IOR('M', 6, mousevar_t) |
---|
40 | #define MOUSE_SETVARS _IOW('M', 7, mousevar_t) |
---|
41 | #define MOUSE_READSTATE _IOWR('M', 8, mousedata_t) |
---|
42 | #define MOUSE_READDATA _IOWR('M', 9, mousedata_t) |
---|
43 | |
---|
44 | #ifdef notyet |
---|
45 | #define MOUSE_SETRESOLUTION _IOW('M', 10, int) |
---|
46 | #define MOUSE_SETSCALING _IOW('M', 11, int) |
---|
47 | #define MOUSE_SETRATE _IOW('M', 12, int) |
---|
48 | #define MOUSE_GETHWID _IOR('M', 13, int) |
---|
49 | #endif |
---|
50 | |
---|
51 | #define MOUSE_SYN_GETHWINFO _IOR('M', 100, synapticshw_t) |
---|
52 | |
---|
53 | /* mouse status block */ |
---|
54 | typedef struct mousestatus { |
---|
55 | int flags; /* state change flags */ |
---|
56 | int button; /* button status */ |
---|
57 | int obutton; /* previous button status */ |
---|
58 | int dx; /* x movement */ |
---|
59 | int dy; /* y movement */ |
---|
60 | int dz; /* z movement */ |
---|
61 | } mousestatus_t; |
---|
62 | |
---|
63 | /* button */ |
---|
64 | #define MOUSE_BUTTON1DOWN 0x0001 /* left */ |
---|
65 | #define MOUSE_BUTTON2DOWN 0x0002 /* middle */ |
---|
66 | #define MOUSE_BUTTON3DOWN 0x0004 /* right */ |
---|
67 | #define MOUSE_BUTTON4DOWN 0x0008 |
---|
68 | #define MOUSE_BUTTON5DOWN 0x0010 |
---|
69 | #define MOUSE_BUTTON6DOWN 0x0020 |
---|
70 | #define MOUSE_BUTTON7DOWN 0x0040 |
---|
71 | #define MOUSE_BUTTON8DOWN 0x0080 |
---|
72 | #define MOUSE_MAXBUTTON 31 |
---|
73 | #define MOUSE_STDBUTTONS 0x0007 /* buttons 1-3 */ |
---|
74 | #define MOUSE_EXTBUTTONS 0x7ffffff8 /* the others (28 of them!) */ |
---|
75 | #define MOUSE_BUTTONS (MOUSE_STDBUTTONS | MOUSE_EXTBUTTONS) |
---|
76 | |
---|
77 | /* flags */ |
---|
78 | #define MOUSE_STDBUTTONSCHANGED MOUSE_STDBUTTONS |
---|
79 | #define MOUSE_EXTBUTTONSCHANGED MOUSE_EXTBUTTONS |
---|
80 | #define MOUSE_BUTTONSCHANGED MOUSE_BUTTONS |
---|
81 | #define MOUSE_POSCHANGED 0x80000000 |
---|
82 | |
---|
83 | typedef struct mousehw { |
---|
84 | int buttons; /* -1 if unknown */ |
---|
85 | int iftype; /* MOUSE_IF_XXX */ |
---|
86 | int type; /* mouse/track ball/pad... */ |
---|
87 | int model; /* I/F dependent model ID: MOUSE_MODEL_XXX */ |
---|
88 | int hwid; /* I/F dependent hardware ID |
---|
89 | * for the PS/2 mouse, it will be PSM_XXX_ID |
---|
90 | */ |
---|
91 | } mousehw_t; |
---|
92 | |
---|
93 | typedef struct synapticshw { |
---|
94 | int infoMajor; |
---|
95 | int infoMinor; |
---|
96 | int infoRot180; |
---|
97 | int infoPortrait; |
---|
98 | int infoSensor; |
---|
99 | int infoHardware; |
---|
100 | int infoNewAbs; |
---|
101 | int capPen; |
---|
102 | int infoSimplC; |
---|
103 | int infoGeometry; |
---|
104 | int capExtended; |
---|
105 | int capSleep; |
---|
106 | int capFourButtons; |
---|
107 | int capMultiFinger; |
---|
108 | int capPalmDetect; |
---|
109 | int capPassthrough; |
---|
110 | int capMiddle; |
---|
111 | int capLowPower; |
---|
112 | int capMultiFingerReport; |
---|
113 | int capBallistics; |
---|
114 | int nExtendedButtons; |
---|
115 | int nExtendedQueries; |
---|
116 | int capClickPad; |
---|
117 | int capDeluxeLEDs; |
---|
118 | int noAbsoluteFilter; |
---|
119 | int capReportsV; |
---|
120 | int capUniformClickPad; |
---|
121 | int capReportsMin; |
---|
122 | int capInterTouch; |
---|
123 | int capReportsMax; |
---|
124 | int capClearPad; |
---|
125 | int capAdvancedGestures; |
---|
126 | int multiFingerMode; |
---|
127 | int capCoveredPad; |
---|
128 | int verticalScroll; |
---|
129 | int horizontalScroll; |
---|
130 | int verticalWheel; |
---|
131 | int capEWmode; |
---|
132 | int minimumXCoord; |
---|
133 | int minimumYCoord; |
---|
134 | int maximumXCoord; |
---|
135 | int maximumYCoord; |
---|
136 | int infoXupmm; |
---|
137 | int infoYupmm; |
---|
138 | } synapticshw_t; |
---|
139 | |
---|
140 | /* iftype */ |
---|
141 | #define MOUSE_IF_UNKNOWN (-1) |
---|
142 | #define MOUSE_IF_SERIAL 0 |
---|
143 | #define MOUSE_IF_BUS 1 |
---|
144 | #define MOUSE_IF_INPORT 2 |
---|
145 | #define MOUSE_IF_PS2 3 |
---|
146 | #define MOUSE_IF_SYSMOUSE 4 |
---|
147 | #define MOUSE_IF_USB 5 |
---|
148 | |
---|
149 | /* type */ |
---|
150 | #define MOUSE_UNKNOWN (-1) /* should be treated as a mouse */ |
---|
151 | #define MOUSE_MOUSE 0 |
---|
152 | #define MOUSE_TRACKBALL 1 |
---|
153 | #define MOUSE_STICK 2 |
---|
154 | #define MOUSE_PAD 3 |
---|
155 | |
---|
156 | /* model */ |
---|
157 | #define MOUSE_MODEL_UNKNOWN (-1) |
---|
158 | #define MOUSE_MODEL_GENERIC 0 |
---|
159 | #define MOUSE_MODEL_GLIDEPOINT 1 |
---|
160 | #define MOUSE_MODEL_NETSCROLL 2 |
---|
161 | #define MOUSE_MODEL_NET 3 |
---|
162 | #define MOUSE_MODEL_INTELLI 4 |
---|
163 | #define MOUSE_MODEL_THINK 5 |
---|
164 | #define MOUSE_MODEL_EASYSCROLL 6 |
---|
165 | #define MOUSE_MODEL_MOUSEMANPLUS 7 |
---|
166 | #define MOUSE_MODEL_KIDSPAD 8 |
---|
167 | #define MOUSE_MODEL_VERSAPAD 9 |
---|
168 | #define MOUSE_MODEL_EXPLORER 10 |
---|
169 | #define MOUSE_MODEL_4D 11 |
---|
170 | #define MOUSE_MODEL_4DPLUS 12 |
---|
171 | #define MOUSE_MODEL_SYNAPTICS 13 |
---|
172 | #define MOUSE_MODEL_TRACKPOINT 14 |
---|
173 | #define MOUSE_MODEL_ELANTECH 15 |
---|
174 | |
---|
175 | typedef struct mousemode { |
---|
176 | int protocol; /* MOUSE_PROTO_XXX */ |
---|
177 | int rate; /* report rate (per sec), -1 if unknown */ |
---|
178 | int resolution; /* MOUSE_RES_XXX, -1 if unknown */ |
---|
179 | int accelfactor; /* accelation factor (must be 1 or greater) */ |
---|
180 | int level; /* driver operation level */ |
---|
181 | int packetsize; /* the length of the data packet */ |
---|
182 | unsigned char syncmask[2]; /* sync. data bits in the header byte */ |
---|
183 | } mousemode_t; |
---|
184 | |
---|
185 | /* protocol */ |
---|
186 | /* |
---|
187 | * Serial protocols: |
---|
188 | * Microsoft, MouseSystems, Logitech, MM series, MouseMan, Hitachi Tablet, |
---|
189 | * GlidePoint, IntelliMouse, Thinking Mouse, MouseRemote, Kidspad, |
---|
190 | * VersaPad |
---|
191 | * Bus mouse protocols: |
---|
192 | * bus, InPort |
---|
193 | * PS/2 mouse protocol: |
---|
194 | * PS/2 |
---|
195 | */ |
---|
196 | #define MOUSE_PROTO_UNKNOWN (-1) |
---|
197 | #define MOUSE_PROTO_MS 0 /* Microsoft Serial, 3 bytes */ |
---|
198 | #define MOUSE_PROTO_MSC 1 /* Mouse Systems, 5 bytes */ |
---|
199 | #define MOUSE_PROTO_LOGI 2 /* Logitech, 3 bytes */ |
---|
200 | #define MOUSE_PROTO_MM 3 /* MM series, 3 bytes */ |
---|
201 | #define MOUSE_PROTO_LOGIMOUSEMAN 4 /* Logitech MouseMan 3/4 bytes */ |
---|
202 | #define MOUSE_PROTO_BUS 5 /* MS/Logitech bus mouse */ |
---|
203 | #define MOUSE_PROTO_INPORT 6 /* MS/ATI InPort mouse */ |
---|
204 | #define MOUSE_PROTO_PS2 7 /* PS/2 mouse, 3 bytes */ |
---|
205 | #define MOUSE_PROTO_HITTAB 8 /* Hitachi Tablet 3 bytes */ |
---|
206 | #define MOUSE_PROTO_GLIDEPOINT 9 /* ALPS GlidePoint, 3/4 bytes */ |
---|
207 | #define MOUSE_PROTO_INTELLI 10 /* MS IntelliMouse, 4 bytes */ |
---|
208 | #define MOUSE_PROTO_THINK 11 /* Kensington Thinking Mouse, 3/4 bytes */ |
---|
209 | #define MOUSE_PROTO_SYSMOUSE 12 /* /dev/sysmouse */ |
---|
210 | #define MOUSE_PROTO_X10MOUSEREM 13 /* X10 MouseRemote, 3 bytes */ |
---|
211 | #define MOUSE_PROTO_KIDSPAD 14 /* Genius Kidspad */ |
---|
212 | #define MOUSE_PROTO_VERSAPAD 15 /* Interlink VersaPad, 6 bytes */ |
---|
213 | #define MOUSE_PROTO_JOGDIAL 16 /* Vaio's JogDial */ |
---|
214 | #define MOUSE_PROTO_GTCO_DIGIPAD 17 |
---|
215 | |
---|
216 | #define MOUSE_RES_UNKNOWN (-1) |
---|
217 | #define MOUSE_RES_DEFAULT 0 |
---|
218 | #define MOUSE_RES_LOW (-2) |
---|
219 | #define MOUSE_RES_MEDIUMLOW (-3) |
---|
220 | #define MOUSE_RES_MEDIUMHIGH (-4) |
---|
221 | #define MOUSE_RES_HIGH (-5) |
---|
222 | |
---|
223 | typedef struct mousedata { |
---|
224 | int len; /* # of data in the buffer */ |
---|
225 | int buf[16]; /* data buffer */ |
---|
226 | } mousedata_t; |
---|
227 | |
---|
228 | #if (defined(MOUSE_GETVARS)) |
---|
229 | |
---|
230 | typedef struct mousevar { |
---|
231 | int var[16]; |
---|
232 | } mousevar_t; |
---|
233 | |
---|
234 | /* magic numbers in var[0] */ |
---|
235 | #define MOUSE_VARS_PS2_SIG 0x00325350 /* 'PS2' */ |
---|
236 | #define MOUSE_VARS_BUS_SIG 0x00535542 /* 'BUS' */ |
---|
237 | #define MOUSE_VARS_INPORT_SIG 0x00504e49 /* 'INP' */ |
---|
238 | |
---|
239 | #endif /* MOUSE_GETVARS */ |
---|
240 | |
---|
241 | /* Synaptics Touchpad */ |
---|
242 | #define MOUSE_SYNAPTICS_PACKETSIZE 6 /* '3' works better */ |
---|
243 | |
---|
244 | /* Elantech Touchpad */ |
---|
245 | #define MOUSE_ELANTECH_PACKETSIZE 6 |
---|
246 | |
---|
247 | /* Microsoft Serial mouse data packet */ |
---|
248 | #define MOUSE_MSS_PACKETSIZE 3 |
---|
249 | #define MOUSE_MSS_SYNCMASK 0x40 |
---|
250 | #define MOUSE_MSS_SYNC 0x40 |
---|
251 | #define MOUSE_MSS_BUTTONS 0x30 |
---|
252 | #define MOUSE_MSS_BUTTON1DOWN 0x20 /* left */ |
---|
253 | #define MOUSE_MSS_BUTTON2DOWN 0x00 /* no middle button */ |
---|
254 | #define MOUSE_MSS_BUTTON3DOWN 0x10 /* right */ |
---|
255 | |
---|
256 | /* Logitech MouseMan data packet (M+ protocol) */ |
---|
257 | #define MOUSE_LMAN_BUTTON2DOWN 0x20 /* middle button, the 4th byte */ |
---|
258 | |
---|
259 | /* ALPS GlidePoint extension (variant of M+ protocol) */ |
---|
260 | #define MOUSE_ALPS_BUTTON2DOWN 0x20 /* middle button, the 4th byte */ |
---|
261 | #define MOUSE_ALPS_TAP 0x10 /* `tapping' action, the 4th byte */ |
---|
262 | |
---|
263 | /* Kinsington Thinking Mouse extension (variant of M+ protocol) */ |
---|
264 | #define MOUSE_THINK_BUTTON2DOWN 0x20 /* lower-left button, the 4th byte */ |
---|
265 | #define MOUSE_THINK_BUTTON4DOWN 0x10 /* lower-right button, the 4th byte */ |
---|
266 | |
---|
267 | /* MS IntelliMouse (variant of MS Serial) */ |
---|
268 | #define MOUSE_INTELLI_PACKETSIZE 4 |
---|
269 | #define MOUSE_INTELLI_BUTTON2DOWN 0x10 /* middle button in the 4th byte */ |
---|
270 | |
---|
271 | /* Mouse Systems Corp. mouse data packet */ |
---|
272 | #define MOUSE_MSC_PACKETSIZE 5 |
---|
273 | #define MOUSE_MSC_SYNCMASK 0xf8 |
---|
274 | #define MOUSE_MSC_SYNC 0x80 |
---|
275 | #define MOUSE_MSC_BUTTONS 0x07 |
---|
276 | #define MOUSE_MSC_BUTTON1UP 0x04 /* left */ |
---|
277 | #define MOUSE_MSC_BUTTON2UP 0x02 /* middle */ |
---|
278 | #define MOUSE_MSC_BUTTON3UP 0x01 /* right */ |
---|
279 | #define MOUSE_MSC_MAXBUTTON 3 |
---|
280 | |
---|
281 | /* MM series mouse data packet */ |
---|
282 | #define MOUSE_MM_PACKETSIZE 3 |
---|
283 | #define MOUSE_MM_SYNCMASK 0xe0 |
---|
284 | #define MOUSE_MM_SYNC 0x80 |
---|
285 | #define MOUSE_MM_BUTTONS 0x07 |
---|
286 | #define MOUSE_MM_BUTTON1DOWN 0x04 /* left */ |
---|
287 | #define MOUSE_MM_BUTTON2DOWN 0x02 /* middle */ |
---|
288 | #define MOUSE_MM_BUTTON3DOWN 0x01 /* right */ |
---|
289 | #define MOUSE_MM_XPOSITIVE 0x10 |
---|
290 | #define MOUSE_MM_YPOSITIVE 0x08 |
---|
291 | |
---|
292 | /* PS/2 mouse data packet */ |
---|
293 | #define MOUSE_PS2_PACKETSIZE 3 |
---|
294 | #define MOUSE_PS2_SYNCMASK 0xc8 |
---|
295 | #define MOUSE_PS2_SYNC 0x08 |
---|
296 | #define MOUSE_PS2_BUTTONS 0x07 /* 0x03 for 2 button mouse */ |
---|
297 | #define MOUSE_PS2_BUTTON1DOWN 0x01 /* left */ |
---|
298 | #define MOUSE_PS2_BUTTON2DOWN 0x04 /* middle */ |
---|
299 | #define MOUSE_PS2_BUTTON3DOWN 0x02 /* right */ |
---|
300 | #define MOUSE_PS2_TAP MOUSE_PS2_SYNC /* GlidePoint (PS/2) `tapping' |
---|
301 | * Yes! this is the same bit |
---|
302 | * as SYNC! |
---|
303 | */ |
---|
304 | |
---|
305 | #define MOUSE_PS2_XNEG 0x10 |
---|
306 | #define MOUSE_PS2_YNEG 0x20 |
---|
307 | #define MOUSE_PS2_XOVERFLOW 0x40 |
---|
308 | #define MOUSE_PS2_YOVERFLOW 0x80 |
---|
309 | |
---|
310 | /* Logitech MouseMan+ (PS/2) data packet (PS/2++ protocol) */ |
---|
311 | #define MOUSE_PS2PLUS_SYNCMASK 0x48 |
---|
312 | #define MOUSE_PS2PLUS_SYNC 0x48 |
---|
313 | #define MOUSE_PS2PLUS_ZNEG 0x08 /* sign bit */ |
---|
314 | #define MOUSE_PS2PLUS_BUTTON4DOWN 0x10 /* 4th button on MouseMan+ */ |
---|
315 | #define MOUSE_PS2PLUS_BUTTON5DOWN 0x20 |
---|
316 | |
---|
317 | /* IBM ScrollPoint (PS/2) also uses PS/2++ protocol */ |
---|
318 | #define MOUSE_SPOINT_ZNEG 0x80 /* sign bits */ |
---|
319 | #define MOUSE_SPOINT_WNEG 0x08 |
---|
320 | |
---|
321 | /* MS IntelliMouse (PS/2) data packet */ |
---|
322 | #define MOUSE_PS2INTELLI_PACKETSIZE 4 |
---|
323 | /* some compatible mice have additional buttons */ |
---|
324 | #define MOUSE_PS2INTELLI_BUTTON4DOWN 0x40 |
---|
325 | #define MOUSE_PS2INTELLI_BUTTON5DOWN 0x80 |
---|
326 | |
---|
327 | /* MS IntelliMouse Explorer (PS/2) data packet (variation of IntelliMouse) */ |
---|
328 | #define MOUSE_EXPLORER_ZNEG 0x08 /* sign bit */ |
---|
329 | /* IntelliMouse Explorer has additional button data in the fourth byte */ |
---|
330 | #define MOUSE_EXPLORER_BUTTON4DOWN 0x10 |
---|
331 | #define MOUSE_EXPLORER_BUTTON5DOWN 0x20 |
---|
332 | |
---|
333 | /* Interlink VersaPad (serial I/F) data packet */ |
---|
334 | #define MOUSE_VERSA_PACKETSIZE 6 |
---|
335 | #define MOUSE_VERSA_IN_USE 0x04 |
---|
336 | #define MOUSE_VERSA_SYNCMASK 0xc3 |
---|
337 | #define MOUSE_VERSA_SYNC 0xc0 |
---|
338 | #define MOUSE_VERSA_BUTTONS 0x30 |
---|
339 | #define MOUSE_VERSA_BUTTON1DOWN 0x20 /* left */ |
---|
340 | #define MOUSE_VERSA_BUTTON2DOWN 0x00 /* middle */ |
---|
341 | #define MOUSE_VERSA_BUTTON3DOWN 0x10 /* right */ |
---|
342 | #define MOUSE_VERSA_TAP 0x08 |
---|
343 | |
---|
344 | /* Interlink VersaPad (PS/2 I/F) data packet */ |
---|
345 | #define MOUSE_PS2VERSA_PACKETSIZE 6 |
---|
346 | #define MOUSE_PS2VERSA_IN_USE 0x10 |
---|
347 | #define MOUSE_PS2VERSA_SYNCMASK 0xe8 |
---|
348 | #define MOUSE_PS2VERSA_SYNC 0xc8 |
---|
349 | #define MOUSE_PS2VERSA_BUTTONS 0x05 |
---|
350 | #define MOUSE_PS2VERSA_BUTTON1DOWN 0x04 /* left */ |
---|
351 | #define MOUSE_PS2VERSA_BUTTON2DOWN 0x00 /* middle */ |
---|
352 | #define MOUSE_PS2VERSA_BUTTON3DOWN 0x01 /* right */ |
---|
353 | #define MOUSE_PS2VERSA_TAP 0x02 |
---|
354 | |
---|
355 | /* A4 Tech 4D Mouse (PS/2) data packet */ |
---|
356 | #define MOUSE_4D_PACKETSIZE 3 |
---|
357 | #define MOUSE_4D_WHEELBITS 0xf0 |
---|
358 | |
---|
359 | /* A4 Tech 4D+ Mouse (PS/2) data packet */ |
---|
360 | #define MOUSE_4DPLUS_PACKETSIZE 3 |
---|
361 | #define MOUSE_4DPLUS_ZNEG 0x04 /* sign bit */ |
---|
362 | #define MOUSE_4DPLUS_BUTTON4DOWN 0x08 |
---|
363 | |
---|
364 | /* sysmouse extended data packet */ |
---|
365 | /* |
---|
366 | * /dev/sysmouse sends data in two formats, depending on the protocol |
---|
367 | * level. At the level 0, format is exactly the same as MousSystems' |
---|
368 | * five byte packet. At the level 1, the first five bytes are the same |
---|
369 | * as at the level 0. There are additional three bytes which shows |
---|
370 | * `dz' and the states of additional buttons. `dz' is expressed as the |
---|
371 | * sum of the byte 5 and 6 which contain signed seven bit values. |
---|
372 | * The states of the button 4 though 10 are in the bit 0 though 6 in |
---|
373 | * the byte 7 respectively: 1 indicates the button is up. |
---|
374 | */ |
---|
375 | #define MOUSE_SYS_PACKETSIZE 8 |
---|
376 | #define MOUSE_SYS_SYNCMASK 0xf8 |
---|
377 | #define MOUSE_SYS_SYNC 0x80 |
---|
378 | #define MOUSE_SYS_BUTTON1UP 0x04 /* left, 1st byte */ |
---|
379 | #define MOUSE_SYS_BUTTON2UP 0x02 /* middle, 1st byte */ |
---|
380 | #define MOUSE_SYS_BUTTON3UP 0x01 /* right, 1st byte */ |
---|
381 | #define MOUSE_SYS_BUTTON4UP 0x0001 /* 7th byte */ |
---|
382 | #define MOUSE_SYS_BUTTON5UP 0x0002 |
---|
383 | #define MOUSE_SYS_BUTTON6UP 0x0004 |
---|
384 | #define MOUSE_SYS_BUTTON7UP 0x0008 |
---|
385 | #define MOUSE_SYS_BUTTON8UP 0x0010 |
---|
386 | #define MOUSE_SYS_BUTTON9UP 0x0020 |
---|
387 | #define MOUSE_SYS_BUTTON10UP 0x0040 |
---|
388 | #define MOUSE_SYS_MAXBUTTON 10 |
---|
389 | #define MOUSE_SYS_STDBUTTONS 0x07 |
---|
390 | #define MOUSE_SYS_EXTBUTTONS 0x7f /* the others */ |
---|
391 | |
---|
392 | /* Mouse remote socket */ |
---|
393 | #define _PATH_MOUSEREMOTE "/var/run/MouseRemote" |
---|
394 | |
---|
395 | #endif /* _SYS_MOUSE_H_ */ |
---|