diff options
Diffstat (limited to 'toys/android/sendevent.c')
-rw-r--r-- | toys/android/sendevent.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/toys/android/sendevent.c b/toys/android/sendevent.c new file mode 100644 index 00000000..8e982e0b --- /dev/null +++ b/toys/android/sendevent.c @@ -0,0 +1,37 @@ +/* sendevent.c - Send Linux input events. + * + * Copyright 2016 The Android Open Source Project + +USE_SENDEVENT(NEWTOY(sendevent, "<4>4", TOYFLAG_USR|TOYFLAG_SBIN)) + +config SENDEVENT + bool "sendevent" + default y + depends on TOYBOX_ON_ANDROID + help + usage: sendevent DEVICE TYPE CODE VALUE + + Sends a Linux input event. +*/ + +#define FOR_sendevent +#include "toys.h" + +#include <linux/input.h> + +void sendevent_main(void) +{ + int fd = xopen(*toys.optargs, O_RDWR); + int version; + struct input_event ev; + + if (ioctl(fd, EVIOCGVERSION, &version)) + perror_exit("EVIOCGVERSION failed for %s", *toys.optargs); + + memset(&ev, 0, sizeof(ev)); + // TODO: error checking and support for named constants. + ev.type = atoi(toys.optargs[1]); + ev.code = atoi(toys.optargs[2]); + ev.value = atoi(toys.optargs[3]); + xwrite(fd, &ev, sizeof(ev)); +} |