Re: [PATCH v1 1/6] tiocl.h: Change/Add defines for mouse report
From: Jiri Slaby
Date: Tue Jun 30 2020 - 03:55:33 EST
On 30. 06. 20, 9:10, Tammo Block wrote:
> 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..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 */
0xe3 is more obvious (can be in-brain translated to bits).
If C only had 0b prefix like perl has...
> /* 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 */
s/event/&s/
> +#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 */
>
thanks,
--
js
suse labs