Re: [PATCH 2/2] Input: Allow devices to state that they aren't joysticks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Apr 12, 2015 at 11:07:51PM -0700, Thomas Hellstrom wrote:
> Sometimes the device driver knows that a device isn't a joystick.
> In those cases, allow the driver to ovveride joydev's guess.

I'd rather not encode knowledge of various input handlers into
individual input drivers. Maybe we should simply tell joydev not to bing
to devices with ABS_X, ABS_Y and 3 primary mouse buttons (and no other
events?).

Thanks.

> 
> Signed-off-by: Thomas Hellstrom <thellstrom@xxxxxxxxxx>
> ---
>  drivers/input/joydev.c        | 4 ++++
>  drivers/input/mouse/vmmouse.c | 1 +
>  include/linux/input.h         | 5 +++++
>  3 files changed, 10 insertions(+)
> 
> diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
> index f362883..6add101 100644
> --- a/drivers/input/joydev.c
> +++ b/drivers/input/joydev.c
> @@ -750,6 +750,10 @@ static void joydev_cleanup(struct joydev *joydev)
>  
>  static bool joydev_match(struct input_handler *handler, struct input_dev *dev)
>  {
> +	/* Avoid devices that explicitly don't want to be joysticks */
> +	if (dev->flags & INPUT_FLAG_NO_JOYSTICK)
> +		return false;
> +
>  	/* Avoid touchpads and touchscreens */
>  	if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_TOUCH, dev->keybit))
>  		return false;
> diff --git a/drivers/input/mouse/vmmouse.c b/drivers/input/mouse/vmmouse.c
> index b3a6170..0fabe3d 100644
> --- a/drivers/input/mouse/vmmouse.c
> +++ b/drivers/input/mouse/vmmouse.c
> @@ -468,6 +468,7 @@ int vmmouse_init(struct psmouse *psmouse)
>  	abs_dev->id.product = PSMOUSE_VMMOUSE;
>  	abs_dev->id.version = psmouse->model;
>  	abs_dev->dev.parent = &psmouse->ps2dev.serio->dev;
> +	abs_dev->flags |= INPUT_FLAG_NO_JOYSTICK;
>  
>  	if (input_register_device(priv->abs_dev))
>  		goto init_fail;
> diff --git a/include/linux/input.h b/include/linux/input.h
> index 82ce323..516387e 100644
> --- a/include/linux/input.h
> +++ b/include/linux/input.h
> @@ -117,6 +117,7 @@ struct input_value {
>   * @vals: array of values queued in the current frame
>   * @devres_managed: indicates that devices is managed with devres framework
>   *	and needs not be explicitly unregistered or freed.
> + * @flags: Device flags.
>   */
>  struct input_dev {
>  	const char *name;
> @@ -187,9 +188,13 @@ struct input_dev {
>  	struct input_value *vals;
>  
>  	bool devres_managed;
> +
> +	u32 flags;
>  };
>  #define to_input_dev(d) container_of(d, struct input_dev, dev)
>  
> +#define INPUT_FLAG_NO_JOYSTICK      (1 << 0)
> +
>  /*
>   * Verify that we are in sync with input_device_id mod_devicetable.h #defines
>   */
> -- 
> 2.1.0
> 

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux