diff options
author | Dees Troy <dees_troy@teamw.in> | 2014-02-25 17:58:37 +0100 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit> | 2014-02-25 17:58:37 +0100 |
commit | a0180a21e36fa383e6776e3950e1a5b7e7cea649 (patch) | |
tree | c36af3d212a6108fc4ede9ea75c80ebd9231871a | |
parent | fix slash between directories (diff) | |
parent | Look also for buttons when checking if input device is mouse (diff) | |
download | android_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 |
-rw-r--r-- | minuitwrp/events.c | 15 |
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) |