VirtualBox

Opened 11 years ago

Last modified 10 years ago

#12089 new enhancement

Option to show host-side mouse pointer with mouse integration

Reported by: mvglasow Owned by:
Component: other Version: VirtualBox 4.2.18
Keywords: Cc:
Guest type: other Host type: other

Description

When mouse integration is enabled, the host-side mouse pointer is disabled and the guest OS is responsible for drawing it. This works well for desktop OSes.

However, I recently tried to run Android x86 in a VM. Being designed primarily for touch input, it does not provide a local mouse pointer at least with mouse integration enabled. Everything works well - if I move the mouse into the window, aim blindly and click, the UI will respond to the click - but since the mouse pointer is invisible, I cannot see where I am about to click.

If I disable mouse integration, Android will draw a mouse pointer - this works, but is less convenient.

Therefore I'd like to have this option - I suppose it's not too hard to implement (can be a config option in the VM settings causing the cursor not to be hidden when mouse integration is enabled) but would make things a bit more comfortable.

Change History (8)

comment:1 by Michael Thayer, 11 years ago

I assume that you are using the absolute pointing device emulation with Android. Actually we report the device as an absolute mouse, not as a touch screen, and Android should see that and draw a pointer. I suggest that you report this as an Android problem and if the Android people are not happy about that point them to this ticket (or us to their one) so that we can discuss it directly.

comment:2 by m00k0w, 10 years ago

Last edited 10 years ago by m00k0w (previous) (diff)

in reply to:  1 comment:3 by m00k0w, 10 years ago

Replying to michael:

Hi there,

I too have this issue - Android x86 DOES include a visible mouse cursor - the issue is it has some sort of mouse acceleration, which leads to the non-visible host cursor, and guest cursor, not synchronizing in position. What happens is they are aligned properly when the mouse is moved very slowly, but if within the window the mouse is moved rapidly, they will offset, and the host mouse will stop controlling the virtual mouse, leaving the frame, before the virtual mouse reaches the edge of the frame. This happens very easily and makes it entirely unusable with mouse integration off.

As well, even if they were synchronized, when running multiple instances of Android x86, quickly clicking across several, it is not a solution to have to use an extra click to first transfer focus to that instance.

Therefore, the best method is with mouse integration enabled, and with an option to have the host cursor visible. There is no reason to force it to be hidden; Is there a known quick workaround to make a windows mouse cursor unhidable?

comment:4 by Michael Thayer, 10 years ago

That sounds rather wrong. If Android is properly using the absolute mouse then there should never be an offset between host and guest cursor, as we report absolute co-ordinates. That did happen with old X.Org versions (X.Org 7.2 and older) which did not know how to use the device but nothing released in the last five years. Is your Android guest system properly set up?

comment:5 by emu1, 10 years ago

I also find that this option is needed. Android x86 v2.3 doesn't work at all with integration, but v4 does, just with no visible pointer.

A simple solution, that is generic beyond this specific OS, would be a VirtualBox per-VM configuration option to not hide the pointer.

comment:6 by emu1, 10 years ago

Quick and dirty temporary fix for VirtualBox 4.3.4 r91027: in QtGuiVBox4.dll (v4.8.4.0, 9,842,960 bytes) change the bytes at offset 0x79EAF from [ 48 8B C8 ] to [ EB 07 90 ].

This disables pointer changing (probably in more cases than needed). You may end up with the window resize pointer if you're not quick enough to enter the VM window, but some pointer is better than no pointer. :)

And less dirty, but unlike the above likely to change per VB version: Change in VirtualBox.exe v4.3.4.r91027 (8,748,816 bytes), at offset 0xD6B6B: [ 48 8B 08 ] -> [ EB 07 90 ]. This nullifies the call to setCursor(Qt::BlankCursor) in VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp.

Last edited 10 years ago by emu1 (previous) (diff)

comment:7 by bilogic, 10 years ago

I tried the fix and it works. But I face another similar problem.

Is it possible to show the guest cursor when mouse integration is enabled?

Why? I have a notebook (no VMs) and a desktop with 2 VMs. I keep my host clean and simple, and mainly use only the guest VMs. To switch between my notebook and desktop's VM, I use input director (http://www.inputdirector.com) and set notebook as master, VMs as slaves.

However, the mouse cursor does not show up in the guests when mouse integration is enabled. Is there a similar fix to get the guest to draw the mouse cursor when mouse integration is enabled?

Thanks!

comment:8 by flintspark, 10 years ago

Hello Michael and others, I too have a mouse pointer that disappears when using Android x86 installed on VirtualBox 4.3.15 r95286. I realize that the version referenced for starting this ticket is not the same, but I thought that it could be relevant given the nature of the problem.

My pointer is invisible over the android interface unless I disable mouse integration.

For now, I utilize the windows option of left CTRL revealing the mouse position but this is not the most convenient.

The fix mentioned by emu1 did not work for me :( .

Is it possible to have a VirtualBox configuration option to not hide the pointer?

Thank you for all the hard work, it makes peoples' lives better.

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use