+\r
+\r
+int fgPlatformGlutDeviceGet ( GLenum eWhat )\r
+{\r
+ switch( eWhat )\r
+ {\r
+ case GLUT_HAS_KEYBOARD:\r
+ /*\r
+ * X11 has a core keyboard by definition, although it can\r
+ * be present as a virtual/dummy keyboard. For now, there\r
+ * is no reliable way to tell if a real keyboard is present.\r
+ */\r
+ return 1;\r
+\r
+ /* X11 has a mouse by definition */\r
+ case GLUT_HAS_MOUSE:\r
+ return 1 ;\r
+\r
+ case GLUT_NUM_MOUSE_BUTTONS:\r
+ /* We should be able to pass NULL when the last argument is zero,\r
+ * but at least one X server has a bug where this causes a segfault.\r
+ *\r
+ * In XFree86/Xorg servers, a mouse wheel is seen as two buttons\r
+ * rather than an Axis; "freeglut_main.c" expects this when\r
+ * checking for a wheel event.\r
+ */\r
+ {\r
+ unsigned char map;\r
+ int nbuttons = XGetPointerMapping(fgDisplay.pDisplay.Display, &map,0);\r
+ return nbuttons;\r
+ }\r
+\r
+ default:\r
+ fgWarning( "glutDeviceGet(): missing enum handle %d", eWhat );\r
+ break;\r
+ }\r
+\r
+ /* And now -- the failure. */\r
+ return -1;\r
+}\r
+\r
+int fgPlatformGlutLayerGet( GLenum eWhat )\r
+{\r
+ /*\r
+ * This is easy as layers are not implemented ;-)\r
+ *\r
+ * XXX Can we merge the UNIX/X11 and WIN32 sections? Or\r
+ * XXX is overlay support planned?\r
+ */\r
+ switch( eWhat )\r
+ {\r
+ case GLUT_OVERLAY_POSSIBLE:\r
+ return 0;\r
+\r
+ case GLUT_LAYER_IN_USE:\r
+ return GLUT_NORMAL;\r
+\r
+ case GLUT_HAS_OVERLAY:\r
+ return 0;\r
+\r
+ case GLUT_TRANSPARENT_INDEX:\r
+ /*\r
+ * Return just anything, which is always defined as zero\r
+ *\r
+ * XXX HUH?\r
+ */\r
+ return 0;\r
+\r
+ case GLUT_NORMAL_DAMAGED:\r
+ /* XXX Actually I do not know. Maybe. */\r
+ return 0;\r
+\r
+ case GLUT_OVERLAY_DAMAGED:\r
+ return -1;\r
+\r
+ default:\r
+ fgWarning( "glutLayerGet(): missing enum handle %d", eWhat );\r
+ break;\r
+ }\r
+\r
+ /* And fail. That's good. Programs do love failing. */\r
+ return -1;\r
+}\r
+\r
+\r
+\r