On Mon, Jul 17, 2023 at 01:16:41PM +0400, Marc-André Lureau wrote: > Hi > > On Mon, Jul 17, 2023 at 12:54 PM Gao,Shiyuan <[email protected]> wrote: > > > Hi, > > > Hi Shiyuan > > > > > > On Mon, Jul 17, 2023 at 7:16 AM Shiyuan Gao <[email protected]> > > wrote: > > > > > > > When only use PS/2 mouse without usb-tablet, the mouse pointer of the > > > > guest on the VNC will work badly that the cursor of VNC is inconsistent > > > > with the mouse pointer of guest. > > > > > > > > > > > Afaik, VNC doesn't support client-side drawing of guest mouse (there are > > no > > > message to set guest mouse position). So the guest mouse should be drawn > > by > > > the server, and currently QEMU doesn't do it. > > > > > > > > > > The reason is the PS/2 mouse use relative coordinates and we can't know > > > > the initial position of the guest mouse pointer. > > > > > > > > > > It's not just about the initial position. > > > > Now pointer_event use the cursor of VNC init the vs->last_x, vs->last_y > > when > > connect the VNC and the relative coordinates is based on VNC cursor. If the > > initial position of VNC cursor is inconsistent with guest mouse, the > > inconsistency will keep. I think the root cause is we cann't know the > > postion > > of the guest mouse pointer. > > > > last_x/last_y is only used when the client doesn't support relative motion > (pointer-motion change pseudo encoding): it doesn't have a direct relation > with the guest pointer position, it's only use to compute the relative > motion of the client pointer as a fallback. > > > > > > > > > > > > > > > > So move the guest mouse pointer to (0, 0) of the screen when connect the > > > > VNC, and then move the mouse pointer to the cursor of VNC(absolute > > > > coordinates are also relative coordinates). > > > > > > > > > > > It's hardly a solution, you still have no clue what will be the guest > > mouse > > > position. > > > > We have no clue what will be the guest mouse position, we can move the > > guest > > mouse to (0,0) each connect the VNC. Now, the cursor of VNC will be the > > relative coordinates. In a way, this is a quirk to know the guest mouse > > position. > > > > There is no guarantee the guest pointer will be at (0,0) though, and that > doesn't explain how that would help. Which client are you using? Are you > drawing the guest cursor? This can't be done currently with the lack of a > message to tell the guest mouse position. (moving / sync-ing the client > cursor position would be even worse in many ways) > > > > > > > > > > > > On windows VM, also need disable "Enhance Pointer Precision" Option in > > > > "Pointer Options" (Control Panel -> Mouse). > > > > > > > > > > > Apparently, this option doesn't have much to do with relative mouse > > motion. > > > Can you explain what it does with this change? > > > > Emmm, I don't know why this can solve the problem. It's quite effective and > > get this way from > > > > https://forum.proxmox.com/threads/is-it-possible-not-to-use-usbdevice-tablet.1498/ > > . > > > > Only use this way, we need to manually align the VNC cursor with the guest > > mouse. > > > > It's a bit vague what the "VNC cursor" mean. If you mean the client cursor > position, there is no way to align / sync with the guest without an extra > message to inform the client of its position. There is even a comment about > that in vnc.c /* can we ask the client(s) to move the pointer ??? */) > > > > > > > > > Which guest OS are you using? Hopefully they all support either > > usb-tablet > > > or vmmouse extension for absolute positioning. Otherwise, I'd suggest > > using > > > Spice, which has those messages for client side guest-mouse drawing. > > > > > > > Yeah, I know the best way is use a absolute positioning. We need remove > > all usb devices, > > I can only use the PS/2 mouse. > > > > Can't you use vmmouse extension?
For modern Linux there is virtio-input too IIUC With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
