summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-12-20 12:29:27 +1030
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-12-20 12:29:27 +1030
commita6feac1e18cdeffc42bc992faa8c95eaec420378 (patch)
tree22e94ded4c7cdf5d74b58b3b72ed5e4ced2e725e
parentd02601e5c88d1d40e12cd71c2c10c7822919f7b8 (diff)
Add support to set the client pointer.
Couple of whitespace changes too.
-rw-r--r--src/Makefile.am1
-rw-r--r--src/hierarchy.c12
-rw-r--r--src/setcp.c62
-rw-r--r--src/xinput.c4
-rw-r--r--src/xinput.h11
5 files changed, 84 insertions, 6 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 67fa3a7..5b09539 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,6 +30,7 @@ xinput_SOURCES = \
hierarchy.c \
list.c \
setint.c \
+ setcp.c \
setmode.c \
setptr.c \
state.c \
diff --git a/src/hierarchy.c b/src/hierarchy.c
index edb66a1..f530192 100644
--- a/src/hierarchy.c
+++ b/src/hierarchy.c
@@ -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.
@@ -17,12 +17,12 @@
* 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
index 0000000..582d978
--- /dev/null
+++ b/src/setcp.c
@@ -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;
+}
diff --git a/src/xinput.c b/src/xinput.c
index 47603d2..0fe8878 100644
--- a/src/xinput.c
+++ b/src/xinput.c
@@ -97,6 +97,10 @@ static entry drivers[] =
"<id>",
float_device
},
+ { "set-cp",
+ "<window> <device>",
+ set_clientpointer
+ },
{0, 0, 0
}
};
diff --git a/src/xinput.h b/src/xinput.h
index 8b94d6a..961d1f7 100644
--- a/src/xinput.h
+++ b/src/xinput.h
@@ -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 */