HID: wacom: Add fuzz factor to distance and tilt axes
The fuzz present on the distance and tilt axes is noticable when a puck is present, and userspace (specifically libinput) would like the ability to filter out the noise. To facilitate this, we assign a fuzz value of '1' for the distance and tilt axes. This is large enough to cover most of the natural variation in distance value as the puck is moved around, and enough to cover the jitter in rotation (reported through tilt axes) when the puck is left alone. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
1c74a7f812
commit
bef7e20006
|
@ -493,7 +493,8 @@ static void wacom_retrieve_hid_descriptor(struct hid_device *hdev,
|
||||||
features->x_fuzz = 4;
|
features->x_fuzz = 4;
|
||||||
features->y_fuzz = 4;
|
features->y_fuzz = 4;
|
||||||
features->pressure_fuzz = 0;
|
features->pressure_fuzz = 0;
|
||||||
features->distance_fuzz = 0;
|
features->distance_fuzz = 1;
|
||||||
|
features->tilt_fuzz = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The wireless device HID is basic and layout conflicts with
|
* The wireless device HID is basic and layout conflicts with
|
||||||
|
|
|
@ -2343,12 +2343,13 @@ static void wacom_setup_basic_pro_pen(struct wacom_wac *wacom_wac)
|
||||||
__set_bit(BTN_STYLUS2, input_dev->keybit);
|
__set_bit(BTN_STYLUS2, input_dev->keybit);
|
||||||
|
|
||||||
input_set_abs_params(input_dev, ABS_DISTANCE,
|
input_set_abs_params(input_dev, ABS_DISTANCE,
|
||||||
0, wacom_wac->features.distance_max, 0, 0);
|
0, wacom_wac->features.distance_max, wacom_wac->features.distance_fuzz, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wacom_setup_cintiq(struct wacom_wac *wacom_wac)
|
static void wacom_setup_cintiq(struct wacom_wac *wacom_wac)
|
||||||
{
|
{
|
||||||
struct input_dev *input_dev = wacom_wac->pen_input;
|
struct input_dev *input_dev = wacom_wac->pen_input;
|
||||||
|
struct wacom_features *features = &wacom_wac->features;
|
||||||
|
|
||||||
wacom_setup_basic_pro_pen(wacom_wac);
|
wacom_setup_basic_pro_pen(wacom_wac);
|
||||||
|
|
||||||
|
@ -2358,9 +2359,9 @@ static void wacom_setup_cintiq(struct wacom_wac *wacom_wac)
|
||||||
__set_bit(BTN_TOOL_AIRBRUSH, input_dev->keybit);
|
__set_bit(BTN_TOOL_AIRBRUSH, input_dev->keybit);
|
||||||
|
|
||||||
input_set_abs_params(input_dev, ABS_WHEEL, 0, 1023, 0, 0);
|
input_set_abs_params(input_dev, ABS_WHEEL, 0, 1023, 0, 0);
|
||||||
input_set_abs_params(input_dev, ABS_TILT_X, -64, 63, 0, 0);
|
input_set_abs_params(input_dev, ABS_TILT_X, -64, 63, features->tilt_fuzz, 0);
|
||||||
input_abs_set_res(input_dev, ABS_TILT_X, 57);
|
input_abs_set_res(input_dev, ABS_TILT_X, 57);
|
||||||
input_set_abs_params(input_dev, ABS_TILT_Y, -64, 63, 0, 0);
|
input_set_abs_params(input_dev, ABS_TILT_Y, -64, 63, features->tilt_fuzz, 0);
|
||||||
input_abs_set_res(input_dev, ABS_TILT_Y, 57);
|
input_abs_set_res(input_dev, ABS_TILT_Y, 57);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2506,7 +2507,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
|
||||||
case WACOM_G4:
|
case WACOM_G4:
|
||||||
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
||||||
features->distance_max,
|
features->distance_max,
|
||||||
0, 0);
|
features->distance_fuzz, 0);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
|
||||||
case GRAPHIRE:
|
case GRAPHIRE:
|
||||||
|
@ -2568,7 +2569,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
|
||||||
|
|
||||||
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
||||||
features->distance_max,
|
features->distance_max,
|
||||||
0, 0);
|
features->distance_fuzz, 0);
|
||||||
|
|
||||||
input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
|
input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
|
||||||
input_abs_set_res(input_dev, ABS_Z, 287);
|
input_abs_set_res(input_dev, ABS_Z, 287);
|
||||||
|
@ -2627,7 +2628,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
|
||||||
__set_bit(BTN_STYLUS2, input_dev->keybit);
|
__set_bit(BTN_STYLUS2, input_dev->keybit);
|
||||||
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
input_set_abs_params(input_dev, ABS_DISTANCE, 0,
|
||||||
features->distance_max,
|
features->distance_max,
|
||||||
0, 0);
|
features->distance_fuzz, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BAMBOO_PAD:
|
case BAMBOO_PAD:
|
||||||
|
|
|
@ -177,6 +177,7 @@ struct wacom_features {
|
||||||
int y_fuzz;
|
int y_fuzz;
|
||||||
int pressure_fuzz;
|
int pressure_fuzz;
|
||||||
int distance_fuzz;
|
int distance_fuzz;
|
||||||
|
int tilt_fuzz;
|
||||||
unsigned quirks;
|
unsigned quirks;
|
||||||
unsigned touch_max;
|
unsigned touch_max;
|
||||||
int oVid;
|
int oVid;
|
||||||
|
|
Loading…
Reference in New Issue