aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/evdev
diff options
context:
space:
mode:
authorOleksandr Tymoshenko <gonzo@FreeBSD.org>2016-12-10 18:07:16 +0000
committerOleksandr Tymoshenko <gonzo@FreeBSD.org>2016-12-10 18:07:16 +0000
commit4af79d4f2b824eb8695f874084da7d1682aa4d05 (patch)
treebcd0695b0315de729a64ea594e791a9d97fc2be6 /sys/dev/evdev
parentc837b8e35f0aca3f3fa8bb2c053724ac57d4dead (diff)
Notes
Diffstat (limited to 'sys/dev/evdev')
-rw-r--r--sys/dev/evdev/evdev.c3
-rw-r--r--sys/dev/evdev/evdev.h16
2 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/evdev/evdev.c b/sys/dev/evdev/evdev.c
index 4de5dee8db04d..9827a7a9cd91b 100644
--- a/sys/dev/evdev/evdev.c
+++ b/sys/dev/evdev/evdev.c
@@ -63,11 +63,14 @@ enum evdev_sparse_result
MALLOC_DEFINE(M_EVDEV, "evdev", "evdev memory");
int evdev_rcpt_mask = EVDEV_RCPT_SYSMOUSE | EVDEV_RCPT_KBDMUX;
+int evdev_sysmouse_t_axis = 0;
SYSCTL_NODE(_kern, OID_AUTO, evdev, CTLFLAG_RW, 0, "Evdev args");
SYSCTL_INT(_kern_evdev, OID_AUTO, rcpt_mask, CTLFLAG_RW, &evdev_rcpt_mask, 0,
"Who is receiving events: bit0 - sysmouse, bit1 - kbdmux, "
"bit2 - mouse hardware, bit3 - keyboard hardware");
+SYSCTL_INT(_kern_evdev, OID_AUTO, sysmouse_t_axis, CTLFLAG_RW,
+ &evdev_sysmouse_t_axis, 0, "Extract T-axis from 0-none, 1-ums, 2-psm");
static void evdev_start_repeat(struct evdev_dev *, uint16_t);
static void evdev_stop_repeat(struct evdev_dev *);
diff --git a/sys/dev/evdev/evdev.h b/sys/dev/evdev/evdev.h
index 34808b4b563ca..946913c4dd8b3 100644
--- a/sys/dev/evdev/evdev.h
+++ b/sys/dev/evdev/evdev.h
@@ -56,6 +56,22 @@ typedef void (evdev_keycode_t)(struct evdev_dev *, void *,
#define EVDEV_RCPT_HW_MOUSE (1<<2)
#define EVDEV_RCPT_HW_KBD (1<<3)
extern int evdev_rcpt_mask;
+/*
+ * Sysmouse protocol does not support horizontal wheel movement reporting.
+ * To overcome this limitation different drivers use different sysmouse proto
+ * extensions. Set kern.evdev.sysmouse_t_axis to tell sysmouse evdev driver
+ * which protocol extension is used.
+ * 0 - do not extract horizontal wheel movement (default).
+ * 1 - ums(4) horizontal wheel encoding. T-axis is mapped to buttons 6 and 7
+ * 2 - psm(4) wheels encoding: z = 1,-1 - vert. wheel, z = 2,-2 - horiz. wheel
+ */
+enum
+{
+ EVDEV_SYSMOUSE_T_AXIS_NONE = 0,
+ EVDEV_SYSMOUSE_T_AXIS_UMS = 1,
+ EVDEV_SYSMOUSE_T_AXIS_PSM = 2,
+};
+extern int evdev_sysmouse_t_axis;
#define ABS_MT_FIRST ABS_MT_TOUCH_MAJOR
#define ABS_MT_LAST ABS_MT_TOOL_Y