From dedb48d24499c55c87ad0b86564a386e0ae8632a Mon Sep 17 00:00:00 2001 From: crs Date: Wed, 29 Jan 2003 19:32:25 +0000 Subject: [PATCH] Applied patch from grmcdorman at users dot sourceforge dot net to support keymaps that have only uppercase letters, which is the case by default on the Sun X server (for US keyboards anyway). --- lib/platform/CXWindowsSecondaryScreen.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/platform/CXWindowsSecondaryScreen.cpp b/lib/platform/CXWindowsSecondaryScreen.cpp index 80a74d43..1bacd828 100644 --- a/lib/platform/CXWindowsSecondaryScreen.cpp +++ b/lib/platform/CXWindowsSecondaryScreen.cpp @@ -28,6 +28,7 @@ # include # define XK_MISCELLANY # define XK_XKB_KEYS +# define XK_LATIN1 # include # if defined(HAVE_X11_EXTENSIONS_XTEST_H) # include @@ -1268,6 +1269,15 @@ CXWindowsSecondaryScreen::findKey(KeyID id, KeyModifierMask& mask) const // find the keycodes that generate the keysym KeyCodeIndex index = m_keycodeMap.find(keysym); + if (index == noKey() && keysym >= XK_a && keysym <= XK_z) { + // for an unfound lower case alpha, try the equivalent upper + // case (as some keymaps only include the upper case, notably + // Sun Solaris). + // Note that this depends on the keysyms for 'a' through 'z' + // and 'A' through 'Z' being contiguous. This is currently + // the case and extremely unlikely to change. + index = m_keycodeMap.find(keysym + XK_A - XK_a); + } if (index == noKey()) { // try backup keysym for certain keys (particularly the numpad // keys since most laptops don't have a separate numpad and the