diff options
3 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/input/KeyboardMetricsCollector.java b/services/core/java/com/android/server/input/KeyboardMetricsCollector.java index ebc784d763ef..4b9f2cf9d0c0 100644 --- a/services/core/java/com/android/server/input/KeyboardMetricsCollector.java +++ b/services/core/java/com/android/server/input/KeyboardMetricsCollector.java @@ -227,7 +227,12 @@ public final class KeyboardMetricsCollector {                  "LAUNCH_DEFAULT_FITNESS"),          LAUNCH_APPLICATION_BY_PACKAGE_NAME(                  FrameworkStatsLog.KEYBOARD_SYSTEMS_EVENT_REPORTED__KEYBOARD_SYSTEM_EVENT__LAUNCH_APPLICATION_BY_PACKAGE_NAME, -                "LAUNCH_APPLICATION_BY_PACKAGE_NAME"); +                "LAUNCH_APPLICATION_BY_PACKAGE_NAME"), +        DESKTOP_MODE( +                FrameworkStatsLog +                        .KEYBOARD_SYSTEMS_EVENT_REPORTED__KEYBOARD_SYSTEM_EVENT__DESKTOP_MODE, +                "DESKTOP_MODE"); +          private final int mValue;          private final String mName; diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index bc260184e487..b5cd943ea605 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3509,6 +3509,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {                      }                  }                  break; +            case KeyEvent.KEYCODE_DPAD_DOWN: +                if (firstDown && event.isMetaPressed() && event.isCtrlPressed()) { +                    StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); +                    if (statusbar != null) { +                        statusbar.enterDesktop(event.getDisplayId()); +                        logKeyboardSystemsEvent(event, KeyboardLogEvent.DESKTOP_MODE); +                        return true; +                    } +                } +                break;              case KeyEvent.KEYCODE_DPAD_LEFT:                  if (firstDown && event.isMetaPressed()) {                      if (event.isCtrlPressed()) { diff --git a/services/tests/wmtests/src/com/android/server/policy/ShortcutLoggingTests.java b/services/tests/wmtests/src/com/android/server/policy/ShortcutLoggingTests.java index 6853c4cdea0e..e904eae00802 100644 --- a/services/tests/wmtests/src/com/android/server/policy/ShortcutLoggingTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/ShortcutLoggingTests.java @@ -223,7 +223,11 @@ public class ShortcutLoggingTests extends ShortcutKeyTestBase {                          KeyboardLogEvent.LAUNCH_DEFAULT_MAPS, KeyEvent.KEYCODE_M, META_ON},                  {"Meta + S -> Launch Default Messaging App",                          new int[]{META_KEY, KeyEvent.KEYCODE_S}, -                        KeyboardLogEvent.LAUNCH_DEFAULT_MESSAGING, KeyEvent.KEYCODE_S, META_ON}}; +                        KeyboardLogEvent.LAUNCH_DEFAULT_MESSAGING, KeyEvent.KEYCODE_S, META_ON}, +                {"Meta + Ctrl + DPAD_DOWN -> Enter desktop mode", +                        new int[]{META_KEY, CTRL_KEY, KeyEvent.KEYCODE_DPAD_DOWN}, +                        KeyboardLogEvent.DESKTOP_MODE, KeyEvent.KEYCODE_DPAD_DOWN, +                        META_ON | CTRL_ON}};      }      @Keep  |