]> diplodocus.org Git - xorg-xinput/commitdiff
Add support to set the client pointer.
authorPeter Hutterer <peter@cs.unisa.edu.au>
Thu, 20 Dec 2007 01:59:27 +0000 (12:29 +1030)
committerPeter Hutterer <peter@cs.unisa.edu.au>
Thu, 20 Dec 2007 01:59:27 +0000 (12:29 +1030)
Couple of whitespace changes too.

src/Makefile.am
src/hierarchy.c
src/setcp.c [new file with mode: 0644]
src/xinput.c
src/xinput.h

index 67fa3a7fc6e5cf283741946cd01f0cacc53488f8..5b09539fd45266a74ebd1e01d199d7438270777c 100644 (file)
@@ -30,6 +30,7 @@ xinput_SOURCES = \
     hierarchy.c \
     list.c \
     setint.c \
+    setcp.c \
     setmode.c \
     setptr.c \
     state.c \
index edb66a1970f99173f35fb07a8577c474350f6825..f530192881f962e3efce98f002be890f26ce744a 100644 (file)
@@ -6,10 +6,10 @@
  * the above copyright notice appear in all copies and that both that
  * copyright notice and this permission notice appear in supporting
  * documentation.
- * 
+ *
  * The above copyright notice and this permission notice shall be included
  * in all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  * OTHER DEALINGS IN THE SOFTWARE.
- * 
+ *
  * Except as contained in this notice, the name of the author shall
  * not be used in advertising or otherwise to promote the sale, use or
  * other dealings in this Software without prior written authorization
  * from the author.
- * 
+ *
  */
 
 #include "xinput.h"
@@ -37,7 +37,7 @@
  * Create a new master device. Name must be supplied, other values are
  * optional.
  */
-int 
+int
 create_master(Display* dpy, int argc, char** argv, char* name, char *desc)
 {
     XCreateMasterInfo c;
@@ -88,7 +88,7 @@ remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
             r.returnMode = Floating;
         else if (!strcmp(argv[1], "AttachToMaster"))
             r.returnMode = AttachToMaster;
-        else 
+        else
             Error(BadValue, "Invalid returnMode.\n");
     } else
         r.returnMode = Floating;
diff --git a/src/setcp.c b/src/setcp.c
new file mode 100644 (file)
index 0000000..582d978
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2007 Peter Hutterer <peter@cs.unisa.edu.au>
+ *
+ * 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.
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the author shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization
+ * from the author.
+ *
+ */
+
+
+#include "xinput.h"
+#include <string.h>
+
+int
+set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
+{
+    XID window;
+    XID deviceid;
+    XDevice* dev = NULL;
+    char* id;
+    char* dummy;
+
+    if (argc <= 1)
+    {
+        fprintf(stderr, "Usage: xinput %s %s\n", name, desc);
+        return EXIT_FAILURE;
+    }
+
+    id = argv[0];
+
+    while(*id == '0') id++;
+
+    window = strtol(argv[0], &dummy, (*id == 'x') ? 16 : 10);
+    deviceid = atol(argv[1]);
+
+    dev = XOpenDevice(dpy, deviceid);
+
+    if (!dev)
+    {
+        fprintf(stderr, "Cannot open device %ld.\n", deviceid);
+    } else
+        XSetClientPointer(dpy, window, dev);
+    return 0;
+}
index 47603d292c5dd38a1e28ee55147ae79ca75990ce..0fe88789c816b39e84ee40ecb7740c6aa79b9844 100644 (file)
@@ -97,6 +97,10 @@ static entry drivers[] =
       "<id>",
       float_device
     },
+    { "set-cp",
+      "<window> <device>",
+      set_clientpointer
+    },
     {0, 0, 0
     }
 };
index 8b94d6a8d27358af0a285c732d2cb566b9bac82b..961d1f756203f0f65c83f86a33b813b6dac5a2a6 100644 (file)
@@ -196,4 +196,15 @@ float_device(
 #endif
 );
 
+int
+set_clientpointer(
+#if NeedFunctionPrototypes
+                Display*       display,
+                int            argc,
+                char           *argv[],
+                char           *prog_name,
+                char           *prog_desc
+#endif
+);
+
 /* end of xinput.h */