I have the same problem, but with a virtual device that I create programmatically writing to /dev/uinput.
When I name my virtual device "HeliMouse pointing device",
- it creates successfully,
- no ioctl() returns -1, no write() returns anything less than the writable size,
- "evtest" shows it and reports motion and click events,
- "libinput debug-events" correctly receives evdev motion events,
- but Xorg.0.log says:
[ 8261.617] (II) event13 - HeliMouse pointing device: not tagged as supported input device
[ 8261.617] (II) event13 - not using input device '/dev/input/event13'.
... and no way for my fake device to move the pointer on screen.
BUT
When I name it "Helimouse pointing device 2"
with the EXACT SAME bus/device ID/product ID configuration and the EXACT SAME capabilities
... it works.
Looking through libinput's source code (src/evdev.c line 2330) I see the offending message:
C:
enum evdev_device_udev_tags udev_tags =
evdev_device_get_udev_tags(device, device->udev_device);
if ((udev_tags & EVDEV_UDEV_TAG_INPUT) == 0 ||
(udev_tags & ~EVDEV_UDEV_TAG_INPUT) == 0) {
evdev_log_info(device, "not tagged as supported input device\n");
goto err;
}
The call to evdev_device_get_udev_tags() leads me 2 hops down in src/evdev.c line 101 to:
C:
static inline bool
parse_udev_flag(struct evdev_device *device,
struct udev_device *udev_device,
const char *property)
{
const char *val;
bool b;
val = udev_device_get_property_value(udev_device, property);
if (!val)
return false;
if (!parse_boolean_property(val, &b)) {
evdev_log_error(device,
"property %s has invalid value '%s'\n",
property,
val);
return false;
}
return b;
}
And the property that is tested is defined line 80:
{ "ID_INPUT", EVDEV_UDEV_TAG_INPUT },
Yet, I can't seem to locate the implementation of udev_device_get_property_value() !?
*edit* Sorry for the multiple edits. I just wanted to add that it seemed to work well with FreeBSD 14.3 (but that might perfectly be a sort of side effect). I just happen to stumble upon it after I upgraded to FreeBSD 15.0-RELEASE-p2.
*edit again* OK I found it. It's in libudev (libudev-devd-0.6.0) So I think there might be a problem somewhere in libudev-devd/udev-utils.c line 388 (that's the only code path I see where the device property could fail to be set).