From 61da25aa581d2d7994b9d727b5e6f9419df68c8a Mon Sep 17 00:00:00 2001 From: Siarhei Vishniakou Date: Thu, 15 Feb 2018 21:04:49 -0600 Subject: Move SPECIAL_FUNCTION from .kcm to .idc files Currently, the only use of device-specific .kcm files is to specify SPECIAL_FUNCTION flag (meaning that this keyboard is only used to perform system control functions and not for typing). Instead of adding a special .kcm file, use .idc files with se keyboard.specialFunction = 1 to achieve the same functionality. This allows the removal of all device-specific .kcm files. The .kcm functionality will remain in P (with a warning). The functionality will be removed in Q. Bug: 67718661 Test: tested the codepath on Android wear device via logging Change-Id: I1b4572456fa42caae1282dd8d3557820671b3610 --- libs/input/Keyboard.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libs/input/Keyboard.cpp') diff --git a/libs/input/Keyboard.cpp b/libs/input/Keyboard.cpp index 07f2289785..11842ee7ff 100644 --- a/libs/input/Keyboard.cpp +++ b/libs/input/Keyboard.cpp @@ -148,9 +148,19 @@ String8 KeyMap::getPath(const InputDeviceIdentifier& deviceIdentifier, // --- Global functions --- +bool isKeyboardSpecialFunction(const PropertyMap* config) { + if (config == nullptr) { + return false; + } + bool isSpecialFunction = false; + config->tryGetProperty(String8("keyboard.specialFunction"), isSpecialFunction); + return isSpecialFunction; +} + bool isEligibleBuiltInKeyboard(const InputDeviceIdentifier& deviceIdentifier, const PropertyMap* deviceConfiguration, const KeyMap* keyMap) { - if (!keyMap->haveKeyCharacterMap() + // TODO: remove the third OR statement (SPECIAL_FUNCTION) in Q + if (!keyMap->haveKeyCharacterMap() || isKeyboardSpecialFunction(deviceConfiguration) || keyMap->keyCharacterMap->getKeyboardType() == KeyCharacterMap::KEYBOARD_TYPE_SPECIAL_FUNCTION) { return false; -- cgit v1.2.3-59-g8ed1b