summaryrefslogtreecommitdiffstats
path: root/superkaramba/examples/globalMouse/extension/xcursor.c
diff options
context:
space:
mode:
Diffstat (limited to 'superkaramba/examples/globalMouse/extension/xcursor.c')
-rw-r--r--superkaramba/examples/globalMouse/extension/xcursor.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/superkaramba/examples/globalMouse/extension/xcursor.c b/superkaramba/examples/globalMouse/extension/xcursor.c
new file mode 100644
index 0000000..8dad240
--- /dev/null
+++ b/superkaramba/examples/globalMouse/extension/xcursor.c
@@ -0,0 +1,104 @@
+/*
+ * This module is based on code by found in comp.lang.python:
+ * http://groups.google.at/groups?q=%22Re:+X+Gurus%22+group:comp.lang.python.*&hl=de&lr=&ie=UTF-8&selm=imnv4.314%24qL4.17232%40newsread1.prod.itd.earthlink.net&rnum=2
+ *
+ * Build with:
+ * python setup.py build
+ *
+ * Copyright (C) 2003 Hans Karlsson <karlsson.h@home.se>
+ * Copyright (C) 2003-2004 Adam Geitgey <adam@rootnode.org>
+ * Copyright (c) 2005 Ryan Nickell <p0z3r@earthlink.net>
+ *
+ * This file is part of Superkaramba.
+ *
+ * Superkaramba is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Superkaramba is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Superkaramba; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ****************************************************************************/
+
+#include <Python.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+static Display* display = 0;
+static Window root;
+static int screen;
+
+
+static PyObject* xcursor_position(self, args)
+ PyObject* self;
+ PyObject* args;
+{
+ /* Determine X Cursor coordinates */
+ Window root_return, child_return;
+ char* display_name;
+ int root_x_return, root_y_return;
+ int win_x_return, win_y_return;
+ unsigned int mask_return;
+
+ if (! (display_name = getenv("DISPLAY")) )
+ {
+ /* add error handling! */
+
+ /*
+ * fprintf(stderr,"environment variable DISPLAY must be set\n");
+ * exit(-1);
+ */
+
+ return NULL;
+ }
+
+ if ( display == 0)
+ {
+ if (! (display = XOpenDisplay(display_name)) )
+ {
+ /* add error handling! */
+
+ /*
+ * fprintf(stderr,"%s: Cannot open display %s\n", argv[0],
+ * display_name);
+ * exit(-1);
+ */
+
+ return NULL;
+ }
+
+ screen = DefaultScreen(display);
+ root = RootWindow(display, screen);
+ }
+
+ XQueryPointer(display, root, &root_return, &child_return,
+ &root_x_return, &root_y_return,
+ &win_x_return, &win_y_return,
+ &mask_return);
+
+ /* return Python Object */
+ return Py_BuildValue("(i,i)", root_x_return, root_y_return);
+}
+
+/* Method Table */
+static PyMethodDef xcursorMethods[] =
+{
+ {"position", xcursor_position, METH_VARARGS, "Query X Cursor Coordinates"},
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+void initxcursor(void)
+{
+ (void) Py_InitModule("xcursor", xcursorMethods);
+}
+
+