On Mon, Jan 18, 2016 at 03:47:56PM -0800, Ping Cheng wrote:
> Group inital values by device types. Also, on kernels older than
> 2.6.36, BTN_TOOL_FINGER is borrowed to indicate Expresskey events.

I'm not happy with that, tbh. Is there another way to check for this? anyone
still running 2.6.36 is likely running an enterprise kernel where version
checks are meaningless.

> 
> Signed-off-by: Ping Cheng <pi...@wacom.com>
> ---
>  wacom.c | 59 ++++++++++++++++-------------------------------------------
>  1 file changed, 16 insertions(+), 43 deletions(-)
> 
> diff --git a/wacom.c b/wacom.c
> index cd89aab..2f0cce9 100644
> --- a/wacom.c
> +++ b/wacom.c
> @@ -19,6 +19,10 @@
>  #include <config.h>
>  #endif
>  
> +# ifndef LINUX_VERSION_CODE
> +# include <linux/version.h>
> +# endif
> +
>  #include <stdio.h>
>  #include <errno.h>
>  #include <string.h>
> @@ -83,21 +87,21 @@ enum {
>       PTU,
>       PL,
>       INTUOS,
> -     INTUOS3S,
> -     INTUOS3,
> -     INTUOS3L,
>       CINTIQ,
>       BEE,
>       MO,
> -     TABLETPC,
> +     WACOM_21UX2,
> +     INTUOS3S,
> +     INTUOS3,
> +     INTUOS3L,
>       INTUOS4S,
>       INTUOS4,
>       INTUOS4L,
> -     WACOM_21UX2,
> -     DTU,
>       INTUOS5S,
>       INTUOS5M,
>       INTUOS5L,
> +     TABLETPC,
> +     DTU,
>       INTUOS5_FG,

any reason you're splitting the INTUOS5_FG from the other INTUOS5 enums?

>       MAX_TYPE
>  };
> @@ -211,10 +215,10 @@ static int wacom_intuos_events(struct uinput_info *info)
>       set_event(info, UI_SET_KEYBIT, BTN_TOOL_RUBBER);
>       set_event(info, UI_SET_KEYBIT, BTN_TOOL_MOUSE);
>       set_event(info, UI_SET_KEYBIT, BTN_TOOL_LENS);
> -     if (features->type != INTUOS5S &&
> -             features->type != INTUOS5M &&
> -             features->type != INTUOS5L)
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
> +     if (features->type > INTUOS)
>               set_event(info, UI_SET_KEYBIT, BTN_TOOL_FINGER);
> +#endif
>       set_event(info, UI_SET_KEYBIT, BTN_TOUCH);
>       set_event(info, UI_SET_KEYBIT, BTN_STYLUS2);
>       set_event(info, UI_SET_KEYBIT, BTN_RIGHT);
> @@ -222,15 +226,10 @@ static int wacom_intuos_events(struct uinput_info *info)
>       set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
>       set_event(info, UI_SET_KEYBIT, BTN_SIDE);
>       set_event(info, UI_SET_KEYBIT, BTN_EXTRA);
> -     if (features->type != INTUOS5S &&
> -             features->type != INTUOS5M &&
> -             features->type != INTUOS5L)
> -             set_event(info, UI_SET_KEYBIT, BTN_7);
>       set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
>  
> -     if (features->type != INTUOS5S &&
> -             features->type != INTUOS5M &&
> -             features->type != INTUOS5L) {
> +     if (features->type >= CINTIQ &&
> +             features->type <= INTUOS3L) {

I really dislike using enums for > and <=, it's not very expressive. it'd be
trivial to have a switch here with the list of tablets that need this. given
how often tablets are released (and wdaemon is updated) this is cheaper than
making people double-check the range.

plus there's the argument to be made: why the set_event can't be done
automatically in an absmax function. But this is wdaemon, probably better
not to touch it too much...

Cheers,
   Peter


>               set_event(info, UI_SET_ABSBIT, ABS_RX);
>               set_event(info, UI_SET_ABSBIT, ABS_RY);
>       }
> @@ -414,7 +413,6 @@ static int wacom_set_initial_values(struct uinput_info 
> *info,
>               dev->absmax[ABS_WHEEL] = 71;
>               /* fall through */
>       case G4:
> -             /* fall through */
>       case GRAPHIRE:
>               break;
>  
> @@ -427,40 +425,15 @@ static int wacom_set_initial_values(struct uinput_info 
> *info,
>               /* fall through */
>       case INTUOS3S:
>               dev->absmax[ABS_RX] = 4096;
> -             dev->absmax[ABS_Z] = 899;
> -             dev->absmin[ABS_Z] = -900;
> -             /* fall through */
> -     case INTUOS:
> -             dev->absmax[ABS_WHEEL] = 1023;
> -             dev->absmax[ABS_TILT_X] = 127;
> -             dev->absmax[ABS_TILT_Y] = 127;
> -             dev->absmin[ABS_RZ] = -900;
> -             dev->absmax[ABS_RZ] = 899;
> -             dev->absmin[ABS_THROTTLE] = -1023;
> -             dev->absmax[ABS_THROTTLE] = 1023;
> -             break;
> -     case PL:
> -     case PTU:
> -             break;
> -     case PENPARTNER:
> -             break;
> -     case TABLETPC:
> -             dev->absmax[ABS_RX] = 1023;
> -             dev->absmax[ABS_RY] = 1023;
>       case INTUOS4S:
>       case INTUOS4:
>       case INTUOS4L:
> -             dev->absmin[ABS_Z] = -900;
> -             dev->absmax[ABS_Z] = 899;
> -             break;
>       case INTUOS5S:
>       case INTUOS5M:
>       case INTUOS5L:
> -             dev->absfuzz[ABS_X] = 4;
> -             dev->absfuzz[ABS_Y] = 4;
> -             dev->absfuzz[ABS_Y] = 4;
>               dev->absmin[ABS_Z] = -900;
>               dev->absmax[ABS_Z] = 899;
> +     case INTUOS:
>               dev->absmin[ABS_RZ] = -900;
>               dev->absmax[ABS_RZ] = 899;
>               dev->absmax[ABS_WHEEL] = 1023;
> -- 
> 1.9.1
> 

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to