Add option to disable native pen/touch support

This commit is contained in:
Cameron Gutman 2023-12-31 19:03:07 -06:00
parent 729922d2c0
commit 3ca75bee19
5 changed files with 38 additions and 1 deletions

View File

@ -289,6 +289,24 @@ high_resolution_scrolling
high_resolution_scrolling = enabled high_resolution_scrolling = enabled
native_pen_touch
^^^^^^^^^^^^^^^^
**Description**
When enabled, Sunshine will pass through native pen/touch events from Moonlight clients.
This can be useful to disable for older applications without native pen/touch support.
.. Caution:: Applies to Windows only.
**Default**
``enabled``
**Example**
.. code-block:: text
native_pen_touch = enabled
keybindings keybindings
^^^^^^^^^^^ ^^^^^^^^^^^

View File

@ -428,6 +428,7 @@ namespace config {
true, // controller enabled true, // controller enabled
true, // always send scancodes true, // always send scancodes
true, // high resolution scrolling true, // high resolution scrolling
true, // native pen/touch support
}; };
sunshine_t sunshine { sunshine_t sunshine {
@ -1061,6 +1062,8 @@ namespace config {
bool_f(vars, "always_send_scancodes", input.always_send_scancodes); bool_f(vars, "always_send_scancodes", input.always_send_scancodes);
bool_f(vars, "high_resolution_scrolling", input.high_resolution_scrolling); bool_f(vars, "high_resolution_scrolling", input.high_resolution_scrolling);
bool_f(vars, "native_pen_touch", input.native_pen_touch);
int port = sunshine.port; int port = sunshine.port;
int_between_f(vars, "port"s, port, { 1024 + nvhttp::PORT_HTTPS, 65535 - rtsp_stream::RTSP_SETUP_PORT }); int_between_f(vars, "port"s, port, { 1024 + nvhttp::PORT_HTTPS, 65535 - rtsp_stream::RTSP_SETUP_PORT });
sunshine.port = (std::uint16_t) port; sunshine.port = (std::uint16_t) port;

View File

@ -123,6 +123,7 @@ namespace config {
bool always_send_scancodes; bool always_send_scancodes;
bool high_resolution_scrolling; bool high_resolution_scrolling;
bool native_pen_touch;
}; };
namespace flag { namespace flag {

View File

@ -1720,7 +1720,9 @@ namespace platf {
// We support pen and touch input on Win10 1809+ // We support pen and touch input on Win10 1809+
if (GetProcAddress(GetModuleHandleA("user32.dll"), "CreateSyntheticPointerDevice") != nullptr) { if (GetProcAddress(GetModuleHandleA("user32.dll"), "CreateSyntheticPointerDevice") != nullptr) {
caps |= platform_caps::pen_touch; if (config::input.native_pen_touch) {
caps |= platform_caps::pen_touch;
}
} }
else { else {
BOOST_LOG(warning) << "Touch input requires Windows 10 1809 or later"sv; BOOST_LOG(warning) << "Touch input requires Windows 10 1809 or later"sv;

View File

@ -404,6 +404,18 @@
This can be useful to disable for older applications that scroll too fast with high resolution scroll events. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.
</div> </div>
</div> </div>
<!-- Native pen/touch support -->
<div class="mb-3" v-if="platform === 'windows'">
<label for="native_pen_touch" class="form-label">Native Pen/Touch Support</label>
<select id="native_pen_touch" class="form-select" v-model="config.native_pen_touch">
<option value="disabled">Disabled</option>
<option value="enabled">Enabled</option>
</select>
<div class="form-text">
When enabled, Sunshine will pass through native pen/touch events from Moonlight clients.<br />
This can be useful to disable for older applications without native pen/touch support.
</div>
</div>
</div> </div>
<!--Files Tab--> <!--Files Tab-->
<div v-if="currentTab === 'av'" class="config-page"> <div v-if="currentTab === 'av'" class="config-page">
@ -877,6 +889,7 @@
"min_log_level": 2, "min_log_level": 2,
"motion_as_ds4": "enabled", "motion_as_ds4": "enabled",
"mouse": "enabled", "mouse": "enabled",
"native_pen_touch": "enabled",
"nvenc_h264_cavlc": "disabled", "nvenc_h264_cavlc": "disabled",
"nvenc_preset": "1", "nvenc_preset": "1",
"nvenc_realtime_hags": "enabled", "nvenc_realtime_hags": "enabled",