From 711d19bd29c0143eba13ae710fc97990ffadb75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 18 Sep 2004 13:13:30 +0000 Subject: [PATCH] fix for leds and modifiers NOTE : modifiers are per device git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8997 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../devices/keyboard/KeyboardInputDevice.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp index b24f5b0833..3642d184ba 100644 --- a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp +++ b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp @@ -34,7 +34,6 @@ #include #include -#define DEBUG 1 #if DEBUG inline void LOG(const char *fmt, ...) { char buf[1024]; va_list ap; va_start(ap, fmt); vsprintf(buf, fmt, ap); va_end(ap); \ fputs(buf, KeyboardInputDevice::sLogFile); fflush(KeyboardInputDevice::sLogFile); } @@ -419,8 +418,8 @@ KeyboardInputDevice::InitFromSettings(void *cookie, uint32 opcode) || opcode == B_KEY_MAP_CHANGED || opcode == B_KEY_LOCKS_CHANGED) { fKeymap.LoadCurrent(); - SetLeds(device); device->modifiers = fKeymap.Locks(); + SetLeds(device); } return B_OK; @@ -678,11 +677,15 @@ KeyboardInputDevice::DeviceWatcher(void *arg) || (is_keydown && !(dev->modifiers & modifiers))) dev->modifiers |= modifiers; else - dev->modifiers &= !modifiers; + dev->modifiers ^= modifiers; + msg->AddInt32("modifiers", dev->modifiers); msg->AddData("states", B_UINT8_TYPE, states, 16); if (dev->owner->EnqueueMessage(msg)!=B_OK) delete msg; + + if (modifiers & (B_CAPS_LOCK | B_NUM_LOCK | B_SCROLL_LOCK)) + dev->owner->SetLeds(dev); } char *str = NULL, *str2 = NULL; @@ -798,7 +801,7 @@ KeyboardInputDevice::SetLeds(keyboard_device *device) if (device->fd<0) return; - uint32 locks = device->owner->fKeymap.Locks(); + uint32 locks = device->modifiers; char lock_io[3]; memset(lock_io, 0, sizeof(lock_io)); if (locks & B_NUM_LOCK) @@ -809,4 +812,4 @@ KeyboardInputDevice::SetLeds(keyboard_device *device) lock_io[2] = 1; ioctl(device->fd, kSetLeds, &lock_io); -} \ No newline at end of file +}