Also, screennum should go into RootWindow, like so:
RootWindow(dpy,screennum)
Dusty
]]>edit:
library_dirs=['/usr/X11R6/lib'],
works like a charm.
I HATE WORKING WITH C APPS. NOTHING EVER WORKS. I REALLY NEED TO FIGURE ALL THOSE COMPILER OPTIONS OUT...... BAH!
*calms down*
Dusty
]]>gcc -pthread -shared build/temp.linux-i686-2.4/xmouse.o -lX11 -o build/lib.linux-i686-2.4/xmouse.so
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
/usr/X11R6/lib is in ld.so.conf... I don't get it. How can this error possibly be????
Dusty
]]>Its Brillant!!
I'll give it a go, I guess, though truthfully I should probably convert the whole works to C anyway.
Thanks phrakture. You are very wise.
Dusty
]]>xmouse.position() returns a tuple of (xposition,yposition,window id)
from distutils.core import setup
from distutils.extension import Extension
setup( name = "xmouse",
version = "0.1",
ext_modules=[Extension(name = 'xmouse',
sources = ['xmouse.c'],
libraries = ['X11'])]
)
#include <Python.h>
#include <X11/Xlib.h>
PyObject* xmouse_position(PyObject* self, PyObject* args)
{
Display* dpy;
int screennum = 0;
char* display;
Window rootwin, childwin;
int root_x, root_y;
int child_x, child_y;
unsigned int mask;
PyObject* ret = NULL;
PyArg_ParseTuple(args, "|zi", &display, &screennum);
dpy = XOpenDisplay(display);
if(!dpy)
{
/* TODO is this right?? */
PyErr_SetString(PyExc_Exception, "cannot open display");
return NULL;
}
if(XQueryPointer(dpy, RootWindow(dpy,0), &rootwin, &childwin,
&root_x, &root_y, &child_x, &child_y, &mask) == True)
ret = Py_BuildValue("(i,i,i)", child_x, child_y, (long)childwin);
else
ret = Py_BuildValue("(i,i,i)", root_x, root_y, (long)rootwin);
XCloseDisplay(dpy);
return ret;
}
PyMethodDef methods[] =
{
{"position", xmouse_position, METH_VARARGS},
};
void initxmouse(void)
{
Py_InitModule("xmouse", methods);
}
Then you can:
import xmouse
x,y = xmouse.position()
Dusty
]]>Dusty
]]>