now ignores key if there's no key mapped for a required modifier.
was asserting (on the wrong expression).
This commit is contained in:
parent
1d3807cb0e
commit
869617a34a
|
@ -98,8 +98,8 @@ void CXWindowsSecondaryScreen::open(CClient* client)
|
||||||
// FIXME -- may have to get these from some database
|
// FIXME -- may have to get these from some database
|
||||||
m_numLockHalfDuplex = false;
|
m_numLockHalfDuplex = false;
|
||||||
m_capsLockHalfDuplex = false;
|
m_capsLockHalfDuplex = false;
|
||||||
// m_numLockHalfDuplex = true;
|
m_numLockHalfDuplex = true;
|
||||||
// m_capsLockHalfDuplex = true;
|
m_capsLockHalfDuplex = true;
|
||||||
|
|
||||||
// assume primary has all clipboards
|
// assume primary has all clipboards
|
||||||
for (ClipboardID id = 0; id < kClipboardEnd; ++id)
|
for (ClipboardID id = 0; id < kClipboardEnd; ++id)
|
||||||
|
@ -434,14 +434,19 @@ KeyModifierMask CXWindowsSecondaryScreen::mapKey(
|
||||||
for (unsigned int i = 0; i < 8; ++i) {
|
for (unsigned int i = 0; i < 8; ++i) {
|
||||||
unsigned int bit = (1 << i);
|
unsigned int bit = (1 << i);
|
||||||
if ((outMask & bit) != (m_mask & bit)) {
|
if ((outMask & bit) != (m_mask & bit)) {
|
||||||
// get list of keycodes for the modifier. there must
|
// get list of keycodes for the modifier. if there isn't
|
||||||
// be at least one.
|
// one then there's no key mapped to this modifier.
|
||||||
|
// we can't generate the desired key so bail.
|
||||||
const KeyCode* modifierKeys =
|
const KeyCode* modifierKeys =
|
||||||
&m_modifierToKeycode[i * m_keysPerModifier];
|
&m_modifierToKeycode[i * m_keysPerModifier];
|
||||||
KeyCode modifierKey = modifierKeys[0];
|
KeyCode modifierKey = modifierKeys[0];
|
||||||
if (modifierKey == 0)
|
if (modifierKey == 0) {
|
||||||
modifierKey = modifierKeys[1];
|
modifierKey = modifierKeys[1];
|
||||||
assert(modifierKeys[0] != 0);
|
}
|
||||||
|
if (modifierKey == 0) {
|
||||||
|
log((CLOG_DEBUG1 "no key mapped to modifier 0x%04x", bit));
|
||||||
|
return m_mask;
|
||||||
|
}
|
||||||
|
|
||||||
if (modifierKey != 0 && (outMask & bit) != 0) {
|
if (modifierKey != 0 && (outMask & bit) != 0) {
|
||||||
// modifier is not active but should be. if the
|
// modifier is not active but should be. if the
|
||||||
|
|
Loading…
Reference in New Issue