summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2022-02-03 10:12:43 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2022-02-03 14:39:54 +1000
commit771c43776e62d3f824753e123f936f3c0ef4c650 (patch)
treed8b0f8053ed75607841f011252c43ca39be366e4
parent6099e5f22b949d472f3f30282f5bdf6d84ef3073 (diff)
downloadxf86-input-wacom-771c43776e62d3f824753e123f936f3c0ef4c650.tar.gz
wacom-record: print the mask of available values
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--src/gwacom/wacom-device.h2
-rw-r--r--tools/wacom-record.c29
2 files changed, 31 insertions, 0 deletions
diff --git a/src/gwacom/wacom-device.h b/src/gwacom/wacom-device.h
index 2108661..3ac3245 100644
--- a/src/gwacom/wacom-device.h
+++ b/src/gwacom/wacom-device.h
@@ -100,6 +100,8 @@ enum WacomEventAxis {
WACOM_WHEEL = (1 << 9),
WACOM_RING = (1 << 10),
WACOM_RING2 = (1 << 11),
+
+ _WACOM_EVENT_AXIS_LAST = WACOM_RING2,
};
/* The pointer argument to all the event signals. If the mask is set for
diff --git a/tools/wacom-record.c b/tools/wacom-record.c
index 7562351..d096653 100644
--- a/tools/wacom-record.c
+++ b/tools/wacom-record.c
@@ -58,6 +58,35 @@ static void debug_message(WacomDevice *device, int debug_level, const char *func
static inline void print_axes(const WacomEventData *data)
{
+ char buf[1024] = {0};
+ const char *prefix = "";
+ uint32_t mask = data->mask;
+
+ for (uint32_t flag = 0x1; flag <= _WACOM_EVENT_AXIS_LAST; flag <<= 1) {
+ const char *name = "unknown axis";
+ if ((mask & flag) == 0)
+ continue;
+
+ switch (flag) {
+ case WACOM_X: name = "x"; break;
+ case WACOM_Y: name = "y"; break;
+ case WACOM_PRESSURE: name = "pressure"; break;
+ case WACOM_TILT_X: name = "tilt-x"; break;
+ case WACOM_TILT_Y: name = "tilt-y"; break;
+ case WACOM_ROTATION: name = "rotation"; break;
+ case WACOM_THROTTLE: name = "throttle"; break;
+ case WACOM_WHEEL: name = "wheel"; break;
+ case WACOM_RING: name = "ring"; break;
+ case WACOM_RING2: name = "ring"; break;
+ }
+
+ g_assert_cmpint(strlen(buf) + strlen(prefix) + strlen(name), <, sizeof(buf));
+
+ snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "%s\"%s\"", prefix, name);
+ prefix = ", ";
+ }
+
+ printf(" mask: [ %s ]\n", buf);
printf(" axes: { x: %5d, y: %5d, pressure: %4d, tilt: [%3d,%3d], rotation: %3d, throttle: %3d, wheel: %3d, rings: [%3d, %3d] }\n",
data->x, data->y,
(data->mask & WACOM_PRESSURE) ? data->pressure : 0,