diff mbox

Input: joydev - Recognize joysticks with Z axis as joysticks.

Message ID 1472134610-6438-1-git-send-email-ville.ranki@iki.fi (mailing list archive)
State Accepted
Headers show

Commit Message

Ville Ranki Aug. 25, 2016, 2:16 p.m. UTC
Current implementation of joydev's input_device_id
table recognizes only devices with ABS_X, ABS_WHEEL
or ABS_THROTTLE axes as joysticks.

There are joystick devices that do not have those axes,
for example TRC Rudder device. The device in question
has ABS_Z, ABS_RX and ABS_RY axes causing it not being
detected as joystick.

This patch adds ABS_Z to the input_device_id list
allowing devices with ABS_Z axis to be detected
correctly.

Signed-off-by: Ville Ranki <ville.ranki@iki.fi>
---
 drivers/input/joydev.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Dmitry Torokhov Aug. 25, 2016, 4:45 p.m. UTC | #1
On Thu, Aug 25, 2016 at 05:16:50PM +0300, Ville Ranki wrote:
> Current implementation of joydev's input_device_id
> table recognizes only devices with ABS_X, ABS_WHEEL
> or ABS_THROTTLE axes as joysticks.
> 
> There are joystick devices that do not have those axes,
> for example TRC Rudder device. The device in question
> has ABS_Z, ABS_RX and ABS_RY axes causing it not being
> detected as joystick.
> 
> This patch adds ABS_Z to the input_device_id list
> allowing devices with ABS_Z axis to be detected
> correctly.

I am curious why you still use joydev and not switch your client(s) to
evdev? Or is it some legacy game?

Thanks.

> 
> Signed-off-by: Ville Ranki <ville.ranki@iki.fi>
> ---
>  drivers/input/joydev.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
> index 5d11fea..f3135ae 100644
> --- a/drivers/input/joydev.c
> +++ b/drivers/input/joydev.c
> @@ -950,6 +950,12 @@ static const struct input_device_id joydev_ids[] = {
>  		.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
>  				INPUT_DEVICE_ID_MATCH_ABSBIT,
>  		.evbit = { BIT_MASK(EV_ABS) },
> +		.absbit = { BIT_MASK(ABS_Z) },
> +	},
> +	{
> +		.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
> +				INPUT_DEVICE_ID_MATCH_ABSBIT,
> +		.evbit = { BIT_MASK(EV_ABS) },
>  		.absbit = { BIT_MASK(ABS_WHEEL) },
>  	},
>  	{
> -- 
> 2.7.4
>
Ville Ranki Aug. 25, 2016, 8:56 p.m. UTC | #2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 08/25/2016 07:45 PM, Dmitry Torokhov wrote:
>> This patch adds ABS_Z to the input_device_id list allowing
>> devices with ABS_Z axis to be detected correctly.
> 
> I am curious why you still use joydev and not switch your client(s)
> to evdev? Or is it some legacy game?

Yes, this is about legacy games. For example X-Plane requires
joystick node to be present.

- -- 
Ville Ranki <ville.ranki@iki.fi>
http://www.iki.fi/~cos
PGP public key: http://www.iki.fi/~cos/vranki_pub.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAle/W3UACgkQVm11nqR7UVwysgCcDb9WIsMKC9qNPHxMWA9rFSqM
7YcAnibn2E02M4/7v7QjD0wuD3QdJMhG
=DjXV
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ville Ranki Sept. 2, 2016, 9:11 a.m. UTC | #3
On 08/25/2016 11:56 PM, Ville Ranki wrote:
> On 08/25/2016 07:45 PM, Dmitry Torokhov wrote:
>>> This patch adds ABS_Z to the input_device_id list allowing 
>>> devices with ABS_Z axis to be detected correctly.
> 
>> I am curious why you still use joydev and not switch your
>> client(s) to evdev? Or is it some legacy game?
> 
> Yes, this is about legacy games. For example X-Plane requires 
> joystick node to be present.

Was this patch accepted or rejected? In distros event devices are
not readable by non-root users by default while joystick devices are.
These can be changed with udev rules, but IMO joystick detection
should be fixed on kernel level.
Ville Ranki Sept. 15, 2016, 2:18 p.m. UTC | #4
On 09/02/2016 12:11 PM, Ville Ranki wrote:

> Was this patch accepted or rejected? 

Still waiting for answer. If it requires changes, I'm happy
to do so. I asked another kernel developer to review the
patch and he said it should be ok.
Dmitry Torokhov Sept. 15, 2016, 10:35 p.m. UTC | #5
On Thu, Aug 25, 2016 at 05:16:50PM +0300, Ville Ranki wrote:
> Current implementation of joydev's input_device_id
> table recognizes only devices with ABS_X, ABS_WHEEL
> or ABS_THROTTLE axes as joysticks.
> 
> There are joystick devices that do not have those axes,
> for example TRC Rudder device. The device in question
> has ABS_Z, ABS_RX and ABS_RY axes causing it not being
> detected as joystick.
> 
> This patch adds ABS_Z to the input_device_id list
> allowing devices with ABS_Z axis to be detected
> correctly.
> 
> Signed-off-by: Ville Ranki <ville.ranki@iki.fi>

Applied, thank you.

Although I wonder if we could not move joydev implementation to
userspace in the long run.

Thanks.
diff mbox

Patch

diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index 5d11fea..f3135ae 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -950,6 +950,12 @@  static const struct input_device_id joydev_ids[] = {
 		.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
 				INPUT_DEVICE_ID_MATCH_ABSBIT,
 		.evbit = { BIT_MASK(EV_ABS) },
+		.absbit = { BIT_MASK(ABS_Z) },
+	},
+	{
+		.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
+				INPUT_DEVICE_ID_MATCH_ABSBIT,
+		.evbit = { BIT_MASK(EV_ABS) },
 		.absbit = { BIT_MASK(ABS_WHEEL) },
 	},
 	{