Merge "Rename the locked meta key constants for clarity."
This commit is contained in:
commit
306ae8b888
@ -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;
|
||||
|
@ -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 ---
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user