[PATCH v2 1/6] tiocl.h: Change/Add defines for mouse report

From: Tammo Block
Date: Wed Jul 01 2020 - 11:12:06 EST


Add additional defines for mouse event types. The change of the value
of TIOCL_SELBUTTONMASK deserves a bit more explanation :

The old value of 15 uses the first 4 bits and sends them unchanged back
to userspace if requested by an application. But in fact only the first
two bits have ever been used by any daemon or useful at all, as the
kernel already knows the status of the shift and alt keys encoded in
bits 3 and 4. On the other hand we *do* want to know the status of bits
6-8, encoding button values >3 and mouse move and drag operations.

This change is up- and downwards compatible by masking all spourious
bits and leaving only the undisputed parts (bits 1 and 2) untouched.

Signed-off-by: Tammo Block <tammo.block@xxxxxxxxx>
---
include/uapi/linux/tiocl.h | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/tiocl.h b/include/uapi/linux/tiocl.h
index b32acc229024..3717e865571d 100644
--- a/include/uapi/linux/tiocl.h
+++ b/include/uapi/linux/tiocl.h
@@ -9,7 +9,7 @@
#define TIOCL_SELPOINTER 3 /* show the pointer */
#define TIOCL_SELCLEAR 4 /* clear visibility of selection */
#define TIOCL_SELMOUSEREPORT 16 /* report beginning of selection */
-#define TIOCL_SELBUTTONMASK 15 /* button mask for report */
+#define TIOCL_SELBUTTONMASK 0xe3 /* button mask for report */
/* selection extent */
struct tiocl_selection {
unsigned short xs; /* X start */
@@ -28,7 +28,11 @@ struct tiocl_selection {

/* these two don't return a value: they write it back in the type */
#define TIOCL_GETSHIFTSTATE 6 /* write shift state */
-#define TIOCL_GETMOUSEREPORTING 7 /* write whether mouse event are reported */
+#define TIOCL_GETMOUSEREPORTING 7 /* write which mouse events are reported */
+#define TIOCL_REPORTBTNPRESS 1 /* report button press only "9" */
+#define TIOCL_REPORTRELEASE 2 /* report press and release "1000" */
+#define TIOCL_REPORTDRAG 3 /* report drag events "1002" */
+#define TIOCL_REPORTANYMOVE 4 /* report any movement "1003" */
#define TIOCL_SETVESABLANK 10 /* set vesa blanking mode */
#define TIOCL_SETKMSGREDIRECT 11 /* restrict kernel messages to a vt */
#define TIOCL_GETFGCONSOLE 12 /* get foreground vt */
--
2.27.0