[PATCH evemu] Print the state of SW/SND/LED in the evemu describe comments
Peter Hutterer
peter.hutterer at who-t.net
Sun Jul 19 16:56:42 PDT 2015
We merely print the state of the device in the comment section but don't
record that state in the actual description file. There is no evdev ioctl to
set the state of a device without sending an event through the device, so we
can't replicate the state without altering the recorded event sequence.
For this reason, we use the libevdev shortcut to query the state rather than
adding an evemu-specific API to get the state.
EV_KEY can give us the state but we don't print it, unlike the others a key
state is too transient.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
src/evemu.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/evemu.c b/src/evemu.c
index 642597b..5a7f7d0 100644
--- a/src/evemu.c
+++ b/src/evemu.c
@@ -300,6 +300,7 @@ static void write_abs(FILE *fp, int index, const struct input_absinfo *abs)
static void write_desc(const struct evemu_device *dev, FILE *fp)
{
int i, j;
+ int state;
fprintf(fp, "# Input device name: \"%s\"\n", evemu_get_name(dev));
fprintf(fp, "# Input device ID: bus %#04x vendor %#04x product %#04x version %#04x\n",
evemu_get_id_bustype(dev), evemu_get_id_vendor(dev),
@@ -316,7 +317,8 @@ static void write_desc(const struct evemu_device *dev, FILE *fp)
fprintf(fp, "# Event code %d (%s)\n",
j, libevdev_event_code_get_name(i, j));
- if (i == EV_ABS) {
+ switch(i) {
+ case EV_ABS:
fprintf(fp, "# Value %6d\n"
"# Min %6d\n"
"# Max %6d\n"
@@ -329,6 +331,14 @@ static void write_desc(const struct evemu_device *dev, FILE *fp)
evemu_get_abs_fuzz(dev, j),
evemu_get_abs_flat(dev, j),
evemu_get_abs_resolution(dev, j));
+ case EV_LED:
+ case EV_SND:
+ case EV_SW:
+ state = libevdev_get_event_value(dev->evdev, i, j);
+ fprintf(fp, "# State %d\n", state);
+ break;
+ default:
+ break;
}
}
}
--
2.4.3
More information about the Input-tools
mailing list