X-Git-Url: https://diplodocus.org/git/xorg-xinput/blobdiff_plain/9b24e279439a800e72819ca63441a083a89643b6..1c7b473b7e64f8b616aba70926f93d37d5269c28:/src/list.c diff --git a/src/list.c b/src/list.c index a023610..de8aca7 100644 --- a/src/list.c +++ b/src/list.c @@ -1,19 +1,19 @@ /* * Copyright 1996 by Frederic Lepied, France. - * + * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Frederic Lepied not be used in + * documentation, and that the name of the authors not be used in * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Frederic Lepied makes no + * specific, written prior permission. The authors make no * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * is provided "as is" without express or implied warranty. + * + * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR @@ -22,6 +22,8 @@ */ #include "xinput.h" +#include +#include /* for XI_Device***ChangedNotify */ static void print_info(XDeviceInfo *info, Bool shortformat) @@ -32,6 +34,9 @@ print_info(XDeviceInfo *info, Bool shortformat) XButtonInfoPtr b; XValuatorInfoPtr v; XAxisInfoPtr a; +#if HAVE_XI2 + XAttachInfoPtr att; +#endif printf("\"%s\"\tid=%ld\t[", info->name, info->id); @@ -78,7 +83,7 @@ print_info(XDeviceInfo *info, Bool shortformat) case ValuatorClass: v = (XValuatorInfoPtr) any; - a = (XAxisInfoPtr) ((char *) v + + a = (XAxisInfoPtr) ((char *) v + sizeof (XValuatorInfo)); printf("\tNum_axes is %d\n", v->num_axes); printf("\tMode is %s\n", (v->mode == Absolute) ? "Absolute" : "Relative"); @@ -90,7 +95,12 @@ print_info(XDeviceInfo *info, Bool shortformat) printf ("\t\tResolution is %d\n", a->resolution); } break; - +#if HAVE_XI2 + case AttachClass: + att = (XAttachInfoPtr)any; + printf("\tAttached to %d\n", att->attached); + break; +#endif default: printf ("unknown class\n"); } @@ -109,25 +119,60 @@ list(Display *display, XDeviceInfo *info; int loop; int shortformat = False; + int daemon = False; shortformat = (argc == 1 && strcmp(argv[0], "--short") == 0); + daemon = (argc == 1 && strcmp(argv[0], "--loop") == 0); - if (argc == 0) { + if (argc == 0 || shortformat || daemon) { int num_devices; - - info = XListInputDevices(display, &num_devices); - - for(loop=0; loopevtype == XI_DeviceHierarchyChangedNotify) + { + printf("Hierarchy change.\n"); + } else if (gev->evtype == XI_DeviceClassesChangedNotify) + { + printf("Device classes changed.\n"); + free(((XDeviceClassesChangedEvent*)&ev)->inputclassinfo); + } + break; + } + } +#endif + } while(daemon); } else { int ret = EXIT_SUCCESS; for(loop=0; loop