I don't know what the usb-tablet device emulates. It seems like a HID device that reports absolute coordinates. It usually works with other guest OS drivers but don't know what the AmigaOS driver supports. An alternative is -device usb-wacom-tablet which more closely emulates an actual wacom tablet so maybe that could work better if the default usb-tablet is not recognised by AmigaOS's HID driver but I did not try these.
@balaton @hans I checked the hid report buffer of the QEMU USB Tablet device. It is described as a Mouse, with 3 buttons, a wheel and absolute X,Y coordinates. For this reason it is not managed by the hidtouch.usbfd, it is not seen as a touchscreen.
In any case the QEMU Tablet device seems to me to be a simulation of a mouse by QEMU. I could easily add support for this type of device, but it makes more sense for the AmigaOS4 hid.usbfd driver to handle it directly. Maybe it doesn't handle it because it only recognizes mice with relative coordinates or touchscreen/digitizer with absolute coordinates.
@hans, have you tried to see if the touchscreen of the tablet is seen as a USB device with the 'lsusb' command?
@hans, can you tell me if the 3 buttons are physically on the tablet or are they emulated by qemu?
There is no actual tablet. I'm using a laptop with a trackpad.
The advantage of using the emulated "usb-tablet" with a mouse/trackpad, is that the guest OS gets the actual mouse pointer location. The Virtio GPU device uses the host OS' actual mouse pointer/cursor, which can cause weird interaction problems because both the host and guest OS are trying to control the mouse pointer's position. In "usb-tablet" mode, the guest OS gets the actual mouse position directly, and the fight between the guest and host OS can stop.
I don't know what the usb-tablet device emulates. It seems like a HID device that reports absolute coordinates. It usually works with other guest OS drivers but don't know what the AmigaOS driver supports.
It looks like the AmigaOS HID driver doesn't support it (I tried it out, and it didn't work). Not surprising, as we've never had such a device.
Quote:
An alternative is -device usb-wacom-tablet which more closely emulates an actual wacom tablet so maybe that could work better if the default usb-tablet is not recognised by AmigaOS's HID driver but I did not try these.
That's worth a try. No time for it right now, though.
Hi Hans, try if the attached driver is right for you.
Quick explanation: this driver should recognize and handle the QEMU Tablet Device and similar. It does not require touch.device or touchbench, it is a standalone driver that sends NEWPOINTERPOS/TABLET events to the input.device, so it works with absolute coordinates.
I tried it with QEMU and the option
-device usb-tablet
and it seems to work.
Note: being a fast adaptation, the driver could also take control of other similar devices and bypass the official AmigaOS4 hid.usbfd driver. If this causes you problems let me know and I will make the driver more selective.
Best regards!
Attach file: Link only for registered users
Edited by AlfredOne on 2024/2/27 12:03:36 Edited by AlfredOne on 2024/2/27 12:04:05
@all Do you think it would be useful if I released a QEMU specific usb driver (e.g. qemutatablet.usbfd or qemu.usbfd), instead of a generic hid driver that handles qemu but could handle other hid devices?
AlfredOne wrote:@all Do you think it would be useful if I released a QEMU specific usb driver (e.g. qemutatablet.usbfd or qemu.usbfd), instead of a generic hid driver that handles qemu but could handle other hid devices?
I am not sure what such a support under AmigaOs4.1 Qemu could mean. In terms of the "qemu.usbfd" device, would this mean that we could use such a usb driver to facilitate the integration of devices under AmigaOs4.1 ?
Quote:
Human Interface Device (HID) refers to the HID protocol, a standard way of communicating with connected devices. Examples of HID devices are keyboards, mice, headsets and game controllers
Or is it still about being able to use touch input with a LapTop or TouchPad?
MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
The difference is how QEMU emulates a pointing device. Normally QEMU shows a touchpad or a mouse as a standard HID mouse, so AmigaOS4.1 sees a HID mouse and receives from QEMU events with relative movements in x and y. In this case the official hid.usbfd driver of amigaos handles this in the right way. You can verify that events received are relative x,y by looking at the mouse cursor positions in the emulated AmigaOS4.1 and the "real" mouse cursor of the host system: they do not match. In general it is not a problem, except in particular cases (see Hans's post).
Alternatively, QEMU can emulate the pointing device as a HID tablet instead of a HID mouse. In this case, QEMU does not expose a mouse, but exposes a tablet as an input device and sends absolute coordinates to AmigaOS4 such that the AmigaOS4 mouse cursor coincides with the host operating system's mouse cursor. Hans reported that this mode would be useful when using the Virtio GPU device. The problem is that the amigaos hid.usbfd driver cannot currently manage the tablet device.
So I wrote a driver that handles a tablet device. Using the HID protocol, this driver can actually manage all tablet like devices, but I was wondering if it wasn't worth making the driver more selective, so that it works only when it detects the QEMU emulated tablet.
@AlfredOne I think it's better to add support generally in the HID driver rather than making it a QEMU specific driver. The QEMU emulated usb-tablet is just a generic tablet so the same driver could be useful for similar hardware so no need to restrict it to QEMU. It also avoids duplicating code if it's kept in the HID driver.
As you've already noted this probably won't make a difference when using sm501 which only supports guest side hardware cursor. It's only an issue with other devices that support host side HW cursor such as virtio-gpu or ati-vga (but the latter does not work yet and most people can't get a driver for the former so it's not an issue for them yet).
Alternatively, QEMU can emulate the pointing device as a HID tablet instead of a HID mouse. In this case, QEMU does not expose a mouse, but exposes a tablet as an input device and sends absolute coordinates to AmigaOS4 such that the AmigaOS4 mouse cursor coincides with the host operating system's mouse cursor. Hans reported that this mode would be useful when using the Virtio GPU device. The problem is that the amigaos hid.usbfd driver cannot currently manage the tablet device..
Thanks for the short explanation, I didn't fully understand it before.
I see it similarly to @Balaton the driver should be developed primarily for real hardware, of course it would be nice if you could extend this driver to support Qemu/AmigaOs4.1. As already mentioned, we cannot reproduce the problems that Hans has with the Virtio GPU and the use of the mouse cursor because these drivers are not available to us.
But I already had a similar problem and it was related to the Cocoa display manager, which resulted in the mouse speed in the guest system (AmigaOs4.1) being slower than in the host system. I reported this bug and it was later patched. In order to be able to avoid such problems in the future, the HID tablet would certainly make sense as an alternative to the HID mouse thanks to its driver support for AmigaOs4.1.
This is just my personal opinion.
MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Sorry, I haven't had a chance to test your driver.
I also think that support for the virtual QEMU tablet device should be in a generic HID driver.
@Maijestro
Quote:
I see it similarly to @Balaton the driver should be developed primarily for real hardware, of course it would be nice if you could extend this driver to support Qemu/AmigaOs4.1. As already mentioned, we cannot reproduce the problems that Hans has with the Virtio GPU and the use of the mouse cursor because these drivers are not available to us.
You don't need the VirtioGPU driver to test the QEMU tablet device.
You don't need the VirtioGPU driver to test the QEMU tablet device.
But you probably won't see any difference with sm501 that's using guest side hw cursor so could only tell if it works at all but not if it's any better than usb-mouse which was the question to be tested.
But you probably won't see any difference with sm501 that's using guest side hw cursor so could only tell if it works at all but not if it's any better than usb-mouse which was the question to be tested.
Nope. The QEMU USB tablet device is unusable with the default HID driver. If you can't see any difference between it and a standard USB mouse, then the driver (and QEMU) are doing a very good job.
@Hans Yes that's what I meant by you can only test if it works or not but if it works with the updated driver then you'll probably just get the same result as with a mouse when using sm501. The real advangage of a tablet is only noticable on host side hardware cursor otherwise the events will go through the guest and the guest will update the cursor so I don't think it would be noticable without host side hardware cursor.
I tested your USB driver briefly under AmigaOs4.1 it seems to work well, but when I click on the title bar of the workbench or move the mouse cursor to the edge of the image I see 2 mouse cursors, host and guest. Pay attention to the left side of the picture:
Qemu/AmigaOs4.1 HID tablet:
The driver or the new HID device is recognized by AmigaOs4.1. I could only record it with my cell phone.....
Edit:The problem is that the AmigaOs4.1 menu can no longer be called up from the title bar.
Edited by Maijestro on 2024/3/1 16:40:21 Edited by Maijestro on 2024/3/1 16:40:36
MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
The 2 mouse cursors, host and guest, visible at the same time, I think are inevitable. In "tablet" mode, as soon as the cursor leaves the emulated AmigaOS screen, the host cursor appears, but the Amiga cursor no longer receives events and remains stationary in the last position.
The 2 mouse cursors, host and guest, visible at the same time, I think are inevitable. In "tablet" mode, as soon as the cursor leaves the emulated AmigaOS screen, the host cursor appears, but the Amiga cursor no longer receives events and remains stationary in the last position.
Ok, as already mentioned, the problem is that AmigaOs4.1 menus can no longer be called up via the title bar because the host then takes over.
Otherwise, the host and guest mouse pointers are exactly the same speed when used.
MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE