Package: spacenavd
Version: 0.6-2
Severity: important
Tags: patch
Dear Maintainer,
running spacenavd from Debian did not grab my SpacePilot (046d:c625
Logitech, Inc. 3Dconnexion Space Pilot 3D Mouse).
The problem was fixed upstream some time ago in trunk (svn commit
183/184).
While at it backport all other fixes from trunk.
Regards
Benedikt Spranger
-- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, arm64
Kernel: Linux 4.14.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8),
LANGUAGE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled
Versions of packages spacenavd depends on:
ii libc6 2.26-6
ii libx11-6 2:1.6.4-3
ii lsb-base 9.20170808
spacenavd recommends no packages.
spacenavd suggests no packages.
-- no debconf information
From 81c85dfd87f5e3dc02827f1ee9af581e4437195c Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <[email protected]>
Date: Mon, 26 Feb 2018 15:53:27 +0100
Subject: [PATCH] Get all fixes from trunk
Signed-off-by: Benedikt Spranger <[email protected]>
---
.../Better-example-spnavrc-descriptions.patch | 136 +++++++++++++++
...he-missing-options-to-the-example-spnavrc.patch | 125 ++++++++++++++
...to-skip-joystick-device-files-while-parsi.patch | 37 ++++
...to-match-devices-with-the-new-3Dconnexion.patch | 42 +++++
...ll-bug-in-device-detection-which-sometime.patch | 27 +++
...-axis-remapping-before-checking-deadzones.patch | 91 ++++++++++
debian/patches/possible-fix-for-bug-9.patch | 28 +++
debian/patches/series | 8 +
.../trying-to-remove-devices-from-Xinput.patch | 189 +++++++++++++++++++++
9 files changed, 683 insertions(+)
create mode 100644 debian/patches/Better-example-spnavrc-descriptions.patch
create mode 100644
debian/patches/added-all-the-missing-options-to-the-example-spnavrc.patch
create mode 100644
debian/patches/added-code-to-skip-joystick-device-files-while-parsi.patch
create mode 100644
debian/patches/added-rule-to-match-devices-with-the-new-3Dconnexion.patch
create mode 100644
debian/patches/fixed-a-small-bug-in-device-detection-which-sometime.patch
create mode 100644
debian/patches/moved-axis-remapping-before-checking-deadzones.patch
create mode 100644 debian/patches/possible-fix-for-bug-9.patch
create mode 100644 debian/patches/trying-to-remove-devices-from-Xinput.patch
diff --git a/debian/patches/Better-example-spnavrc-descriptions.patch
b/debian/patches/Better-example-spnavrc-descriptions.patch
new file mode 100644
index 0000000..abf2aee
--- /dev/null
+++ b/debian/patches/Better-example-spnavrc-descriptions.patch
@@ -0,0 +1,136 @@
+From 984d45aa95833c5af5108ff50536be2787412f4d Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Thu, 12 Feb 2015 16:07:47 +0000
+Subject: [PATCH 10/14] - Better example-spnavrc descriptions - remove some
+ debugging printfs which where commited accidentally previously
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@189
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/doc/example-spnavrc | 18 ++++++++++++++----
+ trunk/spacenavd/src/cfgfile.c | 3 +--
+ trunk/spacenavd/src/dev_usb_linux.c | 8 ++++----
+ trunk/spacenavd/src/event.c | 8 +-------
+ 4 files changed, 20 insertions(+), 17 deletions(-)
+
+diff --git a/trunk/spacenavd/doc/example-spnavrc
b/trunk/spacenavd/doc/example-spnavrc
+index bbb87da..0f33b2c 100644
+--- a/doc/example-spnavrc
++++ b/doc/example-spnavrc
+@@ -92,23 +92,33 @@
+
+
+ # Device grab (USB)
++#
+ # When set to true (default): grab the USB device to prevent other programs
+ # (such as the X server) from also using it.
+ #
++# Grabbing the device ensures that other programs won't be able to use it
without
++# talking to spacenavd. For instance some versions of Xorg will use the
device to move
++# the mouse pointer if we don't grab it.
++# Set this to false if you want to use programs that try to talk to the
device directly
++# such as google earth, then follow FAQ 11
http://spacenav.sourceforge.net/faq.html#faq11
++# to force the X server to ignore the device
++#
+ #grab = true
+
+
+-# Custom USB device
+-# List of additional devices to use
++# List of additional USB devices to use (multiple devices can be listed)
++#
+ # example:
+ # device-id = 046d:c625
+
+
+ # Repeat interval (milliseconds)
+-# How often should spacenavd repeat the last event while out of the deadzone?
++# Non-deadzone events are repeated every so many milliseconds (-1 to disable).
++#
+ # You probably don't need this setting. Set it to something like 250 if you
+ # find that your apps stop moving the view while you hold the puck/ball at a
+ # fixed off-center position (like bottomed out on the vertical axis).
+-# Set to -1 to disable it (default).
++# Might cause inadvertent continuous motion if the deadzone is too small for
++# the re-centering power of the device.
+ #
+ #repeat-interval = -1
+diff --git a/trunk/spacenavd/src/cfgfile.c b/trunk/spacenavd/src/cfgfile.c
+index 75cb45a..4f6dbfe 100644
+--- a/src/cfgfile.c
++++ b/src/cfgfile.c
+@@ -452,8 +452,7 @@ int write_cfg(const char *fname, struct cfg *cfg)
+ fprintf(fp, "#serial = /dev/ttyS0\n");
+ }
+
+- fprintf(fp, "# custom list USB device ids to open if present\n");
+- fprintf(fp, "# (multiple entries can be listed)\n");
++ fprintf(fp, "List of additional USB devices to use (multiple devices
can be listed)");
+ for(i=0; i<MAX_CUSTOM; i++) {
+ if(cfg->devid[i][0] != -1 && cfg->devid[i][1] != -1) {
+ fprintf(fp, "device-id = %x:%x\n", cfg->devid[i][0],
cfg->devid[i][1]);
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index dfa4420..e52b2ac 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -207,14 +207,14 @@ static int read_evdev(struct device *dev, struct
dev_input *inp)
+ inp->type = INP_MOTION;
+ inp->idx = iev.code - REL_X;
+ inp->val = iev.value;
+- printf("[%s] EV_REL(%d): %d\n", dev->name, inp->idx,
iev.value);
++ /*printf("[%s] EV_REL(%d): %d\n", dev->name, inp->idx,
iev.value);*/
+ break;
+
+ case EV_ABS:
+ inp->type = INP_MOTION;
+ inp->idx = iev.code - ABS_X;
+ inp->val = map_range(dev, inp->idx, iev.value);
+- printf("[%s] EV_ABS(%d): %d (orig: %d)\n", dev->name,
inp->idx, inp->val, iev.value);
++ /*printf("[%s] EV_ABS(%d): %d (orig: %d)\n", dev->name,
inp->idx, inp->val, iev.value);*/
+ break;
+
+ case EV_KEY:
+@@ -225,12 +225,12 @@ static int read_evdev(struct device *dev, struct
dev_input *inp)
+
+ case EV_SYN:
+ inp->type = INP_FLUSH;
+- printf("[%s] EV_SYN\n", dev->name);
++ /*printf("[%s] EV_SYN\n", dev->name);*/
+ break;
+
+ default:
+ if(verbose) {
+- printf("unexpected event: %d\n", iev.type);
++ printf("unhandled event: %d\n", iev.type);
+ }
+ return -1;
+ }
+diff --git a/trunk/spacenavd/src/event.c b/trunk/spacenavd/src/event.c
+index 27cebe5..5812779 100644
+--- a/src/event.c
++++ b/src/event.c
+@@ -132,7 +132,6 @@ void process_input(struct device *dev, struct dev_input
*inp)
+ inp->idx = cfg.map_axis[inp->idx];
+
+ if(abs(inp->val) < cfg.dead_threshold[inp->idx] ) {
+- printf("clamping axis %d event with value %d in
deadzone\n", inp->idx, inp->val);
+ inp->val = 0;
+ }
+ sign = cfg.invert[inp->idx] ? -1 : 1;
+@@ -212,13 +211,8 @@ int in_deadzone(struct device *dev)
+ if((dev_ev = device_event_in_use(dev)) == NULL)
+ return -1;
+ for(i=0; i<6; i++) {
+- int val = dev_ev->event.motion.data[i];
+- if(val != 0) {
+- if(abs(val) < cfg.dead_threshold[i]) {
+- printf("BUG %d on axis %d not in deadzone?
(%d)\n", dev_ev->event.motion.data[i], i, cfg.dead_threshold[i]);
+- }
++ if(dev_ev->event.motion.data[i] != 0)
+ return 0;
+- }
+ }
+ return 1;
+ }
+--
+2.16.1
+
diff --git
a/debian/patches/added-all-the-missing-options-to-the-example-spnavrc.patch
b/debian/patches/added-all-the-missing-options-to-the-example-spnavrc.patch
new file mode 100644
index 0000000..9cc5954
--- /dev/null
+++ b/debian/patches/added-all-the-missing-options-to-the-example-spnavrc.patch
@@ -0,0 +1,125 @@
+From 1d7f47640c3c09d4a2f5b6024c4742603c0283b4 Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Thu, 12 Feb 2015 02:19:25 +0000
+Subject: [PATCH 07/14] added all the missing options to the example-spnavrc
+ file
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@186
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/doc/example-spnavrc | 73 ++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 72 insertions(+), 1 deletion(-)
+
+diff --git a/trunk/spacenavd/doc/example-spnavrc
b/trunk/spacenavd/doc/example-spnavrc
+index 964b343..ca8e598 100644
+--- a/doc/example-spnavrc
++++ b/doc/example-spnavrc
+@@ -9,34 +9,105 @@
+
+
+ # Sensitivity is multiplied with every motion (1.0 normal).
++#
+ #sensitivity = 1.0
+
+-
+ # Separate sensitivity for rotation and translation.
++#
+ #sensitivity-translation = 1.0
+ #sensitivity-rotation = 1.0
+
++# Separate sensitivity for each roation and translation axis.
++#
++#sensitivity-translation-x = 1.0
++#sensitivity-translation-y = 1.0
++#sensitivity-translation-z = 1.0
++#sensitivity-rotation-x = 1.0
++#sensitivity-rotation-y = 1.0
++#sensitivity-rotation-z = 1.0
++
+
+ # Dead zone; any motion less than this number is discarded as noise.
++#
+ #dead-zone = 2
+
++# Separate dead-zone for each rotation and translation axis.
++#
++#dead-zone-translation-x = 2
++#dead-zone-translation-y = 2
++#dead-zone-translation-z = 2
++#dead-zone-rotation-x = 2
++#dead-zone-rotation-y = 2
++#dead-zone-rotation-z = 2
++
+
+ # Selectively invert translation and rotation axes. Valid values are
+ # combinations of the letters x, y, and z.
++#
+ #invert-rot = yz
+ #invert-trans = yz
+
+
+ # Swap Y and Z axes
++#
+ #swap-yz = false
+
+
++# Axis remapping (zero-based)
++#
++#axismap0 = 0
++#axismap1 = 1
++#...
++#axismapN = N (N < 64)
++
++
++# Button remapping (zero-based)
++#
++#bnmap0 = 0
++#bnmap1 = 1
++#...
++#bnmapN = N (N < 64)
++
++
++# Map buttons to keyboard keys (experimental)
++# By default no such mappings are active. Use the following syntax:
++# kbmapN = <keysym>
++# where N is the button number (zero-based), and <keysym> is a keysym name
from
++# /usr/include/X11/keysymdef.h, without the leading XK_
++# Example:
++# kbmap0 = Escape
++
++
+ # Serial device
+ # Set this only if you have a serial device, and make sure you specify the
+ # correct device file. If you do set this option, any USB devices will be
+ # ignored!
++#
+ #serial = /dev/ttyS0
+
+
+ # Enable/disable LED light (for devices that have one).
++#
+ #led = on
++
++
++# Device grab (USB)
++# When set to true (default): grab the USB device to prevent other programs
++# (such as the X server) from also using it.
++#
++#grab = true
++
++
++# Custom USB device
++# List of additional devices to use
++# example:
++# device-id = 046d:c625
++
++
++# Repeat interval (milliseconds)
++# How often should spacenavd repeat the last event while out of the deadzone?
++# You probably don't need this setting. Set it to something like 250 if you
++# find that your apps stop moving the view while you hold the puck/ball at a
++# fixed off-center position (like bottomed out on the vertical axis).
++#
++#repeat-interval = 0
+--
+2.16.1
+
diff --git
a/debian/patches/added-code-to-skip-joystick-device-files-while-parsi.patch
b/debian/patches/added-code-to-skip-joystick-device-files-while-parsi.patch
new file mode 100644
index 0000000..aa3706e
--- /dev/null
+++ b/debian/patches/added-code-to-skip-joystick-device-files-while-parsi.patch
@@ -0,0 +1,37 @@
+From 2826f730d9f91513e4f64a081bd77ea55cc0138c Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Sat, 11 Oct 2014 05:07:58 +0000
+Subject: [PATCH 04/14] added code to skip joystick device files while parsing
+ /proc/bus/input/devices
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@183
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/src/dev_usb_linux.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index 30db579..5f4baad 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -342,11 +342,16 @@ struct usb_device_info *find_usb_devices(int
(*match)(const struct usb_device_in
+ case 'H':
+ keyptr = strstr(cur_line, "Handlers=");
+ if(keyptr) {
+- char *devfile, *valptr = keyptr
+ strlen("Handlers=");
++ char *devfile = 0, *valptr =
keyptr + strlen("Handlers=");
+ static const char *prefix =
"/dev/input/";
+
+ int idx = 0;
+- while((devfile = strtok(idx ? 0
: valptr, " \t\v\n\r"))) {
++ while((devfile = strtok(devfile
? 0 : valptr, " \t\v\n\r"))) {
++ if(strstr(devfile,
"js") == devfile) {
++ /* ignore
joystick device files, can't use them */
++ continue;
++ }
++
+
if(!(devinfo.devfiles[idx] = malloc(strlen(devfile) + strlen(prefix) + 1))) {
+ perror("failed
to allocate device filename buffer");
+ continue;
+--
+2.16.1
+
diff --git
a/debian/patches/added-rule-to-match-devices-with-the-new-3Dconnexion.patch
b/debian/patches/added-rule-to-match-devices-with-the-new-3Dconnexion.patch
new file mode 100644
index 0000000..9934a78
--- /dev/null
+++ b/debian/patches/added-rule-to-match-devices-with-the-new-3Dconnexion.patch
@@ -0,0 +1,42 @@
+From 104a4951d5b1a9aa47f94e94aa90d770c355ee22 Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Fri, 13 Mar 2015 21:14:57 +0000
+Subject: [PATCH 11/14] added rule to match devices with the new 3Dconnexion
+ vendor id (0x256f)
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@190
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/src/dev.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/trunk/spacenavd/src/dev.c b/trunk/spacenavd/src/dev.c
+index 8628b25..fff501b 100644
+--- a/src/dev.c
++++ b/src/dev.c
+@@ -188,6 +188,8 @@ struct device *get_devices(void)
+ return dev_list;
+ }
+
++#define VENDOR_3DCONNEXION 0x256f
++
+ static int devid_list[][2] = {
+ /* 3Dconnexion devices */
+ {0x46d, 0xc603}, /* spacemouse plus XT */
+@@ -215,8 +217,13 @@ static int match_usbdev(const struct usb_device_info
*devinfo)
+ return 1;
+ }
+
+- /* match any device in the devid_list */
+ if(devinfo->vendorid != -1 && devinfo->productid != -1) {
++ /* match any device with the new 3Dconnexion device id */
++ if(devinfo->vendorid == VENDOR_3DCONNEXION) {
++ return 1;
++ }
++
++ /* match any device in the devid_list */
+ for(i=0; devid_list[i][0] > 0; i++) {
+ if(devinfo->vendorid == devid_list[i][0] &&
devinfo->productid == devid_list[i][1]) {
+ return 1;
+--
+2.16.1
+
diff --git
a/debian/patches/fixed-a-small-bug-in-device-detection-which-sometime.patch
b/debian/patches/fixed-a-small-bug-in-device-detection-which-sometime.patch
new file mode 100644
index 0000000..ee8a23c
--- /dev/null
+++ b/debian/patches/fixed-a-small-bug-in-device-detection-which-sometime.patch
@@ -0,0 +1,27 @@
+From 164a6e7d496d17e0c40ee54a41a61a8231e24c28 Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Sun, 5 Apr 2015 23:23:15 +0000
+Subject: [PATCH 12/14] fixed a small bug in device detection which sometimes
+ skipped a single character during parsing
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@191
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/src/dev_usb_linux.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index e52b2ac..4b46d5a 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -293,7 +293,7 @@ struct usb_device_info *find_usb_devices(int
(*match)(const struct usb_device_in
+ if(next_section == NULL) {
+ /* move last (partial) section to start of buf
*/
+ /* sizeof(buf) - 1 because the last one is '\0'
*/
+- buf_used = (buf + sizeof(buf) - 1) -
section_start;
++ buf_used = strlen(section_start);
+ memmove(buf, section_start, buf_used);
+ buf[buf_used] = '\0';
+ /* point to end of last section and calc
remaining space in buf */
+--
+2.16.1
+
diff --git
a/debian/patches/moved-axis-remapping-before-checking-deadzones.patch
b/debian/patches/moved-axis-remapping-before-checking-deadzones.patch
new file mode 100644
index 0000000..5bd4349
--- /dev/null
+++ b/debian/patches/moved-axis-remapping-before-checking-deadzones.patch
@@ -0,0 +1,91 @@
+From 71dd396b30f88285ea7823e125288ecd7b9b1567 Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Thu, 12 Feb 2015 15:35:56 +0000
+Subject: [PATCH 09/14] moved axis remapping before checking deadzones
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@188
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/doc/example-spnavrc | 3 ++-
+ trunk/spacenavd/src/dev_usb_linux.c | 6 +++---
+ trunk/spacenavd/src/event.c | 12 +++++++++---
+ 3 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/trunk/spacenavd/doc/example-spnavrc
b/trunk/spacenavd/doc/example-spnavrc
+index ca8e598..bbb87da 100644
+--- a/doc/example-spnavrc
++++ b/doc/example-spnavrc
+@@ -109,5 +109,6 @@
+ # You probably don't need this setting. Set it to something like 250 if you
+ # find that your apps stop moving the view while you hold the puck/ball at a
+ # fixed off-center position (like bottomed out on the vertical axis).
++# Set to -1 to disable it (default).
+ #
+-#repeat-interval = 0
++#repeat-interval = -1
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index ad1262a..dfa4420 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -207,14 +207,14 @@ static int read_evdev(struct device *dev, struct
dev_input *inp)
+ inp->type = INP_MOTION;
+ inp->idx = iev.code - REL_X;
+ inp->val = iev.value;
+- /*printf("[%s] EV_REL(%d): %d\n", dev->name, inp->idx,
iev.value);*/
++ printf("[%s] EV_REL(%d): %d\n", dev->name, inp->idx,
iev.value);
+ break;
+
+ case EV_ABS:
+ inp->type = INP_MOTION;
+ inp->idx = iev.code - ABS_X;
+ inp->val = map_range(dev, inp->idx, iev.value);
+- /*printf("[%s] EV_ABS(%d): %d (orig: %d)\n", dev->name,
inp->idx, inp->val, iev.value);*/
++ printf("[%s] EV_ABS(%d): %d (orig: %d)\n", dev->name,
inp->idx, inp->val, iev.value);
+ break;
+
+ case EV_KEY:
+@@ -225,7 +225,7 @@ static int read_evdev(struct device *dev, struct dev_input
*inp)
+
+ case EV_SYN:
+ inp->type = INP_FLUSH;
+- /*printf("[%s] EV_SYN\n", dev->name);*/
++ printf("[%s] EV_SYN\n", dev->name);
+ break;
+
+ default:
+diff --git a/trunk/spacenavd/src/event.c b/trunk/spacenavd/src/event.c
+index 6ed9875..27cebe5 100644
+--- a/src/event.c
++++ b/src/event.c
+@@ -129,11 +129,12 @@ void process_input(struct device *dev, struct dev_input
*inp)
+
+ switch(inp->type) {
+ case INP_MOTION:
++ inp->idx = cfg.map_axis[inp->idx];
++
+ if(abs(inp->val) < cfg.dead_threshold[inp->idx] ) {
++ printf("clamping axis %d event with value %d in
deadzone\n", inp->idx, inp->val);
+ inp->val = 0;
+ }
+-
+- inp->idx = cfg.map_axis[inp->idx];
+ sign = cfg.invert[inp->idx] ? -1 : 1;
+
+ inp->val = (int)((float)inp->val * cfg.sensitivity * (inp->idx
< 3 ? cfg.sens_trans[inp->idx] : cfg.sens_rot[inp->idx - 3]));
+@@ -211,8 +212,13 @@ int in_deadzone(struct device *dev)
+ if((dev_ev = device_event_in_use(dev)) == NULL)
+ return -1;
+ for(i=0; i<6; i++) {
+- if(dev_ev->event.motion.data[i] != 0)
++ int val = dev_ev->event.motion.data[i];
++ if(val != 0) {
++ if(abs(val) < cfg.dead_threshold[i]) {
++ printf("BUG %d on axis %d not in deadzone?
(%d)\n", dev_ev->event.motion.data[i], i, cfg.dead_threshold[i]);
++ }
+ return 0;
++ }
+ }
+ return 1;
+ }
+--
+2.16.1
+
diff --git a/debian/patches/possible-fix-for-bug-9.patch
b/debian/patches/possible-fix-for-bug-9.patch
new file mode 100644
index 0000000..d642788
--- /dev/null
+++ b/debian/patches/possible-fix-for-bug-9.patch
@@ -0,0 +1,28 @@
+From 62e208f35aab905cf6230806b6af78b2e0f21f3b Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Fri, 9 Jan 2015 11:09:34 +0000
+Subject: [PATCH 05/14] possible fix for bug #9
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@184
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/src/dev_usb_linux.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index 5f4baad..6d1dac3 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -347,8 +347,8 @@ struct usb_device_info *find_usb_devices(int
(*match)(const struct usb_device_in
+
+ int idx = 0;
+ while((devfile = strtok(devfile
? 0 : valptr, " \t\v\n\r"))) {
+- if(strstr(devfile,
"js") == devfile) {
+- /* ignore
joystick device files, can't use them */
++ if(strstr(devfile,
"event") != devfile) {
++ /* ignore
everything which isn't an event interface device */
+ continue;
+ }
+
+--
+2.16.1
+
diff --git a/debian/patches/series b/debian/patches/series
index 3633806..564fb30 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,11 @@
add-buildflags-to-makefile.patch
run.patch
reproducible-build.patch
+added-code-to-skip-joystick-device-files-while-parsi.patch
+possible-fix-for-bug-9.patch
+added-all-the-missing-options-to-the-example-spnavrc.patch
+trying-to-remove-devices-from-Xinput.patch
+moved-axis-remapping-before-checking-deadzones.patch
+Better-example-spnavrc-descriptions.patch
+added-rule-to-match-devices-with-the-new-3Dconnexion.patch
+fixed-a-small-bug-in-device-detection-which-sometime.patch
diff --git a/debian/patches/trying-to-remove-devices-from-Xinput.patch
b/debian/patches/trying-to-remove-devices-from-Xinput.patch
new file mode 100644
index 0000000..c178de3
--- /dev/null
+++ b/debian/patches/trying-to-remove-devices-from-Xinput.patch
@@ -0,0 +1,189 @@
+From d7aa33dda9a478dda973d647d3719953ee73ab88 Mon Sep 17 00:00:00 2001
+From: jtsiomb <jtsiomb@ef983eb1-d774-4af8-acfd-baaf7b16a646>
+Date: Thu, 12 Feb 2015 04:17:13 +0000
+Subject: [PATCH 08/14] trying to remove devices from Xinput
+
+git-svn-id: svn://svn.code.sf.net/p/spacenav/code@187
ef983eb1-d774-4af8-acfd-baaf7b16a646
+---
+ trunk/spacenavd/configure | 7 +++++-
+ trunk/spacenavd/src/dev.c | 3 +++
+ trunk/spacenavd/src/dev.h | 2 +-
+ trunk/spacenavd/src/dev_usb_linux.c | 3 +++
+ trunk/spacenavd/src/proto_x11.c | 44 +++++++++++++++++++++++++++++++++++++
+ trunk/spacenavd/src/proto_x11.h | 2 ++
+ 6 files changed, 59 insertions(+), 2 deletions(-)
+
+diff --git a/trunk/spacenavd/configure b/trunk/spacenavd/configure
+index 2795a3c..ce6b1c4 100755
+--- a/configure
++++ b/configure
+@@ -28,7 +28,7 @@ test_kver() {
+ check_header() {
+ echo "#include <$1>" >.chkhdr.c
+ if cpp .chkhdr.c >/dev/null 2>&1; then
+- echo "#define HAVE_`echo $1 | tr '[:lower:]' '[:upper:]' | sed
's/\./_/g'`"
++ echo "#define HAVE_`basename $1 | tr '[:lower:]' '[:upper:]' |
sed 's/\./_/g'`"
+ fi
+ rm -f .chkhdr.c
+ }
+@@ -39,6 +39,7 @@ OPT=yes
+ DBG=yes
+ X11=yes
+ HOTPLUG=yes
++XINPUT=yes
+ VER=`head -1 README | sed 's/^.*- //'`
+
+ if echo $VER | grep '$Rev' >/dev/null; then
+@@ -140,6 +141,9 @@ fi
+
+ if [ "$X11" = 'yes' ]; then
+ echo 'xlib = -L/usr/X11/lib -lX11' >>Makefile
++ if [ -n "`check_header X11/extensions/XInput2.h 2>&1`" ]; then
++ echo 'xlib += -lXi' >>Makefile
++ fi
+ fi
+
+ if [ -n "$add_cflags" ]; then
+@@ -170,6 +174,7 @@ echo >>src/config.h
+
+ # check for alloca.h
+ check_header alloca.h >>src/config.h
++check_header X11/extensions/XInput2.h >>src/config.h
+
+ echo >>src/config.h
+ echo '#endif /* CONFIG_H_ */' >>src/config.h
+diff --git a/trunk/spacenavd/src/dev.c b/trunk/spacenavd/src/dev.c
+index 7fbfc02..8628b25 100644
+--- a/src/dev.c
++++ b/src/dev.c
+@@ -25,6 +25,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
+ #include "dev_serial.h"
+ #include "event.h" /* remove pending events upon device removal */
+ #include "spnavd.h"
++#include "proto_x11.h"
+
+ static struct device *add_device(void);
+ static struct device *dev_path_in_use(char const * dev_path);
+@@ -86,6 +87,8 @@ int init_devices(void)
+ fprintf(stderr, "failed to find any supported devices\n");
+ return -1;
+ }
++
++ drop_xinput();
+ return 0;
+ }
+
+diff --git a/trunk/spacenavd/src/dev.h b/trunk/spacenavd/src/dev.h
+index f7ef691..8bf68b4 100644
+--- a/src/dev.h
++++ b/src/dev.h
+@@ -39,7 +39,7 @@ struct device {
+ int (*read)(struct device*, struct dev_input*);
+ void (*set_led)(struct device*, int);
+
+- struct device *next;
++ struct device *next;
+ };
+
+ int init_devices(void);
+diff --git a/trunk/spacenavd/src/dev_usb_linux.c
b/trunk/spacenavd/src/dev_usb_linux.c
+index 6d1dac3..ad1262a 100644
+--- a/src/dev_usb_linux.c
++++ b/src/dev_usb_linux.c
+@@ -229,6 +229,9 @@ static int read_evdev(struct device *dev, struct dev_input
*inp)
+ break;
+
+ default:
++ if(verbose) {
++ printf("unexpected event: %d\n", iev.type);
++ }
+ return -1;
+ }
+ }
+diff --git a/trunk/spacenavd/src/proto_x11.c b/trunk/spacenavd/src/proto_x11.c
+index a338ff8..86ebc6f 100644
+--- a/src/proto_x11.c
++++ b/src/proto_x11.c
+@@ -35,9 +35,15 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
+ #include "proto_x11.h"
+ #include "client.h"
+ #include "spnavd.h"
++#include "dev.h"
+ #include "xdetect.h"
+ #include "kbemu.h"
+
++#ifdef HAVE_XINPUT2_H
++#include <X11/Xatom.h>
++#include <X11/extensions/XInput2.h>
++#endif
++
+
+ enum cmd_msg {
+ CMD_NONE,
+@@ -168,6 +174,8 @@ int init_x11(void)
+ kbemu_set_display(dpy);
+
+ xdet_stop(); /* stop X server detection if it was running */
++
++ drop_xinput();
+ return 0;
+ }
+
+@@ -346,6 +354,42 @@ void remove_client_window(Window win)
+ }
+ }
+
++void drop_xinput(void)
++{
++#ifdef HAVE_XINPUT2_H
++ XIDeviceInfo *xidevs;
++ int i, num_devs;
++ static Atom atom_enabled;
++
++ if(!dpy) return;
++
++ if(!atom_enabled) {
++ atom_enabled = XInternAtom(dpy, "Device Enabled", False);
++ }
++
++ if(!(xidevs = XIQueryDevice(dpy, XIAllDevices, &num_devs))) {
++ fprintf(stderr, "failed to query XInput2 devices\n");
++ return;
++ }
++
++ for(i=0; i<num_devs; i++) {
++ struct device *dev = get_devices();
++ while(dev) {
++ if(strcmp(dev->name, xidevs[i].name) == 0 &&
xidevs[i].enabled) {
++ unsigned char zero = 0;
++ printf("Removing device \"%s\" from X
server\n", dev->name);
++
++ XIChangeProperty(dpy, xidevs[i].deviceid,
atom_enabled, XA_INTEGER, 8, PropModeReplace, &zero, 1);
++ break;
++ }
++ dev = dev->next;
++ }
++ }
++ XIFreeDeviceInfo(xidevs);
++
++#endif /* HAVE_XINPUT2_H */
++}
++
+
+ /* X11 error handler */
+ static int xerr(Display *dpy, XErrorEvent *err)
+diff --git a/trunk/spacenavd/src/proto_x11.h b/trunk/spacenavd/src/proto_x11.h
+index 6b78361..49881e5 100644
+--- a/src/proto_x11.h
++++ b/src/proto_x11.h
+@@ -37,5 +37,7 @@ int handle_xevents(fd_set *rset);
+ void set_client_window(Window win);
+ void remove_client_window(Window win);
+
++void drop_xinput(void);
++
+
+ #endif /* PROTO_X11_H_ */
+--
+2.16.1
+
--
2.16.2