mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-10 08:38:20 +00:00
[client] added new feature input:rawMouse for RAW mouse input
This option allows those that want it (gamers) to bypass all X11 mouse acceleration and smoothing giving true 1:1 input to the guest while in capture mode. Note: only supported for X11!
This commit is contained in:
parent
c99561c2ac
commit
526572c9c9
@ -282,6 +282,13 @@ static struct Option options[] =
|
|||||||
.type = OPTION_TYPE_INT,
|
.type = OPTION_TYPE_INT,
|
||||||
.value.x_int = 0,
|
.value.x_int = 0,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.module = "input",
|
||||||
|
.name = "rawMouse",
|
||||||
|
.description = "Use RAW mouse input when in capture mode (good for gaming)",
|
||||||
|
.type = OPTION_TYPE_BOOL,
|
||||||
|
.value.x_bool = false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.module = "input",
|
.module = "input",
|
||||||
.name = "mouseRedraw",
|
.name = "mouseRedraw",
|
||||||
@ -447,13 +454,14 @@ bool config_load(int argc, char * argv[])
|
|||||||
params.showAlerts = option_get_bool ("win", "alerts" );
|
params.showAlerts = option_get_bool ("win", "alerts" );
|
||||||
params.quickSplash = option_get_bool ("win", "quickSplash" );
|
params.quickSplash = option_get_bool ("win", "quickSplash" );
|
||||||
|
|
||||||
params.grabKeyboard = option_get_bool ("input", "grabKeyboard" );
|
params.grabKeyboard = option_get_bool("input", "grabKeyboard" );
|
||||||
params.grabKeyboardOnFocus = option_get_bool ("input", "grabKeyboardOnFocus");
|
params.grabKeyboardOnFocus = option_get_bool("input", "grabKeyboardOnFocus");
|
||||||
params.escapeKey = option_get_int ("input", "escapeKey" );
|
params.escapeKey = option_get_int ("input", "escapeKey" );
|
||||||
params.ignoreWindowsKeys = option_get_bool ("input", "ignoreWindowsKeys" );
|
params.ignoreWindowsKeys = option_get_bool("input", "ignoreWindowsKeys" );
|
||||||
params.hideMouse = option_get_bool ("input", "hideCursor" );
|
params.hideMouse = option_get_bool("input", "hideCursor" );
|
||||||
params.mouseSens = option_get_int ("input", "mouseSens" );
|
params.mouseSens = option_get_int ("input", "mouseSens" );
|
||||||
params.mouseRedraw = option_get_bool ("input", "mouseRedraw" );
|
params.rawMouse = option_get_bool("input", "rawMouse" );
|
||||||
|
params.mouseRedraw = option_get_bool("input", "mouseRedraw" );
|
||||||
|
|
||||||
params.minimizeOnFocusLoss = option_get_bool("win", "minimizeOnFocusLoss");
|
params.minimizeOnFocusLoss = option_get_bool("win", "minimizeOnFocusLoss");
|
||||||
|
|
||||||
|
@ -1254,24 +1254,21 @@ int eventFilter(void * userdata, SDL_Event * event)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
XIRawEvent *raw = cookie->data;
|
XIRawEvent *raw = cookie->data;
|
||||||
|
double axis[2];
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* true RAW mode, however the UX is pretty poor with it, perhaps
|
|
||||||
* make this an option later? */
|
|
||||||
const double x = raw->raw_values[0];
|
|
||||||
const double y = raw->raw_values[1];
|
|
||||||
handleMouseRawEvent(x, y);
|
|
||||||
#else
|
|
||||||
/* select the active validators for the X & Y axis */
|
/* select the active validators for the X & Y axis */
|
||||||
double *valuator = raw->valuators.values;
|
double *valuator = raw->valuators.values;
|
||||||
double *value = raw->raw_values;
|
double *value = raw->raw_values;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
double axis[2];
|
|
||||||
for(int i = 0; i < raw->valuators.mask_len * 8; ++i)
|
for(int i = 0; i < raw->valuators.mask_len * 8; ++i)
|
||||||
{
|
{
|
||||||
if (XIMaskIsSet(raw->valuators.mask, i))
|
if (XIMaskIsSet(raw->valuators.mask, i))
|
||||||
{
|
{
|
||||||
axis[count++] = *valuator;
|
if (params.rawMouse)
|
||||||
|
axis[count++] = *value;
|
||||||
|
else
|
||||||
|
axis[count++] = *valuator;
|
||||||
|
|
||||||
if (count == 2)
|
if (count == 2)
|
||||||
break;
|
break;
|
||||||
++valuator;
|
++valuator;
|
||||||
@ -1282,15 +1279,16 @@ int eventFilter(void * userdata, SDL_Event * event)
|
|||||||
/* filter out duplicate events */
|
/* filter out duplicate events */
|
||||||
static Time prev_time = 0;
|
static Time prev_time = 0;
|
||||||
static double prev_axis[2] = {0};
|
static double prev_axis[2] = {0};
|
||||||
if (raw->time == prev_time && axis[0] == prev_axis[0] && axis[1] == prev_axis[1])
|
if (raw->time == prev_time &&
|
||||||
|
axis[0] == prev_axis[0] &&
|
||||||
|
axis[1] == prev_axis[1])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
prev_time = raw->time;
|
prev_time = raw->time;
|
||||||
prev_axis[0] = axis[0];
|
prev_axis[0] = axis[0];
|
||||||
prev_axis[1] = axis[1];
|
prev_axis[1] = axis[1];
|
||||||
|
|
||||||
|
|
||||||
handleMouseRawEvent(axis[0], axis[1]);
|
handleMouseRawEvent(axis[0], axis[1]);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -138,6 +138,7 @@ struct AppParams
|
|||||||
const char * windowTitle;
|
const char * windowTitle;
|
||||||
bool mouseRedraw;
|
bool mouseRedraw;
|
||||||
int mouseSens;
|
int mouseSens;
|
||||||
|
bool rawMouse;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CBRequest
|
struct CBRequest
|
||||||
|
Loading…
Reference in New Issue
Block a user