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
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
^^^^^^^^^^^

View File

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

View File

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

View File

@ -1720,7 +1720,9 @@ namespace platf {
// We support pen and touch input on Win10 1809+
if (GetProcAddress(GetModuleHandleA("user32.dll"), "CreateSyntheticPointerDevice") != nullptr) {
caps |= platform_caps::pen_touch;
if (config::input.native_pen_touch) {
caps |= platform_caps::pen_touch;
}
}
else {
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.
</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>
<!--Files Tab-->
<div v-if="currentTab === 'av'" class="config-page">
@ -877,6 +889,7 @@
"min_log_level": 2,
"motion_as_ds4": "enabled",
"mouse": "enabled",
"native_pen_touch": "enabled",
"nvenc_h264_cavlc": "disabled",
"nvenc_preset": "1",
"nvenc_realtime_hags": "enabled",