Added compile time detection of the XKB X11 extension.

This commit is contained in:
Marcus
2011-01-03 21:44:05 +01:00
parent c0cb4c2fe1
commit a44d566057
5 changed files with 26 additions and 7 deletions
+12 -3
View File
@@ -68,16 +68,20 @@ static void initLibraries(void)
static void updateKeyCodeLUT(void)
{
int i, keyCode, keyCodeGLFW;
#if defined(_GLFW_HAS_XKB)
int keyCode, keyCodeGLFW;
char name[XkbKeyNameLength+1];
XkbDescPtr descr;
#endif
int i;
// Clear the LUT
for (i = 0; i < 256; ++i)
{
_glfwLibrary.X11.Xkb.keyCodeLUT[i] = -1;
_glfwLibrary.X11.keyCodeLUT[i] = -1;
}
#if defined(_GLFW_HAS_XKB)
// This functionality requires the Xkb extension
if (!_glfwLibrary.X11.Xkb.available)
{
@@ -154,12 +158,13 @@ static void updateKeyCodeLUT(void)
// Update the key code LUT
if ((keyCode >= 0) && (keyCode < 256))
{
_glfwLibrary.X11.Xkb.keyCodeLUT[keyCode] = keyCodeGLFW;
_glfwLibrary.X11.keyCodeLUT[keyCode] = keyCodeGLFW;
}
}
// Free the keyboard description
XkbFreeKeyboard(descr, 0, True);
#endif /* _GLFW_HAS_XKB */
}
@@ -228,6 +233,7 @@ static GLboolean initDisplay(void)
}
// Check if Xkb is supported on this display
#if defined(_GLFW_HAS_XKB)
_glfwLibrary.X11.Xkb.majorVersion = 1;
_glfwLibrary.X11.Xkb.minorVersion = 0;
_glfwLibrary.X11.Xkb.available =
@@ -237,6 +243,9 @@ static GLboolean initDisplay(void)
&_glfwLibrary.X11.Xkb.errorBase,
&_glfwLibrary.X11.Xkb.majorVersion,
&_glfwLibrary.X11.Xkb.minorVersion);
#else
_glfwLibrary.X11.Xkb.available = GL_FALSE;
#endif /* _GLFW_HAS_XKB */
// Update the key code LUT
// FIXME: We should listen to XkbMapNotify events to track changes to