[client] recovery: add force keybind
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled

Add a configured escape key plus Shift+R command that requests display
recovery from the LGMP transport and switches video to SPICE.

Track the request on the main thread, report its asynchronous result,
and return its producer instance with the request serial for exact
correlation.

Preserve normal escape+R rotation behavior, including custom Shift
escape keys.
This commit is contained in:
Geoffrey McRae
2026-08-20 16:53:10 +10:00
parent 60a51fccdf
commit e2ee9244ed
8 changed files with 248 additions and 17 deletions

View File

@@ -116,6 +116,7 @@ struct AppState
atomic_bool fallbackEndpointMismatch;
atomic_uint transportLost;
atomic_bool forceRecovery;
uint8_t guestUUID[16];
bool guestUUIDValid;
@@ -130,6 +131,8 @@ struct AppState
uint64_t escapeTime;
int escapeAction;
bool escapeKeys[KEY_MAX];
bool escapeShiftKeys[KEY_MAX];
atomic_uint keyModifiers;
bool escapeHelp;
struct ll * bindings;
bool haveSrcSize;
@@ -265,8 +268,11 @@ struct KeybindHandle
{
int sc;
KeybindFn callback;
KeybindFn shiftCallback;
const char * description;
const char * shiftDescription;
void * opaque;
void * shiftOpaque;
};
enum WarpState