diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-10-29 22:19:53 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-11-05 13:27:35 -0700 |
commit | d4ecee931322b9832b729f2fcbaed21c35edd3bf (patch) | |
tree | c712c9351c2b4b52430d2d47c8d21d9f54a65e11 /libs/ui | |
parent | 283397c469b306700d168ae8d22dde7758a45e48 (diff) | |
download | frameworks_native-d4ecee931322b9832b729f2fcbaed21c35edd3bf.zip frameworks_native-d4ecee931322b9832b729f2fcbaed21c35edd3bf.tar.gz frameworks_native-d4ecee931322b9832b729f2fcbaed21c35edd3bf.tar.bz2 |
Rename the locked meta key constants for clarity.
Also added some tests for LED setting.
Change-Id: I3fd86322afd07ae8de52d1ccbc2fae2c6d586641
Diffstat (limited to 'libs/ui')
-rw-r--r-- | libs/ui/InputReader.cpp | 18 | ||||
-rw-r--r-- | libs/ui/tests/InputReader_test.cpp | 100 |
2 files changed, 108 insertions, 10 deletions
diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp index 120222c..b91e93a 100644 --- a/libs/ui/InputReader.cpp +++ b/libs/ui/InputReader.cpp @@ -129,11 +129,11 @@ int32_t updateMetaState(int32_t keyCode, bool down, int32_t oldMetaState) { case AKEYCODE_META_RIGHT: return setEphemeralMetaState(AMETA_META_RIGHT_ON, down, oldMetaState); case AKEYCODE_CAPS_LOCK: - return toggleLockedMetaState(AMETA_CAPS_LOCK_LATCHED, down, oldMetaState); + return toggleLockedMetaState(AMETA_CAPS_LOCK_ON, down, oldMetaState); case AKEYCODE_NUM_LOCK: - return toggleLockedMetaState(AMETA_NUM_LOCK_LATCHED, down, oldMetaState); + return toggleLockedMetaState(AMETA_NUM_LOCK_ON, down, oldMetaState); case AKEYCODE_SCROLL_LOCK: - return toggleLockedMetaState(AMETA_SCROLL_LOCK_LATCHED, down, oldMetaState); + return toggleLockedMetaState(AMETA_SCROLL_LOCK_ON, down, oldMetaState); default: return oldMetaState; } @@ -966,8 +966,8 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t keyCode, // Note: getDisplayInfo is non-reentrant so we can continue holding the lock. if (mAssociatedDisplayId >= 0) { int32_t orientation; - if (! getPolicy()->getDisplayInfo(mAssociatedDisplayId, NULL, NULL, & orientation)) { - return; + if (!getPolicy()->getDisplayInfo(mAssociatedDisplayId, NULL, NULL, & orientation)) { + orientation = InputReaderPolicyInterface::ROTATION_0; } keyCode = rotateKeyCode(keyCode, orientation); @@ -1058,11 +1058,11 @@ int32_t KeyboardInputMapper::getMetaState() { void KeyboardInputMapper::updateLedStateLocked(bool reset) { updateLedStateForModifierLocked(mLocked.capsLockLedState, LED_CAPSL, - AMETA_CAPS_LOCK_LATCHED, reset); + AMETA_CAPS_LOCK_ON, reset); updateLedStateForModifierLocked(mLocked.numLockLedState, LED_NUML, - AMETA_NUM_LOCK_LATCHED, reset); + AMETA_NUM_LOCK_ON, reset); updateLedStateForModifierLocked(mLocked.scrollLockLedState, LED_SCROLLL, - AMETA_SCROLL_LOCK_LATCHED, reset); + AMETA_SCROLL_LOCK_ON, reset); } void KeyboardInputMapper::updateLedStateForModifierLocked(LockedState::LedState& ledState, @@ -1228,7 +1228,7 @@ void TrackballInputMapper::sync(nsecs_t when) { // Note: getDisplayInfo is non-reentrant so we can continue holding the lock. int32_t orientation; if (! getPolicy()->getDisplayInfo(mAssociatedDisplayId, NULL, NULL, & orientation)) { - return; + orientation = InputReaderPolicyInterface::ROTATION_0; } float temp; diff --git a/libs/ui/tests/InputReader_test.cpp b/libs/ui/tests/InputReader_test.cpp index c19147f..ded0225 100644 --- a/libs/ui/tests/InputReader_test.cpp +++ b/libs/ui/tests/InputReader_test.cpp @@ -376,6 +376,7 @@ class FakeEventHub : public EventHubInterface { KeyedVector<int32_t, int32_t> scanCodeStates; KeyedVector<int32_t, int32_t> switchStates; KeyedVector<int32_t, KeyInfo> keys; + KeyedVector<int32_t, bool> leds; Device(const String8& name, uint32_t classes) : name(name), classes(classes) { @@ -450,6 +451,16 @@ public: device->keys.add(scanCode, info); } + void addLed(int32_t deviceId, int32_t led, bool initialState) { + Device* device = getDevice(deviceId); + device->leds.add(led, initialState); + } + + bool getLedState(int32_t deviceId, int32_t led) { + Device* device = getDevice(deviceId); + return device->leds.valueFor(led); + } + Vector<String8>& getExcludedDevices() { return mExcludedDevices; } @@ -584,10 +595,22 @@ private: } virtual bool hasLed(int32_t deviceId, int32_t led) const { - return false; + Device* device = getDevice(deviceId); + return device && device->leds.indexOfKey(led) >= 0; } virtual void setLedState(int32_t deviceId, int32_t led, bool on) { + Device* device = getDevice(deviceId); + if (device) { + ssize_t index = device->leds.indexOfKey(led); + if (index >= 0) { + device->leds.replaceValueAt(led, on); + } else { + ADD_FAILURE() + << "Attempted to set the state of an LED that the EventHub declared " + "was not present. led=" << led; + } + } } virtual void dump(String8& dump) { @@ -1703,6 +1726,81 @@ TEST_F(KeyboardInputMapperTest, MarkSupportedKeyCodes) { ASSERT_FALSE(flags[1]); } +TEST_F(KeyboardInputMapperTest, Process_LockedKeysShouldToggleMetaStateAndLeds) { + mFakeEventHub->addLed(DEVICE_ID, LED_CAPSL, true /*initially on*/); + mFakeEventHub->addLed(DEVICE_ID, LED_NUML, false /*initially off*/); + mFakeEventHub->addLed(DEVICE_ID, LED_SCROLLL, false /*initially off*/); + + KeyboardInputMapper* mapper = new KeyboardInputMapper(mDevice, -1, + AINPUT_SOURCE_KEYBOARD, AINPUT_KEYBOARD_TYPE_ALPHABETIC); + addMapperAndConfigure(mapper); + + // Initialization should have turned all of the lights off. + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + + // Toggle caps lock on. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_CAPSLOCK, AKEYCODE_CAPS_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_CAPSLOCK, AKEYCODE_CAPS_LOCK, 0, 0); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_CAPS_LOCK_ON, mapper->getMetaState()); + + // Toggle num lock on. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_NUMLOCK, AKEYCODE_NUM_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_NUMLOCK, AKEYCODE_NUM_LOCK, 0, 0); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_CAPS_LOCK_ON | AMETA_NUM_LOCK_ON, mapper->getMetaState()); + + // Toggle caps lock off. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_CAPSLOCK, AKEYCODE_CAPS_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_CAPSLOCK, AKEYCODE_CAPS_LOCK, 1, 0); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_NUM_LOCK_ON, mapper->getMetaState()); + + // Toggle scroll lock on. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_SCROLLLOCK, AKEYCODE_SCROLL_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_SCROLLLOCK, AKEYCODE_SCROLL_LOCK, 0, 0); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_NUM_LOCK_ON | AMETA_SCROLL_LOCK_ON, mapper->getMetaState()); + + // Toggle num lock off. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_NUMLOCK, AKEYCODE_NUM_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_NUMLOCK, AKEYCODE_NUM_LOCK, 0, 0); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_TRUE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_SCROLL_LOCK_ON, mapper->getMetaState()); + + // Toggle scroll lock off. + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_SCROLLLOCK, AKEYCODE_SCROLL_LOCK, 1, 0); + process(mapper, ARBITRARY_TIME, DEVICE_ID, + EV_KEY, KEY_SCROLLLOCK, AKEYCODE_SCROLL_LOCK, 0, 0); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_CAPSL)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_NUML)); + ASSERT_FALSE(mFakeEventHub->getLedState(DEVICE_ID, LED_SCROLLL)); + ASSERT_EQ(AMETA_NONE, mapper->getMetaState()); +} + // --- TrackballInputMapperTest --- |