From dec2686d7e42b11e5cf8eeaec63a2ef589dc78a4 Mon Sep 17 00:00:00 2001 From: Ramii ahmed Date: Thu, 28 Jan 2021 17:22:22 -0800 Subject: [PATCH] sm6250-common: Import Keyhandler from Davinci https://github.com/ArianK16a/android_device_xiaomi_davinci This tells Inputdispatcher to ignore inputs from our Fingerprint scanner, as that seems to be causing ANRs --- BoardConfigCommon.mk | 3 ++ common.mk | 4 +++ keyhandler/Android.mk | 21 ++++++++++++ keyhandler/AndroidManifest.xml | 11 +++++++ keyhandler/proguard.flags | 4 +++ .../org/lineageos/keyhandler/KeyHandler.java | 33 +++++++++++++++++++ 6 files changed, 76 insertions(+) create mode 100644 keyhandler/Android.mk create mode 100644 keyhandler/AndroidManifest.xml create mode 100644 keyhandler/proguard.flags create mode 100644 keyhandler/src/org/lineageos/keyhandler/KeyHandler.java diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk index 970125b..a952f5f 100644 --- a/BoardConfigCommon.mk +++ b/BoardConfigCommon.mk @@ -197,6 +197,9 @@ BOARD_PLAT_PRIVATE_SEPOLICY_DIR += $(COMMON_PATH)/sepolicy/private BOARD_PLAT_PUBLIC_SEPOLICY_DIR += $(COMMON_PATH)/sepolicy/public BOARD_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/vendor +# Side FP key for InputDispatcher to skip +TARGET_INPUTDISPATCHER_SKIP_EVENT_KEY := 96 + # Verified Boot BOARD_AVB_ENABLE := true BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag diff --git a/common.mk b/common.mk index 3036e14..a8703e3 100644 --- a/common.mk +++ b/common.mk @@ -230,6 +230,10 @@ PRODUCT_PACKAGES += \ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.consumerir.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.consumerir.xml +# KeyHandler +PRODUCT_PACKAGES += \ + KeyHandler + # Light PRODUCT_PACKAGES += \ android.hardware.light@2.0-service.xiaomi_sm6250 diff --git a/keyhandler/Android.mk b/keyhandler/Android.mk new file mode 100644 index 0000000..f01a9bd --- /dev/null +++ b/keyhandler/Android.mk @@ -0,0 +1,21 @@ +# +# Copyright (C) 2021 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) +LOCAL_PACKAGE_NAME := KeyHandler + +LOCAL_CERTIFICATE := platform +LOCAL_PRIVATE_PLATFORM_APIS := true +LOCAL_PRIVILEGED_MODULE := true +LOCAL_MODULE_TAGS := optional + +LOCAL_PROGUARD_FLAG_FILES := proguard.flags + +include $(BUILD_PACKAGE) diff --git a/keyhandler/AndroidManifest.xml b/keyhandler/AndroidManifest.xml new file mode 100644 index 0000000..3cb928d --- /dev/null +++ b/keyhandler/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/keyhandler/proguard.flags b/keyhandler/proguard.flags new file mode 100644 index 0000000..f3aa10b --- /dev/null +++ b/keyhandler/proguard.flags @@ -0,0 +1,4 @@ +# Keep keyhandler constructor +-keep public class * implements com.android.internal.os.DeviceKeyHandler { + public (android.content.Context); +} diff --git a/keyhandler/src/org/lineageos/keyhandler/KeyHandler.java b/keyhandler/src/org/lineageos/keyhandler/KeyHandler.java new file mode 100644 index 0000000..691a0cd --- /dev/null +++ b/keyhandler/src/org/lineageos/keyhandler/KeyHandler.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2021 The LineageOS Project + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.lineageos.keyhandler; + +import android.content.Context; +import android.util.Log; +import android.view.KeyEvent; + +import com.android.internal.os.DeviceKeyHandler; + +public class KeyHandler implements DeviceKeyHandler { + private static final String TAG = "KeyHandler"; + private static final int KEYCODE_SIDE_FP = 96; + + public KeyHandler(Context context) { + Log.i(TAG, "KeyHandler constructor called"); + } + + public KeyEvent handleKeyEvent(KeyEvent event) { + int scanCode = event.getScanCode(); + Log.i(TAG, "handleKeyEvent=" + scanCode); + switch (scanCode) { + case KEYCODE_SIDE_FP: + return null; + default: + return event; + } + } +}