On Tue, Feb 07, 2023 at 02:12:57PM +0100, Tobias Heider wrote:
> On Mon, Sep 19, 2022 at 11:16:51AM +0200, Ulf Brosziewski wrote:
> > Is there enough interest in this feature among OpenBSD users?  I haven't
> > seen many requests for it, if any.  Moreover, is it a good idea to configure
> > different input methods on this or that hardware just because another OS
> > has different defaults?
> > 
> > Just in case the answer to these questions turns out to be "yes", here are
> > some remarks on the diff.
> 
> I do still believe that there is interest in this feature based on the 
> feedback
> I got from other devs. Having it available as a non-default option as 
> kettenis@
> said would be good enough.
> 
> Below is a revised version of the diff that adds a new mouse.tp.mtbuttons 
> config
> option. It can either be enabled via wsconsctl mouse.tp.mtbuttons=1 or by
> adding mouse.tp.mtbuttons=1 to your /etc/wsconsctl.conf.
> 
> ok?

I am very supportive of this idea/diff.  Not sure if it's my area to ok.

> Index: sys/dev/wscons/wsconsio.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
> retrieving revision 1.98
> diff -u -p -r1.98 wsconsio.h
> --- sys/dev/wscons/wsconsio.h 15 Jul 2022 17:57:27 -0000      1.98
> +++ sys/dev/wscons/wsconsio.h 5 Feb 2023 15:35:39 -0000
> @@ -319,6 +319,7 @@ enum wsmousecfg {
>       WSMOUSECFG_SWAPSIDES,           /* invert soft-button/scroll areas */
>       WSMOUSECFG_DISABLE,             /* disable all output except for
>                                          clicks in the top-button area */
> +     WSMOUSECFG_MTBUTTONS,           /* multi-touch buttons */
>  
>       /*
>        * Touchpad options
> Index: sys/dev/wscons/wstpad.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/wscons/wstpad.c,v
> retrieving revision 1.31
> diff -u -p -r1.31 wstpad.c
> --- sys/dev/wscons/wstpad.c   9 Jun 2022 22:17:18 -0000       1.31
> +++ sys/dev/wscons/wstpad.c   5 Feb 2023 15:35:39 -0000
> @@ -72,6 +72,7 @@
>  enum tpad_handlers {
>       SOFTBUTTON_HDLR,
>       TOPBUTTON_HDLR,
> +     MTBUTTON_HDLR,
>       TAP_HDLR,
>       F2SCROLL_HDLR,
>       EDGESCROLL_HDLR,
> @@ -149,6 +150,7 @@ struct tpad_touch {
>  #define WSTPAD_HORIZSCROLL   (1 << 5)
>  #define WSTPAD_SWAPSIDES     (1 << 6)
>  #define WSTPAD_DISABLE               (1 << 7)
> +#define WSTPAD_MTBUTTONS     (1 << 8)
>  
>  #define WSTPAD_MT            (1 << 31)
>  
> @@ -646,7 +648,17 @@ wstpad_softbuttons(struct wsmouseinput *
>       }
>  
>       if (tp->softbutton == 0 && PRIMARYBTN_CLICKED(tp)) {
> -             tp->softbutton = wstpad_get_sbtn(input, top);
> +             if (hdlr == MTBUTTON_HDLR) {
> +                     switch (tp->contacts) {
> +                     case 2:
> +                             tp->softbutton = RIGHTBTN;
> +                             break;
> +                     case 3:
> +                             tp->softbutton = MIDDLEBTN;
> +                             break;
> +                     }
> +             } else
> +                     tp->softbutton = wstpad_get_sbtn(input, top);
>               if (tp->softbutton)
>                       *cmds |= 1 << SOFTBUTTON_DOWN;
>       }
> @@ -1237,12 +1249,14 @@ wstpad_process_input(struct wsmouseinput
>       cmds = 0;
>       handlers = tp->handlers;
>       if (DISABLE(tp))
> -             handlers &= ((1 << TOPBUTTON_HDLR) | (1 << SOFTBUTTON_HDLR));
> +             handlers &= ((1 << TOPBUTTON_HDLR) | (1 << SOFTBUTTON_HDLR) |
> +                 (1 << MTBUTTON_HDLR));
>  
>       FOREACHBIT(handlers, hdlr) {
>               switch (hdlr) {
>               case SOFTBUTTON_HDLR:
>               case TOPBUTTON_HDLR:
> +             case MTBUTTON_HDLR:
>                       wstpad_softbuttons(input, &cmds, hdlr);
>                       continue;
>               case TAP_HDLR:
> @@ -1621,6 +1635,8 @@ wstpad_configure(struct wsmouseinput *in
>  
>       tp->handlers = 0;
>  
> +     if (tp->features & WSTPAD_MTBUTTONS)
> +             tp->handlers |= 1 << MTBUTTON_HDLR;
>       if (tp->features & WSTPAD_SOFTBUTTONS)
>               tp->handlers |= 1 << SOFTBUTTON_HDLR;
>       if (tp->features & WSTPAD_TOPBUTTONS)
> @@ -1691,7 +1707,7 @@ wstpad_set_param(struct wsmouseinput *in
>               return (EINVAL);
>  
>       switch (key) {
> -     case WSMOUSECFG_SOFTBUTTONS ... WSMOUSECFG_DISABLE:
> +     case WSMOUSECFG_SOFTBUTTONS ... WSMOUSECFG_MTBUTTONS:
>               switch (key) {
>               case WSMOUSECFG_SOFTBUTTONS:
>                       flag = WSTPAD_SOFTBUTTONS;
> @@ -1717,6 +1733,9 @@ wstpad_set_param(struct wsmouseinput *in
>               case WSMOUSECFG_DISABLE:
>                       flag = WSTPAD_DISABLE;
>                       break;
> +             case WSMOUSECFG_MTBUTTONS:
> +                     flag = WSTPAD_MTBUTTONS;
> +                     break;
>               }
>               if (val)
>                       tp->features |= flag;
> @@ -1785,7 +1804,7 @@ wstpad_get_param(struct wsmouseinput *in
>               return (EINVAL);
>  
>       switch (key) {
> -     case WSMOUSECFG_SOFTBUTTONS ... WSMOUSECFG_DISABLE:
> +     case WSMOUSECFG_SOFTBUTTONS ... WSMOUSECFG_MTBUTTONS:
>               switch (key) {
>               case WSMOUSECFG_SOFTBUTTONS:
>                       flag = WSTPAD_SOFTBUTTONS;
> @@ -1810,6 +1829,9 @@ wstpad_get_param(struct wsmouseinput *in
>                       break;
>               case WSMOUSECFG_DISABLE:
>                       flag = WSTPAD_DISABLE;
> +                     break;
> +             case WSMOUSECFG_MTBUTTONS:
> +                     flag = WSTPAD_MTBUTTONS;
>                       break;
>               }
>               *pval = !!(tp->features & flag);
> Index: sbin/wsconsctl/mouse.c
> ===================================================================
> RCS file: /cvs/src/sbin/wsconsctl/mouse.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 mouse.c
> --- sbin/wsconsctl/mouse.c    19 Aug 2019 21:42:33 -0000      1.20
> +++ sbin/wsconsctl/mouse.c    5 Feb 2023 15:35:39 -0000
> @@ -57,6 +57,7 @@ struct field mouse_field_tab[] = {
>      { "reverse_scrolling",   &cfg_revscroll, FMT_CFG,        FLG_NORDBACK },
>      /* touchpad-specific options: */
>      { "tp.tapping",          &cfg_tapping,   FMT_CFG,        FLG_NORDBACK },
> +    { "tp.mtbuttons",                &cfg_mtbuttons, FMT_CFG,        
> FLG_NORDBACK },
>      { "tp.scaling",          &cfg_scaling,   FMT_CFG,        FLG_NORDBACK },
>      { "tp.swapsides",                &cfg_swapsides, FMT_CFG,        
> FLG_NORDBACK },
>      { "tp.disable",          &cfg_disable,   FMT_CFG,        FLG_NORDBACK },
> Index: sbin/wsconsctl/mousecfg.c
> ===================================================================
> RCS file: /cvs/src/sbin/wsconsctl/mousecfg.c,v
> retrieving revision 1.9
> diff -u -p -r1.9 mousecfg.c
> --- sbin/wsconsctl/mousecfg.c 3 Mar 2021 19:44:37 -0000       1.9
> +++ sbin/wsconsctl/mousecfg.c 5 Feb 2023 15:35:39 -0000
> @@ -40,7 +40,7 @@
>  #define TP_FILTER_FIRST              WSMOUSECFG_DX_MAX
>  #define TP_FILTER_LAST               WSMOUSECFG_SMOOTHING
>  #define TP_FEATURES_FIRST    WSMOUSECFG_SOFTBUTTONS
> -#define TP_FEATURES_LAST     WSMOUSECFG_DISABLE
> +#define TP_FEATURES_LAST     WSMOUSECFG_MTBUTTONS
>  #define TP_SETUP_FIRST               WSMOUSECFG_LEFT_EDGE
>  #define TP_SETUP_LAST                WSMOUSECFG_TAP_THREE_BTNMAP
>  #define LOG_FIRST            WSMOUSECFG_LOG_INPUT
> @@ -75,6 +75,12 @@ struct wsmouse_parameters cfg_tapping = 
>           { WSMOUSECFG_TAP_TWO_BTNMAP, 0 },
>           { WSMOUSECFG_TAP_THREE_BTNMAP, 0 }, },
>       3
> +};
> +
> +struct wsmouse_parameters cfg_mtbuttons = {
> +     (struct wsmouse_param[]) {
> +         { WSMOUSECFG_MTBUTTONS, 0 }, },
> +     1
>  };
>  
>  struct wsmouse_parameters cfg_scaling = {
> Index: sbin/wsconsctl/mousecfg.h
> ===================================================================
> RCS file: /cvs/src/sbin/wsconsctl/mousecfg.h,v
> retrieving revision 1.4
> diff -u -p -r1.4 mousecfg.h
> --- sbin/wsconsctl/mousecfg.h 19 Aug 2019 21:42:33 -0000      1.4
> +++ sbin/wsconsctl/mousecfg.h 5 Feb 2023 15:35:39 -0000
> @@ -17,6 +17,7 @@
>   */
>  
>  extern struct wsmouse_parameters cfg_tapping;
> +extern struct wsmouse_parameters cfg_mtbuttons;
>  extern struct wsmouse_parameters cfg_scaling;
>  extern struct wsmouse_parameters cfg_edges;
>  extern struct wsmouse_parameters cfg_swapsides;
> 

Reply via email to