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).
This commit is contained in:
crs 2003-01-29 19:32:25 +00:00
parent eb65726ce7
commit dedb48d244
1 changed files with 10 additions and 0 deletions

View File

@ -28,6 +28,7 @@
# include <X11/Xutil.h> # include <X11/Xutil.h>
# define XK_MISCELLANY # define XK_MISCELLANY
# define XK_XKB_KEYS # define XK_XKB_KEYS
# define XK_LATIN1
# include <X11/keysymdef.h> # include <X11/keysymdef.h>
# if defined(HAVE_X11_EXTENSIONS_XTEST_H) # if defined(HAVE_X11_EXTENSIONS_XTEST_H)
# include <X11/extensions/XTest.h> # include <X11/extensions/XTest.h>
@ -1268,6 +1269,15 @@ CXWindowsSecondaryScreen::findKey(KeyID id, KeyModifierMask& mask) const
// find the keycodes that generate the keysym // find the keycodes that generate the keysym
KeyCodeIndex index = m_keycodeMap.find(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()) { if (index == noKey()) {
// try backup keysym for certain keys (particularly the numpad // try backup keysym for certain keys (particularly the numpad
// keys since most laptops don't have a separate numpad and the // keys since most laptops don't have a separate numpad and the