Android13 中框架层新增一个KEY_SHUTDOWN=304的按键(对应驱动上报时按键值是195),这里需要修改kl键值映射,当接收到这个按键按下的input事件时,启动关机流程。
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
// isWakeKey()
// frameworks/native/include/android/keycodes.h
// frameworks/native/include/input/InputEventLabels.h
// frameworks/base/core/res/res/values/attrs.xml
// emulator?
// LAST_KEYCODE
主要修改改动如下:
frameworks/native/include/android/keycodes.h
AKEYCODE_DEMO_APP_3 = 303,
/** Demo Application key #4. */
AKEYCODE_DEMO_APP_4 = 304,
+ /** shutdown for vt super capacitor. */
+ AKEYCODE_SHUTDOWN = 305,
frameworks/native/libs/input/InputEventLabels.cpp
DEFINE_KEYCODE(DEMO_APP_1), \
DEFINE_KEYCODE(DEMO_APP_2), \
DEFINE_KEYCODE(DEMO_APP_3), \
- DEFINE_KEYCODE(DEMO_APP_4)
+ DEFINE_KEYCODE(DEMO_APP_4), \
+ DEFINE_KEYCODE(SHUTDOWN)
frameworks/base/core/java/android/view/KeyEvent.java
@@ -866,13 +866,15 @@ public class KeyEvent extends InputEvent implements Parcelable {
public static final int KEYCODE_DEMO_APP_3 = 303;
/** Key code constant: Demo Application key #4. */
public static final int KEYCODE_DEMO_APP_4 = 304;
+ /** Key code constant: shutdown for vt super capacitor. */
+ public static final int KEYCODE_SHUTDOWN = 305;
/**
* Integer value of the last KEYCODE. Increases as new keycodes are added to KeyEvent.
* @hide
*/
@TestApi
- public static final int LAST_KEYCODE = KEYCODE_DEMO_APP_4;
+ public static final int LAST_KEYCODE = KEYCODE_SHUTDOWN;
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
@@ -2024,6 +2026,7 @@ public class KeyEvent extends InputEvent implements Parcelable {
case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN:
case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT:
case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT:
+ case KeyEvent.KEYCODE_SHUTDOWN:
return true;
return true;
}
frameworks/base/core/res/res/values/attrs.xml
@@ -2005,6 +2005,7 @@
<enum name="KEYCODE_DEMO_APP_2" value="302" />
<enum name="KEYCODE_DEMO_APP_3" value="303" />
<enum name="KEYCODE_DEMO_APP_4" value="304" />
+ <enum name="AKEYCODE_SHUTDOWN" value="305" />
</attr>
修改键值映射关系,如下195 是驱动上报,SHUTDOWN是框架自定义
frameworks/base/data/keyboards/Generic.kl
@@ -214,7 +214,7 @@ key 180 NUMPAD_RIGHT_PAREN
# key 192 F22
# key 193 F23
# key 194 F24
-# key 195 (undefined)
+key 195 SHUTDOWN
services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3860,6 +3860,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
+ " policyFlags=" + Integer.toHexString(policyFlags));
}
+ // if keycode is KEYCODE_SHUTDOWN 195, shutdown immediately for vt super capacitor function
+ if( keyCode == KeyEvent.KEYCODE_SHUTDOWN && down ){
+ Log.d(TAG,"start shutdown because keycode is KEYCODE_SHUTDOWN="+keyCode + " policyFlags=" + Integer.toHexString(policyFlags));
+ mPowerManager.shutdown(false,"android.policy:POWER",false);
+ return ACTION_PASS_TO_USER;
+ }
// Basic policy based on interactive state.
int result;