我正在使用 AOSP 13 源代码。
adb shell input keyevent 4
4 是返回键代码
我想通过键码141映射返回导航,这样我就可以使用上面的命令返回
adb shell input keyevent 141
这可能吗?
我找到了解决办法。
由于键码 141 映射到 Frameworks/base/core/java/android/view/KeyEvent.java 中的 KEYCODE_F11
需要在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java中处理KEYCODE_F11的输入事件
导入文件
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;
// 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;