From 05f76930023fc475fc25ba6baf248b3a3dc6607f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 14 Sep 2004 22:20:28 +0000 Subject: [PATCH] Support for locks git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8953 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../input_server/devices/keyboard/KeyboardInputDevice.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp index af214703bb..73a9fe6bbb 100644 --- a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp +++ b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp @@ -613,12 +613,15 @@ KeyboardInputDevice::DeviceWatcher(void *arg) states[(keycode)>>3] &= (!(1 << (7 - ((keycode) & 0x7)))); uint32 modifiers = keymap->Modifier(keycode); - if (modifiers) { + if (modifiers + && ( !(modifiers & (B_CAPS_LOCK | B_NUM_LOCK | B_SCROLL_LOCK)) + || at_kbd->is_keydown)) { BMessage *msg = new BMessage; msg->AddInt64("when", at_kbd->timestamp); msg->what = B_MODIFIERS_CHANGED; msg->AddInt32("be:old_modifiers", currentModifiers); - if (at_kbd->is_keydown) + if ((at_kbd->is_keydown && !(modifiers & (B_CAPS_LOCK | B_NUM_LOCK | B_SCROLL_LOCK))) + || (at_kbd->is_keydown && !(currentModifiers & modifiers))) currentModifiers |= modifiers; else currentModifiers &= !modifiers;