Extends the parameters by filling in missing data that is known beforehand (see the rotation-related hunk) and adding a new 'prop_type' field to allow for better type handling. While this info won't really be used until '_get' and '_set' appear, the 'get_param' function has been updated to take advantage of them in the meantime.
Signed-off-by: Jason Gerecke <killert...@gmail.com> --- tools/xsetwacom.c | 64 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 45 insertions(+), 19 deletions(-) diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c index 7670d4d..7202b23 100644 --- a/tools/xsetwacom.c +++ b/tools/xsetwacom.c @@ -86,6 +86,7 @@ typedef struct _param const char *name; /* param name as specified by the user */ const char *desc; /* description */ const char *prop_name; /* property name */ + const int prop_type; /* property type */ const int prop_format; /* property format */ const int prop_offset; /* offset (index) into the property values */ const int arg_count; /* extra number of items after first one */ @@ -120,6 +121,7 @@ static param_t parameters[] = .name = "Area", .desc = "Valid tablet area in device coordinates. ", .prop_name = WACOM_PROP_TABLET_AREA, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 4, @@ -137,6 +139,7 @@ static param_t parameters[] = .desc = "Level of debugging trace for individual tools " "(default is 0 [off]). ", .prop_name = WACOM_PROP_DEBUGLEVELS, + .prop_type = XA_INTEGER, .prop_format = 8, .prop_offset = 0, .arg_count = 1, @@ -147,6 +150,7 @@ static param_t parameters[] = "code paths between all tools " "associated with the same tablet (default is 0 [off]). ", .prop_name = WACOM_PROP_DEBUGLEVELS, + .prop_type = XA_INTEGER, .prop_format = 8, .prop_offset = 1, .arg_count = 1, @@ -155,6 +159,7 @@ static param_t parameters[] = .name = "Suppress", .desc = "Number of points trimmed (default is 2). ", .prop_name = WACOM_PROP_SAMPLE, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -164,6 +169,7 @@ static param_t parameters[] = .desc = "Number of raw data used to filter the points " "(default is 4). ", .prop_name = WACOM_PROP_SAMPLE, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 1, .arg_count = 1, @@ -172,6 +178,7 @@ static param_t parameters[] = .name = "PressureCurve", .desc = "Bezier curve for pressure (default is 0 0 100 100 [linear]). ", .prop_name = WACOM_PROP_PRESSURECURVE, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 4, @@ -189,6 +196,7 @@ static param_t parameters[] = "(default is off for regular tablets, " "on for Tablet PC). ", .prop_name = WACOM_PROP_HOVER, + .prop_type = XA_INTEGER, .prop_format = 8, .prop_offset = 0, .arg_count = 1, @@ -198,6 +206,7 @@ static param_t parameters[] = .name = "Touch", .desc = "Turns on/off Touch events (default is on). ", .prop_name = WACOM_PROP_TOUCH, + .prop_type = XA_INTEGER, .prop_format = 8, .prop_offset = 0, .arg_count = 1, @@ -208,6 +217,7 @@ static param_t parameters[] = .desc = "Turns on/off multi-touch gesture events " "(default is on). ", .prop_name = WACOM_PROP_ENABLE_GESTURE, + .prop_type = XA_INTEGER, .prop_format = 8, .prop_offset = 0, .arg_count = 1, @@ -218,6 +228,7 @@ static param_t parameters[] = .desc = "Minimum distance for a zoom gesture " "(default is 50). ", .prop_name = WACOM_PROP_GESTURE_PARAMETERS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -227,6 +238,7 @@ static param_t parameters[] = .desc = "Minimum motion before sending a scroll gesture " "(default is 20). ", .prop_name = WACOM_PROP_GESTURE_PARAMETERS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 1, .arg_count = 1, @@ -236,6 +248,7 @@ static param_t parameters[] = .desc = "Minimum time between taps for a right click " "(default is 250). ", .prop_name = WACOM_PROP_GESTURE_PARAMETERS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 2, .arg_count = 1, @@ -247,6 +260,7 @@ static param_t parameters[] = "(default is 10 for Intuos series, " "42 for Graphire series). ", .prop_name = WACOM_PROP_PROXIMITY_THRESHOLD, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -256,6 +270,9 @@ static param_t parameters[] = .desc = "Sets the rotation of the tablet. " "Values = none, cw, ccw, half (default is none). ", .prop_name = WACOM_PROP_ROTATION, + .prop_type = XA_INTEGER, + .prop_format = 8, + .prop_offset = 0, .set_func = set_rotate, .get_func = get_rotate, .arg_count = 1, @@ -345,6 +362,7 @@ static param_t parameters[] = .desc = "Sets tip/eraser pressure threshold " "(default is 27). ", .prop_name = WACOM_PROP_PRESSURE_THRESHOLD, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -353,6 +371,7 @@ static param_t parameters[] = .name = "ResetArea", .desc = "Resets the bounding coordinates to default in tablet units. ", .prop_name = WACOM_PROP_TABLET_AREA, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 0, @@ -363,6 +382,7 @@ static param_t parameters[] = .name = "ToolID", .desc = "Returns the ID of the associated device. ", .prop_name = WACOM_PROP_TOOL_TYPE, + .prop_type = XA_ATOM, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -372,6 +392,7 @@ static param_t parameters[] = .name = "ToolSerial", .desc = "Returns the serial number of the current device in proximity.", .prop_name = WACOM_PROP_SERIALIDS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 3, .arg_count = 1, @@ -381,6 +402,7 @@ static param_t parameters[] = .name = "ToolSerialPrevious", .desc = "Returns the serial number of the previous device in proximity.", .prop_name = WACOM_PROP_SERIALIDS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 1, .arg_count = 1, @@ -390,6 +412,7 @@ static param_t parameters[] = .name = "BindToSerial", .desc = "Binds this device to the serial number.", .prop_name = WACOM_PROP_SERIAL_BIND, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -398,6 +421,7 @@ static param_t parameters[] = .name = "TabletID", .desc = "Returns the tablet ID of the associated device. ", .prop_name = WACOM_PROP_SERIALIDS, + .prop_type = XA_INTEGER, .prop_format = 32, .prop_offset = 0, .arg_count = 1, @@ -2450,13 +2474,19 @@ static void get_param(Display *dpy, XDevice *dev, param_t *param, int argc, char return; } - - switch(param->prop_format) + for (i = 0; i < param->arg_count; i++) { - case 8: - for (i = 0; i < param->arg_count; i++) + switch (param->prop_type) + { + case XA_INTEGER: { - int val = data[param->prop_offset + i]; + long val; + switch (param->prop_format) + { + case 8: val = ((char*)data)[i]; break; + case 16: val = ((short*)data)[i]; break; + case 32: val = ((long*)data)[i]; break; + } if (param->prop_flags & PROP_FLAG_BOOLEAN) if (param->prop_flags & PROP_FLAG_INVERTED) @@ -2465,24 +2495,20 @@ static void get_param(Display *dpy, XDevice *dev, param_t *param, int argc, char sprintf(&str[strlen(str)], "%s", val ? "on" : "off"); else sprintf(&str[strlen(str)], "%d", val); - - if (i < param->arg_count - 1) - strcat(str, " "); + break; } - print_value(param, "%s", str); - break; - case 32: - for (i = 0; i < param->arg_count; i++) + case XA_ATOM: { - long *ldata = (long*)data; - sprintf(&str[strlen(str)], "%ld", ldata[param->prop_offset + i]); - - if (i < param->arg_count - 1) - strcat(str, " "); + sprintf(&str[strlen(str)], "%s", XGetAtomName(dpy, ((Atom*)data)[i])); + break; } - print_value(param, "%s", str); - break; + } + + if (i < param->arg_count - 1) + strcat(str, " "); } + print_value(param, "%s", str); + free(data); } -- 1.7.6 ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel