mirror of
https://github.com/glfw/glfw.git
synced 2026-09-23 00:59:48 +00:00
Added compile time detection of the XKB X11 extension.
This commit is contained in:
+12
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user