minui: Add haptic feedback to virtual keys
Change-Id: Ibd9298513626092297bff83f4914b436c4ffbb3a
diff --git a/minui/events.c b/minui/events.c
index 1a9bdea..25a6023 100644
--- a/minui/events.c
+++ b/minui/events.c
@@ -29,6 +29,9 @@
#define MAX_DEVICES 16
+#define VIBRATOR_TIMEOUT_FILE "/sys/class/timed_output/vibrator/enable"
+#define VIBRATOR_TIME_MS 50
+
enum {
DOWN_NOT,
DOWN_SENT,
@@ -65,6 +68,26 @@
return x<0?-x:x;
}
+int vibrate(int timeout_ms)
+{
+ char str[20];
+ int fd;
+ int ret;
+
+ fd = open(VIBRATOR_TIMEOUT_FILE, O_WRONLY);
+ if (fd < 0)
+ return -1;
+
+ ret = snprintf(str, sizeof(str), "%d", timeout_ms);
+ ret = write(fd, str, ret);
+ close(fd);
+
+ if (ret < 0)
+ return -1;
+
+ return 0;
+}
+
/* Returns empty tokens */
static char *vk_strtok_r(char *str, const char *delim, char **save_str)
{
@@ -300,6 +323,8 @@
ev->type = EV_KEY;
ev->code = e->vks[i].scancode;
ev->value = 1;
+
+ vibrate(VIBRATOR_TIME_MS);
return 0;
}
}