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.bl...@gmail.com>
---
 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..c862053041e4 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     227     /* 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 event 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

Reply via email to