fixed handling of shift+tab on a system that can map ISO_Left_Tab.
now tries to map ISO_Left_Tab without shift first then falls back to Tab (note that if ISO_Left_Tab can be mapped but requires a modifier then the modifier will be added). also changed attempt to map ISO_Left_Tab as a backup to Tab to request the shift modifier whether or not the primary screen requested it.
This commit is contained in:
parent
afa14b67c2
commit
b19fdd86cf
|
@ -615,6 +615,15 @@ bool CXWindowsSecondaryScreen::findKeyCode(
|
||||||
KeyID id,
|
KeyID id,
|
||||||
unsigned int maskIn) const
|
unsigned int maskIn) const
|
||||||
{
|
{
|
||||||
|
// if XK_Tab is requested with shift active then try XK_ISO_Left_Tab
|
||||||
|
// instead. if that doesn't work, we'll fall back to XK_Tab with
|
||||||
|
// shift active. this is to handle primary screens that don't map
|
||||||
|
// XK_ISO_Left_Tab sending events to secondary screens that do.
|
||||||
|
if (id == XK_Tab && (maskIn & ShiftMask) != 0) {
|
||||||
|
id = XK_ISO_Left_Tab;
|
||||||
|
maskIn &= ~ShiftMask;
|
||||||
|
}
|
||||||
|
|
||||||
// find a keycode to generate id. XKeysymToKeycode() almost does
|
// find a keycode to generate id. XKeysymToKeycode() almost does
|
||||||
// what we need but won't tell us which index to use with the
|
// what we need but won't tell us which index to use with the
|
||||||
// keycode. return false if there's no keycode to generate id.
|
// keycode. return false if there's no keycode to generate id.
|
||||||
|
@ -667,6 +676,7 @@ bool CXWindowsSecondaryScreen::findKeyCode(
|
||||||
|
|
||||||
case XK_ISO_Left_Tab:
|
case XK_ISO_Left_Tab:
|
||||||
id = XK_Tab;
|
id = XK_Tab;
|
||||||
|
maskIn |= ShiftMask;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue