USB-Footswitch unter Linux

Das Unterforum für Diskussionen rund um die Technik, Bedienung, Konfiguration usw. Das ist auch die erste Anlaufstelle für Bastler mit Fragen zu den Editoren.
Nachricht
Autor
Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

USB-Footswitch unter Linux

#1 Beitrag von Paneologe »

Hallo,
hat Jemand mit dem Thema schon Erfahrung gesammelt?

Ich habe mir einen günstigen USB-Fusschalter erworben.

Code: Alles auswählen

lsusb
Bus 001 Device 007: ID 1a86:e026 QinHeng Electronics FootSwitch
dieser erzeugt gleich mehrere inputs unter linux:

Code: Alles auswählen

dmesg
[163343.450885] usb 1-4: new full-speed USB device number 8 using xhci_hcd
[163343.709439] usb 1-4: New USB device found, idVendor=1a86, idProduct=e026, bcdDevice= 0.00
[163343.709451] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[163343.709457] usb 1-4: Product: FootSwitch
[163343.709461] usb 1-4: Manufacturer: PCsensor
[163343.749086] input: PCsensor FootSwitch Keyboard as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-4/1-4:1.0/0003:1A86:E026.0006/input/input26
[163343.807009] input: PCsensor FootSwitch Mouse as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-4/1-4:1.0/0003:1A86:E026.0006/input/input27
[163343.807115] input: PCsensor FootSwitch as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-4/1-4:1.0/0003:1A86:E026.0006/input/input28
[163343.807222] hid-generic 0003:1A86:E026.0006: input,hidraw3: USB HID v1.11 Keyboard [PCsensor FootSwitch] on usb-0000:03:00.0-4/input0
[163343.815647] input: PCsensor FootSwitch as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-4/1-4:1.1/0003:1A86:E026.0007/input/input29
[163343.815725] hid-generic 0003:1A86:E026.0007: input,hidraw4: USB HID v1.10 Device [PCsensor FootSwitch] on usb-0000:03:00.0-4/input1
Wenn ich den Taster betätige, wird die eingabe "b" erzeugt.
Kurzer Blick in Zusi:
Bild
zeigt den Schalter ebenfalls an, aber die Taste kann nicht zugeordnet werden. ich vermute weil linux den input als tastatureingabe übergibt.
Dann habe ich versucht, die einzelnen Inputs in Linux zu deaktivieren,
z.B:

Code: Alles auswählen

echo 0003:1A86:E026.0006 > /sys/bus/hid/drivers/hid-generic/unbind
-> keine Änderung in Zusi
und/bzw.

Code: Alles auswählen

echo 0003:1A86:E026.0007 > /sys/bus/hid/drivers/hid-generic/unbind
-> Eingabegerät wird in Zusi nicht mehr angezeigt.

Nun denke ich gäbe es zwei Ansätze. Linux beibringen, nicht "b" zu triggern - oder lieber, dass das Gerät in Zusi wie vorgeshen (als Sifa-Fussschalter) konfigurieren.
Hat hier jemand Erfahrung mit Input-Geräten?
Vielen Dank und schöne Grüsse
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#2 Beitrag von Flo Zille »

Im Grunde ist das Teil wohl eine Tastatur mit nur einer Taste. Mit einer mitgelieferten Software kann man ihm sagen, welche Eingabe bei Tastendruck erzeugt werden soll. Das scheint bei dir momentan "b" zu sein.

Ich würde also mal versuchen, die Programmiersoftware unter Windows zu nutzen, falls du Zugang zu einem Windowsrechner hast, und die Eingabe von "b" auf Leertaste umprogrammieren. Ansonsten mit dem im verlinkten Artikel vorgestellten Linux-Werkzeug probieren, das Gerät umzuprogrammieren.

Dann würde ich einfach versuchen, es in Zusi nicht als DirectInput-Gerät, sondern als Tastatureingabe für die Sifa zu nutzen.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#3 Beitrag von Paneologe »

Flo Zille hat geschrieben: 31.03.2023 13:55:00 Ich würde also mal versuchen, die Programmiersoftware unter Windows zu nutzen, falls du Zugang zu einem Windowsrechner hast, und die Eingabe von "b" auf Leertaste umprogrammieren. Ansonsten mit dem im verlinkten Artikel vorgestellten Linux-Werkzeug probieren, das Gerät umzuprogrammieren.

Dann würde ich einfach versuchen, es in Zusi nicht als DirectInput-Gerät, sondern als Tastatureingabe für die Sifa zu nutzen.
Hm, wie gesagt, es wird auch als directinput-gerät erkannt, mal WINEDEBUG=+dinput zugefügt, und das drücken bewirkt die folgende Ausgabe:

Code: Alles auswählen

010c:trace:dinput:dinput_device_Acquire iface 0000000004A5A6B0.
010c:trace:dinput:dinput_device_GetDeviceState iface 0000000004A5A6B0, size 4, data 0000000000000000.
010c:trace:dinput:dinput_device_Acquire iface 0000000004A5A6B0.
die Verwendung als solches wäre mir lieber. das umbelegen von "b" auf "space" sollte auch unter linux kein problem sein.
Unter linux werden verschiedene inputs für das device angelegt:

Code: Alles auswählen

ls -l /dev/input/by-path/
[...]
lrwxrwxrwx 1 root root  9 29. Mär 16:08 pci-0000:03:00.0-usb-0:8:1.0-event-kbd -> ../event2
lrwxrwxrwx 1 root root  9 29. Mär 16:08 pci-0000:03:00.0-usb-0:8:1.1-event -> ../event5
lrwxrwxrwx 1 root root  9 29. Mär 16:08 pci-0000:03:00.0-usb-0:8:1.1-event-mouse -> ../event3
lrwxrwxrwx 1 root root  9 29. Mär 16:08 pci-0000:03:00.0-usb-0:8:1.1-mouse -> ../mouse0
[...]
aber das deaktivieren der inputs führt auch dazu, dass das gerät als dinput-gerät verschwindet.

Meine Hoffnung war, dass hier vielleicht jemand Erfahrung hat, directinput geräte zu konfigurieren. Auch für den Fall, dass ich es ein Fahrpult verwenden wollte.
Aber zur Not bleibt wirklich das Umbelegen der getriggerten Taste. Aber das wäre für ein Fahrpult wohl kaum ne Lösung

Edit: versucht das "tastatur"-device mit xinput zu deaktivieren, es erfolgt keine eingabe "b" mehr, und das Gerät bleibt auch angezeigt in der wine-systemsteuerung unter "Game Controler", scheint wie ein Joystick mit 2 Achsen und 8 Tasten erkannt zu werden. aber es wird bei Bedienung nichts angezeigt.
Ich schau mir erstmal an, wie das in einem virtualisierten windows und zusi aussieht.
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Benutzeravatar
Bernhard K.
Beiträge: 167
Registriert: 23.06.2020 22:29:41
Aktuelle Projekte: Uni
Wohnort: VzG 5900, Km 9,4
Kontaktdaten:

Re: USB-Footswitch unter Linux

#4 Beitrag von Bernhard K. »

Manchmal funktioniert die Windows Konfigurationssoftware auch gut unter Wine. Das kannst du ja mal probieren.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#5 Beitrag von Paneologe »

Bernhard K. hat geschrieben: 31.03.2023 14:22:50 Manchmal funktioniert die Windows Konfigurationssoftware auch gut unter Wine. Das kannst du ja mal probieren.
danke für den Tipp, habe ich probiert

Code: Alles auswählen

pane@kappa:~> WINEDEBUG="+dinput" DXVK_CONFIG_FILE="/home/pane/.zusiwine/drive_c/Program Files (x86)/Zusi3/dxvk.conf" WINEPREFIX=/home/pane/.zusiwine wine64 "C:\\Program Files (x86)\PCsensor\FootSwitch-7.4.4\Footswitch.exe"
002c:fixme:winediag:LdrInitializeThunk wine-staging 8.4 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0110:fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.0,Profile=Client" not implemented
0110:fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.0,Profile=Client" not implemented
0110:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION

=================================================================
        Native Crash Reporting
=================================================================
Got a UNKNOWN while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

=================================================================
        Managed Stacktrace:
=================================================================
=================================================================
wine: Unhandled page fault on read access to 00000000 at address 6AB30D28 (thread 010c), starting debugger...

die Anwendung bringt gleich nen Absturz, der Meldung nach wird wohl versucht diese mit mono auszuführen (und der Exception nach ist 32bit code betroffen: "Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x6ab30d28)."). wollte dann dotnet40 noch installieren, ist es aber schon:

Code: Alles auswählen

pane@kappa:~> WINEDEBUG="+dinput" DXVK_CONFIG_FILE="/home/pane/.zusiwine/drive_c/Program Files (x86)/Zusi3/dxvk.conf" WINEPREFIX=/home/pane/.zusiwine winetricks dotnet40
Executing w_do_call dotnet40
dotnet40 already installed, skipping
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#6 Beitrag von Flo Zille »

Hab da keine Erfahrung mit, aber was mir noch aufgefallen ist: Bei dir kommt dinput_device_GetDeviceState iface 0000000004A5A6B0, size 4, data 0000000000000000. Den Aufruf erwartet wine so eigentlich nicht, da wird direkt DIERR_INVALIDPARAM zurückgegeben: https://gitlab.winehq.org/wine/wine/-/b ... ce.c#L1441 Eigentlich sollte der Parameter "data" wohl ein Pointer sein, der auf einen Speicherbereich der Größe "size" zeigt, in dem dann das Ergebnis der Abfrage abgelegt wird. Könnte also sein, dass da schon vorher irgendwas nicht so richtig läuft, oder Windows geht mit einem null an der Stelle anders um als wine, oder es muss so sein, dass da ein ungültiger Aufruf durchgeführt wird, aus welchen Gründen auch immer. Ich bin jedenfalls weiterhin Fan der "einfachen" Tastaturlösung und Umprogrammierung des Geräts auf Leerzeichen, falls Zusi damit umgehen kann (funktioniert die Tastenzuordnung in Zusi mit "b" denn wenigstens schonmal, oder bekommt Zusi das auch gar nicht richtig als Tastendruck gemeldet?). :applaus Wobei das Umprogrammieren vielleicht dann über das Linux-Tool auf der oben verlinkten Webseite am einfachsten wäre.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#7 Beitrag von Paneologe »

Paneologe hat geschrieben: 31.03.2023 14:09:51 Ich schau mir erstmal an, wie das in einem virtualisierten windows und zusi aussieht.
Also ernüchterung.
Auch unter Windows erzeugt das Tasten die Tastatureingabe "b", in der Gamecontroller-Einstellung gleicher Effekt wie unter wine, 2 Achsen, 8 Taster, nichts funktioniert.
Sieht wohl demnach aus, dass das nicht als Gamecontroller/Directinput gerät verwendet werden kann.

Grösseres Problem, ich kann Zusi nicht installieren, der USB-Stick wird nicht gestartet:
Bild
?( ?( ?( ?( ?(
Flo Zille hat geschrieben: 31.03.2023 14:55:22 Ich bin jedenfalls weiterhin Fan der "einfachen" Tastaturlösung und Umprogrammierung des Geräts auf Leerzeichen, falls Zusi damit umgehen kann (funktioniert die Tastenzuordnung in Zusi mit "b" denn wenigstens schonmal, oder bekommt Zusi das auch gar nicht richtig als Tastendruck gemeldet?)
muss ich wohl so machen, und ja, ich kann das b belegen und die eingabe des footswitches wird so anerkannt. versuche aber nun mal das auf die space-taste zu kriegen. zuerst mit bordmitteln von linux, wenn das nicht geht mit dem tool
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#8 Beitrag von Paneologe »

εὕρηκα - Teil 1
Mit der Software des Herstellers, lässt sich der Fussschalter umbelegen, auf andere Taste, Maus oder eben als Joystick. Die Einstellung wird im Gerät gespeichert.
Nun erzeugt der Taster Button "0" (oder war es 1?) und das Funktioniert in der Gamecontroller-Einstellung sowohl unter wine als auch windoof.

Nur in Zusi krieg ich es dennoch nicht zugewiesen ?(
und unter windoof kann ich es nicht installieren :-/

Die debug-Ausgabe bei Fussschalterbetätigung ist nun folgendermassen (bei gestartet Zusi):

Code: Alles auswählen

0110:trace:dinput:dinput_device_Acquire iface 0000000004A5A6B0.
0110:trace:dinput:dinput_device_GetDeviceState iface 0000000004A5A6B0, size 4, data 0000000000000000.
0110:trace:dinput:dinput_device_Acquire iface 0000000004A5A6B0.
Und folgendes in der Systemsteuerung/Gamecontrollereinstellung:

Code: Alles auswählen

0114:trace:dinput:dinput_device_AddRef iface 0000000000CA4B00, ref 3.
0114:trace:dinput:dinput_device_GetDeviceState iface 0000000000CA4B00, size 272, data 000000000021EAE0.
0114:trace:dinput:dinput_device_GetCapabilities iface 0000000000CA4B00, caps 000000000021EA60.
0114:trace:dinput:dinput_device_Release iface 0000000000CA4B00, ref 2.
werden da unterscchiedliche dinput-librarys verwendet? Edit, wohl nein, beides dinput8
Zuletzt geändert von Paneologe am 31.03.2023 15:25:18, insgesamt 1-mal geändert.
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Benutzeravatar
Bernhard K.
Beiträge: 167
Registriert: 23.06.2020 22:29:41
Aktuelle Projekte: Uni
Wohnort: VzG 5900, Km 9,4
Kontaktdaten:

Re: USB-Footswitch unter Linux

#9 Beitrag von Bernhard K. »

Kann man diese Software irgendwo herunterladen? Ich würde mal kurz drüberschauen wollen.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#10 Beitrag von Paneologe »

Bernhard K. hat geschrieben: 31.03.2023 15:25:16 Kann man diese Software irgendwo herunterladen? Ich würde mal kurz drüberschauen wollen.
https://pcsensor.com/article1/download-footswitch - neueste version oben gewählt
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#11 Beitrag von Paneologe »

So. Also mal Zusi unter Windows installiert (ging vorhin nicht, da nur ein USB 1.1 controller vorhanden war. umgestellt auf USB 3).
Hier funktioniert die Zuordnung:
Bild
Unter Linux/wine (mit staging-8.4, dinput8) findet er scheinbar nicht die Tasten des Schalters:
(kriege leider keinen screenshot mit Kontextmenü.) beim Rechtsklick auf das zu belgende Feld erhalte ich nur die X-Achse (schon getestet, funktioniert nicht) und "----".
Mal unter Windows die Konfiguration abgespeichert und unter Linux geladen, beim Klick auf den Button, der die Zuordnungen anzeigt, sehe ich:
Bild
Bei Klick auf Kalibration erhalte ich eine Zugriffsverletzung:
Bild

kann sich jemand was daraus ableiten? Hat jemand anderes irgendwelche directinput geräte funktionierend in wine?

(als zwischenlösung stelle ich das ding jetzt auf "Leertaste" - das müsste ja gehen - ist aber nicht der endgewollte zustand, da ich überlege mir einen fahrpult zuzulegen, wenn das problem persistiert, wäre das vermutlich nicht möglich)
Edit: noch die Steam-Version getestet, gleiches Problem, komischerweise bietet er mir dort nur die Y statt X-Achse an?


Nachtrag: mit Proton-6.3 und steam funktioniert es.
dirty hack, habe die dinput8.dll(.so) Dateien aus der Proton Installation in die wine verzeichnisse kopiert. jetzt geht's auch hier. aber sehr unsaubere lösung
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#12 Beitrag von Flo Zille »

Vielleicht stimmt ja etwas mit IDirectInputDevice8::EnumObjects in wine nicht? Ich habe hier mit dem 8.3-tkg-proton wohl das gleiche Problem mit einem Joystick.

Gibt das 6.3-wine-dinput mit WINEDEBUG=+dinput noch irgendwas zu EnumObjects aus, außer so etwas? Ich weiß nicht, ob da noch mehr kommen müsste.

Code: Alles auswählen

0128:trace:dinput:dinput_device_EnumObjects iface 0000000033A4C1F0, callback 00000000010B4810, context 000000002A552768, flags 0.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#13 Beitrag von Paneologe »

während der Simulation wiederholt sich das hier die ganze Zeit

Code: Alles auswählen

010c:trace:dinput:IDirectInputDevice2WImpl_GetDeviceData (0x27f6120) 0x5d00468 -> 0x5d005e8(16) x24, 0x00000000
010c:trace:dinput:IDirectInputDevice2WImpl_GetDeviceData Returning 0 events queued
010c:trace:dinput:JoystickWGenericImpl_Poll (0xc437f30)
010c:trace:dinput:joystick_map_axis (-32768 <0> 32767) -> (0 <0> 65535): val=0 ret=32767
010c:trace:dinput:joystick_map_axis (-32768 <0> 32767) -> (0 <0> 65535): val=0 ret=32767
010c:trace:dinput:JoystickWGenericImpl_GetDeviceState (0xc437f30,0x00000004,0xd7447d0)
010c:trace:dinput:joystick_map_axis (-32768 <0> 32767) -> (0 <0> 65535): val=0 ret=32767
010c:trace:dinput:joystick_map_axis (-32768 <0> 32767) -> (0 <0> 65535): val=0 ret=32767
Beim Start von Zusi:

Code: Alles auswählen

WINEDEBUG="+dinput" DXVK_CONFIG_FILE="/home/pane/.zusiwine/drive_c/Program Files/Zusi3/dxvk.conf" WINEPREFIX=/home/pane/.zusiwine wine64 "C:\\Program Files\Zusi3\ZusiSim.64.exe" 2>&1 | grep -i dinput
010c:trace:dinput:DirectInput8Create hinst 0x400000, version 0x800, iid {bf798031-483a-4da2-aa99-5d64ed369700}, out 0xcca27c0, outer (nil).
010c:trace:dinput:IDirectInputAImpl_QueryInterface (0x2836430)->({bf798031-483a-4da2-aa99-5d64ed369700},0xcca27c0)
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 1
010c:trace:dinput:IDirectInput8AImpl_Initialize (0x2836430)->(0x400000, 0x0800)
010c:trace:dinput:check_hook_thread IDirectInputs left: 1
010c:trace:dinput:IDirectInputWImpl_EnumDevices (this=0x2836430,0x0003 'DI8DEVCLASS_KEYBOARD',0xb67830,(nil),0x0001)
010c:trace:dinput:_dump_EnumDevices_dwFlags flags: DIEDFL_ATTACHEDONLY
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 0 ('Wine mouse driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 0 ('Wine mouse driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 1 ('Wine keyboard driver')
010c:trace:dinput:keyboarddev_enum_deviceW Enumerating the Keyboard device
010c:trace:dinput:fill_keyboard_dideviceinstanceW 1100 0x25bf310
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 1 ('Wine keyboard driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 2 ('Wine SDL joystick driver'
0124:trace:dinput:di_em_win_wndproc 0x10180 36 0 dbbfa08
0124:trace:dinput:di_em_win_wndproc 0x10180 129 0 dbbf9c8
0124:trace:dinput:di_em_win_wndproc 0x10180 131 0 dbbfa28
0124:trace:dinput:di_em_win_wndproc 0x10180 1 0 dbbf9c8
010c:trace:dinput:find_sdldevs Found a joystick on 0x7f74b060: PCsensor FootSwitch
010c:trace:dinput:__controller_hack_sdl_vid_pid_override (*vid = 1a86, *pid = *e026
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 2 ('Wine SDL joystick driver')

Code: Alles auswählen

010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 2
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 3
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 4
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 3
010c:trace:dinput:IDirectInput7WImpl_CreateDeviceEx (0x2836430)->({6f1d2b61-d5a0-11cf-bfc7-444553540000}, (null), 0x5d00258, (nil))
010c:trace:dinput:mousedev_create_device 0x2836430 {6f1d2b61-d5a0-11cf-bfc7-444553540000} (null) 0x5d00258 1
010c:trace:dinput:keyboarddev_create_device 0x2836430 {6f1d2b61-d5a0-11cf-bfc7-444553540000} (null) 0x5d00258 1
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 4
010c:trace:dinput:keyboarddev_create_device Created a Keyboard device (0x27f05f0)
010c:trace:dinput:IDirectInputDevice2WImpl_EnumObjects (0x27f05f0)->(0xb4c070,0x5d00260 flags:00000000)
010c:trace:dinput:IDirectInputDevice2WImpl_EnumObjects - flags = Type: DIDFT_ALL / Instance: 0

Code: Alles auswählen

010c:trace:dinput:IDirectInputDevice2WImpl_GetObjectInfo (0x27f05f0) 2(0x00000104) -> 0x25bf4f0
010c:trace:dinput:_dump_OBJECTINSTANCEW     - enumerating : {55728220-d33c-11cf-bfc7-444553540000} ('GUID_Key'), -  1 - 0x00000104 - L"Escape" - 0x0
010c:trace:dinput:IDirectInputDevice2WImpl_SetCooperativeLevel (0x27f05f0) 0x100ac,0x0000000a
010c:trace:dinput:_dump_cooperativelevel_DI  cooperative level : DISCL_BACKGROUND DISCL_NONEXCLUSIVE 
010c:trace:dinput:IDirectInputDevice2WImpl_SetDataFormat (0x27f05f0) 0x11d3530
010c:trace:dinput:_dump_DIDATAFORMAT Dumping DIDATAFORMAT structure:
[...]
010c:trace:dinput:IDirectInputDevice2WImpl_SetProperty (0x27f05f0)->(<guid-0x0001>,0x25bf85c)
010c:trace:dinput:_dump_DIPROPHEADER   - dwObj = 0x00000000
010c:trace:dinput:_dump_DIPROPHEADER   - dwHow = DIPH_DEVICE
010c:trace:dinput:IDirectInputDevice2WImpl_SetProperty buffersize = 16
010c:trace:dinput:SysKeyboardWImpl_Acquire (0x27f05f0)
010c:trace:dinput:IDirectInputDevice2WImpl_Acquire (0x27f05f0)
0124:trace:dinput:hook_thread_proc Processing hook change notification wp:1 lp:0x210
010c:trace:dinput:SysKeyboardWImpl_Acquire clearing keystate
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 3

010c:trace:dinput:IDirectInputWImpl_EnumDevices (this=0x2836430,0x0004 'DI8DEVCLASS_GAMECTRL',0xb677e0,(nil),0x0001)
010c:trace:dinput:_dump_EnumDevices_dwFlags flags: DIEDFL_ATTACHEDONLY
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 0 ('Wine mouse driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 0 ('Wine mouse driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 1 ('Wine keyboard driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 1 ('Wine keyboard driver')
010c:trace:dinput:IDirectInputWImpl_EnumDevices - checking device 2 ('Wine SDL joystick driver')

Code: Alles auswählen

010c:trace:dinput:fill_joystick_dideviceinstanceA 580 0x25bf030
010c:trace:dinput:__controller_hack_sdl_name_override vid = 1a86, pid = e026, *name = "PCsensor FootSwitch"
010c:trace:dinput:fill_joystick_dideviceinstanceW 1100 0x25bf310
010c:trace:dinput:IDirectInputWImpl_EnumDevices   - checking device 2 ('Wine SDL joystick driver')
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 4
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 5
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 6
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 7
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 6
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 5
010c:trace:dinput:IDirectInput7WImpl_CreateDeviceEx (0x2836430)->({001e36b7-5dba-4c4f-a8c9-1a86e0260000}, (null), 0x5f47ff0, (nil))
010c:trace:dinput:mousedev_create_device 0x2836430 {001e36b7-5dba-4c4f-a8c9-1a86e0260000} (null) 0x5f47ff0 1
010c:trace:dinput:keyboarddev_create_device 0x2836430 {001e36b7-5dba-4c4f-a8c9-1a86e0260000} (null) 0x5f47ff0 1
010c:trace:dinput:sdl_create_device 0x2836430 {001e36b7-5dba-4c4f-a8c9-1a86e0260000} (null) 0x5f47ff0 1
010c:trace:dinput:select_enum_function for 1a86/e026, using no maps

Code: Alles auswählen

010c:trace:dinput:alloc_device axes 2 povs 0 buttons 8
010c:trace:dinput:fill_joystick_dideviceinstanceA 580 0x25bef00
010c:trace:dinput:__controller_hack_sdl_name_override vid = 1a86, pid = e026, *name = "PCsensor FootSwitch"
010c:trace:dinput:fill_joystick_dideviceinstanceW 1100 0x25bf1b0
010c:trace:dinput:IDirectInputAImpl_AddRef (0x2836430) ref 6
010c:trace:dinput:sdl_create_device Created a Joystick device (0xc573e20)
010c:trace:dinput:IDirectInputDevice2WImpl_SetCooperativeLevel (0xc573e20) 0x100ac,0x0000000a
010c:trace:dinput:_dump_cooperativelevel_DI  cooperative level : DISCL_BACKGROUND DISCL_NONEXCLUSIVE 
010c:trace:dinput:IDirectInputDevice2WImpl_AddRef (0xc573e20) ref 2
010c:trace:dinput:IDirectInputDevice2WImpl_EnumObjects (0xc573e20)->(0x10bb790,0x5f47ff8 flags:00000000)
010c:trace:dinput:IDirectInputDevice2WImpl_EnumObjects - flags = Type: DIDFT_ALL / Instance: 0

Code: Alles auswählen

010c:trace:dinput:IDirectInputDevice2WImpl_GetObjectInfo (0xc573e20) 2(0x00000004) -> 0x25bf4b0
010c:trace:dinput:_dump_OBJECTINSTANCEW     - enumerating : {a36d02f0-c9f3-11cf-bfc7-444553540000} ('GUID_Button'), - 48 - 0x00000004 - L"Button 0" - 0x0
010c:trace:dinput:IDirectInputDevice2WImpl_SetDataFormat (0xc573e20) 0x25bf840
010c:trace:dinput:_dump_DIDATAFORMAT Dumping DIDATAFORMAT structure:
010c:trace:dinput:_dump_DIDATAFORMAT   - dwSize: 32
010c:trace:dinput:_dump_DIDATAFORMAT   - dwObjsize: 24
010c:trace:dinput:_dump_DIDATAFORMAT   - dwFlags: 0x00000001 (DIDF_ABSAXIS)
010c:trace:dinput:_dump_DIDATAFORMAT   - dwDataSize: 4
010c:trace:dinput:_dump_DIDATAFORMAT   - dwNumObjs: 1
010c:trace:dinput:_dump_DIDATAFORMAT   - Object 0:
010c:trace:dinput:_dump_DIDATAFORMAT       * GUID: (null) ('null GUID')
010c:trace:dinput:_dump_DIDATAFORMAT       * dwOfs: 0
010c:trace:dinput:_dump_DIDATAFORMAT       * dwType: 0x00000004
010c:trace:dinput:_dump_DIDATAFORMAT         Type: DIDFT_PSHBUTTON / Instance:   0
010c:trace:dinput:_dump_DIDATAFORMAT       * dwFlags: 0x00000000
010c:trace:dinput:_dump_DIDATAFORMAT         
010c:trace:dinput:release_DataFormat Deleting DataFormat: 0xc573ed8
010c:trace:dinput:create_DataFormat Creating DataTransform :
010c:trace:dinput:create_DataFormat Matching :
010c:trace:dinput:create_DataFormat    - Asked (0) :
010c:trace:dinput:create_DataFormat        * GUID: (null) ('null GUID')
010c:trace:dinput:create_DataFormat        * Offset:   0
010c:trace:dinput:create_DataFormat        * dwType: 0x00000004
010c:trace:dinput:create_DataFormat          Type: DIDFT_PSHBUTTON / Instance:   0
010c:trace:dinput:create_DataFormat        * dwFlags: 0x00000000
010c:trace:dinput:create_DataFormat          
010c:trace:dinput:create_DataFormat    - Wine  (0) :
010c:trace:dinput:create_DataFormat        * GUID: {a36d02f0-c9f3-11cf-bfc7-444553540000} ('GUID_Button')
010c:trace:dinput:create_DataFormat        * Offset:  48
010c:trace:dinput:create_DataFormat        * dwType: 0x00000004
010c:trace:dinput:create_DataFormat          Type: DIDFT_PSHBUTTON / Instance:   0
010c:trace:dinput:create_DataFormat        * dwFlags: 0x00000000
010c:trace:dinput:create_DataFormat          
010c:trace:dinput:create_DataFormat Setting to default value :
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 5
0124:trace:dinput:LL_hook_proc calling dinput_keyboard_hook (0x27f05f0 100 dbbfc70)
0124:trace:dinput:dinput_keyboard_hook (0x27f05f0) wp 00000100, lp 0dbbfc70, vk 90, scan 45
0124:trace:dinput:dinput_keyboard_hook  setting 45 to 80
0124:trace:dinput:queue_event  queueing 128 at offset 69 (queue head 0 / size 16)
0124:trace:dinput:LL_hook_proc calling dinput_keyboard_hook (0x27f05f0 101 dbbfc70)
0124:trace:dinput:dinput_keyboard_hook (0x27f05f0) wp 00000101, lp 0dbbfc70, vk 90, scan 45
0124:trace:dinput:dinput_keyboard_hook  setting 45 to 00
0124:trace:dinput:queue_event  queueing 0 at offset 69 (queue head 1 / size 16)
0124:trace:dinput:LL_hook_proc calling dinput_keyboard_hook (0x27f05f0 104 dbbfc70)
0124:trace:dinput:dinput_keyboard_hook (0x27f05f0) wp 00000104, lp 0dbbfc70, vk a4, scan 38
0124:trace:dinput:dinput_keyboard_hook  setting 38 to 80
0124:trace:dinput:queue_event  queueing 128 at offset 56 (queue head 2 / size 16)
010c:trace:dinput:IDirectInputDevice2WImpl_Release (0x27f05f0) ref 0
010c:trace:dinput:IDirectInputDevice2WImpl_Unacquire (0x27f05f0)
010c:trace:dinput:IDirectInputDevice2WImpl_SendForceFeedbackCommand (0x27f05f0)->(0x00000001)
010c:trace:dinput:release_DataFormat Deleting DataFormat: 0x27f06a8
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 4
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 3
010c:trace:dinput:JoystickWImpl_Release (this=0xc573e28)
010c:trace:dinput:IDirectInputDevice2WImpl_Release (0xc573e20) ref 1
010c:trace:dinput:JoystickWImpl_Release (this=0xc573e28)
010c:trace:dinput:IDirectInputDevice2WImpl_Release (0xc573e20) ref 0
010c:trace:dinput:IDirectInputDevice2WImpl_Unacquire (0xc573e20)
010c:trace:dinput:JoystickWImpl_SendForceFeedbackCommand (this=0xc573e20,1)
010c:trace:dinput:release_DataFormat Deleting DataFormat: 0xc573ed8
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 2
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 1
0124:trace:dinput:hook_thread_proc Processing hook change notification wp:1 lp:0
010c:trace:dinput:IDirectInputAImpl_Release (0x2836430) ref 0
010c:trace:dinput:check_hook_thread IDirectInputs left: 0
0124:trace:dinput:hook_thread_proc Processing hook change notification wp:0 lp:0
0124:trace:dinput:di_em_win_wndproc 0x10180 2 0 0
0124:trace:dinput:di_em_win_wndproc 0x10180 130 0 0
Zuletzt geändert von Paneologe am 31.03.2023 19:36:39, insgesamt 1-mal geändert.
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Benutzeravatar
Bernhard K.
Beiträge: 167
Registriert: 23.06.2020 22:29:41
Aktuelle Projekte: Uni
Wohnort: VzG 5900, Km 9,4
Kontaktdaten:

Re: USB-Footswitch unter Linux

#14 Beitrag von Bernhard K. »

Meine persönliche Empfehlung wäre Rémi Bernon zu fragen, weil er der Autor von Wine Dinput ist, entweder im #winehackers IRC oder im LinuxGamingDev Discord.

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#15 Beitrag von Flo Zille »

Ich glaub das ist noch wie von mir erfragt die Ausgabe vom alten dinput (6.3), bei dem es läuft, oder? Das neue dinput von Rémi Bernon ist erst ab 2021 oder so in wine, er wird damit also vielleicht auch nichts anfangen können.

Und das neue dinput hat tatsächlich ein wenig Probleme mit Zusi. Ein Problem war in der bereits erwähnten IDirectInputDevice8::EnumObjects, hier kommt wine nicht damit klar, wenn der Callback mit BOOL-Rückgabewert eine -1 (0xFFF…) zurückgibt statt 0 oder 1, wie eigentlich vorgesehen. Das lässt sich aber leicht beheben (in enum_object() in joystick_hid.c nach Ausführung des callbacks immer DIENUM_CONTINUE zurückgeben, außer wenn der callback DIENUM_STOP ergeben hat), dann werden die verfügbaren Buttons bei Rechtsklick wieder angezeigt.

Aber irgendwas anderes scheint dann trotzdem noch nicht richtig zu laufen, mal sehen…

Edit: Also das Hauptproblem scheint zu sein, dass wine via IDirectInputDevice8::EnumObjects an Zusi meldet, dass zahlreiche "Collections" (was auch immer das im Kontext von USB HID genau ist) vorhanden sind. Unter anderem eine, welche dann auch noch per GUID als Z-Achse des Joysticks oder so beschrieben wird, und eine, die als "inverse Z-Achse" beschrieben wird (zusätzlich zu den "echten" Objects für die Achsen). Die anderen Collections werden als "unbekannt" eingestuft.

Die unbekannten Collections ignoriert Zusi netterweise, aber zu den Z-Achsen-Collections teilt Zusi dann wine's dinput via SetDataFormat mit, dass es dazu gerne regelmäßig den Status abfragen möchte, was ja irgendwie sinnvoll klingt. Hier macht wine dann aber nicht mehr mit, weil es zu diesen ganzen Collections derzeit wohl grundsätzlich keine Status-Auskünfte geben will und einen Fehler erzeugt, wenn man so eine in SetDataFormat angibt.

Die Frage ist noch, was unter Win anders läuft: Werden die Collections gar nicht erst über EnumObjects an Zusi gemeldet? Ich habe sie mal testweise rausgenommen, dann schien der DirectInput-Einstellungs-Dialog von Zusi schon ganz vernünftig zu laufen. Oder ist das so schon richtig, immerhin scheint mein Joystick wirklich einige Collections in diesem USB-HID-Deskriptor zu melden, nur dann müssen die Collections eben auch erfolgreich in SetDataFormat genutzt werden können? Vielleicht kann ich nächste Woche mal ein paar Tests anstellen.

Benutzeravatar
Paneologe
Beiträge: 96
Registriert: 25.03.2023 13:49:28

Re: USB-Footswitch unter Linux

#16 Beitrag von Paneologe »

Vielen Dank für die Expertisen, ich werde Rémi Bernon mal kontaktieren und bei ner anderen Installation (Demo) mal reproduzieren, mit aktuellem und alten wine.
Aber hat jetzt nicht mehr die höchste Priorität, werde das die Tage erledigen.

Ich bin positiv überrascht, dass hier so viele Linux-Fachkenntnisinhaber unterwegs sind. :tup :tup
Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#17 Beitrag von Flo Zille »

Für das "es werden keine Buttons und Achsen bei Rechtsklick angezeigt"-Problem habe ich jetzt einen wohl funktionierenden (bzw. unter Wine wie gewünscht scheiternden) Winetest und werde mein Glück dann mal nächste Woche mit der Einreichung des Tests und eines einfachen Patches, der das Problem behebt, versuchen. Es könnte auch sein, dass es damit dann bei dir schon funktioniert. Ich habe etwas den Verdacht, dass das andere Problem bei mir durch den relativ komplexen Joystick kommt, der auch noch irgendwelche Force-Feedback-Geschichten oder so via dinput "bewerben" möchte.

Hintergrund für die fehlenden DirectInput-Buttons und -Achsen ist wohl die Umstellung von Zusi auf 64 bit. Delphi nutzt mit 64 bit wohl nicht mehr wie unter 32 bit bei Win32-ABI-kompatiblen Booleans nicht die "1" als Repräsentation eines Booleans mit dem Wert "true", sondern "-1". Und das sollte normalerweise auch kein Problem sein, denn eigentlich ist es glaube ich bei C schon üblich, dass alles, was nicht "0" ist, eben als "true" gilt. Aber ausgerechnet für den hier relevanten Callback DIEnumDeviceObjectsCallback steht es in der Doku so drin: "Returns DIENUM_CONTINUE to continue the enumeration or DIENUM_STOP to stop the enumeration.". Und DIENUM_CONTINUE ist eben "1", nicht "-1". DIENUM_STOP wäre 0. Das was 64bit-Zusi bzw. Delphi hier liefert, ist weder 0 noch 1, sondern -1 – und so kann man nur raten, was passiert. Windows interpretiert es wohl vernünftigerweise als eine andere Form von "true" und somit als "DIENUM_CONTINUE", Wine behandelt es derzeit als "DIENUM_STOP", weil einzig und allein der Wert "1" als "CONTINUE" akzeptiert wird .
Zuletzt geändert von Flo Zille am 02.04.2023 18:17:19, insgesamt 2-mal geändert.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33430
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: USB-Footswitch unter Linux

#18 Beitrag von Carsten Hölscher »

Das mit den -1 gilt dann aber nur in diesem Fall oder? Denn wenn das eine allg. 64bit-Eigenschaft wäre, wäre mir das sonst sicher schon aufgefallen.

Carsten

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#19 Beitrag von Flo Zille »

Carsten Hölscher hat geschrieben: 02.04.2023 14:11:35 Das mit den -1 gilt dann aber nur in diesem Fall oder? Denn wenn das eine allg. 64bit-Eigenschaft wäre, wäre mir das sonst sicher schon aufgefallen.
Leider habe ich nicht viel Ahnung von Delphi und bin nicht ganz sicher, in welchen Situationen ein true-Wert als -1 repräsentiert wird. Ich finde dazu folgendes:
In Delphi 3 wurden die Datentypen ByteBool, WordBool und LongBool aus Kompatibilitätsgründen mit Visual Basic und der OLE-Automation dahingehend modifiziert, dass der Wert True mit -1 dargestellt wird während der Wert False weiterhin 0 ist. Der Datentyp Boolean blieb unverändert (True ist 1, False ist 0). Falls Sie explizite Typumwandlungen in Ihrem Delphi 2-Code verwendet haben, so kann eine Portierung des Codes zu späteren Versionen von Delphi zu Fehlern führen.
Ich weiß nun nicht, wie der dinput-EnumObjects-Callback in Zusi genau aussieht, aber vermutlich wird dort, um zur gewöhnlichen Win32-ABI zu passen, ein "LongBool"-true genutzt? Das würde dann die -1 erklären. Ist in meinen Augen auch völlig in Ordnung, denn die Funktionssignatur des Callbacks ist ja so definiert, dass ein Win32 "BOOL" zurückgegeben werden soll. Und eigentlich betrachte ich dann jeden Wert, der nicht 0 ist, als gleichbedeutend (true). Nur auf der MS-Webseite steht dann plötzlich, dass nicht ein beliebiger BOOL-Wert (FALSE für "stop", irgendwas anderes für "weiter"), sondern seltsamerweise DIENUM_CONTINUE oder DIENUM_STOP, also 1 oder 0, zurückgegeben werden soll. Und Wine setzt das dann aktuell eben so verschärft um, dass alles außer "DIENUM_CONTINUE" (= 1) zu "Stop" führt, was aber wenig sinnvoll erscheint und hoffentlich nächste Woche repariert wird.

Edit: Meine Aussage mit dem Zusammenhang zu 64 Bit ist dann aber wohl Quatsch, ich hatte das glaube ich bei der Fehlersuche die Tage nur irgendwo in einem Forum als Nutzerbeitrag gelesen, das war keine offizielle Doku oder so. Da ist dann vermutlich nichts dran, jedenfalls finde ich dazu nichts.

Flo Zille
Beiträge: 203
Registriert: 15.05.2018 09:06:32

Re: USB-Footswitch unter Linux

#20 Beitrag von Flo Zille »

Rémi Bernon ist echt schnell mit den Reviews, und er lebt offenbar in einer vernünftigen Zeitzone. :applaus

Jedenfalls ist der Patch für "hoffentlich alle Buttons und Achsen erkennen" seit gestern abend in Wine integriert, und der zumindest bei meiner Hardware auch nötige "HID-Collections ('Sammlungen') nicht per guid als Z-Achse / Z-Rotation ausgeben, sondern als Unbekannt"-Patch hat jetzt auch schon den Segen von Rémi, muss aber noch die automatisierten Tests bestehen. Falls das klappt könnte der dann heute abend auch in Wine landen.

Mit den beiden Patches kann ich mit meinem Joystick in Zusi dann erfolgreich Tasten und Achsen von DirectInput-Geräten über die "Tastenzuordnung aktivieren (Feld markieren, Taste drücken/bewegen)"-Funktion zuweisen, und im Rechtsklick-Menü scheinen auch alle aufzutauchen. Weiß nicht ob es ingame dann noch Probleme gibt, die Sifa konnte ich jedenfalls erfolgreich über meinen Joystick bedienen. Vielleicht klappt es ab Wine 8.6 am 14. April dann auch mit dem USB-Footswitch, um den es hier im Thread geht.

Antworten