Il 03/02/2014 10:42, Gerd Hoffmann ha scritto:
Hi,
+ switch (graphic_rotate) {
+ case 90:
+ if (evt->abs->axis == INPUT_AXIS_X) {
+ evt->abs->axis = INPUT_AXIS_Y;
+ }
+ if (evt->abs->axis == INPUT_AXIS_Y) {
Need else here, same for "case 270".
Why?
Because otherwise both axes become X. When the first if triggers the
axis changes to Y, and then it becomes X again. :)
+ evt->abs->axis = INPUT_AXIS_X;
+ evt->abs->axis = INPUT_EVENT_ABS_SIZE - 1 - evt->abs->axis;
->value here, not ->axis.
Oops, indeed.
It looks like doing it right for relative is easy:
But what is the point when this isn't used anyway?
In what sense it is not used? Because you do not have e.g. a USB
controller in the only machines that support graphic_rotate?
Paolo
if (graphic_rotate == 0) {
return;
}
if (move->axis != INPUT_AXIS_X && move->axis != INPUT_AXIS_Y) {
return;
}
if ((graphic_rotate <= 180 && move->axis == INPUT_AXIS_X) ||
(graphic_rotate >= 180 && move->axis == INPUT_AXIS_Y)) {
if (kind == INPUT_EVENT_KIND_ABS) {
move->value = INPUT_EVENT_ABS_SIZE - 1 - move->value;
} else {
move->value = -move->value;
}
}
if (graphic_rotate == 90 || graphic_rotate == 270) {
move->axis ^= INPUT_AXIS_X ^ INPUT_AXIS_Y;
}
Saves a few lines but it's a bit harder to figure what is going on ...
cheers,
Gerd