checkpoint. added half duplex for num lock.

This commit is contained in:
crs 2002-05-04 18:33:48 +00:00
parent cd3e49a9a9
commit 2dad59a027
2 changed files with 14 additions and 3 deletions

View File

@ -57,9 +57,13 @@ void CXWindowsPrimaryScreen::run()
const KeyID key = mapKey(&xevent.xkey); const KeyID key = mapKey(&xevent.xkey);
if (key != kKeyNone) { if (key != kKeyNone) {
m_server->onKeyDown(key, mask); m_server->onKeyDown(key, mask);
if (key == XK_Caps_Lock && m_capsLockHalfDuplex) if (key == XK_Caps_Lock && m_capsLockHalfDuplex) {
m_server->onKeyUp(key, mask | KeyModifierCapsLock); m_server->onKeyUp(key, mask | KeyModifierCapsLock);
} }
else if (key == XK_Num_Lock && m_numLockHalfDuplex) {
m_server->onKeyUp(key, mask | KeyModifierNumLock);
}
}
break; break;
} }
@ -85,8 +89,12 @@ void CXWindowsPrimaryScreen::run()
(XPointer)&filter) != True) { (XPointer)&filter) != True) {
// no press event follows so it's a plain release // no press event follows so it's a plain release
log((CLOG_DEBUG1 "event: KeyRelease code=%d, state=0x%04x", xevent.xkey.keycode, xevent.xkey.state)); log((CLOG_DEBUG1 "event: KeyRelease code=%d, state=0x%04x", xevent.xkey.keycode, xevent.xkey.state));
if (key == XK_Caps_Lock && m_capsLockHalfDuplex) if (key == XK_Caps_Lock && m_capsLockHalfDuplex) {
m_server->onKeyDown(key, mask); m_server->onKeyDown(key, mask);
}
else if (key == XK_Num_Lock && m_numLockHalfDuplex) {
m_server->onKeyDown(key, mask);
}
m_server->onKeyUp(key, mask); m_server->onKeyUp(key, mask);
} }
else { else {
@ -242,7 +250,9 @@ void CXWindowsPrimaryScreen::open(CServer* server)
// check for peculiarities // check for peculiarities
// FIXME -- may have to get these from some database // FIXME -- may have to get these from some database
m_numLockHalfDuplex = false;
m_capsLockHalfDuplex = false; m_capsLockHalfDuplex = false;
// m_numLockHalfDuplex = true;
// m_capsLockHalfDuplex = true; // m_capsLockHalfDuplex = true;
// update key state // update key state

View File

@ -57,8 +57,9 @@ private:
bool m_active; bool m_active;
Window m_window; Window m_window;
// note if caps lock key toggles on up/down (false) or on // note toggle keys that toggle on up/down (false) or on
// transition (true) // transition (true)
bool m_numLockHalfDuplex;
bool m_capsLockHalfDuplex; bool m_capsLockHalfDuplex;
// masks that indicate which modifier bits are for toggle keys // masks that indicate which modifier bits are for toggle keys