#ifndef _SYS_MOUSE_H_
#define _SYS_MOUSE_H_
#include <sys/types.h>
#include <sys/ioccom.h>
#define MOUSE_GETSTATUS _IOR('M', 0, mousestatus_t)
#define MOUSE_GETHWINFO _IOR('M', 1, mousehw_t)
#define MOUSE_GETMODE _IOR('M', 2, mousemode_t)
#define MOUSE_SETMODE _IOW('M', 3, mousemode_t)
#define MOUSE_GETLEVEL _IOR('M', 4, int)
#define MOUSE_SETLEVEL _IOW('M', 5, int)
#define MOUSE_READSTATE _IOWR('M', 8, mousedata_t)
#define MOUSE_READDATA _IOWR('M', 9, mousedata_t)
#ifdef notyet
#define MOUSE_SETRESOLUTION _IOW('M', 10, int)
#define MOUSE_SETSCALING _IOW('M', 11, int)
#define MOUSE_SETRATE _IOW('M', 12, int)
#define MOUSE_GETHWID _IOR('M', 13, int)
#endif
#define MOUSE_SYN_GETHWINFO _IOR('M', 100, synapticshw_t)
typedef struct mousestatus {
int flags;
int button;
int obutton;
int dx;
int dy;
int dz;
} mousestatus_t;
#define MOUSE_BUTTON1DOWN 0x0001
#define MOUSE_BUTTON2DOWN 0x0002
#define MOUSE_BUTTON3DOWN 0x0004
#define MOUSE_BUTTON4DOWN 0x0008
#define MOUSE_BUTTON5DOWN 0x0010
#define MOUSE_BUTTON6DOWN 0x0020
#define MOUSE_BUTTON7DOWN 0x0040
#define MOUSE_BUTTON8DOWN 0x0080
#define MOUSE_MAXBUTTON 31
#define MOUSE_STDBUTTONS 0x0007
#define MOUSE_EXTBUTTONS 0x7ffffff8
#define MOUSE_BUTTONS (MOUSE_STDBUTTONS | MOUSE_EXTBUTTONS)
#define MOUSE_STDBUTTONSCHANGED MOUSE_STDBUTTONS
#define MOUSE_EXTBUTTONSCHANGED MOUSE_EXTBUTTONS
#define MOUSE_BUTTONSCHANGED MOUSE_BUTTONS
#define MOUSE_POSCHANGED 0x80000000
typedef struct mousehw {
int buttons;
int iftype;
int type;
int model;
int hwid;
} mousehw_t;
typedef struct synapticshw {
int infoMajor;
int infoMinor;
int infoRot180;
int infoPortrait;
int infoSensor;
int infoHardware;
int infoNewAbs;
int capPen;
int infoSimplC;
int infoGeometry;
int capExtended;
int capSleep;
int capFourButtons;
int capMultiFinger;
int capPalmDetect;
int capPassthrough;
int capMiddle;
int capLowPower;
int capMultiFingerReport;
int capBallistics;
int nExtendedButtons;
int nExtendedQueries;
int capClickPad;
int capDeluxeLEDs;
int noAbsoluteFilter;
int capReportsV;
int capUniformClickPad;
int capReportsMin;
int capInterTouch;
int capReportsMax;
int capClearPad;
int capAdvancedGestures;
int multiFingerMode;
int capCoveredPad;
int verticalScroll;
int horizontalScroll;
int verticalWheel;
int capEWmode;
int minimumXCoord;
int minimumYCoord;
int maximumXCoord;
int maximumYCoord;
int infoXupmm;
int infoYupmm;
int forcePad;
int topButtonPad;
} synapticshw_t;
#define MOUSE_IF_UNKNOWN (-1)
#define MOUSE_IF_SERIAL 0
#define MOUSE_IF_PS2 3
#define MOUSE_IF_SYSMOUSE 4
#define MOUSE_IF_USB 5
#define MOUSE_UNKNOWN (-1)
#define MOUSE_MOUSE 0
#define MOUSE_TRACKBALL 1
#define MOUSE_STICK 2
#define MOUSE_PAD 3
#define MOUSE_MODEL_UNKNOWN (-1)
#define MOUSE_MODEL_GENERIC 0
#define MOUSE_MODEL_GLIDEPOINT 1
#define MOUSE_MODEL_NETSCROLL 2
#define MOUSE_MODEL_NET 3
#define MOUSE_MODEL_INTELLI 4
#define MOUSE_MODEL_THINK 5
#define MOUSE_MODEL_EASYSCROLL 6
#define MOUSE_MODEL_MOUSEMANPLUS 7
#define MOUSE_MODEL_KIDSPAD 8
#define MOUSE_MODEL_VERSAPAD 9
#define MOUSE_MODEL_EXPLORER 10
#define MOUSE_MODEL_4D 11
#define MOUSE_MODEL_4DPLUS 12
#define MOUSE_MODEL_SYNAPTICS 13
#define MOUSE_MODEL_TRACKPOINT 14
#define MOUSE_MODEL_ELANTECH 15
typedef struct mousemode {
int protocol;
int rate;
int resolution;
int accelfactor;
int level;
int packetsize;
unsigned char syncmask[2];
} mousemode_t;
#define MOUSE_PROTO_UNKNOWN (-1)
#define MOUSE_PROTO_MS 0
#define MOUSE_PROTO_MSC 1
#define MOUSE_PROTO_LOGI 2
#define MOUSE_PROTO_MM 3
#define MOUSE_PROTO_LOGIMOUSEMAN 4
#define MOUSE_PROTO_BUS 5
#define MOUSE_PROTO_INPORT 6
#define MOUSE_PROTO_PS2 7
#define MOUSE_PROTO_HITTAB 8
#define MOUSE_PROTO_GLIDEPOINT 9
#define MOUSE_PROTO_INTELLI 10
#define MOUSE_PROTO_THINK 11
#define MOUSE_PROTO_SYSMOUSE 12
#define MOUSE_PROTO_X10MOUSEREM 13
#define MOUSE_PROTO_KIDSPAD 14
#define MOUSE_PROTO_VERSAPAD 15
#define MOUSE_PROTO_JOGDIAL 16
#define MOUSE_PROTO_GTCO_DIGIPAD 17
#define MOUSE_RES_UNKNOWN (-1)
#define MOUSE_RES_DEFAULT 0
#define MOUSE_RES_LOW (-2)
#define MOUSE_RES_MEDIUMLOW (-3)
#define MOUSE_RES_MEDIUMHIGH (-4)
#define MOUSE_RES_HIGH (-5)
typedef struct mousedata {
int len;
int buf[16];
} mousedata_t;
#define MOUSE_SYNAPTICS_PACKETSIZE 6
#define MOUSE_ELANTECH_PACKETSIZE 6
#define MOUSE_MSS_PACKETSIZE 3
#define MOUSE_MSS_SYNCMASK 0x40
#define MOUSE_MSS_SYNC 0x40
#define MOUSE_MSS_BUTTONS 0x30
#define MOUSE_MSS_BUTTON1DOWN 0x20
#define MOUSE_MSS_BUTTON2DOWN 0x00
#define MOUSE_MSS_BUTTON3DOWN 0x10
#define MOUSE_LMAN_BUTTON2DOWN 0x20
#define MOUSE_ALPS_BUTTON2DOWN 0x20
#define MOUSE_ALPS_TAP 0x10
#define MOUSE_THINK_BUTTON2DOWN 0x20
#define MOUSE_THINK_BUTTON4DOWN 0x10
#define MOUSE_INTELLI_PACKETSIZE 4
#define MOUSE_INTELLI_BUTTON2DOWN 0x10
#define MOUSE_MSC_PACKETSIZE 5
#define MOUSE_MSC_SYNCMASK 0xf8
#define MOUSE_MSC_SYNC 0x80
#define MOUSE_MSC_BUTTONS 0x07
#define MOUSE_MSC_BUTTON1UP 0x04
#define MOUSE_MSC_BUTTON2UP 0x02
#define MOUSE_MSC_BUTTON3UP 0x01
#define MOUSE_MSC_MAXBUTTON 3
#define MOUSE_MM_PACKETSIZE 3
#define MOUSE_MM_SYNCMASK 0xe0
#define MOUSE_MM_SYNC 0x80
#define MOUSE_MM_BUTTONS 0x07
#define MOUSE_MM_BUTTON1DOWN 0x04
#define MOUSE_MM_BUTTON2DOWN 0x02
#define MOUSE_MM_BUTTON3DOWN 0x01
#define MOUSE_MM_XPOSITIVE 0x10
#define MOUSE_MM_YPOSITIVE 0x08
#define MOUSE_PS2_PACKETSIZE 3
#define MOUSE_PS2_SYNCMASK 0xc8
#define MOUSE_PS2_SYNC 0x08
#define MOUSE_PS2_BUTTONS 0x07
#define MOUSE_PS2_BUTTON1DOWN 0x01
#define MOUSE_PS2_BUTTON2DOWN 0x04
#define MOUSE_PS2_BUTTON3DOWN 0x02
#define MOUSE_PS2_TAP MOUSE_PS2_SYNC
#define MOUSE_PS2_XNEG 0x10
#define MOUSE_PS2_YNEG 0x20
#define MOUSE_PS2_XOVERFLOW 0x40
#define MOUSE_PS2_YOVERFLOW 0x80
#define MOUSE_PS2PLUS_SYNCMASK 0x48
#define MOUSE_PS2PLUS_SYNC 0x48
#define MOUSE_PS2PLUS_ZNEG 0x08
#define MOUSE_PS2PLUS_BUTTON4DOWN 0x10
#define MOUSE_PS2PLUS_BUTTON5DOWN 0x20
#define MOUSE_SPOINT_ZNEG 0x80
#define MOUSE_SPOINT_WNEG 0x08
#define MOUSE_PS2INTELLI_PACKETSIZE 4
#define MOUSE_PS2INTELLI_BUTTON4DOWN 0x40
#define MOUSE_PS2INTELLI_BUTTON5DOWN 0x80
#define MOUSE_EXPLORER_ZNEG 0x08
#define MOUSE_EXPLORER_BUTTON4DOWN 0x10
#define MOUSE_EXPLORER_BUTTON5DOWN 0x20
#define MOUSE_VERSA_PACKETSIZE 6
#define MOUSE_VERSA_IN_USE 0x04
#define MOUSE_VERSA_SYNCMASK 0xc3
#define MOUSE_VERSA_SYNC 0xc0
#define MOUSE_VERSA_BUTTONS 0x30
#define MOUSE_VERSA_BUTTON1DOWN 0x20
#define MOUSE_VERSA_BUTTON2DOWN 0x00
#define MOUSE_VERSA_BUTTON3DOWN 0x10
#define MOUSE_VERSA_TAP 0x08
#define MOUSE_PS2VERSA_PACKETSIZE 6
#define MOUSE_PS2VERSA_IN_USE 0x10
#define MOUSE_PS2VERSA_SYNCMASK 0xe8
#define MOUSE_PS2VERSA_SYNC 0xc8
#define MOUSE_PS2VERSA_BUTTONS 0x05
#define MOUSE_PS2VERSA_BUTTON1DOWN 0x04
#define MOUSE_PS2VERSA_BUTTON2DOWN 0x00
#define MOUSE_PS2VERSA_BUTTON3DOWN 0x01
#define MOUSE_PS2VERSA_TAP 0x02
#define MOUSE_4D_PACKETSIZE 3
#define MOUSE_4D_WHEELBITS 0xf0
#define MOUSE_4DPLUS_PACKETSIZE 3
#define MOUSE_4DPLUS_ZNEG 0x04
#define MOUSE_4DPLUS_BUTTON4DOWN 0x08
#define MOUSE_SYS_PACKETSIZE 8
#define MOUSE_SYS_SYNCMASK 0xf8
#define MOUSE_SYS_SYNC 0x80
#define MOUSE_SYS_BUTTON1UP 0x04
#define MOUSE_SYS_BUTTON2UP 0x02
#define MOUSE_SYS_BUTTON3UP 0x01
#define MOUSE_SYS_BUTTON4UP 0x0001
#define MOUSE_SYS_BUTTON5UP 0x0002
#define MOUSE_SYS_BUTTON6UP 0x0004
#define MOUSE_SYS_BUTTON7UP 0x0008
#define MOUSE_SYS_BUTTON8UP 0x0010
#define MOUSE_SYS_BUTTON9UP 0x0020
#define MOUSE_SYS_BUTTON10UP 0x0040
#define MOUSE_SYS_MAXBUTTON 10
#define MOUSE_SYS_STDBUTTONS 0x07
#define MOUSE_SYS_EXTBUTTONS 0x7f
#define _PATH_MOUSEREMOTE "/var/run/MouseRemote"
#endif