aboutsummaryrefslogtreecommitdiffstats
path: root/ui.cpp
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-07-11 14:12:54 +0200
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-07-11 14:12:54 +0200
commitc5e99b90952d3fb326b01c4342c00f9d697c353f (patch)
tree53a488f2fe4e6e458b4dad1419b5e0c9273af0c1 /ui.cpp
parent72be0e39bbc2acf12f1379af569b98f9a5afc015 (diff)
downloadbootable_recovery-replicant-6.0.zip
bootable_recovery-replicant-6.0.tar.gz
bootable_recovery-replicant-6.0.tar.bz2
ui: Add option to change touchscreen orientationHEADreplicant-6.0
On devices like the Galaxy Note 8.0, the touchscreen assumes portrait mode while the recovery is in landscape mode. Allowing to swap x and y dimension and flipping the x dimension makes the touchscreen usable on these devices. Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Diffstat (limited to 'ui.cpp')
-rw-r--r--ui.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/ui.cpp b/ui.cpp
index c7268fb..bb69b13 100644
--- a/ui.cpp
+++ b/ui.cpp
@@ -425,13 +425,24 @@ void RecoveryUI::ProcessAbs(input_device* dev, int code, int value) {
return;
}
}
+#ifndef RECOVERY_TOUCHSCREEN_SWAP_XY_FLIP_X
if (code == ABS_MT_POSITION_X) {
+#else
+ if (code == ABS_MT_POSITION_Y) {
+#endif
dev->saw_pos_x = true;
dev->touch_pos.x = value * fb_dimensions.x / (dev->touch_max.x - dev->touch_min.x);
}
+#ifndef RECOVERY_TOUCHSCREEN_SWAP_XY_FLIP_X
else if (code == ABS_MT_POSITION_Y) {
+#else
+ else if (code == ABS_MT_POSITION_X) {
+#endif
dev->saw_pos_y = true;
dev->touch_pos.y = value * fb_dimensions.y / (dev->touch_max.y - dev->touch_min.y);
+#ifdef RECOVERY_TOUCHSCREEN_SWAP_XY_FLIP_X
+ dev->touch_pos.y = fb_dimensions.y - dev->touch_pos.y;
+#endif
}
}
@@ -480,13 +491,21 @@ void RecoveryUI::calibrate_touch(input_device* dev) {
struct input_absinfo info;
memset(&info, 0, sizeof(info));
+#ifndef RECOVERY_TOUCHSCREEN_SWAP_XY_FLIP_X
if (ioctl(dev->fd, EVIOCGABS(ABS_MT_POSITION_X), &info) == 0) {
+#else
+ if (ioctl(dev->fd, EVIOCGABS(ABS_MT_POSITION_Y), &info) == 0) {
+#endif
dev->touch_min.x = info.minimum;
dev->touch_max.x = info.maximum;
dev->touch_pos.x = info.value;
}
memset(&info, 0, sizeof(info));
+#ifndef RECOVERY_TOUCHSCREEN_SWAP_XY_FLIP_X
if (ioctl(dev->fd, EVIOCGABS(ABS_MT_POSITION_Y), &info) == 0) {
+#else
+ if (ioctl(dev->fd, EVIOCGABS(ABS_MT_POSITION_X), &info) == 0) {
+#endif
dev->touch_min.y = info.minimum;
dev->touch_max.y = info.maximum;
dev->touch_pos.y = info.value;