Fix tablet tilt values returning bad values
This commit is contained in:
parent
d58dfd4a7c
commit
75a58360fd
1 changed files with 11 additions and 7 deletions
|
@ -225,7 +225,7 @@ bool DisplayServerX11::_refresh_device_info() {
|
||||||
if (class_info->number == VALUATOR_ABSX && class_info->mode == XIModeAbsolute) {
|
if (class_info->number == VALUATOR_ABSX && class_info->mode == XIModeAbsolute) {
|
||||||
resolution_x = class_info->resolution;
|
resolution_x = class_info->resolution;
|
||||||
abs_x_min = class_info->min;
|
abs_x_min = class_info->min;
|
||||||
abs_y_max = class_info->max;
|
abs_x_max = class_info->max;
|
||||||
absolute_mode = true;
|
absolute_mode = true;
|
||||||
} else if (class_info->number == VALUATOR_ABSY && class_info->mode == XIModeAbsolute) {
|
} else if (class_info->number == VALUATOR_ABSY && class_info->mode == XIModeAbsolute) {
|
||||||
resolution_y = class_info->resolution;
|
resolution_y = class_info->resolution;
|
||||||
|
@ -239,8 +239,8 @@ bool DisplayServerX11::_refresh_device_info() {
|
||||||
tilt_x_min = class_info->min;
|
tilt_x_min = class_info->min;
|
||||||
tilt_x_max = class_info->max;
|
tilt_x_max = class_info->max;
|
||||||
} else if (class_info->number == VALUATOR_TILTY && class_info->mode == XIModeAbsolute) {
|
} else if (class_info->number == VALUATOR_TILTY && class_info->mode == XIModeAbsolute) {
|
||||||
tilt_x_min = class_info->min;
|
tilt_y_min = class_info->min;
|
||||||
tilt_x_max = class_info->max;
|
tilt_y_max = class_info->max;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3189,8 +3189,10 @@ void DisplayServerX11::process_events() {
|
||||||
Map<int, Vector2>::Element *pen_tilt_x = xi.pen_tilt_x_range.find(device_id);
|
Map<int, Vector2>::Element *pen_tilt_x = xi.pen_tilt_x_range.find(device_id);
|
||||||
if (pen_tilt_x) {
|
if (pen_tilt_x) {
|
||||||
Vector2 pen_tilt_x_range = pen_tilt_x->value();
|
Vector2 pen_tilt_x_range = pen_tilt_x->value();
|
||||||
if (pen_tilt_x_range != Vector2()) {
|
if (pen_tilt_x_range[0] != 0 && *values < 0) {
|
||||||
xi.tilt.x = ((*values - pen_tilt_x_range[0]) / (pen_tilt_x_range[1] - pen_tilt_x_range[0])) * 2 - 1;
|
xi.tilt.x = *values / -pen_tilt_x_range[0];
|
||||||
|
} else if (pen_tilt_x_range[1] != 0) {
|
||||||
|
xi.tilt.x = *values / pen_tilt_x_range[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3201,8 +3203,10 @@ void DisplayServerX11::process_events() {
|
||||||
Map<int, Vector2>::Element *pen_tilt_y = xi.pen_tilt_y_range.find(device_id);
|
Map<int, Vector2>::Element *pen_tilt_y = xi.pen_tilt_y_range.find(device_id);
|
||||||
if (pen_tilt_y) {
|
if (pen_tilt_y) {
|
||||||
Vector2 pen_tilt_y_range = pen_tilt_y->value();
|
Vector2 pen_tilt_y_range = pen_tilt_y->value();
|
||||||
if (pen_tilt_y_range != Vector2()) {
|
if (pen_tilt_y_range[0] != 0 && *values < 0) {
|
||||||
xi.tilt.y = ((*values - pen_tilt_y_range[0]) / (pen_tilt_y_range[1] - pen_tilt_y_range[0])) * 2 - 1;
|
xi.tilt.y = *values / -pen_tilt_y_range[0];
|
||||||
|
} else if (pen_tilt_y_range[1] != 0) {
|
||||||
|
xi.tilt.y = *values / pen_tilt_y_range[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue