virtio-win / kvm-guest-drivers-windows

Windows paravirtualized drivers for QEMU\KVM
https://www.linux-kvm.org/page/WindowsGuestDrivers
BSD 3-Clause "New" or "Revised" License
2.05k stars 387 forks source link

vioinput : touchpad / Windows 10 #413

Open limbo127 opened 4 years ago

limbo127 commented 4 years ago

Hello, Test Plateforme : HP Elitebook 540 G5 Issue : touchpad does not work under windows 10 ( cursor left in left corner and move only in a small square. We are proceed a lot test with different evdev/libvirt configuation without success. Keyboard and trackpoint works well. Same issue on Lenovo thinkpad. With a dell 5590, working well.

Windows 10 64 bits Drivers virtIO input DriverVer = 08/12/2019,100.80.104.17300

1 - Is it possible to have a debug vioinput version with logging under Windows 2 - Is is a known issue 3 - How can we help about this ?

Regards, Nicolas

dmesg [ 3.066389] usbcore: registered new interface driver synaptics_usb [ 4.741014] psmouse serio3: synaptics: queried max coordinates: x [..5658], y [..4736] [ 4.774446] psmouse serio3: synaptics: queried min coordinates: x [1286..], y [1114..] [ 4.774452] psmouse serio3: synaptics: Your touchpad (PNP: SYN3071 SYN0002 PNP0f13) says it can support a different bus. If i2c-hid and hid-rmi are not used, you might want to try setting psmouse.synaptics_intertouch to 1 and report this to linux-input@vger.kernel.org. [ 4.825191] psmouse serio3: synaptics: Touchpad model: 1, fw: 10.16, id: 0x1e2a1, caps: 0xf00123/0x840300/0x12e800/0x500000, board id: 3352, fw id: 2727989

ls -l /dev/input/by-path/ total 0 lrwxrwxrwx 1 root root 9 Nov 18 08:58 platform-i8042-serio-0-event-kbd -> ../event4 lrwxrwxrwx 1 root root 9 Nov 18 08:58 platform-i8042-serio-2-event-mouse -> ../event5 lrwxrwxrwx 1 root root 9 Nov 18 08:58 platform-i8042-serio-3-event-mouse -> ../event6

 <source evdev='/dev/input/event4'/>
 <alias name='input2'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>

 <source evdev='/dev/input/event5'/>
 <alias name='input2'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>

 <source evdev='/dev/input/event6'/>
 <alias name='input2'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>

ybendito commented 4 years ago

You can collect logs from the existing driver (released for Windows). See https://github.com/virtio-win/kvm-guest-drivers-windows/tree/master/Tools/Trace for batch files, they record ETL file. In order to decode the ETL file use ParseTrace.bat under https://github.com/virtio-win/kvm-guest-drivers-windows/tree/master/Tools/trace. You need to provide proper PDB file from driver's ISO for parsing. How exactly you run qemu to redirect the touch pad. Please provide also an output from evtest

limbo127 commented 4 years ago

Hello, Ok for the debug process, i'm trying . Command line for evdev : -device virtio-input-host-pci,id=input0,evdev=/dev/input/event4,bus=pci.0,addr=0x11 \ -device virtio-input-host-pci,id=input1,evdev=/dev/input/event3,bus=pci.0,addr=0x13 \

The exact command line is : 019-11-26 15:04:35.111+0000: starting up libvirt version: 5.2.0, qemu version: 4.1.1, kernel: 5.4.0, hostname: +lenovo LC_ALL=C \ PATH=/bin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin \ HOME=/var/lib/libvirt/qemu/domain-5-win10igd \ USER=root \ XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-5-win10igd/.local/share \ XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-5-win10igd/.cache \ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-5-win10igd/.config \ QEMU_AUDIO_DRV=none \ /usr/bin/qemu-kvm.igd \ -name guest=win10igd,debug-threads=on \ -S \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-5-win10igd/master-key.aes \ -machine pc-i440fx-2.11,accel=kvm,usb=off,dump-guest-core=off \ -cpu host,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1000,hv_vpindex,hv_runtime,hv_synic,hv_reset \ -bios /usr/share/seabios/bios.bin \ -m 14088 \ -mem-prealloc \ -mem-path /dev/hugepages/libvirt/qemu/5-win10igd \ -realtime mlock=off \ -smp 6,sockets=1,cores=6,threads=1 \ -uuid 15eb58c8-9272-393f-91f6-450effe1c07a \ -display none \ -no-user-config \ -nodefaults \ -chardev socket,id=charmonitor,fd=24,server,nowait \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=localtime \ -no-shutdown \ -global PIIX4_PM.disable_s3=1 \ -global PIIX4_PM.disable_s4=1 \ -boot strict=on \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 \ -drive file=/data/VMS/win10igd/hda.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback \ -device virtio-blk-pci,scsi=off,num-queues=4,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1,write-cache=on \ -drive file=/data/VMS/win10igd/swap.qcow2,format=qcow2,if=none,id=drive-virtio-disk1,cache=unsafe \ -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk1,id=virtio-disk1,write-cache=on \ -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=27 \ -device virtio-net-pci,netdev=hostnet0,id=net0,mac=ac:de:50:79:a4:8d,bus=pci.0,addr=0x3 \ -chardev socket,id=charchannel0,fd=28,server,nowait \ -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \

-device virtio-input-host-pci,id=input0,evdev=/dev/input/event4,bus=pci.0,addr=0x11 \ -device virtio-input-host-pci,id=input1,evdev=/dev/input/event3,bus=pci.0,addr=0x13 \

-device vfio-pci,host=00:02.0,id=hostdev0,bus=pci.0,addr=0x2,rombar=0,romfile=/data/ROOT/templates/romIgd.20N8CTO1WW \ -device vfio-pci,host=00:14.0,id=hostdev1,bus=pci.0,addr=0x7 \ -device vfio-pci,host=00:1f.3,id=hostdev2,bus=pci.0,addr=0x8 \ '-netdev user,id=user.0,restrict=on,hostfwd=tcp:127.0.0.1:5901-:5900,hostfwd=tcp:127.0.0.1:3389-:3389 -device virtio-net-pci,netdev=user.0' \ -set device.hostdev0.x-igd-gms=1 \ -msg timestamp=on

limbo127 commented 4 years ago

Hello again, attach log ( extract from etl ) during using touchpad, trying to move cursor from top left to bottom right. FmtFile.txt FmtSum.txt

Regards, Nicolas

ybendito commented 4 years ago

Please provide also the output of evtest for the touchpad event device (the output before the evtest starts waiting for events from the device)

limbo127 commented 4 years ago

Hello, I'm sorry i do not understand what do you want. Touchpad is working on recent linux distribution Touchpad is working with linux guest as passthrought Touchpas is not working ( block in corner) with windows 10 guest , with last vioinput drivers

No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: Sleep Button /dev/input/event1: Lid Switch /dev/input/event2: Power Button /dev/input/event3: Power Button /dev/input/event4: AT Translated Set 2 keyboard /dev/input/event5: PS/2 Generic Mouse /dev/input/event6: SynPS/2 Synaptics TouchPad /dev/input/event7: Video Bus

ybendito commented 4 years ago

In this case I'd expect to receive full output of sudo evtest /dev/input/event6 After it prints "Testing ... (interrupt to exit)", please use Ctrl-C to exit.

limbo127 commented 4 years ago

Ok, log when evtest6 is passthrought, and after vm quit :

[!HP-Elitbook-Thalgo-86eb3b5b-b8f1-30c3-6f52-71022845e53e]evtest /dev/input/event6 Input driver version is 1.0.1 Input device ID: bus 0x11 vendor 0x2 product 0x7 version 0x1a1 Input device name: "SynPS/2 Synaptics TouchPad" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 272 (BTN_LEFT) Event code 325 (BTN_TOOL_FINGER) Event code 328 (BTN_TOOL_QUINTTAP) Event code 330 (BTN_TOUCH) Event code 333 (BTN_TOOL_DOUBLETAP) Event code 334 (BTN_TOOL_TRIPLETAP) Event code 335 (BTN_TOOL_QUADTAP) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 4219 Min 1286 Max 5658 Event code 1 (ABS_Y) Value 3043 Min 1114 Max 4736 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 255 Event code 28 (ABS_TOOL_WIDTH) Value 0 Min 0 Max 15 Event code 47 (ABS_MT_SLOT) Value 0 Min 0 Max 1 Event code 53 (ABS_MT_POSITION_X) Value 0 Min 1286 Max 5658 Event code 54 (ABS_MT_POSITION_Y) Value 0 Min 1114 Max 4736 Event code 57 (ABS_MT_TRACKING_ID) Value 0 Min 0 Max 65535 Event code 58 (ABS_MT_PRESSURE) Value 0 Min 0 Max 255 Properties: Property type 0 (INPUT_PROP_POINTER) Property type 2 (INPUT_PROP_BUTTONPAD) Testing ... (interrupt to exit)


This device is grabbed by another process. No events are available to evtest while the other grab is active. In most cases, this is caused by an X driver, try VT-switching and re-run evtest again. Run the following command to see processes with an open fd on this device "fuser -v /dev/input/event6"



move from top left to bottom right ( no passthrought )

[!HP-Elitbook-Thalgo-86eb3b5b-b8f1-30c3-6f52-71022845e53e]evtest /dev/input/event6 Input driver version is 1.0.1 Input device ID: bus 0x11 vendor 0x2 product 0x7 version 0x1a1 Input device name: "SynPS/2 Synaptics TouchPad" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 272 (BTN_LEFT) Event code 325 (BTN_TOOL_FINGER) Event code 328 (BTN_TOOL_QUINTTAP) Event code 330 (BTN_TOUCH) Event code 333 (BTN_TOOL_DOUBLETAP) Event code 334 (BTN_TOOL_TRIPLETAP) Event code 335 (BTN_TOOL_QUADTAP) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 4219 Min 1286 Max 5658 Event code 1 (ABS_Y) Value 3043 Min 1114 Max 4736 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 255 Event code 28 (ABS_TOOL_WIDTH) Value 0 Min 0 Max 15 Event code 47 (ABS_MT_SLOT) Value 0 Min 0 Max 1 Event code 53 (ABS_MT_POSITION_X) Value 0 Min 1286 Max 5658 Event code 54 (ABS_MT_POSITION_Y) Value 0 Min 1114 Max 4736 Event code 57 (ABS_MT_TRACKING_ID) Value 0 Min 0 Max 65535 Event code 58 (ABS_MT_PRESSURE) Value 0 Min 0 Max 255 Properties: Property type 0 (INPUT_PROP_POINTER) Property type 2 (INPUT_PROP_BUTTONPAD) Testing ... (interrupt to exit) Event: time 1575287472.678179, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 11 Event: time 1575287472.678179, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1526 Event: time 1575287472.678179, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1561 Event: time 1575287472.678179, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 63 Event: time 1575287472.678179, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 Event: time 1575287472.678179, type 3 (EV_ABS), code 0 (ABS_X), value 1526 Event: time 1575287472.678179, type 3 (EV_ABS), code 1 (ABS_Y), value 1561 Event: time 1575287472.678179, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 63 Event: time 1575287472.678179, type 1 (EV_KEY), code 325 (BTN_TOOL_FINGER), value 1 Event: time 1575287472.678179, -------------- SYN_REPORT ------------ Event: time 1575287472.690311, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 65 Event: time 1575287472.690311, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 65 Event: time 1575287472.690311, -------------- SYN_REPORT ------------ Event: time 1575287472.703346, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 66 Event: time 1575287472.703346, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 66 Event: time 1575287472.703346, -------------- SYN_REPORT ------------ Event: time 1575287472.728532, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 67 Event: time 1575287472.728532, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 67 Event: time 1575287472.728532, -------------- SYN_REPORT ------------ Event: time 1575287472.741452, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1544 Event: time 1575287472.741452, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1577 Event: time 1575287472.741452, type 3 (EV_ABS), code 0 (ABS_X), value 1544 Event: time 1575287472.741452, type 3 (EV_ABS), code 1 (ABS_Y), value 1577 Event: time 1575287472.741452, -------------- SYN_REPORT ------------ Event: time 1575287472.754701, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1578 Event: time 1575287472.754701, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1609 Event: time 1575287472.754701, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 68 Event: time 1575287472.754701, type 3 (EV_ABS), code 0 (ABS_X), value 1578 Event: time 1575287472.754701, type 3 (EV_ABS), code 1 (ABS_Y), value 1609 Event: time 1575287472.754701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 68 Event: time 1575287472.754701, -------------- SYN_REPORT ------------ Event: time 1575287472.767624, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1623 Event: time 1575287472.767624, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1641 Event: time 1575287472.767624, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 69 Event: time 1575287472.767624, type 3 (EV_ABS), code 0 (ABS_X), value 1623 Event: time 1575287472.767624, type 3 (EV_ABS), code 1 (ABS_Y), value 1641 Event: time 1575287472.767624, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 69 Event: time 1575287472.767624, -------------- SYN_REPORT ------------ Event: time 1575287472.780847, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1708 Event: time 1575287472.780847, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1679 Event: time 1575287472.780847, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 68 Event: time 1575287472.780847, type 3 (EV_ABS), code 0 (ABS_X), value 1708 Event: time 1575287472.780847, type 3 (EV_ABS), code 1 (ABS_Y), value 1679 Event: time 1575287472.780847, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 68 Event: time 1575287472.780847, -------------- SYN_REPORT ------------ Event: time 1575287472.792944, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1798 Event: time 1575287472.792944, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1722 Event: time 1575287472.792944, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 67 Event: time 1575287472.792944, type 3 (EV_ABS), code 0 (ABS_X), value 1798 Event: time 1575287472.792944, type 3 (EV_ABS), code 1 (ABS_Y), value 1722 Event: time 1575287472.792944, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 67 Event: time 1575287472.792944, -------------- SYN_REPORT ------------ Event: time 1575287472.806052, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1842 Event: time 1575287472.806052, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1755 Event: time 1575287472.806052, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 66 Event: time 1575287472.806052, type 3 (EV_ABS), code 0 (ABS_X), value 1842 Event: time 1575287472.806052, type 3 (EV_ABS), code 1 (ABS_Y), value 1755 Event: time 1575287472.806052, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 66 Event: time 1575287472.806052, -------------- SYN_REPORT ------------ Event: time 1575287472.819151, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1966 Event: time 1575287472.819151, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1814 Event: time 1575287472.819151, type 3 (EV_ABS), code 0 (ABS_X), value 1966 Event: time 1575287472.819151, type 3 (EV_ABS), code 1 (ABS_Y), value 1814 Event: time 1575287472.819151, -------------- SYN_REPORT ------------ Event: time 1575287472.832249, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2055 Event: time 1575287472.832249, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1873 Event: time 1575287472.832249, type 3 (EV_ABS), code 0 (ABS_X), value 2055 Event: time 1575287472.832249, type 3 (EV_ABS), code 1 (ABS_Y), value 1873 Event: time 1575287472.832249, -------------- SYN_REPORT ------------ Event: time 1575287472.844341, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2179 Event: time 1575287472.844341, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1933 Event: time 1575287472.844341, type 3 (EV_ABS), code 0 (ABS_X), value 2179 Event: time 1575287472.844341, type 3 (EV_ABS), code 1 (ABS_Y), value 1933 Event: time 1575287472.844341, -------------- SYN_REPORT ------------ Event: time 1575287472.857397, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2289 Event: time 1575287472.857397, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1981 Event: time 1575287472.857397, type 3 (EV_ABS), code 0 (ABS_X), value 2289 Event: time 1575287472.857397, type 3 (EV_ABS), code 1 (ABS_Y), value 1981 Event: time 1575287472.857397, -------------- SYN_REPORT ------------ Event: time 1575287472.870367, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2409 Event: time 1575287472.870367, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2035 Event: time 1575287472.870367, type 3 (EV_ABS), code 0 (ABS_X), value 2409 Event: time 1575287472.870367, type 3 (EV_ABS), code 1 (ABS_Y), value 2035 Event: time 1575287472.870367, -------------- SYN_REPORT ------------ Event: time 1575287472.883580, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2550 Event: time 1575287472.883580, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2105 Event: time 1575287472.883580, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 67 Event: time 1575287472.883580, type 3 (EV_ABS), code 0 (ABS_X), value 2550 Event: time 1575287472.883580, type 3 (EV_ABS), code 1 (ABS_Y), value 2105 Event: time 1575287472.883580, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 67 Event: time 1575287472.883580, -------------- SYN_REPORT ------------ Event: time 1575287472.895699, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2698 Event: time 1575287472.895699, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2175 Event: time 1575287472.895699, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 68 Event: time 1575287472.895699, type 3 (EV_ABS), code 0 (ABS_X), value 2698 Event: time 1575287472.895699, type 3 (EV_ABS), code 1 (ABS_Y), value 2175 Event: time 1575287472.895699, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 68 Event: time 1575287472.895699, -------------- SYN_REPORT ------------ Event: time 1575287472.908633, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2835 Event: time 1575287472.908633, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2234 Event: time 1575287472.908633, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 69 Event: time 1575287472.908633, type 3 (EV_ABS), code 0 (ABS_X), value 2835 Event: time 1575287472.908633, type 3 (EV_ABS), code 1 (ABS_Y), value 2234 Event: time 1575287472.908633, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 69 Event: time 1575287472.908633, -------------- SYN_REPORT ------------ Event: time 1575287472.921879, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2966 Event: time 1575287472.921879, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2288 Event: time 1575287472.921879, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 70 Event: time 1575287472.921879, type 3 (EV_ABS), code 0 (ABS_X), value 2966 Event: time 1575287472.921879, type 3 (EV_ABS), code 1 (ABS_Y), value 2288 Event: time 1575287472.921879, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 70 Event: time 1575287472.921879, -------------- SYN_REPORT ------------ Event: time 1575287472.934908, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3113 Event: time 1575287472.934908, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2375 Event: time 1575287472.934908, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 72 Event: time 1575287472.934908, type 3 (EV_ABS), code 0 (ABS_X), value 3113 Event: time 1575287472.934908, type 3 (EV_ABS), code 1 (ABS_Y), value 2375 Event: time 1575287472.934908, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 72 Event: time 1575287472.934908, -------------- SYN_REPORT ------------ Event: time 1575287472.951020, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3271 Event: time 1575287472.951020, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2461 Event: time 1575287472.951020, type 3 (EV_ABS), code 0 (ABS_X), value 3271 Event: time 1575287472.951020, type 3 (EV_ABS), code 1 (ABS_Y), value 2461 Event: time 1575287472.951020, -------------- SYN_REPORT ------------ Event: time 1575287472.963170, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3429 Event: time 1575287472.963170, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2542 Event: time 1575287472.963170, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 74 Event: time 1575287472.963170, type 3 (EV_ABS), code 0 (ABS_X), value 3429 Event: time 1575287472.963170, type 3 (EV_ABS), code 1 (ABS_Y), value 2542 Event: time 1575287472.963170, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 74 Event: time 1575287472.963170, -------------- SYN_REPORT ------------ Event: time 1575287472.975251, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3594 Event: time 1575287472.975251, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2644 Event: time 1575287472.975251, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 75 Event: time 1575287472.975251, type 3 (EV_ABS), code 0 (ABS_X), value 3594 Event: time 1575287472.975251, type 3 (EV_ABS), code 1 (ABS_Y), value 2644 Event: time 1575287472.975251, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 75 Event: time 1575287472.975251, -------------- SYN_REPORT ------------ Event: time 1575287472.987184, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3756 Event: time 1575287472.987184, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2746 Event: time 1575287472.987184, type 3 (EV_ABS), code 0 (ABS_X), value 3756 Event: time 1575287472.987184, type 3 (EV_ABS), code 1 (ABS_Y), value 2746 Event: time 1575287472.987184, -------------- SYN_REPORT ------------ Event: time 1575287472.999420, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3938 Event: time 1575287472.999420, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2838 Event: time 1575287472.999420, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 74 Event: time 1575287472.999420, type 3 (EV_ABS), code 0 (ABS_X), value 3938 Event: time 1575287472.999420, type 3 (EV_ABS), code 1 (ABS_Y), value 2838 Event: time 1575287472.999420, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 74 Event: time 1575287472.999420, -------------- SYN_REPORT ------------ Event: time 1575287473.011503, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4113 Event: time 1575287473.011503, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2935 Event: time 1575287473.011503, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 71 Event: time 1575287473.011503, type 3 (EV_ABS), code 0 (ABS_X), value 4113 Event: time 1575287473.011503, type 3 (EV_ABS), code 1 (ABS_Y), value 2935 Event: time 1575287473.011503, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 71 Event: time 1575287473.011503, -------------- SYN_REPORT ------------ Event: time 1575287473.024560, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4288 Event: time 1575287473.024560, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3043 Event: time 1575287473.024560, type 3 (EV_ABS), code 0 (ABS_X), value 4288 Event: time 1575287473.024560, type 3 (EV_ABS), code 1 (ABS_Y), value 3043 Event: time 1575287473.024560, -------------- SYN_REPORT ------------ Event: time 1575287473.037695, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4460 Event: time 1575287473.037695, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3140 Event: time 1575287473.037695, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 70 Event: time 1575287473.037695, type 3 (EV_ABS), code 0 (ABS_X), value 4460 Event: time 1575287473.037695, type 3 (EV_ABS), code 1 (ABS_Y), value 3140 Event: time 1575287473.037695, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 70 Event: time 1575287473.037695, -------------- SYN_REPORT ------------ Event: time 1575287473.050751, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4632 Event: time 1575287473.050751, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3237 Event: time 1575287473.050751, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 69 Event: time 1575287473.050751, type 3 (EV_ABS), code 0 (ABS_X), value 4632 Event: time 1575287473.050751, type 3 (EV_ABS), code 1 (ABS_Y), value 3237 Event: time 1575287473.050751, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 69 Event: time 1575287473.050751, -------------- SYN_REPORT ------------ Event: time 1575287473.062870, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4786 Event: time 1575287473.062870, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3329 Event: time 1575287473.062870, type 3 (EV_ABS), code 0 (ABS_X), value 4786 Event: time 1575287473.062870, type 3 (EV_ABS), code 1 (ABS_Y), value 3329 Event: time 1575287473.062870, -------------- SYN_REPORT ------------ Event: time 1575287473.075968, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 4934 Event: time 1575287473.075968, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3393 Event: time 1575287473.075968, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 71 Event: time 1575287473.075968, type 3 (EV_ABS), code 0 (ABS_X), value 4934 Event: time 1575287473.075968, type 3 (EV_ABS), code 1 (ABS_Y), value 3393 Event: time 1575287473.075968, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 71 Event: time 1575287473.075968, -------------- SYN_REPORT ------------ Event: time 1575287473.089050, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5064 Event: time 1575287473.089050, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3490 Event: time 1575287473.089050, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 68 Event: time 1575287473.089050, type 3 (EV_ABS), code 0 (ABS_X), value 5064 Event: time 1575287473.089050, type 3 (EV_ABS), code 1 (ABS_Y), value 3490 Event: time 1575287473.089050, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 68 Event: time 1575287473.089050, -------------- SYN_REPORT ------------ Event: time 1575287473.102165, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5164 Event: time 1575287473.102165, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3571 Event: time 1575287473.102165, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 65 Event: time 1575287473.102165, type 3 (EV_ABS), code 0 (ABS_X), value 5164 Event: time 1575287473.102165, type 3 (EV_ABS), code 1 (ABS_Y), value 3571 Event: time 1575287473.102165, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 65 Event: time 1575287473.102165, -------------- SYN_REPORT ------------ Event: time 1575287473.114224, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5281 Event: time 1575287473.114224, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3630 Event: time 1575287473.114224, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 66 Event: time 1575287473.114224, type 3 (EV_ABS), code 0 (ABS_X), value 5281 Event: time 1575287473.114224, type 3 (EV_ABS), code 1 (ABS_Y), value 3630 Event: time 1575287473.114224, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 66 Event: time 1575287473.114224, -------------- SYN_REPORT ------------ Event: time 1575287473.127323, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5384 Event: time 1575287473.127323, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3695 Event: time 1575287473.127323, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 64 Event: time 1575287473.127323, type 3 (EV_ABS), code 0 (ABS_X), value 5384 Event: time 1575287473.127323, type 3 (EV_ABS), code 1 (ABS_Y), value 3695 Event: time 1575287473.127323, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64 Event: time 1575287473.127323, -------------- SYN_REPORT ------------ Event: time 1575287473.140274, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5470 Event: time 1575287473.140274, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3771 Event: time 1575287473.140274, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 60 Event: time 1575287473.140274, type 3 (EV_ABS), code 0 (ABS_X), value 5470 Event: time 1575287473.140274, type 3 (EV_ABS), code 1 (ABS_Y), value 3771 Event: time 1575287473.140274, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 60 Event: time 1575287473.140274, -------------- SYN_REPORT ------------ Event: time 1575287473.153460, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 56 Event: time 1575287473.153460, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 56 Event: time 1575287473.153460, -------------- SYN_REPORT ------------ Event: time 1575287473.165554, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 51 Event: time 1575287473.165554, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 51 Event: time 1575287473.165554, -------------- SYN_REPORT ------------ Event: time 1575287473.178686, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 43 Event: time 1575287473.178686, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 43 Event: time 1575287473.178686, -------------- SYN_REPORT ------------ Event: time 1575287473.191731, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 31 Event: time 1575287473.191731, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 31 Event: time 1575287473.191731, -------------- SYN_REPORT ------------ Event: time 1575287473.204868, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 14 Event: time 1575287473.204868, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 14 Event: time 1575287473.204868, -------------- SYN_REPORT ------------ Event: time 1575287473.216950, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1 Event: time 1575287473.216950, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0 Event: time 1575287473.216950, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0 Event: time 1575287473.216950, type 1 (EV_KEY), code 325 (BTN_TOOL_FINGER), value 0 Event: time 1575287473.216950, -------------- SYN_REPORT ------------

ybendito commented 4 years ago

win8-64-fixed.zip Please confirm the attached driver solves the problem (test mode required to install it, i.e. "bcdedit /set testsigning on" + reboot) The driver is good for x64 win8+

limbo127 commented 4 years ago

Hello, I can confirm that now the touchpad works well except that the mouse cursor is always repositionning from the touchpad, not keeping the last position from the screen. This is not how touchpad works in standard way.

Example : touch the touchpad in center, then go the left . If lift my finger, and touch again the touchpad in center, the mouse cursor is now on center of the screen, not in the last position , so some parts of the screen are inaccessible.

Regards, Nicolas

limbo127 commented 4 years ago

Hello again, click and double click seems to be not manage pas vioinput touchpad compare to the same touchpad on windows native installation. NIcolas

ybendito commented 4 years ago

Hello again, click and double click seems to be not manage pas vioinput touchpad compare to the same touchpad on windows native installation. NIcolas

Can you please explain it with more details as I did not understand the sentence.

ybendito commented 4 years ago

I suggest also to compare it with the behavior in Linux guest

limbo127 commented 4 years ago

Hello again, Under linux guest ( fedora) touchpad/virtio works without issue :

Thanks

Le jeu. 5 déc. 2019 12:00, Yuri Benditovich notifications@github.com a écrit :

I suggest also to compare it with the behavior in Linux guest

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/virtio-win/kvm-guest-drivers-windows/issues/413?email_source=notifications&email_token=AAMCNUF53WR7GTUMDE5EODLQXDNOTA5CNFSM4JRXIGDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGAKXFY#issuecomment-562080663, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAMCNUEZ6FK3A5UGCIOZCLDQXDNOTANCNFSM4JRXIGDA .

limbo127 commented 4 years ago

Hello, Sorry for the touchpad click, it's working well with windows drivers vioput, perhaps a reboot problem. The only "bug" is the repositioning issue Thanks Nicolas

ybendito commented 4 years ago

Regarding the touch click: I suspect that the touchpad click can work or not depending on touchpad model. If the touch pad emits 'left click' event by itself, it will work, otherwise it will not. Regarding repositioning: I do not have a host with multitouch pad so I can't see what exactly this does and how exactly this is terrible. In my test I've used an emulation of touch pad and the intention was that the mouse pointer shall cover entire screen area. But there is no simple solution to avoid the repositioning when the touchpad reports an absolute position of the pointer. At the moment I see two options: discard the commit (this will behave as it is in the original driver) or live with this behavior until we have better support for host touch pads via vioinput or other way. What you say?

limbo127 commented 4 years ago
lotib commented 3 years ago

Hi, I've got the same repositioning problem due to EV_ABS reported by touchpad. Do you think it is possible to calculate and report a relative value from the previous EV_ABS event value, as a dirty patch.

ybendito commented 3 years ago

There is a pull request that might be helpful https://github.com/virtio-win/kvm-guest-drivers-windows/pull/530 If you want, you can build the driver with it and try it.

ivellioscolin commented 3 years ago

@limbo127 Sounds like a scaling issue. Current HID tablet doesn't scale from logical to physical with proper resolution:

https://github.com/virtio-win/kvm-guest-drivers-windows/blob/2612a23f6078aa1c3793bd00a790d1f20b73e2fd/vioinput/sys/HidTablet.c#L241-L253

As @ybendito mentioned you could try #530 I just done split and revise the big patch.

SushyDev commented 3 years ago

Hello, I can confirm that now the touchpad works well except that the mouse cursor is always repositionning from the touchpad, not keeping the last position from the screen. This is not how touchpad works in standard way.

Example : touch the touchpad in center, then go the left . If lift my finger, and touch again the touchpad in center, the mouse cursor is now on center of the screen, not in the last position , so some parts of the screen are inaccessible.

Regards, Nicolas

Experiencing the same issue on my Laptop

arminanton commented 2 years ago

Same issue on mine as well, mouse driver for touchpad does not seem to remember what was the last position which the cursor stopped. It almost like the touchscreen is now a map of my laptop screen (but smaller of course) and if I start my touch from the left-bottom-most corner the mouse will teleport to position the left-bottom-most corner of the screen and continue its movement from there. Also, mouse click from the touchpad screen itself does not work. Perhaps these were custom events that were controlled by software when using the synaptics driver on windows. In my scenario I am using Linux host and windows guest, qemu/proxmox.

ivellioscolin commented 2 years ago

Same issue on mine as well, mouse driver for touchpad does not seem to remember what was the last position which the cursor stopped. It almost like the touchscreen is now a map of my laptop screen (but smaller of course) and if I start my touch from the left-bottom-most corner the mouse will teleport to position the left-bottom-most corner of the screen and continue its movement from there. Also, mouse click from the touchpad screen itself does not work. Perhaps these were custom events that were controlled by software when using the synaptics driver on windows. In my scenario I am using Linux host and windows guest, qemu/proxmox.

You may want to check Hid.c to find what's the current logic to report a mouse or touchscreen. The HID descriptors are different. In your case, it's likely your device is expected to act like a mouse instead of touchscreen.