diff --git a/src/main.cpp b/src/main.cpp index 1586cc8..f1eb4d5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,6 +46,7 @@ const struct option *gamescope_options = (struct option[]){ { "disable-layers", no_argument, nullptr, 0 }, { "debug-layers", no_argument, nullptr, 0 }, { "prefer-output", required_argument, nullptr, 'O' }, + { "default-touch-mode", required_argument, nullptr, 0 }, // steamcompmgr options { "cursor", required_argument, nullptr, 0 }, @@ -89,6 +90,7 @@ const char usage[] = "\n" "Embedded mode options:\n" " -O, --prefer-output list of connectors in order of preference\n" + " --default-touch-mode 0: hover, 1: left, 2: right, 3: middle, 4: passthrough\n" "\n" "Debug options:\n" " --disable-layers disable libliftoff (hardware planes)\n" @@ -235,6 +237,9 @@ int main(int argc, char **argv) g_bUseLayers = false; } else if (strcmp(opt_name, "debug-layers") == 0) { g_bDebugLayers = true; + } else if (strcmp(opt_name, "default-touch-mode") == 0) { + g_nDefaultTouchClickMode = (enum wlserver_touch_click_mode) atoi( optarg ); + g_nTouchClickMode = g_nDefaultTouchClickMode; } break; case '?': diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp index fcd4cb9..24a04be 100644 --- a/src/steamcompmgr.cpp +++ b/src/steamcompmgr.cpp @@ -2711,8 +2711,7 @@ handle_property_notify(Display *dpy, XPropertyEvent *ev) } if (ev->atom == steamTouchClickModeAtom ) { - // Default to 1, left click - g_nTouchClickMode = (enum wlserver_touch_click_mode) get_prop(dpy, root, steamTouchClickModeAtom, 1 ); + g_nTouchClickMode = (enum wlserver_touch_click_mode) get_prop(dpy, root, steamTouchClickModeAtom, g_nDefaultTouchClickMode ); } if (ev->atom == steamStreamingClientAtom) { diff --git a/src/wlserver.cpp b/src/wlserver.cpp index 3d6cb94..72b4761 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp @@ -65,7 +65,8 @@ struct wlserver_content_override { static std::map content_overrides; -enum wlserver_touch_click_mode g_nTouchClickMode = WLSERVER_TOUCH_CLICK_LEFT; +enum wlserver_touch_click_mode g_nDefaultTouchClickMode = WLSERVER_TOUCH_CLICK_LEFT; +enum wlserver_touch_click_mode g_nTouchClickMode = g_nDefaultTouchClickMode; static struct wl_list pending_surfaces = {0}; diff --git a/src/wlserver.hpp b/src/wlserver.hpp index 0b682bd..27417cf 100644 --- a/src/wlserver.hpp +++ b/src/wlserver.hpp @@ -71,6 +71,7 @@ enum wlserver_touch_click_mode { WLSERVER_TOUCH_CLICK_PASSTHROUGH = 4, }; +extern enum wlserver_touch_click_mode g_nDefaultTouchClickMode; extern enum wlserver_touch_click_mode g_nTouchClickMode; void xwayland_surface_role_commit(struct wlr_surface *wlr_surface);