[client] added new option input:grabKeyboardOnFocus

This commit is contained in:
Geoffrey McRae 2020-11-29 07:12:19 +11:00
parent dea7177d29
commit bbcaaccdcc
3 changed files with 20 additions and 5 deletions

View File

@ -244,6 +244,13 @@ static struct Option options[] =
.type = OPTION_TYPE_BOOL,
.value.x_bool = true,
},
{
.module = "input",
.name = "grabKeyboardOnFocus",
.description = "Grab the keyboard when focused",
.type = OPTION_TYPE_BOOL,
.value.x_bool = true,
},
{
.module = "input",
.name = "escapeKey",
@ -433,11 +440,12 @@ bool config_load(int argc, char * argv[])
params.showAlerts = option_get_bool ("win", "alerts" );
params.quickSplash = option_get_bool ("win", "quickSplash" );
params.grabKeyboard = option_get_bool ("input", "grabKeyboard");
params.escapeKey = option_get_int ("input", "escapeKey" );
params.hideMouse = option_get_bool ("input", "hideCursor" );
params.mouseSens = option_get_int ("input", "mouseSens" );
params.mouseRedraw = option_get_bool ("input", "mouseRedraw" );
params.grabKeyboard = option_get_bool ("input", "grabKeyboard" );
params.grabKeyboardOnFocus = option_get_bool ("input", "grabKeyboardOnFocus");
params.escapeKey = option_get_int ("input", "escapeKey" );
params.hideMouse = option_get_bool ("input", "hideCursor" );
params.mouseSens = option_get_int ("input", "mouseSens" );
params.mouseRedraw = option_get_bool ("input", "mouseRedraw" );
params.minimizeOnFocusLoss = option_get_bool("win", "minimizeOnFocusLoss");

View File

@ -928,6 +928,9 @@ static void handleWindowEnter()
// only called for X11
static void keyboardGrab()
{
if (!params.grabKeyboardOnFocus)
return;
// grab the keyboard so we can intercept WM keys
XGrabKeyboard(
state.wminfo.info.x11.display,
@ -942,6 +945,9 @@ static void keyboardGrab()
// only called for X11
static void keyboardUngrab()
{
if (!params.grabKeyboardOnFocus)
return;
// ungrab the keyboard
XUngrabKeyboard(
state.wminfo.info.x11.display,

View File

@ -151,6 +151,7 @@ struct AppParams
bool ignoreQuit;
bool noScreensaver;
bool grabKeyboard;
bool grabKeyboardOnFocus;
SDL_Scancode escapeKey;
bool showAlerts;
bool captureOnStart;