#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
axes_labels[0],
#endif
- mt->caps.abs[MTDEV_POSITION_X].minimum,
- mt->caps.abs[MTDEV_POSITION_X].maximum,
+ mt->caps.abs[MTDEV_POSITION_X].minimum * mt->cfg.sensitivity_smalldiv,
+ mt->caps.abs[MTDEV_POSITION_X].maximum * mt->cfg.sensitivity_smalldiv,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
1, 0, 1, Absolute);
#else
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
axes_labels[1],
#endif
- mt->caps.abs[MTDEV_POSITION_Y].minimum,
- mt->caps.abs[MTDEV_POSITION_Y].maximum,
+ mt->caps.abs[MTDEV_POSITION_Y].minimum * mt->cfg.sensitivity_smalldiv,
+ mt->caps.abs[MTDEV_POSITION_Y].maximum * mt->cfg.sensitivity_smalldiv,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
1, 0, 1, Absolute);
#else
int drag_timeout; // How long to wait for a move after tapping? > 0
int drag_wait; // How long to wait before triggering button down? >= 0
int drag_dist; // How far is the finger allowed to move during wait time? >= 0
- double sensitivity_val; // Mouse movement multiplier. >= 0
+ double sensitivity_big; // Mouse movement multiplier. >= 1.0 } real sensitivity is
+ double sensitivity_smalldiv; // Mouse movement divisor. >= 1.0 } big * smalldiv
};
/* Load the MConfig struct with its defaults.
*/
void mconfig_defaults(struct MConfig* cfg);
-/* Set and read ->sensitivity_val
+/* Set and read ->sensitivity_big and _small.
*
* Configuration code must always use these get/set functions.
*
{
if ((gs->move_type == GS_MOVE || !timercmp(&gs->time, &gs->move_wait, <)) && (dx != 0 || dy != 0)) {
if (trigger_drag_start(gs, cfg, dx, dy)) {
- gs->move_dx = (int)(dx*cfg->sensitivity_val);
- gs->move_dy = (int)(dy*cfg->sensitivity_val);
+ gs->move_dx = (int)(dx*cfg->sensitivity_big);
+ gs->move_dy = (int)(dy*cfg->sensitivity_big);
gs->move_type = GS_MOVE;
gs->move_dist = 0;
gs->move_dir = TR_NONE;
void mconfig_set_sensitivity(struct MConfig *cfg, double sensitivity)
{
- cfg->sensitivity_val = sensitivity;
+ if (sensitivity >= 1.0) {
+ cfg->sensitivity_big = sensitivity;
+ cfg->sensitivity_smalldiv = 1.0;
+ } else {
+ cfg->sensitivity_big = 1.0;
+ cfg->sensitivity_smalldiv = 1.0 / sensitivity;
+ }
}
double mconfig_get_sensitivity(const struct MConfig * cfg)
{
- return cfg->sensitivity_val;
+ return cfg->sensitivity_big / cfg->sensitivity_smalldiv;
}
void mconfig_defaults(struct MConfig* cfg)