diff options
author | Daniel Stone <daniel@fooishbar.org> | 2006-09-24 20:21:55 +0300 |
---|---|---|
committer | Daniel Stone <daniels@endtroducing.fooishbar.org> | 2006-09-24 20:21:55 +0300 |
commit | 0c1e59347c38e2661ebc6f3ccb1d8f1b1b09f70e (patch) | |
tree | 52288e440a8b0faaae5a8d6b8891e72a63bb7348 | |
parent | 49c408e85dfe222f9c1f521a19b809b0e82cf370 (diff) | |
parent | 325eb669a9611819979f1adf92f2bd72e946223b (diff) |
Merge branch 'input-hotplug'xsetpointer-1.0.1
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | xsetpointer.c | 56 | ||||
-rw-r--r-- | xsetpointer.man | 4 |
3 files changed, 51 insertions, 13 deletions
diff --git a/configure.ac b/configure.ac index b5dbe3b..ec41f32 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT(xsetpointer,[1.0.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xsetpointer) +AC_INIT(xsetpointer,[1.0.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xsetpointer) AM_INIT_AUTOMAKE([dist-bzip2]) AM_MAINTAINER_MODE @@ -32,7 +32,7 @@ AC_PROG_CC AC_PROG_INSTALL # Checks for pkg-config packages -PKG_CHECK_MODULES(XSETPOINTER, xi x11) +PKG_CHECK_MODULES(XSETPOINTER, xi x11 [inputproto >= 1.4]) AC_SUBST(XSETPOINTER_CFLAGS) AC_SUBST(XSETPOINTER_LIBS) diff --git a/xsetpointer.c b/xsetpointer.c index a3b69cc..25a115d 100644 --- a/xsetpointer.c +++ b/xsetpointer.c @@ -59,20 +59,28 @@ StrCaseCmp(char *s1, char *s2) int main(int argc, char * argv[]) { - int loop, num_extensions, num_devices; - char **extensions; - XDeviceInfo *devices; - Display *dpy; - int list = 0; + int loop, num_extensions, num_devices; + char **extensions; + XDeviceInfo *devices; + XDeviceCoreControl corectl; + Display *dpy; + int list = 0, core = 0; + XDevice *device; - if (argc != 2) { - fprintf(stderr, "usage : %s (-l | <device name>)\n", argv[0]); + if (argc < 2 || argc > 3) { + fprintf(stderr, "usage : %s (-l | -c | +c ) <device name>)\n", argv[0]); exit(1); } if (strcmp(argv[1], "-l") == 0) { list = 1; } + else if (strcmp(argv[1], "-c") == 0) { + core = 1; + } + else if (strcmp(argv[1], "+c") == 0) { + core = 2; + } dpy = XOpenDisplay(NULL); @@ -106,18 +114,45 @@ main(int argc, char * argv[]) case IsXExtensionDevice: printf("XExtensionDevice]\n"); break; + case IsXExtensionKeyboard: + printf("XExtensionKeyboard]\n"); + break; + case IsXExtensionPointer: + printf("XExtensionPointer]\n"); + break; default: printf("invalid value]\n"); break; } } + else if (core) { + if (argc == 3 && devices[loop].name && + StrCaseCmp(devices[loop].name, argv[2]) == 0) { +#ifdef DEBUG + fprintf(stderr, "opening device %s at %d\n", + devices[loop].name ? devices[loop].name : "<noname>", + devices[loop].id); +#endif + device = XOpenDevice(dpy, devices[loop].id); + if (device) { + corectl.status = (core - 1); + corectl.length = sizeof(corectl); + corectl.control = DEVICE_CORE; + XChangeDeviceControl(dpy, device, DEVICE_CORE, + (XDeviceControl *)&corectl); + exit(0); + } + else { + fprintf(stderr, "error opening device\n"); + exit(1); + } + } + } else { if ((argc == 2) && devices[loop].name && (StrCaseCmp(devices[loop].name, argv[1]) == 0)) if (devices[loop].use == IsXExtensionDevice) { - XDevice *device; - #ifdef DEBUG fprintf(stderr, "opening device %s\n", devices[loop].name ? devices[loop].name : "<noname>"); @@ -148,7 +183,8 @@ main(int argc, char * argv[]) exit(0); } else { - fprintf(stderr, "Extended device %s not found\n", argv[1]); + fprintf(stderr, "Extended device %s not found\n", core ? argv[2] : + argv[1]); exit(1); } } diff --git a/xsetpointer.man b/xsetpointer.man index 0d90beb..c75666f 100644 --- a/xsetpointer.man +++ b/xsetpointer.man @@ -10,6 +10,8 @@ xsetpointer \- set an X Input device as the main pointer .I device-name .SH DESCRIPTION Xsetpointer sets an XInput device as the main pointer. When called with -the \-l flag it lists the available devices. +the \-l flag it lists the available devices. When called with the -c/+c +flag, it toggles the sending of core input events, for servers which +implement a virtual core pointer; -c disables core events, and +c enables. .SH AUTHOR Frederic Lepied |