Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Sep 2015 22:31:28 +0300
From:      Arto Pekkanen <isoa@kapsi.fi>
To:        x11@freebsd.org
Subject:   X.org devd hotplug backend ignoring uhid devices, prevents using gamepads with X.org
Message-ID:  <560C3890.7020004@kapsi.fi>

next in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--QD7nkNl30ALxgNP3jkfArPNvn2eqfIgdw
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

I have an XBox 360 controller that is attached as /dev/uhid0 by the kerne=
l.=20

I have also declared a catch-all InputClass for hid devices in order to h=
ave X.org use gamepads automatically:
-- file: /usr/local/etc/X11/xorg.conf.d/30-joystick.conf
Section "InputClass"
	Identifier "Game Controller"
	Driver "joystick"
	Option "MatchIsJoystick" "on"
	MatchDevicePath "/dev/uhid*"
EndSection

The above was derived from the man page of joystick(4x). As I understood,=
 here's how it works:
- when X.org get notified about a /dev/uhid* device, it would dispatch th=
e device to joystick(4x) (package: x11-drivers/xf86-input-joystick)
- joystick(4x) would then test if the device is a hid joystick or not
- if the device was a joystick, joystick(4x) would attach it to X.org as =
input device, after which X11 applications could use it
- by default the joystick directional input would double as main pointer =
input, but that can be disabled with spesific options in InputClass

However, this simply doesn't work, because the X.org devd backend ignores=
 all uhid devices. When I connect my gamepad, logfile Xorg.0.log outputs =
the following:
[(timestamp)] (II) config/devd: ignoring device uhid0

This means that my the InputClass definition is never matched, and joysti=
ck(4x) is never attached to uhid0. Thus I can't get the gamepad to work w=
ith X.org.

I would like to get my gamepad working as a genuine X11 input device, pre=
ferably hot pluggable. There are plenty applications that support the X11=
 input layer and can use gamepads and other widgets. One such application=
 that comes to mind is Wine.=20

And yes, I do know there is uhidd(8) installable via pkg, and I could use=
 it as a replacement for X.org input layer. uhidd(8) enables specific per=
-device configuration, similarly to the X.org InputClass. And some applic=
ations (NOT all) can be forced to use the raw /dev/uhidX device. I know a=
ll that, and could do it. I just think that the correct way of using hid =
devices in X.org context would be to use then via X11 input layer.

Is there a way to force the X.org devd backend to not ignore uhid devices=
 and have them configured as per InputClass definitions? If not, are ther=
e any plans to incorporate a reliable uhid configuration function to the =
devd backend?

And finally, how would I get my gamepad to work as X.org input device?

--=20
Arto Pekkanen, s=C3=A4=C3=A4t=C3=A4j=C3=A4
ksym@IRCnet


--QD7nkNl30ALxgNP3jkfArPNvn2eqfIgdw
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (MingW32)

iF4EAREIAAYFAlYMOJMACgkQTBivhqtJa24VVgD/TtL6lQjbCLh59E8sEmEKU0ip
06RJlJe5Qp9ddICg0IMBAJLUO8vhZCi9oshvM3BBo/85Ely/GxuJEDk/PxlhfHve
=LAFt
-----END PGP SIGNATURE-----

--QD7nkNl30ALxgNP3jkfArPNvn2eqfIgdw--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?560C3890.7020004>