X-Git-Url: https://diplodocus.org/git/xorg-xinput/blobdiff_plain/ca0b0fa7f84642cf2b1ba7d5d88487afbc8a6d29..7f046c957d4529249bcb69b35f6513411f6efcf5:/src/property.c diff --git a/src/property.c b/src/property.c index 0e62035..d0a4ffc 100644 --- a/src/property.c +++ b/src/property.c @@ -37,7 +37,6 @@ static void print_property(Display *dpy, XDevice* dev, Atom property) { - XIPropertyInfo *propinfo; Atom act_type; char *name; int act_format; @@ -45,14 +44,10 @@ print_property(Display *dpy, XDevice* dev, Atom property) 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) { @@ -101,26 +96,6 @@ print_property(Display *dpy, XDevice* dev, Atom property) } 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) @@ -297,3 +272,46 @@ int watch_props(Display *dpy, int argc, char** argv, char* n, 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; +}