mirror of
https://github.com/debauchee/barrier.git
synced 2026-02-08 21:03:54 +08:00
Added ignoreNumLock boolean per-screen option. When true, NumLock
is ignored on that client (it has no effect on the server). This is useful for keyboards that don't have separate number pads and the user often uses the client's keyboard directly, when turning on NumLock interferes with normal typing.
This commit is contained in:
@@ -445,6 +445,11 @@ CServerProxy::enter()
|
||||
m_seqNum = seqNum;
|
||||
}
|
||||
|
||||
// ignore num lock if so desired
|
||||
if (m_ignoreNumLock) {
|
||||
mask &= ~KeyModifierNumLock;
|
||||
}
|
||||
|
||||
// forward
|
||||
getClient()->enter(x, y, seqNum, static_cast<KeyModifierMask>(mask), false);
|
||||
}
|
||||
@@ -520,6 +525,12 @@ CServerProxy::keyDown()
|
||||
mask2 != static_cast<KeyModifierMask>(mask))
|
||||
LOG((CLOG_DEBUG1 "key down translated to id=%d, mask=0x%04x", id2, mask2));
|
||||
|
||||
// ignore num lock if so desired
|
||||
if (id2 == kKeyNumLock && m_ignoreNumLock) {
|
||||
LOG((CLOG_DEBUG1 "ignoring num lock"));
|
||||
return;
|
||||
}
|
||||
|
||||
// forward
|
||||
getClient()->keyDown(id2, mask2, button);
|
||||
}
|
||||
@@ -544,6 +555,12 @@ CServerProxy::keyRepeat()
|
||||
mask2 != static_cast<KeyModifierMask>(mask))
|
||||
LOG((CLOG_DEBUG1 "key repeat translated to id=%d, mask=0x%04x", id2, mask2));
|
||||
|
||||
// ignore num lock if so desired
|
||||
if (id2 == kKeyNumLock && m_ignoreNumLock) {
|
||||
LOG((CLOG_DEBUG1 "ignoring num lock"));
|
||||
return;
|
||||
}
|
||||
|
||||
// forward
|
||||
getClient()->keyRepeat(id2, mask2, count, button);
|
||||
}
|
||||
@@ -567,6 +584,12 @@ CServerProxy::keyUp()
|
||||
mask2 != static_cast<KeyModifierMask>(mask))
|
||||
LOG((CLOG_DEBUG1 "key up translated to id=%d, mask=0x%04x", id2, mask2));
|
||||
|
||||
// ignore num lock if so desired
|
||||
if (id2 == kKeyNumLock && m_ignoreNumLock) {
|
||||
LOG((CLOG_DEBUG1 "ignoring num lock"));
|
||||
return;
|
||||
}
|
||||
|
||||
// forward
|
||||
getClient()->keyUp(id2, mask2, button);
|
||||
}
|
||||
@@ -684,6 +707,9 @@ CServerProxy::resetOptions()
|
||||
if (m_heartRate >= 0.0) {
|
||||
CProtocolUtil::writef(getOutputStream(), kMsgCNoop);
|
||||
}
|
||||
|
||||
// don't ignore num lock
|
||||
m_ignoreNumLock = false;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -726,6 +752,9 @@ CServerProxy::setOptions()
|
||||
CProtocolUtil::writef(getOutputStream(), kMsgCNoop);
|
||||
}
|
||||
}
|
||||
else if (options[i] == kOptionIgnoreNumLock) {
|
||||
m_ignoreNumLock = true;
|
||||
}
|
||||
if (id != kKeyModifierIDNull) {
|
||||
m_modifierTranslationTable[id] =
|
||||
static_cast<KeyModifierID>(options[i + 1]);
|
||||
|
||||
Reference in New Issue
Block a user