Replace XkbGetKeyboard with XkbGetMap

Switch to XkbGetMap as XkbGetKeyboard returns NULL on XWayland.

Fixes #389.
This commit is contained in:
Camilla Berglund
2015-08-14 17:54:24 +02:00
parent b69b4a9f2a
commit 2d39dff84a
2 changed files with 8 additions and 7 deletions
+7 -7
View File
@@ -241,15 +241,14 @@ static void createKeyTables(void)
// keyboard layout
char name[XkbKeyNameLength + 1];
XkbDescPtr descr = XkbGetKeyboard(_glfw.x11.display,
XkbAllComponentsMask,
XkbUseCoreKbd);
XkbDescPtr desc = XkbGetMap(_glfw.x11.display, 0, XkbUseCoreKbd);
XkbGetNames(_glfw.x11.display, XkbKeyNamesMask, desc);
// Find the X11 key code -> GLFW key code mapping
for (scancode = descr->min_key_code; scancode <= descr->max_key_code; scancode++)
for (scancode = desc->min_key_code; scancode <= desc->max_key_code; scancode++)
{
memcpy(name, descr->names->keys[scancode].name, XkbKeyNameLength);
name[XkbKeyNameLength] = 0;
memcpy(name, desc->names->keys[scancode].name, XkbKeyNameLength);
name[XkbKeyNameLength] = '\0';
// Map the key name to a GLFW key code. Note: We only map printable
// keys here, and we use the US keyboard layout. The rest of the
@@ -309,7 +308,8 @@ static void createKeyTables(void)
_glfw.x11.publicKeys[scancode] = key;
}
XkbFreeKeyboard(descr, 0, True);
XkbFreeNames(desc, XkbKeyNamesMask, True);
XkbFreeClientMap(desc, 0, True);
}
// Translate the un-translated key codes using traditional X11 KeySym