static void
print_property(Display *dpy, XDevice* dev, Atom property)
{
- XIPropertyInfo *propinfo;
Atom act_type;
char *name;
int act_format;
unsigned char *data, *ptr;
int j;
- propinfo = XQueryDeviceProperty(dpy, dev, property);
- if (!propinfo)
- return;
-
name = XGetAtomName(dpy, property);
printf("\t%s (%d):\t", name, property);
- if (XGetDeviceProperty(dpy, dev, property, 0, 1000, False, False,
+ if (XGetDeviceProperty(dpy, dev, property, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
&nitems, &bytes_after, &data) == Success)
{
} else
printf("\tFetch failure\n");
- if (propinfo->pending || propinfo->range || propinfo->immutable || propinfo->fromClient)
- {
- printf("\t\t%s%s%s%s", ((propinfo->pending) ? "[pending]" : ""),
- ((propinfo->range) ? "[range]" : ""),
- ((propinfo->immutable) ? "[immutable]" : ""),
- ((propinfo->fromClient) ? "[client]" : ""));
- printf("\n");
- }
-
- if (propinfo->num_values)
- {
- long *values = propinfo->values;
- printf("\t\tvalid values: ");
- while(values && propinfo->num_values--)
- printf("%ld ", *values++);
- printf("\n");
- }
-
- XFree(propinfo);
-
}
int list_props(Display *dpy, int argc, char** argv, char* name, char *desc)
XCloseDevice(dpy, dev);
}
+
+int delete_prop(Display *dpy, int argc, char** argv, char* n, char *desc)
+{
+ XDevice *dev;
+ XDeviceInfo *info;
+ char *name;
+ int i;
+ Bool is_atom = True;
+ Atom prop;
+
+ info = find_device_info(dpy, argv[0], False);
+ if (!info)
+ {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ dev = XOpenDevice(dpy, info->id);
+ if (!dev)
+ {
+ fprintf(stderr, "unable to open device '%s'\n", info->name);
+ return EXIT_FAILURE;
+ }
+
+ name = argv[1];
+
+ for(i = 0; i < strlen(name); i++) {
+ if (!isdigit(name[i])) {
+ is_atom = False;
+ break;
+ }
+ }
+
+ if (!is_atom)
+ prop = XInternAtom(dpy, name, False);
+ else
+ prop = atoi(name);
+
+ XDeleteDeviceProperty(dpy, dev, prop);
+
+ XCloseDevice(dpy, dev);
+ return EXIT_SUCCESS;
+}