summaryrefslogtreecommitdiff
path: root/driver/xf86-input-synaptics/src/synproto.h
diff options
context:
space:
mode:
Diffstat (limited to 'driver/xf86-input-synaptics/src/synproto.h')
-rw-r--r--driver/xf86-input-synaptics/src/synproto.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/driver/xf86-input-synaptics/src/synproto.h b/driver/xf86-input-synaptics/src/synproto.h
new file mode 100644
index 000000000..96ddf3e92
--- /dev/null
+++ b/driver/xf86-input-synaptics/src/synproto.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright © 2004 Peter Osterlund
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of Red Hat
+ * not be used in advertising or publicity pertaining to distribution
+ * of the software without specific, written prior permission. Red
+ * Hat makes no representations about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors:
+ * Peter Osterlund (petero2@telia.com)
+ */
+
+#ifndef _SYNPROTO_H_
+#define _SYNPROTO_H_
+
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <xf86Xinput.h>
+#include <xisb.h>
+
+/*
+ * A structure to describe the state of the touchpad hardware (buttons and pad)
+ */
+struct SynapticsHwState {
+ int millis; /* Timestamp in milliseconds */
+ int x; /* X position of finger */
+ int y; /* Y position of finger */
+ int z; /* Finger pressure */
+ int numFingers;
+ int fingerWidth;
+
+ Bool left;
+ Bool right;
+ Bool up;
+ Bool down;
+
+ Bool multi[8];
+ Bool middle; /* Some ALPS touchpads have a middle button */
+};
+
+struct CommData {
+ XISBuffer *buffer;
+ unsigned char protoBuf[6]; /* Buffer for Packet */
+ unsigned char lastByte; /* Last read byte. Use for reset sequence detection. */
+ int outOfSync; /* How many consecutive incorrect packets we
+ have received */
+ int protoBufTail;
+
+ /* Used for keeping track of partial HwState updates. */
+ struct SynapticsHwState hwState;
+ Bool oneFinger;
+ Bool twoFingers;
+ Bool threeFingers;
+};
+
+enum SynapticsProtocol {
+ SYN_PROTO_PSAUX, /* Raw psaux device */
+#ifdef BUILD_EVENTCOMM
+ SYN_PROTO_EVENT, /* Linux kernel event interface */
+#endif /* BUILD_EVENTCOMM */
+#ifdef BUILD_PSMCOMM
+ SYN_PROTO_PSM, /* FreeBSD psm driver */
+#endif /* BUILD_PSMCOMM */
+ SYN_PROTO_ALPS /* ALPS touchpad protocol */
+};
+
+struct _SynapticsParameters;
+struct SynapticsHwInfo;
+struct CommData;
+
+struct SynapticsProtocolOperations {
+ void (*DeviceOnHook)(InputInfoPtr pInfo, struct _SynapticsParameters *para);
+ void (*DeviceOffHook)(InputInfoPtr pInfo);
+ Bool (*QueryHardware)(InputInfoPtr pInfo);
+ Bool (*ReadHwState)(InputInfoPtr pInfo,
+ struct SynapticsProtocolOperations *proto_ops,
+ struct CommData *comm, struct SynapticsHwState *hwRet);
+ Bool (*AutoDevProbe)(InputInfoPtr pInfo);
+ void (*ReadDevDimensions)(InputInfoPtr pInfo);
+};
+
+extern struct SynapticsProtocolOperations psaux_proto_operations;
+#ifdef BUILD_EVENTCOMM
+extern struct SynapticsProtocolOperations event_proto_operations;
+#endif /* BUILD_EVENTCOMM */
+#ifdef BUILD_PSMCOMM
+extern struct SynapticsProtocolOperations psm_proto_operations;
+#endif /* BUILD_PSMCOMM */
+extern struct SynapticsProtocolOperations alps_proto_operations;
+
+
+#endif /* _SYNPROTO_H_ */