source: rtems-libbsd/freebsd/sys/sys/mouse.h @ 3e7de30

55-freebsd-126-freebsd-12
Last change on this file since 3e7de30 was 3e7de30, checked in by Kevin Kirspel <kevin-kirspel@…>, on 05/17/17 at 12:40:28

Add FREEBSD USB input device files

  • Property mode set to 100644
File size: 12.9 KB
Line 
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 */
54typedef 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
83typedef 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
93typedef 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
175typedef 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
223typedef 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
230typedef 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_ */
Note: See TracBrowser for help on using the repository browser.