summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-09-23 11:01:08 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-09-23 11:01:08 +0200
commit073771586ebc397b3a262ae469c92932492678da (patch)
treee13692e6a51a210f078bb710255fcee1a547108d
Import upstream driver with usbid support for the Joojoo
This driver is not fully functional, but contains support for the driver usbid. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
-rw-r--r--.gitignore2
-rw-r--r--GIT1
-rw-r--r--HACKING27
-rw-r--r--Makefile30
-rw-r--r--debian/README.Debian15
-rw-r--r--debian/changelog6
-rw-r--r--debian/compat1
-rw-r--r--debian/control13
-rw-r--r--debian/copyright28
-rw-r--r--debian/dirs1
-rw-r--r--debian/postinst71
-rw-r--r--debian/postrm27
-rw-r--r--debian/prerm28
-rwxr-xr-xdebian/rules53
-rwxr-xr-xscripts/patch-name-version.sh9
-rw-r--r--usr/src/dkms_main_tree/dkms_dbversion1
-rw-r--r--usr/src/dkms_source_tree/Makefile5
-rw-r--r--usr/src/dkms_source_tree/dkms.conf10
-rw-r--r--usr/src/dkms_source_tree/hid-egalax.c292
-rw-r--r--usr/src/dkms_source_tree/hid-ids.h545
20 files changed, 1165 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c6795b5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
1.bzr
2.bzrignore
diff --git a/GIT b/GIT
new file mode 100644
index 0000000..5a9c61a
--- /dev/null
+++ b/GIT
@@ -0,0 +1 @@
git-clone http://bitmath.org/git/hid-egalax-dkms.git
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..4a27fda
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,27 @@
1Modifying and building the DKMS package
2
31. use bzr to sync source with launchpad
4
52. make your changes
6
73. modify the VERSION variable in Makefile, then do
8
9 make bump
10
114. add a new entry to debian/changelog, matching VERSION
12
135. build binary package for testing with
14
15 dpkg-buildpackage
16
176. clean the checkout with
18
19 make distclean
20
217. build source package for upload with
22
23 debuild -S -sa
24
258. upload packacke to ppa with (see ~/.dput.cf)
26
27 dput your-mactel-ppa-dput-entry name-and-version_source.changes
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3f5dd2e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,30 @@
1NAME = hid-egalax
2VERSION = 1.0.0
3SRC = usr/src
4
5TARBALL = $(NAME)-$(VERSION).dkms.tar.gz
6PATCH = ./scripts/patch-name-version.sh $(NAME) $(VERSION)
7
8all: $(SRC)/$(TARBALL)
9
10$(SRC)/$(TARBALL): $(SRC)/dkms_source_tree/$(NAME).c
11 (cd $(SRC); tar cvfz $(TARBALL) dkms*)
12
13clean:
14 rm -f $(SRC)/$(TARBALL)
15
16distclean: clean
17 rm -rf *-stamp debian/$(NAME)-dkms debian/*.log debian/files
18
19install: $(SRC)/$(TARBALL)
20 install -d "$(DESTDIR)/$(SRC)"
21 install -m 644 $(SRC)/$(NAME)-$(VERSION).dkms.tar.gz "$(DESTDIR)/$(SRC)"
22
23bump:
24 $(PATCH) debian/postinst
25 $(PATCH) debian/postrm
26 $(PATCH) debian/prerm
27 $(PATCH) debian/rules
28 $(PATCH) debian/postinst
29 $(PATCH) usr/src/dkms_source_tree/dkms.conf
30 chmod 0755 debian/rules
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..9eea552
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,15 @@
1hid-egalax DKMS module for Debian
2
3hid-egalax: This driver adds support for the Joojoo tablet.
4
5* Install the debian package (uses dkms)
6
7* Reboot
8
9Post installation
10
11* Make sure your /etc/X11/xorg.conf settings are sane.
12
13Enjoy!
14
15Henrik Rydberg <rydberg@bitmath.org>
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..8167037
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,6 @@
1hid-egalax-dkms (1.0.0) maverick; urgency=low
2
3 * Add support for the Joojoo tablet
4
5 -- Henrik Rydberg <rydberg@bitmath.org> Wed, 22 Sep 2010 12:55:11 +0200
6
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
5
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..7e37d55
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,13 @@
1Source: hid-egalax-dkms
2Section: misc
3Priority: optional
4Maintainer: Henrik Rydberg <rydberg@euromail.se>
5Build-Depends: debhelper (>= 5)
6Standards-Version: 3.7.2
7Homepage: http://bitmath.org/code/hid-egalax-dkms/
8
9Package: hid-egalax-dkms
10Architecture: all
11Depends: dkms (>= 1.95), bash (>> 1.99), hid-dkms(>= 1.0.3)
12Description: HID Joojoo tablet support (DKMS)
13 This driver adds support for the Joojoo tablet.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..eec43c2
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,28 @@
1The hid-egalax-dkms package was created using DKMS <dkms-devel@dell.com>
2
3Source URL: http://bitmath.org/code/hid-egalax-dkms/
4
5Upstream Author: Henrik Rydberg <rydberg@euromail.se>
6
7Copyright:
8 Copyright (C) 2010 Henrik Rydberg (rydberg@bitmath.org)
9
10License:
11
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or
15 (at your option) any later version.
16
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
21
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25
26Packaging:
27 Copyright (C) 2010 by Henrik Rydberg <rydberg@bitmath.org>
28 released under GPL 2
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..b601f22
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1 @@
usr/src
diff --git a/debian/postinst b/debian/postinst
new file mode 100644
index 0000000..e6f1224
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,71 @@
1#!/bin/sh
2
3set -e
4
5NAME=hid-egalax
6VERSION=1.0.0
7
8case "$1" in
9 configure)
10 # Determine current arch / kernel
11 c_arch=`uname -m`
12 c_kern=`uname -r`
13
14 if [ -e "/var/lib/dkms/$NAME/$VERSION" ]; then
15 echo "Removing old $NAME-$VERSION DKMS files..."
16 dkms remove -m $NAME -v $VERSION --all
17 fi
18
19 echo "Loading new $NAME-$VERSION DKMS files..."
20 #dkms add -m $NAME -v $VERSION
21 dkms ldtarball --archive "/usr/src/$NAME-$VERSION.dkms.tar.gz"
22 rm -f "/usr/src/$NAME-$VERSION.dkms.tar.gz"
23
24 echo "Installing prebuilt kernel module binaries (if any)"
25 set +e
26 IFS='
27'
28 for kern in `dkms status -m $NAME -v $VERSION -a $c_arch | grep ": built" | awk {'print $3'} | sed 's/,$//'`; do
29 echo "Trying kernel: $kern"
30 dkms install --force -m $NAME -v $VERSION -k $kern -a $c_arch
31 done
32 unset IFS
33 set -e
34
35 # If none installed, install.
36 ##if [ `dkms status -m $NAME -v $VERSION -k $c_kern -a $c_arch | grep -c ": installed"` -eq 0 ]; then
37 dkms_status=`dkms status -m $NAME -v $VERSION -k $c_kern -a $c_arch`
38 if [ `echo $dkms_status | grep -c ": installed"` -eq 0 ]; then
39 if [ `echo $c_kern | grep -c "BOOT"` -eq 0 ] && [ -e "/lib/modules/$c_kern/build/include" ]; then
40 # Only build if we need to.
41 if [ `echo $dkms_status | grep -c ": built"` -eq 0 ]; then
42 echo "Building module..."
43 dkms build -m $NAME -v $VERSION
44 fi
45 echo "Installing module..."
46 dkms install -m $NAME -v $VERSION
47 elif [ `echo $c_kern | grep -c "BOOT"` -gt 0 ]; then
48 echo -e ""
49 echo -e "Module build for the currently running kernel was skipped since you"
50 echo -e "are running a BOOT variant of the kernel."
51 else
52 echo -e ""
53 echo -e "Module build for the currently running kernel was skipped since the"
54 echo -e "kernel source for this kernel does not seem to be installed."
55 fi
56 fi
57 ;;
58
59 abort-upgrade|abort-remove|abort-deconfigure)
60 ;;
61
62 *)
63 echo "postinst called with unknown argument \`$1'" >&2
64 exit 1
65 ;;
66esac
67
68#DEBHELPER#
69
70exit 0
71
diff --git a/debian/postrm b/debian/postrm
new file mode 100644
index 0000000..5e6ac7a
--- /dev/null
+++ b/debian/postrm
@@ -0,0 +1,27 @@
1#!/bin/sh
2
3NAME=hid-egalax
4VERSION=1.0.0
5
6set -e
7
8case "$1" in
9 purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
10 moddir="/lib/modules/`uname -r`/kernel/"
11 depmod
12 if [ -d "/usr/src/$NAME-$VERSION" ]; then
13 echo "Removing old module source..."
14 rm -rf "/usr/src/$NAME-$VERSION"
15 fi
16 ;;
17
18 *)
19 echo "postrm called with unknown argument \`$1'" >&2
20 exit 1
21 ;;
22esac
23
24#DEBHELPER#
25
26exit 0
27
diff --git a/debian/prerm b/debian/prerm
new file mode 100644
index 0000000..521530a
--- /dev/null
+++ b/debian/prerm
@@ -0,0 +1,28 @@
1#!/bin/sh
2
3NAME=hid-egalax
4VERSION=1.0.0
5
6set -e
7
8case "$1" in
9 remove|upgrade|deconfigure)
10 if [ "`dkms status -m $NAME`" ]; then
11 dkms remove -m $NAME -v $VERSION --all
12 fi
13 ;;
14
15 failed-upgrade)
16 ;;
17
18 *)
19 echo "prerm called with unknown argument \`$1'" >&2
20 exit 1
21 ;;
22esac
23
24#DEBHELPER#
25
26exit 0
27
28
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..9c76686
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,53 @@
1#!/usr/bin/make -f
2# -*- makefile -*-
3
4# Uncomment this to turn on verbose mode.
5#export DH_VERBOSE=1
6
7NAME=hid-egalax
8VERSION=1.0.0
9
10configure: configure-stamp
11configure-stamp:
12 dh_testdir
13 touch configure-stamp
14
15
16build: build-stamp
17
18build-stamp: configure-stamp
19 dh_testdir
20 $(MAKE)
21 touch $@
22
23clean:
24 dh_testdir
25 dh_testroot
26 rm -f build-stamp configure-stamp
27 -$(MAKE) clean
28 dh_clean
29
30install: build
31 dh_testdir
32 dh_testroot
33 dh_clean -k
34 dh_installdirs
35 $(MAKE) DESTDIR=$(CURDIR)/debian/$(NAME)-dkms NAME=$(NAME) VERSION=$(VERSION) install
36
37binary-arch: build install
38
39binary-indep: build install
40 dh_testdir
41 dh_testroot
42 dh_link
43 dh_strip
44 dh_compress
45 dh_fixperms
46 dh_installdeb
47 dh_shlibdeps
48 dh_gencontrol
49 dh_md5sums
50 dh_builddeb
51
52binary: binary-indep binary-arch
53.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/scripts/patch-name-version.sh b/scripts/patch-name-version.sh
new file mode 100755
index 0000000..d1a7796
--- /dev/null
+++ b/scripts/patch-name-version.sh
@@ -0,0 +1,9 @@
1#!/bin/sh
2#1: name
3#2: version
4#3: file
5cat $3 \
6| sed "s/^NAME=.*/NAME=$1/" \
7| sed "s/^VERSION=.*/VERSION=$2/" \
8> /tmp/$1.$$
9mv /tmp/$1.$$ $3
diff --git a/usr/src/dkms_main_tree/dkms_dbversion b/usr/src/dkms_main_tree/dkms_dbversion
new file mode 100644
index 0000000..227cea2
--- /dev/null
+++ b/usr/src/dkms_main_tree/dkms_dbversion
@@ -0,0 +1 @@
2.0.0
diff --git a/usr/src/dkms_source_tree/Makefile b/usr/src/dkms_source_tree/Makefile
new file mode 100644
index 0000000..7ed1364
--- /dev/null
+++ b/usr/src/dkms_source_tree/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for input/mouse drivers
3#
4
5obj-m := hid-egalax.o
diff --git a/usr/src/dkms_source_tree/dkms.conf b/usr/src/dkms_source_tree/dkms.conf
new file mode 100644
index 0000000..b5cbe09
--- /dev/null
+++ b/usr/src/dkms_source_tree/dkms.conf
@@ -0,0 +1,10 @@
1NAME=hid-egalax
2VERSION=1.0.0
3PACKAGE_NAME="$NAME"
4PACKAGE_VERSION="$VERSION"
5MAKE[0]="make -C ${kernel_source_dir}
6 SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules"
7BUILT_MODULE_NAME[0]="hid-egalax"
8DEST_MODULE_LOCATION[0]="/kernel/drivers/hid"
9POST_INSTALL="scripts/hid-egalax-post-install"
10AUTOINSTALL="yes"
diff --git a/usr/src/dkms_source_tree/hid-egalax.c b/usr/src/dkms_source_tree/hid-egalax.c
new file mode 100644
index 0000000..61e6a80
--- /dev/null
+++ b/usr/src/dkms_source_tree/hid-egalax.c
@@ -0,0 +1,292 @@
1/*
2 * HID driver for eGalax dual-touch panels
3 *
4 * Copyright (c) 2010 Stephane Chatty <chatty@enac.fr>
5 *
6 */
7
8/*
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the Free
11 * Software Foundation; either version 2 of the License, or (at your option)
12 * any later version.
13 */
14
15#include <linux/device.h>
16#include <linux/hid.h>
17#include <linux/module.h>
18#include <linux/usb.h>
19#include <linux/slab.h>
20
21MODULE_AUTHOR("Stephane Chatty <chatty@enac.fr>");
22MODULE_DESCRIPTION("eGalax dual-touch panel");
23MODULE_LICENSE("GPL");
24
25#include "hid-ids.h"
26
27void usbhid_submit_report
28(struct hid_device *hid, struct hid_report *report, unsigned char dir);
29
30struct egalax_data {
31 __u16 x, y, z;
32 __u8 id;
33 bool first; /* is this the first finger in the frame? */
34 bool valid; /* valid finger data, or just placeholder? */
35 bool activity; /* at least one active finger previously? */
36 __u16 lastx, lasty; /* latest valid (x, y) in the frame */
37};
38
39static int egalax_input_mapping(struct hid_device *hdev, struct hid_input *hi,
40 struct hid_field *field, struct hid_usage *usage,
41 unsigned long **bit, int *max)
42{
43 switch (usage->hid & HID_USAGE_PAGE) {
44
45 case HID_UP_GENDESK:
46 switch (usage->hid) {
47 case HID_GD_X:
48 hid_map_usage(hi, usage, bit, max,
49 EV_ABS, ABS_MT_POSITION_X);
50 /* touchscreen emulation */
51 input_set_abs_params(hi->input, ABS_X,
52 field->logical_minimum,
53 field->logical_maximum, 0, 0);
54 return 1;
55 case HID_GD_Y:
56 hid_map_usage(hi, usage, bit, max,
57 EV_ABS, ABS_MT_POSITION_Y);
58 /* touchscreen emulation */
59 input_set_abs_params(hi->input, ABS_Y,
60 field->logical_minimum,
61 field->logical_maximum, 0, 0);
62 return 1;
63 }
64 return 0;
65
66 case HID_UP_DIGITIZER:
67 switch (usage->hid) {
68 case HID_DG_TIPSWITCH:
69 /* touchscreen emulation */
70 hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
71 return 1;
72 case HID_DG_INRANGE:
73 case HID_DG_CONFIDENCE:
74 case HID_DG_CONTACTCOUNT:
75 case HID_DG_CONTACTMAX:
76 return -1;
77 case HID_DG_CONTACTID:
78 hid_map_usage(hi, usage, bit, max,
79 EV_ABS, ABS_MT_TRACKING_ID);
80 return 1;
81 case HID_DG_TIPPRESSURE:
82 hid_map_usage(hi, usage, bit, max,
83 EV_ABS, ABS_MT_PRESSURE);
84 return 1;
85 }
86 return 0;
87 }
88
89 /* ignore others (from other reports we won't get anyway) */
90 return -1;
91}
92
93static int egalax_input_mapped(struct hid_device *hdev, struct hid_input *hi,
94 struct hid_field *field, struct hid_usage *usage,
95 unsigned long **bit, int *max)
96{
97 if (usage->type == EV_KEY || usage->type == EV_ABS)
98 clear_bit(usage->code, *bit);
99
100 return 0;
101}
102
103/*
104 * this function is called when a whole finger has been parsed,
105 * so that it can decide what to send to the input layer.
106 */
107static void egalax_filter_event(struct egalax_data *td, struct input_dev *input)
108{
109 td->first = !td->first; /* touchscreen emulation */
110
111 if (td->valid) {
112 /* emit multitouch events */
113 input_event(input, EV_ABS, ABS_MT_TRACKING_ID, td->id);
114 input_event(input, EV_ABS, ABS_MT_POSITION_X, td->x);
115 input_event(input, EV_ABS, ABS_MT_POSITION_Y, td->y);
116 input_event(input, EV_ABS, ABS_MT_PRESSURE, td->z);
117
118 input_mt_sync(input);
119
120 /*
121 * touchscreen emulation: store (x, y) as
122 * the last valid values in this frame
123 */
124 td->lastx = td->x;
125 td->lasty = td->y;
126 }
127
128 /*
129 * touchscreen emulation: if this is the second finger and at least
130 * one in this frame is valid, the latest valid in the frame is
131 * the oldest on the panel, the one we want for single touch
132 */
133 if (!td->first && td->activity) {
134 input_event(input, EV_ABS, ABS_X, td->lastx);
135 input_event(input, EV_ABS, ABS_Y, td->lasty);
136 }
137
138 if (!td->valid) {
139 /*
140 * touchscreen emulation: if the first finger is invalid
141 * and there previously was finger activity, this is a release
142 */
143 if (td->first && td->activity) {
144 input_event(input, EV_KEY, BTN_TOUCH, 0);
145 td->activity = false;
146 }
147 return;
148 }
149
150
151 /* touchscreen emulation: if no previous activity, emit touch event */
152 if (!td->activity) {
153 input_event(input, EV_KEY, BTN_TOUCH, 1);
154 td->activity = true;
155 }
156}
157
158
159static int egalax_event(struct hid_device *hid, struct hid_field *field,
160 struct hid_usage *usage, __s32 value)
161{
162 struct egalax_data *td = hid_get_drvdata(hid);
163
164 /* Note, eGalax has two product lines: the first is resistive and
165 * uses a standard parallel multitouch protocol (product ID ==
166 * 48xx). The second is capacitive and uses an unusual "serial"
167 * protocol with a different message for each multitouch finger
168 * (product ID == 72xx). We do not yet generate a correct event
169 * sequence for the capacitive/serial protocol.
170 */
171 if (hid->claimed & HID_CLAIMED_INPUT) {
172 struct input_dev *input = field->hidinput->input;
173
174 switch (usage->hid) {
175 case HID_DG_INRANGE:
176 case HID_DG_CONFIDENCE:
177 /* avoid interference from generic hidinput handling */
178 break;
179 case HID_DG_TIPSWITCH:
180 td->valid = value;
181 break;
182 case HID_DG_TIPPRESSURE:
183 td->z = value;
184 break;
185 case HID_DG_CONTACTID:
186 td->id = value;
187 break;
188 case HID_GD_X:
189 td->x = value;
190 break;
191 case HID_GD_Y:
192 td->y = value;
193 /* this is the last field in a finger */
194 egalax_filter_event(td, input);
195 break;
196 case HID_DG_CONTACTCOUNT:
197 /* touch emulation: this is the last field in a frame */
198 td->first = false;
199 break;
200
201 default:
202 /* fallback to the generic hidinput handling */
203 return 0;
204 }
205 }
206
207 /* we have handled the hidinput part, now remains hiddev */
208 if (hid->claimed & HID_CLAIMED_HIDDEV && hid->hiddev_hid_event)
209 hid->hiddev_hid_event(hid, field, usage, value);
210
211 return 1;
212}
213
214static int egalax_probe(struct hid_device *hdev, const struct hid_device_id *id)
215{
216 int ret;
217 struct egalax_data *td;
218 struct hid_report *report;
219
220 td = kmalloc(sizeof(struct egalax_data), GFP_KERNEL);
221 if (!td) {
222 dev_err(&hdev->dev, "cannot allocate eGalax data\n");
223 return -ENOMEM;
224 }
225 hid_set_drvdata(hdev, td);
226
227 ret = hid_parse(hdev);
228 if (ret)
229 goto end;
230
231 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
232 if (ret)
233 goto end;
234
235 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[5];
236 if (report) {
237 report->field[0]->value[0] = 2;
238 usbhid_submit_report(hdev, report, USB_DIR_OUT);
239 }
240
241end:
242 if (ret)
243 kfree(td);
244
245 return ret;
246}
247
248static void egalax_remove(struct hid_device *hdev)
249{
250 hid_hw_stop(hdev);
251 kfree(hid_get_drvdata(hdev));
252 hid_set_drvdata(hdev, NULL);
253}
254
255static const struct hid_device_id egalax_devices[] = {
256 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
257 USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) },
258 { HID_USB_DEVICE(USB_VENDOR_ID_DWAV,
259 USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1) },
260 { }
261};
262MODULE_DEVICE_TABLE(hid, egalax_devices);
263
264static const struct hid_usage_id egalax_grabbed_usages[] = {
265 { HID_ANY_ID, HID_ANY_ID, HID_ANY_ID },
266 { HID_ANY_ID - 1, HID_ANY_ID - 1, HID_ANY_ID - 1}
267};
268
269static struct hid_driver egalax_driver = {
270 .name = "egalax-touch",
271 .id_table = egalax_devices,
272 .probe = egalax_probe,
273 .remove = egalax_remove,
274 .input_mapping = egalax_input_mapping,
275 .input_mapped = egalax_input_mapped,
276 .usage_table = egalax_grabbed_usages,
277 .event = egalax_event,
278};
279
280static int __init egalax_init(void)
281{
282 return hid_register_driver(&egalax_driver);
283}
284
285static void __exit egalax_exit(void)
286{
287 hid_unregister_driver(&egalax_driver);
288}
289
290module_init(egalax_init);
291module_exit(egalax_exit);
292
diff --git a/usr/src/dkms_source_tree/hid-ids.h b/usr/src/dkms_source_tree/hid-ids.h
new file mode 100644
index 0000000..765a4f5
--- /dev/null
+++ b/usr/src/dkms_source_tree/hid-ids.h
@@ -0,0 +1,545 @@
1/*
2 * USB HID quirks support for Linux
3 *
4 * Copyright (c) 1999 Andreas Gal
5 * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
6 * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
7 * Copyright (c) 2006-2007 Jiri Kosina
8 * Copyright (c) 2007 Paul Walmsley
9 */
10
11/*
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the Free
14 * Software Foundation; either version 2 of the License, or (at your option)
15 * any later version.
16 */
17
18#ifndef HID_IDS_H_FILE
19#define HID_IDS_H_FILE
20
21#define USB_VENDOR_ID_3M 0x0596
22#define USB_DEVICE_ID_3M1968 0x0500
23#define USB_DEVICE_ID_3M2256 0x0502
24
25#define USB_VENDOR_ID_A4TECH 0x09da
26#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
27#define USB_DEVICE_ID_A4TECH_X5_005D 0x000a
28
29#define USB_VENDOR_ID_AASHIMA 0x06d6
30#define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025
31#define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026
32
33#define USB_VENDOR_ID_ACECAD 0x0460
34#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
35#define USB_DEVICE_ID_ACECAD_302 0x0008
36
37#define USB_VENDOR_ID_ACRUX 0x1a34
38
39#define USB_VENDOR_ID_ADS_TECH 0x06e1
40#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155
41
42#define USB_VENDOR_ID_AFATECH 0x15a4
43#define USB_DEVICE_ID_AFATECH_AF9016 0x9016
44
45#define USB_VENDOR_ID_AIPTEK 0x08ca
46#define USB_DEVICE_ID_AIPTEK_01 0x0001
47#define USB_DEVICE_ID_AIPTEK_10 0x0010
48#define USB_DEVICE_ID_AIPTEK_20 0x0020
49#define USB_DEVICE_ID_AIPTEK_21 0x0021
50#define USB_DEVICE_ID_AIPTEK_22 0x0022
51#define USB_DEVICE_ID_AIPTEK_23 0x0023
52#define USB_DEVICE_ID_AIPTEK_24 0x0024
53
54#define USB_VENDOR_ID_AIRCABLE 0x16CA
55#define USB_DEVICE_ID_AIRCABLE1 0x1502
56
57#define USB_VENDOR_ID_ALCOR 0x058f
58#define USB_DEVICE_ID_ALCOR_USBRS232 0x9720
59
60#define USB_VENDOR_ID_ALPS 0x0433
61#define USB_DEVICE_ID_IBM_GAMEPAD 0x1101
62
63#define USB_VENDOR_ID_APPLE 0x05ac
64#define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304
65#define USB_DEVICE_ID_APPLE_MAGICMOUSE 0x030d
66#define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e
67#define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f
68#define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214
69#define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215
70#define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216
71#define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217
72#define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218
73#define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219
74#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a
75#define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b
76#define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c
77#define USB_DEVICE_ID_APPLE_ALU_MINI_ANSI 0x021d
78#define USB_DEVICE_ID_APPLE_ALU_MINI_ISO 0x021e
79#define USB_DEVICE_ID_APPLE_ALU_MINI_JIS 0x021f
80#define USB_DEVICE_ID_APPLE_ALU_ANSI 0x0220
81#define USB_DEVICE_ID_APPLE_ALU_ISO 0x0221
82#define USB_DEVICE_ID_APPLE_ALU_JIS 0x0222
83#define USB_DEVICE_ID_APPLE_WELLSPRING_ANSI 0x0223
84#define USB_DEVICE_ID_APPLE_WELLSPRING_ISO 0x0224
85#define USB_DEVICE_ID_APPLE_WELLSPRING_JIS 0x0225
86#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI 0x0229
87#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO 0x022a
88#define USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS 0x022b
89#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI 0x022c
90#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO 0x022d
91#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS 0x022e
92#define USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI 0x0230
93#define USB_DEVICE_ID_APPLE_WELLSPRING2_ISO 0x0231
94#define USB_DEVICE_ID_APPLE_WELLSPRING2_JIS 0x0232
95#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236
96#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237
97#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238
98#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239
99#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a
100#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
101#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
102#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
103#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
104#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
105
106#define USB_VENDOR_ID_ASUS 0x0486
107#define USB_DEVICE_ID_ASUS_T91MT 0x0185
108#define USB_DEVICE_ID_ASUSTEK_MULTITOUCH_YFO 0x0186
109
110#define USB_VENDOR_ID_ASUSTEK 0x0b05
111#define USB_DEVICE_ID_ASUSTEK_LCM 0x1726
112#define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b
113
114#define USB_VENDOR_ID_ATEN 0x0557
115#define USB_DEVICE_ID_ATEN_UC100KM 0x2004
116#define USB_DEVICE_ID_ATEN_CS124U 0x2202
117#define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204
118#define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205
119#define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208
120
121#define USB_VENDOR_ID_AVERMEDIA 0x07ca
122#define USB_DEVICE_ID_AVER_FM_MR800 0xb800
123
124#define USB_VENDOR_ID_BELKIN 0x050d
125#define USB_DEVICE_ID_FLIP_KVM 0x3201
126
127#define USB_VENDOR_ID_BERKSHIRE 0x0c98
128#define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140
129
130#define USB_VENDOR_ID_BTC 0x046e
131#define USB_DEVICE_ID_BTC_EMPREX_REMOTE 0x5578
132#define USB_DEVICE_ID_BTC_EMPREX_REMOTE_2 0x5577
133
134#define USB_VENDOR_ID_CANDO 0x2087
135#define USB_DEVICE_ID_CANDO_MULTI_TOUCH 0x0a01
136#define USB_DEVICE_ID_CANDO_MULTI_TOUCH_11_6 0x0b03
137
138#define USB_VENDOR_ID_CH 0x068e
139#define USB_DEVICE_ID_CH_PRO_PEDALS 0x00f2
140#define USB_DEVICE_ID_CH_COMBATSTICK 0x00f4
141#define USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE 0x0051
142#define USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE 0x00ff
143#define USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK 0x00d3
144
145#define USB_VENDOR_ID_CHERRY 0x046a
146#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023
147#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027
148
149#define USB_VENDOR_ID_CHIC 0x05fe
150#define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014
151
152#define USB_VENDOR_ID_CHICONY 0x04f2
153#define USB_DEVICE_ID_CHICONY_TACTICAL_PAD 0x0418
154#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d
155
156#define USB_VENDOR_ID_CIDC 0x1677
157
158#define USB_VENDOR_ID_CMEDIA 0x0d8c
159#define USB_DEVICE_ID_CM109 0x000e
160
161#define USB_VENDOR_ID_CODEMERCS 0x07c0
162#define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500
163#define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff
164
165#define USB_VENDOR_ID_CREATIVELABS 0x041e
166#define USB_DEVICE_ID_PRODIKEYS_PCMIDI 0x2801
167
168#define USB_VENDOR_ID_CYGNAL 0x10c4
169#define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a
170
171#define USB_VENDOR_ID_CYPRESS 0x04b4
172#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
173#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
174#define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417
175#define USB_DEVICE_ID_CYPRESS_BARCODE_1 0xde61
176#define USB_DEVICE_ID_CYPRESS_BARCODE_2 0xde64
177#define USB_DEVICE_ID_CYPRESS_BARCODE_3 0xbca1
178
179#define USB_VENDOR_ID_DEALEXTREAME 0x10c5
180#define USB_DEVICE_ID_DEALEXTREAME_RADIO_SI4701 0x819a
181
182#define USB_VENDOR_ID_DELORME 0x1163
183#define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100
184#define USB_DEVICE_ID_DELORME_EM_LT20 0x0200
185
186#define USB_VENDOR_ID_DMI 0x0c0b
187#define USB_DEVICE_ID_DMI_ENC 0x5fab
188
189#define USB_VENDOR_ID_DRAGONRISE 0x0079
190
191#define USB_VENDOR_ID_DWAV 0x0eef
192#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001
193#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d
194#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1 0x720c
195
196#define USB_VENDOR_ID_ELECOM 0x056e
197#define USB_DEVICE_ID_ELECOM_BM084 0x0061
198
199#define USB_VENDOR_ID_ELO 0x04E7
200#define USB_DEVICE_ID_ELO_TS2700 0x0020
201
202#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
203#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
204
205#define USB_VENDOR_ID_ETT 0x0664
206#define USB_DEVICE_ID_TC5UH 0x0309
207#define USB_DEVICE_ID_TC4UM 0x0306
208
209#define USB_VENDOR_ID_ETURBOTOUCH 0x22b9
210#define USB_DEVICE_ID_ETURBOTOUCH 0x0006
211
212#define USB_VENDOR_ID_EZKEY 0x0518
213#define USB_DEVICE_ID_BTC_8193 0x0002
214
215#define USB_VENDOR_ID_GAMERON 0x0810
216#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001
217#define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002
218
219#define USB_VENDOR_ID_GENERAL_TOUCH 0x0dfc
220
221#define USB_VENDOR_ID_GLAB 0x06c2
222#define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038
223#define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039
224#define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040
225#define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044
226#define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045
227#define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051
228#define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053
229#define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058
230
231#define USB_VENDOR_ID_GOTOP 0x08f2
232#define USB_DEVICE_ID_SUPER_Q2 0x007f
233#define USB_DEVICE_ID_GOGOPEN 0x00ce
234#define USB_DEVICE_ID_PENPOWER 0x00f4
235
236#define USB_VENDOR_ID_GREENASIA 0x0e8f
237
238#define USB_VENDOR_ID_GRETAGMACBETH 0x0971
239#define USB_DEVICE_ID_GRETAGMACBETH_HUEY 0x2005
240
241#define USB_VENDOR_ID_GRIFFIN 0x077d
242#define USB_DEVICE_ID_POWERMATE 0x0410
243#define USB_DEVICE_ID_SOUNDKNOB 0x04AA
244
245#define USB_VENDOR_ID_GTCO 0x078c
246#define USB_DEVICE_ID_GTCO_90 0x0090
247#define USB_DEVICE_ID_GTCO_100 0x0100
248#define USB_DEVICE_ID_GTCO_101 0x0101
249#define USB_DEVICE_ID_GTCO_103 0x0103
250#define USB_DEVICE_ID_GTCO_104 0x0104
251#define USB_DEVICE_ID_GTCO_105 0x0105
252#define USB_DEVICE_ID_GTCO_106 0x0106
253#define USB_DEVICE_ID_GTCO_107 0x0107
254#define USB_DEVICE_ID_GTCO_108 0x0108
255#define USB_DEVICE_ID_GTCO_200 0x0200
256#define USB_DEVICE_ID_GTCO_201 0x0201
257#define USB_DEVICE_ID_GTCO_202 0x0202
258#define USB_DEVICE_ID_GTCO_203 0x0203
259#define USB_DEVICE_ID_GTCO_204 0x0204
260#define USB_DEVICE_ID_GTCO_205 0x0205
261#define USB_DEVICE_ID_GTCO_206 0x0206
262#define USB_DEVICE_ID_GTCO_207 0x0207
263#define USB_DEVICE_ID_GTCO_300 0x0300
264#define USB_DEVICE_ID_GTCO_301 0x0301
265#define USB_DEVICE_ID_GTCO_302 0x0302
266#define USB_DEVICE_ID_GTCO_303 0x0303
267#define USB_DEVICE_ID_GTCO_304 0x0304
268#define USB_DEVICE_ID_GTCO_305 0x0305
269#define USB_DEVICE_ID_GTCO_306 0x0306
270#define USB_DEVICE_ID_GTCO_307 0x0307
271#define USB_DEVICE_ID_GTCO_308 0x0308
272#define USB_DEVICE_ID_GTCO_309 0x0309
273#define USB_DEVICE_ID_GTCO_400 0x0400
274#define USB_DEVICE_ID_GTCO_401 0x0401
275#define USB_DEVICE_ID_GTCO_402 0x0402
276#define USB_DEVICE_ID_GTCO_403 0x0403
277#define USB_DEVICE_ID_GTCO_404 0x0404
278#define USB_DEVICE_ID_GTCO_405 0x0405
279#define USB_DEVICE_ID_GTCO_500 0x0500
280#define USB_DEVICE_ID_GTCO_501 0x0501
281#define USB_DEVICE_ID_GTCO_502 0x0502
282#define USB_DEVICE_ID_GTCO_503 0x0503
283#define USB_DEVICE_ID_GTCO_504 0x0504
284#define USB_DEVICE_ID_GTCO_1000 0x1000
285#define USB_DEVICE_ID_GTCO_1001 0x1001
286#define USB_DEVICE_ID_GTCO_1002 0x1002
287#define USB_DEVICE_ID_GTCO_1003 0x1003
288#define USB_DEVICE_ID_GTCO_1004 0x1004
289#define USB_DEVICE_ID_GTCO_1005 0x1005
290#define USB_DEVICE_ID_GTCO_1006 0x1006
291#define USB_DEVICE_ID_GTCO_1007 0x1007
292
293#define USB_VENDOR_ID_GYRATION 0x0c16
294#define USB_DEVICE_ID_GYRATION_REMOTE 0x0002
295#define USB_DEVICE_ID_GYRATION_REMOTE_2 0x0003
296#define USB_DEVICE_ID_GYRATION_REMOTE_3 0x0008
297
298#define USB_VENDOR_ID_HAPP 0x078b
299#define USB_DEVICE_ID_UGCI_DRIVING 0x0010
300#define USB_DEVICE_ID_UGCI_FLYING 0x0020
301#define USB_DEVICE_ID_UGCI_FIGHTING 0x0030
302
303#define USB_VENDOR_ID_IMATION 0x0718
304#define USB_DEVICE_ID_DISC_STAKKA 0xd000
305
306#define USB_VENDOR_ID_KBGEAR 0x084e
307#define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001
308
309#define USB_VENDOR_ID_KENSINGTON 0x047d
310#define USB_DEVICE_ID_KS_SLIMBLADE 0x2041
311
312#define USB_VENDOR_ID_KWORLD 0x1b80
313#define USB_DEVICE_ID_KWORLD_RADIO_FM700 0xd700
314
315#define USB_VENDOR_ID_KYE 0x0458
316#define USB_DEVICE_ID_KYE_ERGO_525V 0x0087
317#define USB_DEVICE_ID_KYE_GPEN_560 0x5003
318
319#define USB_VENDOR_ID_LABTEC 0x1020
320#define USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD 0x0006
321
322#define USB_VENDOR_ID_LD 0x0f11
323#define USB_DEVICE_ID_LD_CASSY 0x1000
324#define USB_DEVICE_ID_LD_POCKETCASSY 0x1010
325#define USB_DEVICE_ID_LD_MOBILECASSY 0x1020
326#define USB_DEVICE_ID_LD_JWM 0x1080
327#define USB_DEVICE_ID_LD_DMMP 0x1081
328#define USB_DEVICE_ID_LD_UMIP 0x1090
329#define USB_DEVICE_ID_LD_XRAY1 0x1100
330#define USB_DEVICE_ID_LD_XRAY2 0x1101
331#define USB_DEVICE_ID_LD_VIDEOCOM 0x1200
332#define USB_DEVICE_ID_LD_COM3LAB 0x2000
333#define USB_DEVICE_ID_LD_TELEPORT 0x2010
334#define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020
335#define USB_DEVICE_ID_LD_POWERCONTROL 0x2030
336#define USB_DEVICE_ID_LD_MACHINETEST 0x2040
337
338#define USB_VENDOR_ID_LOGITECH 0x046d
339#define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101
340#define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110
341#define USB_DEVICE_ID_LOGITECH_HARMONY_LAST 0xc14f
342#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD 0xc211
343#define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215
344#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2 0xc218
345#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2 0xc219
346#define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283
347#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
348#define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287
349#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
350#define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG 0xc293
351#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295
352#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299
353#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a
354#define USB_DEVICE_ID_S510_RECEIVER 0xc50c
355#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
356#define USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500 0xc512
357#define USB_DEVICE_ID_MX3000_RECEIVER 0xc513
358#define USB_DEVICE_ID_SPACETRAVELLER 0xc623
359#define USB_DEVICE_ID_SPACENAVIGATOR 0xc626
360#define USB_DEVICE_ID_DINOVO_DESKTOP 0xc704
361#define USB_DEVICE_ID_DINOVO_EDGE 0xc714
362#define USB_DEVICE_ID_DINOVO_MINI 0xc71f
363#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2 0xca03
364
365#define USB_VENDOR_ID_MCC 0x09db
366#define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
367#define USB_DEVICE_ID_MCC_PMD1208LS 0x007a
368
369#define USB_VENDOR_ID_MGE 0x0463
370#define USB_DEVICE_ID_MGE_UPS 0xffff
371#define USB_DEVICE_ID_MGE_UPS1 0x0001
372
373#define USB_VENDOR_ID_MICROCHIP 0x04d8
374#define USB_DEVICE_ID_PICKIT1 0x0032
375#define USB_DEVICE_ID_PICKIT2 0x0033
376#define USB_DEVICE_ID_PICOLCD 0xc002
377#define USB_DEVICE_ID_PICOLCD_BOOTLOADER 0xf002
378
379#define USB_VENDOR_ID_MICROSOFT 0x045e
380#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
381#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
382#define USB_DEVICE_ID_MS_NE4K 0x00db
383#define USB_DEVICE_ID_MS_LK6K 0x00f9
384#define USB_DEVICE_ID_MS_PRESENTER_8K_BT 0x0701
385#define USB_DEVICE_ID_MS_PRESENTER_8K_USB 0x0713
386
387#define USB_VENDOR_ID_MOJO 0x8282
388#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
389
390#define USB_VENDOR_ID_MONTEREY 0x0566
391#define USB_DEVICE_ID_GENIUS_KB29E 0x3004
392
393#define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400
394#define USB_DEVICE_ID_N_S_HARMONY 0xc359
395
396#define USB_VENDOR_ID_NATSU 0x08b7
397#define USB_DEVICE_ID_NATSU_GAMEPAD 0x0001
398
399#define USB_VENDOR_ID_NCR 0x0404
400#define USB_DEVICE_ID_NCR_FIRST 0x0300
401#define USB_DEVICE_ID_NCR_LAST 0x03ff
402
403#define USB_VENDOR_ID_NEC 0x073e
404#define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301
405
406#define USB_VENDOR_ID_NEXTWINDOW 0x1926
407#define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN 0x0003
408
409#define USB_VENDOR_ID_NTRIG 0x1b96
410#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001
411#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003
412#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2 0x0004
413#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_3 0x0005
414#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_4 0x0006
415#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_5 0x0007
416#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_6 0x0008
417#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_7 0x0009
418#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_8 0x000A
419#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_9 0x000B
420#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_10 0x000C
421#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_11 0x000D
422#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_12 0x000E
423#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_13 0x000F
424#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_14 0x0010
425#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_15 0x0011
426#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_16 0x0012
427#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_17 0x0013
428#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18 0x0014
429
430#define USB_VENDOR_ID_ONTRAK 0x0a07
431#define USB_DEVICE_ID_ONTRAK_ADU100 0x0064
432
433#define USB_VENDOR_ID_ORTEK 0x05a4
434#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000
435
436#define USB_VENDOR_ID_PANJIT 0x134c
437
438#define USB_VENDOR_ID_PANTHERLORD 0x0810
439#define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001
440
441#define USB_VENDOR_ID_PETALYNX 0x18b1
442#define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037
443
444#define USB_VENDOR_ID_PHILIPS 0x0471
445#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617
446
447#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3
448#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff
449
450#define USB_VENDOR_ID_PLAYDOTCOM 0x0b43
451#define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003
452
453#define USB_VENDOR_ID_POWERCOM 0x0d9f
454#define USB_DEVICE_ID_POWERCOM_UPS 0x0002
455
456#define USB_VENDOR_ID_PRODIGE 0x05af
457#define USB_DEVICE_ID_PRODIGE_CORDLESS 0x3062
458
459#define USB_VENDOR_ID_QUANTA 0x0408
460#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000
461#define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN 0x3001
462
463#define USB_VENDOR_ID_ROCCAT 0x1e7d
464#define USB_DEVICE_ID_ROCCAT_KONE 0x2ced
465
466#define USB_VENDOR_ID_SAITEK 0x06a3
467#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
468
469#define USB_VENDOR_ID_SAMSUNG 0x0419
470#define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001
471#define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE 0x0600
472
473#define USB_VENDOR_ID_SONY 0x054c
474#define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE 0x024b
475#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
476
477#define USB_VENDOR_ID_SOUNDGRAPH 0x15c2
478#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST 0x0034
479#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST 0x0046
480
481#define USB_VENDOR_ID_STANTUM 0x1f87
482#define USB_DEVICE_ID_MTP 0x0002
483
484#define USB_VENDOR_ID_SUN 0x0430
485#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
486
487#define USB_VENDOR_ID_SUNPLUS 0x04fc
488#define USB_DEVICE_ID_SUNPLUS_WDESKTOP 0x05d8
489
490#define USB_VENDOR_ID_THRUSTMASTER 0x044f
491
492#define USB_VENDOR_ID_TOPSEED 0x0766
493#define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
494
495#define USB_VENDOR_ID_TOPSEED2 0x1784
496#define USB_DEVICE_ID_TOPSEED2_RF_COMBO 0x0004
497
498#define USB_VENDOR_ID_TOPMAX 0x0663
499#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103
500
501#define USB_VENDOR_ID_TOUCHPACK 0x1bfd
502#define USB_DEVICE_ID_TOUCHPACK_RTS 0x1688
503
504#define USB_VENDOR_ID_TURBOX 0x062a
505#define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201
506
507#define USB_VENDOR_ID_TWINHAN 0x6253
508#define USB_DEVICE_ID_TWINHAN_IR_REMOTE 0x0100
509
510#define USB_VENDOR_ID_UCLOGIC 0x5543
511#define USB_DEVICE_ID_UCLOGIC_TABLET_PF1209 0x0042
512#define USB_DEVICE_ID_UCLOGIC_TABLET_WP4030U 0x0003
513#define USB_DEVICE_ID_UCLOGIC_TABLET_KNA5 0x6001
514
515#define USB_VENDOR_ID_VERNIER 0x08f7
516#define USB_DEVICE_ID_VERNIER_LABPRO 0x0001
517#define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002
518#define USB_DEVICE_ID_VERNIER_SKIP 0x0003
519#define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004
520#define USB_DEVICE_ID_VERNIER_LCSPEC 0x0006
521
522#define USB_VENDOR_ID_WACOM 0x056a
523#define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH 0x81
524
525#define USB_VENDOR_ID_WISEGROUP 0x0925
526#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005
527#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101
528#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104
529#define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201
530#define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800
531#define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866
532
533#define USB_VENDOR_ID_WISEGROUP_LTD 0x6666
534#define USB_VENDOR_ID_WISEGROUP_LTD2 0x6677
535#define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802
536
537#define USB_VENDOR_ID_YEALINK 0x6993
538#define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001
539
540#define USB_VENDOR_ID_ZEROPLUS 0x0c12
541
542#define USB_VENDOR_ID_ZYDACRON 0x13EC
543#define USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL 0x0006
544
545#endif