chromium/ash/public/cpp/accelerator_actions.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_PUBLIC_CPP_ACCELERATOR_ACTIONS_H_
#define ASH_PUBLIC_CPP_ACCELERATOR_ACTIONS_H_

#include "ash/public/cpp/ash_public_export.h"

namespace ash {

// IMPORTANT PLEASE READ.
// Please ensure that the order of these enums are stable. If adding a new
// accelerator action, please put at the end but before DEBUG-related
// accelerator actions. You will also need to update `AcceleratorAction` in
// tools/metrics/histograms/metadata/chromeos/enums.xml
// Please keep the ActionName in sync with the ActionName under
// <histogram name="Ash.Accelerators.Actions.{ActionName}" in this file
// tools/metrics/histograms/metadata/ash/histograms.xml
// AND
// ash/public/mojom/accelerator_actions.mojom.
// AND
// `AcceleratorAction` enum in
// tools/metrics/histograms/metadata/chromeos/enums.xml.
//
// Accelerator actions are defined as:
//  ACCELERATOR_ACTION_ENTRY(NewAction) \
//
// The added enum member is kNewAction. Its string name is NewAction.
//
// LINT.IfChange
#define ACCELERATOR_ACTIONS                                            \
  ACCELERATOR_ACTION_ENTRY(BrightnessDown)                             \
  ACCELERATOR_ACTION_ENTRY(BrightnessUp)                               \
  ACCELERATOR_ACTION_ENTRY(CycleBackwardMru)                           \
  ACCELERATOR_ACTION_ENTRY(CycleForwardMru)                            \
  ACCELERATOR_ACTION_ENTRY(CycleSameAppWindowsBackward)                \
  ACCELERATOR_ACTION_ENTRY(CycleSameAppWindowsForward)                 \
  ACCELERATOR_ACTION_ENTRY(DesksActivateDeskLeft)                      \
  ACCELERATOR_ACTION_ENTRY(DesksActivateDeskRight)                     \
  ACCELERATOR_ACTION_ENTRY(DesksMoveActiveItemLeft)                    \
  ACCELERATOR_ACTION_ENTRY(DesksMoveActiveItemRight)                   \
  ACCELERATOR_ACTION_ENTRY(DesksNewDesk)                               \
  ACCELERATOR_ACTION_ENTRY(DesksRemoveCurrentDesk)                     \
  ACCELERATOR_ACTION_ENTRY(DesksActivate0)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate1)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate2)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate3)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate4)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate5)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate6)                             \
  ACCELERATOR_ACTION_ENTRY(DesksActivate7)                             \
  ACCELERATOR_ACTION_ENTRY(DesksToggleAssignToAllDesks)                \
  ACCELERATOR_ACTION_ENTRY(DisableCapsLock)                            \
  ACCELERATOR_ACTION_ENTRY(EnableOrToggleDictation)                    \
  ACCELERATOR_ACTION_ENTRY(Exit)                                       \
  ACCELERATOR_ACTION_ENTRY(FocusCameraPreview)                         \
  ACCELERATOR_ACTION_ENTRY(FocusNextPane)                              \
  ACCELERATOR_ACTION_ENTRY(FocusPreviousPane)                          \
  ACCELERATOR_ACTION_ENTRY(FocusShelf)                                 \
  ACCELERATOR_ACTION_ENTRY(FocusPip)                                   \
  ACCELERATOR_ACTION_ENTRY(KeyboardBacklightToggle)                    \
  ACCELERATOR_ACTION_ENTRY(KeyboardBrightnessDown)                     \
  ACCELERATOR_ACTION_ENTRY(KeyboardBrightnessUp)                       \
  ACCELERATOR_ACTION_ENTRY(LaunchApp0)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp1)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp2)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp3)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp4)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp5)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp6)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchApp7)                                 \
  ACCELERATOR_ACTION_ENTRY(LaunchLastApp)                              \
  ACCELERATOR_ACTION_ENTRY(LockPressed)                                \
  ACCELERATOR_ACTION_ENTRY(LockReleased)                               \
  ACCELERATOR_ACTION_ENTRY(LockScreen)                                 \
  ACCELERATOR_ACTION_ENTRY(MagnifierZoomIn)                            \
  ACCELERATOR_ACTION_ENTRY(MagnifierZoomOut)                           \
  ACCELERATOR_ACTION_ENTRY(MediaFastForward)                           \
  ACCELERATOR_ACTION_ENTRY(MediaNextTrack)                             \
  ACCELERATOR_ACTION_ENTRY(MediaPause)                                 \
  ACCELERATOR_ACTION_ENTRY(MediaPlay)                                  \
  ACCELERATOR_ACTION_ENTRY(MediaPlayPause)                             \
  ACCELERATOR_ACTION_ENTRY(MediaPrevTrack)                             \
  ACCELERATOR_ACTION_ENTRY(MediaRewind)                                \
  ACCELERATOR_ACTION_ENTRY(MediaStop)                                  \
  ACCELERATOR_ACTION_ENTRY(MicrophoneMuteToggle)                       \
  ACCELERATOR_ACTION_ENTRY(MoveActiveWindowBetweenDisplays)            \
  ACCELERATOR_ACTION_ENTRY(NewIncognitoWindow)                         \
  ACCELERATOR_ACTION_ENTRY(NewTab)                                     \
  ACCELERATOR_ACTION_ENTRY(NewWindow)                                  \
  ACCELERATOR_ACTION_ENTRY(OpenCalculator)                             \
  ACCELERATOR_ACTION_ENTRY(OpenCrosh)                                  \
  ACCELERATOR_ACTION_ENTRY(OpenDiagnostics)                            \
  ACCELERATOR_ACTION_ENTRY(OpenFeedbackPage)                           \
  ACCELERATOR_ACTION_ENTRY(OpenFileManager)                            \
  ACCELERATOR_ACTION_ENTRY(OpenGetHelp)                                \
  /* Similar to kToggleClipboardHistory but is used to paste plain*/   \
  /* text only when clipboard history menu is already open. */         \
  ACCELERATOR_ACTION_ENTRY(PasteClipboardHistoryPlainText)             \
  ACCELERATOR_ACTION_ENTRY(PowerPressed)                               \
  ACCELERATOR_ACTION_ENTRY(PowerReleased)                              \
  ACCELERATOR_ACTION_ENTRY(PrintUiHierarchies)                         \
  ACCELERATOR_ACTION_ENTRY(PrivacyScreenToggle)                        \
  ACCELERATOR_ACTION_ENTRY(RestoreTab)                                 \
  ACCELERATOR_ACTION_ENTRY(RotateScreen)                               \
  ACCELERATOR_ACTION_ENTRY(RotateWindow)                               \
  ACCELERATOR_ACTION_ENTRY(ScaleUiDown)                                \
  ACCELERATOR_ACTION_ENTRY(ScaleUiReset)                               \
  ACCELERATOR_ACTION_ENTRY(ScaleUiUp)                                  \
  ACCELERATOR_ACTION_ENTRY(ShowEmojiPicker)                            \
  ACCELERATOR_ACTION_ENTRY(ToggleImeMenuBubble)                        \
  ACCELERATOR_ACTION_ENTRY(ShowShortcutViewer)                         \
  ACCELERATOR_ACTION_ENTRY(ShowTaskManager)                            \
  ACCELERATOR_ACTION_ENTRY(StartAssistant)                             \
  ACCELERATOR_ACTION_ENTRY(StopScreenRecording)                        \
  ACCELERATOR_ACTION_ENTRY(Suspend)                                    \
  ACCELERATOR_ACTION_ENTRY(SwapPrimaryDisplay)                         \
  /* Switch to another IME depending on the accelerator. */            \
  ACCELERATOR_ACTION_ENTRY(SwitchIme)                                  \
  ACCELERATOR_ACTION_ENTRY(SwitchToLastUsedIme)                        \
  ACCELERATOR_ACTION_ENTRY(SwitchToNextIme)                            \
  ACCELERATOR_ACTION_ENTRY(SwitchToNextUser)                           \
  ACCELERATOR_ACTION_ENTRY(SwitchToPreviousUser)                       \
  ACCELERATOR_ACTION_ENTRY(TakePartialScreenshot)                      \
  ACCELERATOR_ACTION_ENTRY(TakeScreenshot)                             \
  ACCELERATOR_ACTION_ENTRY(TakeWindowScreenshot)                       \
  ACCELERATOR_ACTION_ENTRY(ToggleAppList)                              \
  ACCELERATOR_ACTION_ENTRY(ToggleCalendar)                             \
  ACCELERATOR_ACTION_ENTRY(ToggleCapsLock)                             \
  ACCELERATOR_ACTION_ENTRY(ToggleClipboardHistory)                     \
  ACCELERATOR_ACTION_ENTRY(ToggleDockedMagnifier)                      \
  ACCELERATOR_ACTION_ENTRY(ToggleFloating)                             \
  ACCELERATOR_ACTION_ENTRY(ToggleFullscreen)                           \
  ACCELERATOR_ACTION_ENTRY(ToggleFullscreenMagnifier)                  \
  ACCELERATOR_ACTION_ENTRY(ToggleGameDashboard)                        \
  ACCELERATOR_ACTION_ENTRY(ToggleHighContrast)                         \
  ACCELERATOR_ACTION_ENTRY(ToggleMaximized)                            \
  ACCELERATOR_ACTION_ENTRY(ToggleMessageCenterBubble)                  \
  ACCELERATOR_ACTION_ENTRY(ToggleMirrorMode)                           \
  ACCELERATOR_ACTION_ENTRY(ToggleMultitaskMenu)                        \
  ACCELERATOR_ACTION_ENTRY(ToggleOverview)                             \
  ACCELERATOR_ACTION_ENTRY(ToggleProjectorMarker)                      \
  ACCELERATOR_ACTION_ENTRY(ToggleResizeLockMenu)                       \
  ACCELERATOR_ACTION_ENTRY(CreateSnapGroup)                            \
  ACCELERATOR_ACTION_ENTRY(ToggleSnapGroupWindowsMinimizeAndRestore)   \
  ACCELERATOR_ACTION_ENTRY(ToggleSpokenFeedback)                       \
  ACCELERATOR_ACTION_ENTRY(ToggleStylusTools)                          \
  ACCELERATOR_ACTION_ENTRY(ToggleSystemTrayBubble)                     \
  ACCELERATOR_ACTION_ENTRY(ToggleWifi)                                 \
  ACCELERATOR_ACTION_ENTRY(TouchHudClear)                              \
  ACCELERATOR_ACTION_ENTRY(TouchHudModeChange)                         \
  ACCELERATOR_ACTION_ENTRY(TouchFingerprintSensor1)                    \
  ACCELERATOR_ACTION_ENTRY(TouchFingerprintSensor2)                    \
  ACCELERATOR_ACTION_ENTRY(TouchFingerprintSensor3)                    \
  ACCELERATOR_ACTION_ENTRY(Unpin)                                      \
  ACCELERATOR_ACTION_ENTRY(VolumeDown)                                 \
  ACCELERATOR_ACTION_ENTRY(VolumeMute)                                 \
  ACCELERATOR_ACTION_ENTRY(VolumeUp)                                   \
  ACCELERATOR_ACTION_ENTRY(WindowCycleSnapLeft)                        \
  ACCELERATOR_ACTION_ENTRY(WindowCycleSnapRight)                       \
  ACCELERATOR_ACTION_ENTRY(WindowMinimize)                             \
  ACCELERATOR_ACTION_ENTRY(MinimizeTopWindowOnBack)                    \
  ACCELERATOR_ACTION_ENTRY(VolumeMuteToggle)                           \
  ACCELERATOR_ACTION_ENTRY(TogglePicker)                               \
  ACCELERATOR_ACTION_ENTRY(AccessibilityAction)                        \
  ACCELERATOR_ACTION_ENTRY(EnableSelectToSpeak)                        \
  ACCELERATOR_ACTION_ENTRY(TilingWindowResizeLeft)                     \
  ACCELERATOR_ACTION_ENTRY(TilingWindowResizeRight)                    \
  ACCELERATOR_ACTION_ENTRY(TilingWindowResizeUp)                       \
  ACCELERATOR_ACTION_ENTRY(TilingWindowResizeDown)                     \
  ACCELERATOR_ACTION_ENTRY(ToggleMouseKeys)                            \
  /* Debug actions are kept at an offset.*/                            \
  /* This offset should be kept consistent with the enum*/             \
  /* `AcceleratorAction` in*/                                          \
  /* tools/metrics/histograms/metadata/chromeos/enums.xml */           \
  ACCELERATOR_ACTION_ENTRY_FIXED_VALUE(DebugClearUseKMeansPref, 9000)  \
  ACCELERATOR_ACTION_ENTRY(DebugKeyboardBacklightToggle)               \
  ACCELERATOR_ACTION_ENTRY(DebugMicrophoneMuteToggle)                  \
  ACCELERATOR_ACTION_ENTRY(DebugPrintLayerHierarchy)                   \
  ACCELERATOR_ACTION_ENTRY(DebugPrintViewHierarchy)                    \
  ACCELERATOR_ACTION_ENTRY(DebugPrintWindowHierarchy)                  \
  ACCELERATOR_ACTION_ENTRY(DebugShowInformedRestore)                   \
  ACCELERATOR_ACTION_ENTRY(DebugShowToast)                             \
  ACCELERATOR_ACTION_ENTRY(DebugShowSystemNudge)                       \
  ACCELERATOR_ACTION_ENTRY(DebugSystemUiStyleViewer)                   \
  ACCELERATOR_ACTION_ENTRY(DebugToggleDarkMode)                        \
  ACCELERATOR_ACTION_ENTRY(DebugToggleDynamicColor)                    \
  ACCELERATOR_ACTION_ENTRY(DebugTogglePowerButtonMenu)                 \
  ACCELERATOR_ACTION_ENTRY(DebugToggleShowDebugBorders)                \
  ACCELERATOR_ACTION_ENTRY(DebugToggleShowFpsCounter)                  \
  ACCELERATOR_ACTION_ENTRY(DebugToggleShowPaintRects)                  \
  ACCELERATOR_ACTION_ENTRY(DebugToggleTouchPad)                        \
  ACCELERATOR_ACTION_ENTRY(DebugToggleTouchScreen)                     \
  ACCELERATOR_ACTION_ENTRY(DebugToggleTabletMode)                      \
  ACCELERATOR_ACTION_ENTRY(DebugToggleVideoConferenceCameraTrayIcon)   \
  ACCELERATOR_ACTION_ENTRY(DebugToggleWallpaperMode)                   \
  /* Intentionally crash the ash process. */                           \
  ACCELERATOR_ACTION_ENTRY(DebugTriggerCrash)                          \
  ACCELERATOR_ACTION_ENTRY(DebugToggleHudDisplay)                      \
  ACCELERATOR_ACTION_ENTRY(DebugToggleVirtualTrackpad)                 \
  ACCELERATOR_ACTION_ENTRY(DevAddRemoveDisplay)                        \
  /* Different than kToggleAppList to ignore search-as-modifier-key */ \
  /* rules for enabling the accelerator. */                            \
  ACCELERATOR_ACTION_ENTRY(DevToggleAppList)                           \
  ACCELERATOR_ACTION_ENTRY(DevToggleUnifiedDesktop)                    \
  ACCELERATOR_ACTION_ENTRY(DebugToggleFocusModeState)                  \
  ACCELERATOR_ACTION_ENTRY(DebugStartSunfishSession)                   \
  // LINT.ThenChange(//ash/public/mojom/accelerator_actions.mojom)

enum AcceleratorAction {
#define ACCELERATOR_ACTION_ENTRY(action) k##action,
#define ACCELERATOR_ACTION_ENTRY_FIXED_VALUE(action, value) k##action = value,
  ACCELERATOR_ACTIONS
#undef ACCELERATOR_ACTION_ENTRY
#undef ACCELERATOR_ACTION_ENTRY_FIXED_VALUE
};

ASH_PUBLIC_EXPORT const char* GetAcceleratorActionName(
    AcceleratorAction action);

}  // namespace ash

#endif  // ASH_PUBLIC_CPP_ACCELERATOR_ACTIONS_H_