From 5742a40b87dfdc26df3bd9fe94197ae414ece546 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Tue, 12 Aug 2014 14:52:49 -0500 Subject: Allow blacklisting input devices by build flag Usage: TW_INPUT_BLACKLIST := accelerometer TW_INPUT_BLACKLIST := "accelerometer\x0agyroscope" This can be used to fix touch input on devices where an input device is breaking touch processing in TWRP. We are using new line chars to separate multiple devices and in the make file you specify the new line character with \x0a which is the hex code in ASCII for a new line. The new line character might be a bit of a pain to use as a delimeter, but it is highly unlikely that an OEM will ever name an input device with a new line character in the name. Change-Id: I255136b7a686909a23e649918c661843153c2853 --- minuitwrp/Android.mk | 4 ++++ minuitwrp/events.c | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/minuitwrp/Android.mk b/minuitwrp/Android.mk index 59ee8ba56..fad451f7e 100644 --- a/minuitwrp/Android.mk +++ b/minuitwrp/Android.mk @@ -81,6 +81,10 @@ ifeq ($(TW_IGNORE_MAJOR_AXIS_0), true) LOCAL_CFLAGS += -DTW_IGNORE_MAJOR_AXIS_0 endif +ifneq ($(TW_INPUT_BLACKLIST),) + LOCAL_CFLAGS += -DTW_INPUT_BLACKLIST=$(TW_INPUT_BLACKLIST) +endif + ifneq ($(BOARD_USE_CUSTOM_RECOVERY_FONT),) LOCAL_CFLAGS += -DBOARD_USE_CUSTOM_RECOVERY_FONT=$(BOARD_USE_CUSTOM_RECOVERY_FONT) else diff --git a/minuitwrp/events.c b/minuitwrp/events.c index 7b4655d8e..5a101028b 100644 --- a/minuitwrp/events.c +++ b/minuitwrp/events.c @@ -173,11 +173,26 @@ static int vk_init(struct ev *e) e->ignored = 1; } #else +#ifndef TW_INPUT_BLACKLIST // Blacklist these "input" devices - if (strcmp(e->deviceName, "bma250") == 0 || strcmp(e->deviceName, "bma150") == 0 || strcmp(e->deviceName, "accelerometer") == 0) + if (strcmp(e->deviceName, "bma250") == 0 || strcmp(e->deviceName, "bma150") == 0) == 0) { + printf("blacklisting %s input device\n", e->deviceName); e->ignored = 1; } +#else + char* bl = strdup(EXPAND(TW_INPUT_BLACKLIST)); + char* blacklist = strtok(bl, "\n"); + + while (blacklist != NULL) { + if (strcmp(e->deviceName, blacklist) == 0) { + printf("blacklisting %s input device\n", blacklist); + e->ignored = 1; + } + blacklist = strtok(NULL, "\n"); + } + free(bl); +#endif #endif strcat(vk_path, e->deviceName); -- cgit v1.2.3