@@ -104,23 +104,21 @@ buttons, sticks, triggers, and battery state, show backend and profile
104104capabilities, list device nodes reported for UI-created devices, and display
105105normalized gamepad output such as rumble, RGB LED, adaptive trigger, trigger
106106rumble, and raw report events delivered through the normal callback path. Button
107- controls are momentary by default so they behave like physical gamepad buttons;
107+ controls are momentary by default, so they behave like physical gamepad buttons;
108108on Windows, the UI also displays broker license status and can activate,
109- refresh, or deactivate a machine license. Outside the explicitly marked GitHub
110- Actions test environment, every Windows UMDF gamepad creation requires a
111- current successful license validation response and there is no offline grace
112- period. The CI-only exception is a single five-minute window that begins with
113- the first gamepad creation attempt. Purchase and account-management buttons use
109+ refresh, or deactivate a machine license without elevation. Every Windows UMDF
110+ gamepad creation requires a current successful license validation response and
111+ there is no offline grace period. Purchase and account-management buttons use
114112the compiled URLs in
115113` src/platform/windows/shared/lvh_windows_broker_config.hpp ` .
116- enable ` Lock buttons ` to keep the old click-to-toggle behavior for held inputs.
114+ Enable ` Lock buttons ` to click-to-toggle behavior for held inputs.
117115The resizable window supports a compact width. Its device and control panels
118- stack, and the button grid reflows, to keep controls usable when it is narrowed.
119- The UI intentionally does not use gamepad navigation so virtual devices created
116+ stack, and the button grid reflows to keep controls usable when it is narrowed.
117+ The UI intentionally does not use gamepad navigation, so virtual devices created
120118by the tool cannot drive the tool's own controls.
121119
122120External devices created by another process, such as Sunshine, are not
123- enumerated yet. That requires backend protocol support so the Windows driver or
121+ enumerated yet. That requires backend protocol support, so the Windows driver or
124122Linux backend can expose cross-process device snapshots without letting two
125123processes race to control the same virtual device.
126124
@@ -133,7 +131,9 @@ The API centers on portable device concepts:
133131- ` get_license_status ` , ` activate_license ` , ` validate_license ` , and
134132 ` deactivate_license ` : provider-neutral machine license operations for host
135133 applications. On Windows these call the installed local broker; license keys
136- are not retained by the client library or returned to the application.
134+ are not retained by the client library or returned to the application. The
135+ client verifies that the named-pipe server is the SCM-registered running
136+ broker before sending any request.
137137- ` VirtualDevice ` : common lifecycle for created devices.
138138- ` Gamepad ` : submits normalized gamepad state and receives output callbacks.
139139- ` Keyboard ` : submits key press/release and UTF-8 text input.
@@ -183,18 +183,18 @@ touch, motion, battery, feedback, and lifecycle updates onto the platform-neutra
183183
184184Built-in gamepad profiles and their platform-neutral default device names are:
185185
186- | Profile | Default device name |
187- | --- | --- |
188- | Generic HID gamepad | `(libvirtualhid) Generic Controller` |
189- | Xbox 360 | `(libvirtualhid) X-Box 360 Controller` |
190- | Xbox One | `(libvirtualhid) X-Box One Controller` |
191- | Xbox Series | `(libvirtualhid) X-Box Series Controller` |
192- | DualShock 4 USB and Bluetooth | `(libvirtualhid) PS4 Controller` |
193- | DualSense USB and Bluetooth | `(libvirtualhid) PS5 Controller` |
194- | Nintendo Switch Pro | `(libvirtualhid) Nintendo Pro Controller` |
186+ | Profile | Default device name |
187+ |-------------------------------| ------------------------------------------- |
188+ | Generic HID gamepad | `(libvirtualhid) Generic Controller` |
189+ | Xbox 360 | `(libvirtualhid) X-Box 360 Controller` |
190+ | Xbox One | `(libvirtualhid) X-Box One Controller` |
191+ | Xbox Series | `(libvirtualhid) X-Box Series Controller` |
192+ | DualShock 4 USB and Bluetooth | `(libvirtualhid) PS4 Controller` |
193+ | DualSense USB and Bluetooth | `(libvirtualhid) PS5 Controller` |
194+ | Nintendo Switch Pro | `(libvirtualhid) Nintendo Pro Controller` |
195195
196196Consumers may replace `DeviceProfile::name` before creating a gamepad, for
197- example to prepend an application name while preserving the default controller
197+ example, to prepend an application name while preserving the default controller
198198identity across platform backends.
199199
200200The platform-neutral Generic HID descriptor reports the D-pad as buttons 13
@@ -203,8 +203,8 @@ through 16 in the input report. Linux may still route that profile through
203203standard `ABS_HAT0X` and `ABS_HAT0Y` axes.
204204
205205Profiles advertise support for features such as rumble, trigger rumble, RGB
206- LEDs, adaptive triggers, motion sensors, touchpads, battery state, profile
207- specific buttons, and raw output reports. Consumers should query profile and
206+ LEDs, adaptive triggers, motion sensors, touchpads, battery state,
207+ profile- specific buttons, and raw output reports. Consumers should query profile and
208208backend capabilities before warning users about unsupported client features.
209209The `misc1` button represents Share/Capture/Mic Mute-style controls and is
210210available on the generic, Xbox Series, DualSense, and Switch Pro profiles; Xbox
0 commit comments