Skip to content

[Problem/Bug]: Gamepad and Pointer Lock APIs not working in visual or "Window to visual" hosting modes #4968

Open

Description

What happened?

When WebView2 is set to use "Window to visual" hosting mode, the Pointer Lock API no longer works correctly in web content.

This is a potential blocker for Construct migrating from NW.js to WebView2.

Importance

Important. My app's user experience is significantly compromised.

Runtime Channel

Stable release (WebView2 Runtime)

Runtime Version

131.0.2903.70

SDK Version

1.0.2903.40

Framework

Win32

Operating System

Windows 11

OS Version

22631.4460

Repro steps

For a minimal repro, use the Win32_GettingStarted sample, and make the following changes:

  1. Add the following line before CreateCoreWebView2EnvironmentWithOptions() to set "Window to visual" hosting mode:

SetEnvironmentVariable(L"COREWEBVIEW2_FORCED_HOSTING_MODE", L"COREWEBVIEW2_HOSTING_MODE_WINDOW_TO_VISUAL");

  1. Change the URL in the call to webview->Navigate(...) to: https://downloads.scirra.com/labs/bugs/pointerlocktest.html

Now run the app and click 'Get pointer lock'.

Observed result: the mouse cursor remains visible, and the page does not update with any more pointermove events. Further, the notification saying "to show your cursor, press Esc" appears offset, sometimes outside the window (ideally we would hide this notification as it's not applicable to desktop software - see #4960). Further, after pressing Esc pointer events don't seem to restart again, leaving the app in a stuck state.

Expected result: pointer lock to work normally as it does in a web browser, or in the standard windowed hosting mode. Comment out the line added in step 1 to use windowed hosting mode, and you'll see it works correctly.

Repros in Edge Browser

No, issue does not reproduce in the corresponding Edge version

Regression

No, this never worked

Last working version (if regression)

No response

Activity

  1. changed the title [-][Problem/Bug]: Pointer Lock API does not work in "Window to visual" hosting mode[/-] [+][Problem/Bug]: Gamepad and Pointer Lock APIs not working in "Window to visual" hosting mode[/+] on Dec 4, 2024
  2. AshleyScirra commented on Dec 4, 2024

    @AshleyScirra
    Author

    Further testing also indicates that the Gamepad API does not work in this mode either - change the URL to https://hardwaretester.com/gamepad to test that. This is a blocker for web gaming content.

    We're trying to use the "Window to visual" hosting mode for better compatibility with the Steam Overlay, as "Windowed" mode doesn't work, and there still doesn't appear to be support for rendering to texture to work around that (#20, #547), so we're trying different WebView2 hosting modes. Regardless, these APIs should work in "Window to visual" mode, as the documentation says it should basically work the same as windowed mode without any API differences.

  3. changed the title [-][Problem/Bug]: Gamepad and Pointer Lock APIs not working in "Window to visual" hosting mode[/-] [+][Problem/Bug]: Gamepad and Pointer Lock APIs not working in visual or "Window to visual" hosting modes[/+] on Jun 30, 2025
  4. AshleyScirra commented on Jun 30, 2025

    @AshleyScirra
    Author

    It looks like this also affects the "visual" composition mode. The WebView2SampleWinComp sample off GitHub also reproduces the issue of no gamepad input when pointed to https://hardwaretester.com/gamepad. For us this is a blocker for using either visual or window-to-visual hosting modes.

    Positioned input like mouse and touch input needs to be forwarded to the webview for visual hosting mode as the app may have to transform the input positions - but gamepad input isn't positioned. So shouldn't gamepad input just work regardless of the hosting mode?

    We also need pointer lock to work in visual hosting mode, but that at least is potentially more feasible for us to work around from the containing application.

  5. bradp0721 commented on Jun 30, 2025

    @bradp0721
    Member

    Siv Souvam (MSFT) (@sivMSFT) can you find someone to help with this GitHub issue, since I'm no longer on the WebView2 team?

  6. Everade commented on Jan 21, 2026

    @Everade

    Siv Souvam (MSFT) (@sivMSFT) Brad Peters (@bradp0721)
    Could someone please be assigned to this issue?
    It's quite a big deal for game-devs.

  7. AshleyScirra commented on Aug 11, 2026

    @AshleyScirra
    Author

    Any update on this?

  8. AshleyScirra commented on Oct 20, 2026

    @AshleyScirra
    Author

    This report is coming up to two years old and it's still important to us to have gamepad input working in visual hosting mode. Is there any update from Microsoft on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions