Loading core/api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -3527,6 +3527,8 @@ package android.view { method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void disable(); method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void enable(); method @NonNull public android.hardware.input.InputDeviceIdentifier getIdentifier(); method @Nullable public String getKeyboardLanguageTag(); method @Nullable public String getKeyboardLayoutType(); } public abstract class InputEvent implements android.os.Parcelable { Loading core/java/android/view/InputDevice.java +2 −0 Original line number Diff line number Diff line Loading @@ -958,6 +958,7 @@ public final class InputDevice implements Parcelable { * @hide */ @Nullable @TestApi public String getKeyboardLanguageTag() { return mKeyboardLanguageTag; } Loading @@ -968,6 +969,7 @@ public final class InputDevice implements Parcelable { * @hide */ @Nullable @TestApi public String getKeyboardLayoutType() { return mKeyboardLayoutType; } Loading services/core/java/com/android/server/input/InputManagerService.java +3 −2 Original line number Diff line number Diff line Loading @@ -2725,11 +2725,12 @@ public class InputManagerService extends IInputManager.Stub // Native callback. @SuppressWarnings("unused") private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier) { private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier, String languageTag, String layoutType) { if (!mSystemReady) { return null; } return mKeyboardLayoutManager.getKeyboardLayoutOverlay(identifier); return mKeyboardLayoutManager.getKeyboardLayoutOverlay(identifier, languageTag, layoutType); } @EnforcePermission(Manifest.permission.REMAP_MODIFIER_KEYS) Loading services/core/java/com/android/server/input/KeyboardLayoutManager.java +158 −141 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/jni/com_android_server_input_InputManagerService.cpp +23 −7 Original line number Diff line number Diff line Loading @@ -313,7 +313,8 @@ public: std::shared_ptr<PointerControllerInterface> obtainPointerController(int32_t deviceId) override; void notifyInputDevicesChanged(const std::vector<InputDeviceInfo>& inputDevices) override; std::shared_ptr<KeyCharacterMap> getKeyboardLayoutOverlay( const InputDeviceIdentifier& identifier) override; const InputDeviceIdentifier& identifier, const std::optional<KeyboardLayoutInfo> keyboardLayoutInfo) override; std::string getDeviceAlias(const InputDeviceIdentifier& identifier) override; TouchAffineTransformation getTouchAffineTransformation(const std::string& inputDeviceDescriptor, ui::Rotation surfaceRotation) override; Loading Loading @@ -779,17 +780,32 @@ void NativeInputManager::notifyInputDevicesChanged(const std::vector<InputDevice } std::shared_ptr<KeyCharacterMap> NativeInputManager::getKeyboardLayoutOverlay( const InputDeviceIdentifier& identifier) { const InputDeviceIdentifier& identifier, const std::optional<KeyboardLayoutInfo> keyboardLayoutInfo) { ATRACE_CALL(); JNIEnv* env = jniEnv(); std::shared_ptr<KeyCharacterMap> result; ScopedLocalRef<jstring> descriptor(env, env->NewStringUTF(identifier.descriptor.c_str())); ScopedLocalRef<jstring> languageTag(env, keyboardLayoutInfo ? env->NewStringUTF( keyboardLayoutInfo->languageTag.c_str()) : nullptr); ScopedLocalRef<jstring> layoutType(env, keyboardLayoutInfo ? env->NewStringUTF( keyboardLayoutInfo->layoutType.c_str()) : nullptr); ScopedLocalRef<jobject> identifierObj(env, env->NewObject(gInputDeviceIdentifierInfo.clazz, gInputDeviceIdentifierInfo.constructor, descriptor.get(), identifier.vendor, identifier.product)); ScopedLocalRef<jobjectArray> arrayObj(env, jobjectArray(env->CallObjectMethod(mServiceObj, gServiceClassInfo.getKeyboardLayoutOverlay, identifierObj.get()))); ScopedLocalRef<jobjectArray> arrayObj(env, jobjectArray(env->CallObjectMethod(mServiceObj, gServiceClassInfo.getKeyboardLayoutOverlay, identifierObj.get(), languageTag.get(), layoutType.get()))); if (arrayObj.get()) { ScopedLocalRef<jstring> filenameObj(env, jstring(env->GetObjectArrayElement(arrayObj.get(), 0))); Loading Loading @@ -2803,9 +2819,9 @@ int register_android_server_InputManager(JNIEnv* env) { GET_METHOD_ID(gServiceClassInfo.getPointerIcon, clazz, "getPointerIcon", "(I)Landroid/view/PointerIcon;"); GET_METHOD_ID(gServiceClassInfo.getKeyboardLayoutOverlay, clazz, "getKeyboardLayoutOverlay", "(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;"); GET_METHOD_ID(gServiceClassInfo.getKeyboardLayoutOverlay, clazz, "getKeyboardLayoutOverlay", "(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/" "String;)[Ljava/lang/String;"); GET_METHOD_ID(gServiceClassInfo.getDeviceAlias, clazz, "getDeviceAlias", "(Ljava/lang/String;)Ljava/lang/String;"); Loading Loading
core/api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -3527,6 +3527,8 @@ package android.view { method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void disable(); method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void enable(); method @NonNull public android.hardware.input.InputDeviceIdentifier getIdentifier(); method @Nullable public String getKeyboardLanguageTag(); method @Nullable public String getKeyboardLayoutType(); } public abstract class InputEvent implements android.os.Parcelable { Loading
core/java/android/view/InputDevice.java +2 −0 Original line number Diff line number Diff line Loading @@ -958,6 +958,7 @@ public final class InputDevice implements Parcelable { * @hide */ @Nullable @TestApi public String getKeyboardLanguageTag() { return mKeyboardLanguageTag; } Loading @@ -968,6 +969,7 @@ public final class InputDevice implements Parcelable { * @hide */ @Nullable @TestApi public String getKeyboardLayoutType() { return mKeyboardLayoutType; } Loading
services/core/java/com/android/server/input/InputManagerService.java +3 −2 Original line number Diff line number Diff line Loading @@ -2725,11 +2725,12 @@ public class InputManagerService extends IInputManager.Stub // Native callback. @SuppressWarnings("unused") private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier) { private String[] getKeyboardLayoutOverlay(InputDeviceIdentifier identifier, String languageTag, String layoutType) { if (!mSystemReady) { return null; } return mKeyboardLayoutManager.getKeyboardLayoutOverlay(identifier); return mKeyboardLayoutManager.getKeyboardLayoutOverlay(identifier, languageTag, layoutType); } @EnforcePermission(Manifest.permission.REMAP_MODIFIER_KEYS) Loading
services/core/java/com/android/server/input/KeyboardLayoutManager.java +158 −141 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/jni/com_android_server_input_InputManagerService.cpp +23 −7 Original line number Diff line number Diff line Loading @@ -313,7 +313,8 @@ public: std::shared_ptr<PointerControllerInterface> obtainPointerController(int32_t deviceId) override; void notifyInputDevicesChanged(const std::vector<InputDeviceInfo>& inputDevices) override; std::shared_ptr<KeyCharacterMap> getKeyboardLayoutOverlay( const InputDeviceIdentifier& identifier) override; const InputDeviceIdentifier& identifier, const std::optional<KeyboardLayoutInfo> keyboardLayoutInfo) override; std::string getDeviceAlias(const InputDeviceIdentifier& identifier) override; TouchAffineTransformation getTouchAffineTransformation(const std::string& inputDeviceDescriptor, ui::Rotation surfaceRotation) override; Loading Loading @@ -779,17 +780,32 @@ void NativeInputManager::notifyInputDevicesChanged(const std::vector<InputDevice } std::shared_ptr<KeyCharacterMap> NativeInputManager::getKeyboardLayoutOverlay( const InputDeviceIdentifier& identifier) { const InputDeviceIdentifier& identifier, const std::optional<KeyboardLayoutInfo> keyboardLayoutInfo) { ATRACE_CALL(); JNIEnv* env = jniEnv(); std::shared_ptr<KeyCharacterMap> result; ScopedLocalRef<jstring> descriptor(env, env->NewStringUTF(identifier.descriptor.c_str())); ScopedLocalRef<jstring> languageTag(env, keyboardLayoutInfo ? env->NewStringUTF( keyboardLayoutInfo->languageTag.c_str()) : nullptr); ScopedLocalRef<jstring> layoutType(env, keyboardLayoutInfo ? env->NewStringUTF( keyboardLayoutInfo->layoutType.c_str()) : nullptr); ScopedLocalRef<jobject> identifierObj(env, env->NewObject(gInputDeviceIdentifierInfo.clazz, gInputDeviceIdentifierInfo.constructor, descriptor.get(), identifier.vendor, identifier.product)); ScopedLocalRef<jobjectArray> arrayObj(env, jobjectArray(env->CallObjectMethod(mServiceObj, gServiceClassInfo.getKeyboardLayoutOverlay, identifierObj.get()))); ScopedLocalRef<jobjectArray> arrayObj(env, jobjectArray(env->CallObjectMethod(mServiceObj, gServiceClassInfo.getKeyboardLayoutOverlay, identifierObj.get(), languageTag.get(), layoutType.get()))); if (arrayObj.get()) { ScopedLocalRef<jstring> filenameObj(env, jstring(env->GetObjectArrayElement(arrayObj.get(), 0))); Loading Loading @@ -2803,9 +2819,9 @@ int register_android_server_InputManager(JNIEnv* env) { GET_METHOD_ID(gServiceClassInfo.getPointerIcon, clazz, "getPointerIcon", "(I)Landroid/view/PointerIcon;"); GET_METHOD_ID(gServiceClassInfo.getKeyboardLayoutOverlay, clazz, "getKeyboardLayoutOverlay", "(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;"); GET_METHOD_ID(gServiceClassInfo.getKeyboardLayoutOverlay, clazz, "getKeyboardLayoutOverlay", "(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/" "String;)[Ljava/lang/String;"); GET_METHOD_ID(gServiceClassInfo.getDeviceAlias, clazz, "getDeviceAlias", "(Ljava/lang/String;)Ljava/lang/String;"); Loading