提问人:Margish thumar 提问时间:11/17/2023 更新时间:11/19/2023 访问量:54
如何在 AOSP 13 中映射另一个用于后退导航的键码?
How to map another keycode for back navigation in AOSP 13?
问:
我使用的是 AOSP 13 源代码。
- 通过 adb shell 进行回操作
adb shell input keyevent 4
4 是背面的键码
我想通过键代码 141 映射后导航,以便我可以使用上面的命令返回为
adb shell input keyevent 141
这可能吗?
答:
0赞
Margish thumar
11/19/2023
#1
我找到了一个解决方案。
由于键码 141 映射到 frameworks/base/core/java/android/view/KeyEvent 中的KEYCODE_F11.java
需要处理 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager 中KEYCODE_F11的输入事件.java
导入文件
import android.content.Context; import android.os.SystemClock; import android.view.InputEvent; import android.view.KeyEvent; import com.android.server.LocalServices; import com.android.server.input.InputManagerService; import android.hardware.input.InputManager;
- 在函数 interceptKeyBeforeQueueing() 中,有一个 swhitch 大小写,其中添加了 KEYCODE_F11 的大小写。
// Handle special keys.
switch (keyCode) {
+ case KeyEvent.KEYCODE_F11:
+ long now = SystemClock.uptimeMillis();
+ if (down)
+ {
+ // Inject a key down event
+ KeyEvent downEvent = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0);
+ InputManager.getInstance().injectInputEvent(downEvent, InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
+ }
+ else
+ {
+ // inject a key up event
+ KeyEvent upEvent = new KeyEvent(now, now, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK, 0);
+ InputManager.getInstance().injectInputEvent(upEvent, InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
+ }
+ break;
case KeyEvent.KEYCODE_BACK: {
if (down) {
mBackKeyHandled = false;
评论