diff options
author | Elliott Hughes <enh@google.com> | 2016-07-13 17:00:58 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2016-07-14 17:19:55 -0500 |
commit | be6eb9841a781269265fee869c3324b91a170bcf (patch) | |
tree | e2a4a859153745946004946f0b7b4e63c64e3262 /toys/android/sendevent.c | |
parent | c06ed8daaf1519026d1d92dd15e515886788398a (diff) | |
download | toybox-be6eb9841a781269265fee869c3324b91a170bcf.tar.gz |
Add Android's "sendevent".
The lack of support for named constants is not a regression relative
to the toolbox implementation.
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)); +} |