summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2006-09-24 20:21:55 +0300
committerDaniel Stone <daniels@endtroducing.fooishbar.org>2006-09-24 20:21:55 +0300
commit0c1e59347c38e2661ebc6f3ccb1d8f1b1b09f70e (patch)
tree52288e440a8b0faaae5a8d6b8891e72a63bb7348
parent49c408e85dfe222f9c1f521a19b809b0e82cf370 (diff)
parent325eb669a9611819979f1adf92f2bd72e946223b (diff)
Merge branch 'input-hotplug'xsetpointer-1.0.1
-rw-r--r--configure.ac4
-rw-r--r--xsetpointer.c56
-rw-r--r--xsetpointer.man4
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