summaryrefslogtreecommitdiffstats
path: root/minuitwrp/events.c
diff options
context:
space:
mode:
authorDees Troy <dees_troy@teamw.in>2014-02-25 17:58:37 +0100
committerGerrit Code Review <gerrit2@gerrit>2014-02-25 17:58:37 +0100
commita0180a21e36fa383e6776e3950e1a5b7e7cea649 (patch)
treec36af3d212a6108fc4ede9ea75c80ebd9231871a /minuitwrp/events.c
parentfix slash between directories (diff)
parentLook also for buttons when checking if input device is mouse (diff)
downloadandroid_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar.gz
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar.bz2
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar.lz
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar.xz
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.tar.zst
android_bootable_recovery-a0180a21e36fa383e6776e3950e1a5b7e7cea649.zip
Diffstat (limited to 'minuitwrp/events.c')
-rw-r--r--minuitwrp/events.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/minuitwrp/events.c b/minuitwrp/events.c
index 94942ba7b..f07fc14b4 100644
--- a/minuitwrp/events.c
+++ b/minuitwrp/events.c
@@ -250,6 +250,9 @@ static int vk_init(struct ev *e)
#define OFF(x) ((x)%BITS_PER_LONG)
#define LONG(x) ((x)/BITS_PER_LONG)
#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1)
+
+// Check for EV_REL (REL_X and REL_Y) and, because touchscreens can have those too,
+// check also for EV_KEY (BTN_LEFT and BTN_RIGHT)
static void check_mouse(int fd)
{
if(has_mouse)
@@ -259,12 +262,18 @@ static void check_mouse(int fd)
memset(bit, 0, sizeof(bit));
ioctl(fd, EVIOCGBIT(0, EV_MAX), bit[0]);
- if(!test_bit(EV_REL, bit[0]))
+ if(!test_bit(EV_REL, bit[0]) || !test_bit(EV_KEY, bit[0]))
return;
ioctl(fd, EVIOCGBIT(EV_REL, KEY_MAX), bit[EV_REL]);
- if(test_bit(REL_X, bit[EV_REL]) && test_bit(REL_Y, bit[EV_REL]))
- has_mouse = 1;
+ if(!test_bit(REL_X, bit[EV_REL]) || !test_bit(REL_Y, bit[EV_REL]))
+ return;
+
+ ioctl(fd, EVIOCGBIT(EV_KEY, KEY_MAX), bit[EV_KEY]);
+ if(!test_bit(BTN_LEFT, bit[EV_KEY]) || !test_bit(BTN_RIGHT, bit[EV_KEY]))
+ return;
+
+ has_mouse = 1;
}
int ev_has_mouse(void)