mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-25 14:57:20 +00:00
[client] spice: added basic mouse smoothing for non-capture mode
Enabled by default, can be disabled with `input:mouseSmoothing`
This commit is contained in:
parent
ce96c77098
commit
579be87597
@ -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 = "mouseSmoothing",
|
||||||
|
.description = "Apply simple mouse smoothing when not in capture mode (helps reduce aliasing)",
|
||||||
|
.type = OPTION_TYPE_BOOL,
|
||||||
|
.value.x_bool = true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.module = "input",
|
.module = "input",
|
||||||
.name = "rawMouse",
|
.name = "rawMouse",
|
||||||
@ -467,6 +474,7 @@ bool config_load(int argc, char * argv[])
|
|||||||
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.mouseSmoothing = option_get_bool("input", "mouseSmoothing" );
|
||||||
params.rawMouse = option_get_bool("input", "rawMouse" );
|
params.rawMouse = option_get_bool("input", "rawMouse" );
|
||||||
params.mouseRedraw = option_get_bool("input", "mouseRedraw" );
|
params.mouseRedraw = option_get_bool("input", "mouseRedraw" );
|
||||||
params.autoCapture = option_get_bool("input", "autoCapture" );
|
params.autoCapture = option_get_bool("input", "autoCapture" );
|
||||||
|
@ -877,15 +877,21 @@ static void cursorToInt(double ex, double ey, int *x, int *y)
|
|||||||
|
|
||||||
static void handleMouseGrabbed(double ex, double ey)
|
static void handleMouseGrabbed(double ex, double ey)
|
||||||
{
|
{
|
||||||
|
int x, y;
|
||||||
|
|
||||||
/* apply sensitivity */
|
/* apply sensitivity */
|
||||||
if (g_cursor.sens != 0)
|
if (g_cursor.sens != 0)
|
||||||
{
|
{
|
||||||
ex = (ex / 10.0) * (g_cursor.sens + 10);
|
ex = (ex / 10.0) * (g_cursor.sens + 10);
|
||||||
ey = (ey / 10.0) * (g_cursor.sens + 10);
|
ey = (ey / 10.0) * (g_cursor.sens + 10);
|
||||||
|
cursorToInt(ex, ey, &x, &y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = floor(ex);
|
||||||
|
y = floor(ey);
|
||||||
}
|
}
|
||||||
|
|
||||||
int x, y;
|
|
||||||
cursorToInt(ex, ey, &x, &y);
|
|
||||||
if (x == 0 && y == 0)
|
if (x == 0 && y == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1023,7 +1029,16 @@ static void handleMouseNormal(double ex, double ey)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int x, y;
|
int x, y;
|
||||||
cursorToInt(ex, ey, &x, &y);
|
if (params.mouseSmoothing)
|
||||||
|
{
|
||||||
|
static struct DoublePoint last = { 0 };
|
||||||
|
last.x = (last.x + ex) / 2.0;
|
||||||
|
last.y = (last.y + ey) / 2.0;
|
||||||
|
cursorToInt(last.x, last.y, &x, &y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
cursorToInt(ex, ey, &x, &y);
|
||||||
|
|
||||||
if (x == 0 && y == 0)
|
if (x == 0 && y == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -138,6 +138,7 @@ struct AppParams
|
|||||||
const char * windowTitle;
|
const char * windowTitle;
|
||||||
bool mouseRedraw;
|
bool mouseRedraw;
|
||||||
int mouseSens;
|
int mouseSens;
|
||||||
|
bool mouseSmoothing;
|
||||||
bool rawMouse;
|
bool rawMouse;
|
||||||
bool autoCapture;
|
bool autoCapture;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user