diff options
Diffstat (limited to 'services/input/EventHub.cpp')
-rw-r--r-- | services/input/EventHub.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp index c0eb1b934b1e..b788e16f1f5e 100644 --- a/services/input/EventHub.cpp +++ b/services/input/EventHub.cpp @@ -531,11 +531,29 @@ sp<KeyCharacterMap> EventHub::getKeyCharacterMap(int32_t deviceId) const { AutoMutex _l(mLock); Device* device = getDeviceLocked(deviceId); if (device) { + if (device->combinedKeyMap != NULL) { + return device->combinedKeyMap; + } return device->keyMap.keyCharacterMap; } return NULL; } +bool EventHub::setKeyboardLayoutOverlay(int32_t deviceId, + const sp<KeyCharacterMap>& map) { + AutoMutex _l(mLock); + Device* device = getDeviceLocked(deviceId); + if (device) { + if (map != device->overlayKeyMap) { + device->overlayKeyMap = map; + device->combinedKeyMap = KeyCharacterMap::combine( + device->keyMap.keyCharacterMap, map); + return true; + } + } + return false; +} + void EventHub::vibrate(int32_t deviceId, nsecs_t duration) { AutoMutex _l(mLock); Device* device = getDeviceLocked(deviceId); |