mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 02:51:10 +00:00
* feat(gamescope): a three way switch for relative mouse motion Games that confine the cursor and warp it back to read movement never reach the nested hints rule, so their aim stays bounded by the screen. The convar defaults to 0 and leaves that rule alone; 1 forces relative motion for the focused game, 2 keeps the pointer absolute even when the rule would apply. (cherry picked from commitdb3d7555e0) * feat(input): the session carries a relative mouse mode per game Reads the mode from the game's gesture config, hands it to gamescope as gamescope_relative_mouse, and pushes a change to the running session through gamescopectl. (cherry picked from commite350d88464) * feat(drawer): the relative mouse switch is a three way choice Auto leaves it to the game, on forces relative motion, off keeps the pointer absolute. Named in all 32 locales so none of the three falls back to English. (cherry picked from commite96a187e02) * fix(input): follow the focused game's relative mouse mode Switching to a game whose saved mode differs left the session on the previous game's mode, since only the drawer state was refreshed. The requests also ran on a thread per selection, so two quick picks could reach gamescope out of order. (cherry picked from commit7ff8c5d568) * fix(input): retry the relative mouse mode gamescope did not take The drawer state moved before the request ran, so a failed request left the two out of step and the next focus change skipped the resend. (cherry picked from commitcf0f82d8cd) * fix(input): the relative mouse mode tracks the latest choice The guest agent answers ok when it handled the exec, so a failing gamescopectl was recorded as applied. Reconcile the newest desired mode on the worker thread after each request, and only mark applied when the command really exited zero. (cherry picked from commit5f5e3bd52e) * gamescope: a hidden cursor under any pointer constraint is relative Games that hide the cursor and confine the pointer had no lock hint, so the nested pointer stayed absolute and the camera froze. * Treat a hardware mouse as a real mouse in sessions A mouse now moves the guest pointer by relative motion for the whole session through pointer capture, so it no longer stops at screen edges or reaches system gestures. Its cursor stays visible in every touch mode, follows the game showing or hiding it, and clicks no longer press on-screen controls. * gamescope: use the mouse test release * Direct touch turns the camera while a game holds the pointer A swipe in direct touch now sends relative motion when a game has the pointer locked, including when the lock starts during the swipe, as when a game hides the cursor while a button is held. * Address review findings on mouse and touch input Keep touchpad taps on on-screen controls, cancel a pending long press during a locked swipe, let the three-finger gesture cancel a locked swipe, refresh capture when the output changes, and use the menu's key for the relative mouse setting. * Keep locked touches inside the game picture and free the mouse in touch editors * End touch editor ownership when the editor goes away * Bring the mouse cursor back when a touch editor closes * Release a pointer lock at the game's pointer * gamescope: use the pointer position test release * Fit the X screen to a fullscreen window larger than it * gamescope: use the X screen fit test release * Return the X screen when no game window has focus * gamescope: use the X screen return test release * ci: avoid redundant gamescope builds * fix: hardware mouse in Desktop and pointer warping games KWin nested on the host only reads relative motion while its own pointer lock is on, so a program that locked the pointer in Desktop (Blender orbit and pan) stopped receiving motion. A captured hardware mouse now turns that lock on, and a real Right Ctrl no longer toggles it. Gamescope follows a game's pointer warps instead of overriding them, and absolute motion also sends raw motion. Also retries relative mouse requests, tidies the unplug path, passes side buttons and fits a second oversized window correctly. * chore: use the gamescope build with patch 0131 * fix: Desktop mouse lock keeps retrying after early attempts fail * fix: hold the key that turns on the Desktop mouse lock KWin ignores a press and release delivered together. * fix: gamescope enters warp following sooner and keeps steady motion * chore: use gamescope p26 * Capture system keys in a focused session and keep the first Desktop mouse motion in place * Use the p27 gamescope build * Update the system keys row test * Recognise a captured mouse so the Desktop grab can start * Keep touch warps out of relative motion * Send Esc from keyboards that report it as Back * Use the p28 gamescope build * Release captured keys on pause, forward motion during a grab and wait for a pending screen fit * Use the p29 gamescope build * fix(input): keep held system keys consumed until they are released Copy each captured key event, since the service owns the original only for the callback, and consume the physical release of a key already released to the guest. Use the published gamescope p20. * fix(input): capture a system key only from its first press --------- Co-authored-by: kingokksa <kingokksa@qq.com> Co-authored-by: maxjivi05 <6025299+maxjivi05@users.noreply.github.com>