Under carbon use the GetQDGlobalxxx methods to implement Qd.qd.member access.
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index a5e6871..d4f91d4 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -447,6 +447,48 @@
 		if ( strcmp(name, "randSeed") == 0 ) 
 			return Py_BuildValue("l", &qd.randSeed);
 			
+#else
+
+		if ( strcmp(name, "arrow") == 0 ) {
+			Cursor rv;
+			GetQDGlobalsArrow(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "black") == 0 ) {
+			Pattern rv;
+			GetQDGlobalsBlack(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "white") == 0 )  {
+			Pattern rv;
+			GetQDGlobalsWhite(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "gray") == 0 )  {
+			Pattern rv;
+			GetQDGlobalsGray(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "ltGray") == 0 )  {
+			Pattern rv;
+			GetQDGlobalsLightGray(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "dkGray") == 0 )  {
+			Pattern rv;
+			GetQDGlobalsDarkGray(&rv);
+			return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+		}
+		if ( strcmp(name, "screenBits") == 0 ) {
+			BitMap rv;
+			GetQDGlobalsScreenBits(&rv);
+			return BMObj_New(&rv);
+		}
+		if ( strcmp(name, "thePort") == 0 ) 
+			return GrafObj_New(GetQDGlobalsThePort());
+		if ( strcmp(name, "randSeed") == 0 ) 
+			return Py_BuildValue("l", GetQDGlobalsRandomSeed());
+			
 #endif
 	return Py_FindMethodInChain(&QDGA_chain, (PyObject *)self, name);
 }
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 671b359..3be0b0c 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -282,6 +282,48 @@
 	if ( strcmp(name, "randSeed") == 0 ) 
 		return Py_BuildValue("l", &qd.randSeed);
 		""")
+		Output("#else")
+		Output("""
+	if ( strcmp(name, "arrow") == 0 ) {
+		Cursor rv;
+		GetQDGlobalsArrow(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "black") == 0 ) {
+		Pattern rv;
+		GetQDGlobalsBlack(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "white") == 0 )  {
+		Pattern rv;
+		GetQDGlobalsWhite(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "gray") == 0 )  {
+		Pattern rv;
+		GetQDGlobalsGray(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "ltGray") == 0 )  {
+		Pattern rv;
+		GetQDGlobalsLightGray(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "dkGray") == 0 )  {
+		Pattern rv;
+		GetQDGlobalsDarkGray(&rv);
+		return PyString_FromStringAndSize((char *)&rv, sizeof(rv));
+	}
+	if ( strcmp(name, "screenBits") == 0 ) {
+		BitMap rv;
+		GetQDGlobalsScreenBits(&rv);
+		return BMObj_New(&rv);
+	}
+	if ( strcmp(name, "thePort") == 0 ) 
+		return GrafObj_New(GetQDGlobalsThePort());
+	if ( strcmp(name, "randSeed") == 0 ) 
+		return Py_BuildValue("l", GetQDGlobalsRandomSeed());
+		""")
 		Output("#endif")
 
 # Create the generator groups and link them