[PATCH libinput] evdev: Be more careful about what we consider a joystick

Michael Schellenberger Costa schellenberger at inb.uni-luebeck.de
Wed Jan 21 03:25:39 PST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

is there an acutal reason, why joysticks and/or gamepads are ignored
inside libinput. Is it just, that they are not yet implemented, or are
there some real reasons?

If the answer is that nobody has yet written the code, would someone
of the more knowledgeable persons on the list be willing to help me a
little (most likely a lot) to put some code together?

best wishes
Michael

Am 21.01.2015 um 12:04 schrieb Hans de Goede:
> After switching my main workstation over to using
> xf86-input-libinput, I noticed that the multi-media keys like
> play/pause on my keyboard no longer worked.
> 
> It turns out that the second hid interface on my keyboard which has
> the multimedia-keys, also declares having: BTN_BASE6 and BTN_MODE
> which both fell into the range we were using to test for something
> being a joystick.
> 
> The commit makes our joystick test mode strict, restoring
> functionality of the multi-media keys on the keyboard in question.
> 
> Signed-off-by: Hans de Goede <hdegoede at redhat.com> --- src/evdev.c
> | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9
> deletions(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c index 6edacba..b2bb2aa
> 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1324,7 +1324,7 @@
> evdev_configure_device(struct evdev_device *device) struct libevdev
> *evdev = device->evdev; const struct input_absinfo *absinfo; int
> has_abs, has_rel, has_mt; -	int has_button, has_keyboard,
> has_touch; +	int has_button, has_keyboard, has_touch,
> has_joy_button; struct mt_slot *slots; int num_slots; int
> active_slot; @@ -1336,17 +1336,24 @@ evdev_configure_device(struct
> evdev_device *device) has_abs = 0; has_mt = 0; has_button = 0; +
> has_joy_button = 0; has_keyboard = 0; has_touch = 0;
> 
> -        for (i = BTN_JOYSTICK; i < BTN_DIGI; i++) { -
> if (libevdev_has_event_code(evdev, EV_KEY, i)) { -
> log_info(libinput, -                                 "input device
> '%s', %s is a joystick, ignoring\n", -
> device->devname, devnode); -                        return -1; -
> } -        } +	for (i = BTN_JOYSTICK; i <= BTN_PINKIE; i++) +		if
> (libevdev_has_event_code(evdev, EV_KEY, i)) +			has_joy_button =
> 1; + +	for (i = BTN_GAMEPAD; i <= BTN_TR2; i++) +		if
> (libevdev_has_event_code(evdev, EV_KEY, i)) +			has_joy_button =
> 1; + +	if (has_joy_button) { +		log_info(libinput, +			 "input
> device '%s', %s is a joystick, ignoring\n", +			 device->devname,
> devnode); +		return -1; +	}
> 
> if (libevdev_has_event_type(evdev, EV_ABS)) {
> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJUv4yzAAoJECfkpCAi2eFKOX0H/RYolCotiuoU6qWeTPQbiQ3x
RYcekI/lp94SkuUEtGwNleILrAV+FWfYQ8v49nP9BNZucSbJ5/qPuC3py+2J2pS0
XQcY8hUm9wq0FAxxMhunXO2y5qSXwjgZB/fbZe5gzVHrggSQQNlNMTh4ZPdzmpz/
2yKF1CMXIFmeLHqGAIEGx3cu+6tUhFKiMFKJPYa4FCyp3uqvQhUeGnkceUaH7FER
k9BFZ1XpNwEGZw+yT+DxNVaE/YJQPEle1xE1a20fRI1YCkbfy3q0VQA2+h1tdfMl
C1WV1sJArJnsks3PFK1iMYiOoAC0YMEJpsh4UQH2MAzrUPyY3e+9yOaVxlJFXMs=
=gymn
-----END PGP SIGNATURE-----


More information about the wayland-devel mailing list