From 38fa843cd29d83ff8412b13413a4843717d61e27 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 13 Apr 2005 12:21:53 +0000 Subject: [PATCH] Linux: ignore vendor-specific keysyms --- src/native/linux/org_lwjgl_input_Keyboard.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/native/linux/org_lwjgl_input_Keyboard.c b/src/native/linux/org_lwjgl_input_Keyboard.c index e667faa8..d9e54bc3 100644 --- a/src/native/linux/org_lwjgl_input_Keyboard.c +++ b/src/native/linux/org_lwjgl_input_Keyboard.c @@ -522,11 +522,16 @@ static bool isKeypadKeysym(KeySym keysym) { (0x11000000 <= keysym && keysym <= 0x1100FFFF); } +static bool isNoSymbolOrVendorSpecific(KeySym keysym) { + return keysym == NoSymbol || (keysym & (1 << 28)) != 0; +} + static KeySym getKeySym(XKeyEvent *event, int group, int index) { KeySym keysym = XLookupKeysym(event, group*2 + index); - if (keysym == NoSymbol && index == 1) + if (isNoSymbolOrVendorSpecific(keysym) && index == 1) { keysym = XLookupKeysym(event, group*2 + 0); - if (keysym == NoSymbol && group == 1) + } + if (isNoSymbolOrVendorSpecific(keysym) && group == 1) keysym = getKeySym(event, 0, index); return keysym; }