Added support for cursors, and a way to get at the qd global 'arrow'
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index b076aa4..a9f1865 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <QuickDraw.h>
@@ -425,6 +428,28 @@
 	return _res;
 }
 
+static PyObject *Qd_SetCursor(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Cursor *crsr__in__;
+	int crsr__in_len__;
+	if (!PyArg_ParseTuple(_args, "s#",
+	                      (char **)&crsr__in__, &crsr__in_len__))
+		return NULL;
+	if (crsr__in_len__ != sizeof(Cursor))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Cursor)");
+		goto crsr__error__;
+	}
+	SetCursor(crsr__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ crsr__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_HideCursor(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -3131,6 +3156,8 @@
 	 "(Rect r) -> None"},
 	{"InitCursor", (PyCFunction)Qd_InitCursor, 1,
 	 "() -> None"},
+	{"SetCursor", (PyCFunction)Qd_SetCursor, 1,
+	 "(Cursor crsr) -> None"},
 	{"HideCursor", (PyCFunction)Qd_HideCursor, 1,
 	 "() -> None"},
 	{"ShowCursor", (PyCFunction)Qd_ShowCursor, 1,
@@ -3453,6 +3480,16 @@
 	if (Qd_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Qd_Error) != 0)
 		Py_FatalError("can't initialize Qd.Error");
+
+	{
+		PyObject *o;
+		
+		o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
+		if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0)
+			Py_FatalError("can't initialize Qd.arrow");
+	}
+
+
 }
 
 /* ========================= End module Qd ========================== */
diff --git a/Mac/Modules/qd/qdgen.py b/Mac/Modules/qd/qdgen.py
index 4410b82..105eab7 100644
--- a/Mac/Modules/qd/qdgen.py
+++ b/Mac/Modules/qd/qdgen.py
@@ -57,6 +57,11 @@
 )
 functions.append(f)
 
+f = Function(void, 'SetCursor',
+    (Cursor_ptr, 'crsr', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'HideCursor',
 )
 functions.append(f)
diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py
index 1d28ecf..013f6b1 100644
--- a/Mac/Modules/qd/qdscan.py
+++ b/Mac/Modules/qd/qdscan.py
@@ -87,7 +87,7 @@
 			'ConstPatternParam',
 			'Pattern_ptr',
 			'Pattern',
-			'Cursor_ptr',
+##			'Cursor_ptr',
 			'DeviceLoopDrawingProcPtr',
 			'DeviceLoopFlags',
 			'FontInfo',
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 7768f31..387ee9c 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -45,6 +45,8 @@
 BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
 RGBColor = OpaqueType('RGBColor', 'QdRGB')
 RGBColor_ptr = RGBColor
+Cursor = StructInputBufferType('Cursor')
+Cursor_ptr = Cursor
 
 includestuff = includestuff + """
 #include <%s>""" % MACHEADERFILE + """
@@ -77,6 +79,17 @@
 }
 
 """
+
+variablestuff = """
+{
+	PyObject *o;
+	
+	o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
+	if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0)
+		Py_FatalError("can't initialize Qd.arrow");
+}
+"""
+
 ## not yet...
 ##
 ##class Region_ObjectDefinition(GlobalObjectDefinition):
@@ -147,7 +160,7 @@
 		""")
 
 # Create the generator groups and link them
-module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff)
 ##r_object = Region_ObjectDefinition('Region', 'QdRgn', 'RgnHandle')
 ##po_object = Polygon_ObjectDefinition('Polygon', 'QdPgn', 'PolyHandle')
 ##module.addobject(r_object)