summaryrefslogtreecommitdiffstats
path: root/xmouse.c
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2000-02-17 03:17:06 +0000
committerMatt Wilson <msw@redhat.com>2000-02-17 03:17:06 +0000
commit3d5236f05d02b8170aadb9da10be7c31aa036dce (patch)
treeeb997786faf805c72fc04a8b8bda79a274508854 /xmouse.c
parentc37846ceb9d574b26f301900f034a09cdb1a8e3e (diff)
downloadanaconda-3d5236f05d02b8170aadb9da10be7c31aa036dce.tar.gz
anaconda-3d5236f05d02b8170aadb9da10be7c31aa036dce.tar.xz
anaconda-3d5236f05d02b8170aadb9da10be7c31aa036dce.zip
set mouse type
Diffstat (limited to 'xmouse.c')
-rw-r--r--xmouse.c96
1 files changed, 79 insertions, 17 deletions
diff --git a/xmouse.c b/xmouse.c
index a04967834..347d48a40 100644
--- a/xmouse.c
+++ b/xmouse.c
@@ -23,12 +23,12 @@
#include <Python.h>
static char *Mouses[] = { "None", "Microsoft", "MouseSystems", "MMSeries",
- "Logitech", "BusMouse", "Mouseman", "PS/2",
- "MMHitTab", "GlidePoint", "IntelliMouse",
- "ThinkingMouse", "IMPS/2", "ThinkingMousePS/2",
- "MouseManPlusPS/2", "GlidePointPS/2",
- "NetMousePS/2", "NetScrollPS/2", "SysMouse",
- "Auto", "Xqueue", "OSMouse" };
+ "Logitech", "BusMouse", "Mouseman", "PS/2",
+ "MMHitTab", "GlidePoint", "IntelliMouse",
+ "ThinkingMouse", "IMPS/2", "ThinkingMousePS/2",
+ "MouseManPlusPS/2", "GlidePointPS/2",
+ "NetMousePS/2", "NetScrollPS/2", "SysMouse",
+ "Auto", "Xqueue", "OSMouse" };
static int numMouses = (sizeof (Mouses) / sizeof (*Mouses));
static int (*olderror)();
@@ -37,13 +37,12 @@ static int error_set = FALSE;
static PyObject * mouse_get (PyObject * s, PyObject * args);
static PyObject * mouse_reopen (PyObject * s, PyObject * args);
-
-/* static PyObject * mouse_set (PyObject * s, PyObject * args); */
+static PyObject * mouse_set (PyObject * s, PyObject * args);
static PyMethodDef xmouseMethods[] = {
{ "get", mouse_get, 1 },
{ "reopen", mouse_reopen, 1 },
-/* { "set", mouse_set, 1 }, */
+ { "set", mouse_set, 1 },
{ NULL, NULL }
};
@@ -82,22 +81,21 @@ mouse_get (PyObject * s, PyObject * args)
else
name = Mouses[settings.type+1];
- ret = Py_BuildValue("ssiiiisisss",
+ ret = Py_BuildValue("[ssiiiiiiii]",
settings.device == NULL ? "no device": settings.device,
name,
settings.baudrate,
settings.samplerate,
settings.resolution,
settings.buttons,
- settings.emulate3buttons ? "on": "off",
+ settings.emulate3buttons,
settings.emulate3timeout,
- settings.chordmiddle ? "on": "off",
- settings.flags & MF_CLEAR_DTR ? "ClearDTR" : "NoClearDTR",
- settings.flags & MF_CLEAR_DTR ? "ClearRTS" : "NoClearRTS");
+ settings.chordmiddle,
+ settings.flags);
- if (settings.device) {
+ if (settings.device)
free(settings.device);
- }
+
XCloseDisplay (disp);
return ret;
@@ -142,8 +140,72 @@ mouse_reopen (PyObject * s, PyObject * args)
return Py_None;
}
+PyObject *
+mouse_set (PyObject * s, PyObject * args)
+{
+ XF86MiscMouseSettings settings;
+ char *proto;
+ int i = 0;
+ Status rc;
+
+ Display *disp = XOpenDisplay (NULL);
+ if (!disp) {
+ PyErr_SetString(PyExc_RuntimeError, "Unable to open display");
+ return NULL;
+ }
+
+ if (!PyArg_ParseTuple(args, "ssiiiiiiii", &settings.device, &proto,
+ &settings.baudrate,
+ &settings.samplerate,
+ &settings.resolution,
+ &settings.buttons,
+ &settings.emulate3buttons,
+ &settings.emulate3timeout,
+ &settings.chordmiddle,
+ &settings.flags))
+ return NULL;
+
+ while (i < numMouses && strcasecmp (Mouses[i + 1], proto))
+ i++;
+ if (i >= numMouses) {
+ PyErr_SetString(PyExc_TypeError, "Bad mouse protocol");
+ return NULL;
+ }
+
+ settings.type = i;
+
+ XSync(disp, False);
+ olderror = XSetErrorHandler(miscError);
+ rc = XF86MiscSetMouseSettings(disp, &settings);
+ XSync(disp, False);
+ XSetErrorHandler(olderror);
+ XCloseDisplay (disp);
+ if (error_set) {
+ PyErr_SetString(PyExc_RuntimeError, error);
+ error_set = 0;
+ return NULL;
+ }
+ if (!rc) {
+ PyErr_SetString(PyExc_RuntimeError, "unknown error setting mouse");
+ return NULL;
+ }
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+#define registerConst(name, val) \
+ PyDict_SetItemString(d, name, PyInt_FromLong(val))
void
initxmouse ()
{
- Py_InitModule ("xmouse", xmouseMethods);
+ PyObject * d;
+
+ d = Py_InitModule ("xmouse", xmouseMethods);
}
+
+
+
+
+