On Thu Aug 7 19:21:24 2025 +0000, Tomasz Pakuła wrote:
This is not a wine issue though and I think you're still missing the dofference between hidraw and SDL/udev buses. Your device will work perfectly with hidraw as it goes around system drivers and in this casez wine handles THE driver. Cheers
I wrote the `DIPROP_AUTOCENTER` implementation and the test cases for it and believe I came to understand it then. It's been a bit, but, IIRC, the bus protocol is HID messages. This is what the dinput code talks. The backends interpret them. For hidraw it pretty much passes them on. For UDEV (input) and SDL it interpreters to the native API calls.
I have tested my device using the code I posted with all the backends by setting the `DisableHidraw`, `DisableInput`, and `Enable SDL` registry entries. With wine 10.0 it agrees perfectly with what Windows does. I don't think this will be the case anymore now that this merge request has been accepted. I could be wrong though. I will compile it up and try.
Here is the relevant WINEDEBUG=+hid log line show the USB Sidewinder 2 (045e:001b) being taken by each backend under Wine 10.0 when running my test program. With hidraw (requires adding `rw` access to the relevant `/dev/hidraw*` device) ``` 00bc:trace:hid:udev_add_device udev "/dev/hidraw13" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B1/hidraw/hidraw13 ... 00bc:trace:hid:bus_main_thread creating hidraw device 045e:001b with usages 0001:0004 00bc:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version 0a00, input 0, uid 00000000, is_gamepad 0, is_hidraw 1, is_bluetooth 0}, unix_device 0x7e503200 ``` with UDEV (input) (picks up twice as both `/dev/event*` and `/dev/js*` devices) ``` 00c0:trace:hid:udev_add_device udev "/dev/input/event30" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B0/input/input1990/event30 ... 00c0:trace:hid:udev_add_device udev "/dev/input/js1" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B0/input/input1990/js1 ... 00c0:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with usages 0001:0005 00c0:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version 0100, input 0, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth 0}, unix_device 0x7e50bcb0 ... 00c0:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with usages 0001:0005 00c0:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version 0a00, input 0, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth 0}, unix_device 0x7e55bd90 ``` and with SDL ``` 00bc:trace:hid:sdl_add_device Making up serial number for Microsoft SideWinder Force Feedback 2 Joystick: 030043cf5e0400001b00000000010000.1 ... 00bc:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with usages 0001:0004 00bc:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version 0100, input -1, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth 0}, unix_device 0x7e5bc630 ```