blob: e8c62541ec773c49f9e40c26fa00fff701420596 [file] [log] [blame]
// 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"
#include "base/containers/flat_set.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
enum AcceleratorAction {
kBrightnessDown,
kBrightnessUp,
kCycleBackwardMru,
kCycleForwardMru,
kCycleSameAppWindowsBackward,
kCycleSameAppWindowsForward,
kDesksActivateDeskLeft,
kDesksActivateDeskRight,
kDesksMoveActiveItemLeft,
kDesksMoveActiveItemRight,
kDesksNewDesk,
kDesksRemoveCurrentDesk,
kDesksActivate0,
kDesksActivate1,
kDesksActivate2,
kDesksActivate3,
kDesksActivate4,
kDesksActivate5,
kDesksActivate6,
kDesksActivate7,
kDesksToggleAssignToAllDesks,
kDisableCapsLock,
kEnableOrToggleDictation,
kExit,
kFocusCameraPreview,
kFocusNextPane,
kFocusPreviousPane,
kFocusShelf,
kFocusPip,
kKeyboardBacklightToggle,
kKeyboardBrightnessDown,
kKeyboardBrightnessUp,
kLaunchApp0,
kLaunchApp1,
kLaunchApp2,
kLaunchApp3,
kLaunchApp4,
kLaunchApp5,
kLaunchApp6,
kLaunchApp7,
kLaunchLastApp,
kLockPressed,
kLockReleased,
kLockScreen,
kMagnifierZoomIn,
kMagnifierZoomOut,
kMediaFastForward,
kMediaNextTrack,
kMediaPause,
kMediaPlay,
kMediaPlayPause,
kMediaPrevTrack,
kMediaRewind,
kMediaStop,
kMicrophoneMuteToggle,
kMoveActiveWindowBetweenDisplays,
kNewIncognitoWindow,
kNewTab,
kNewWindow,
kOpenCalculator,
kOpenCrosh,
kOpenDiagnostics,
kOpenFeedbackPage,
kOpenFileManager,
kOpenGetHelp,
// Similar to kToggleClipboardHistory but is used to paste plain
// text only when clipboard history menu is already open.
kPasteClipboardHistoryPlainText,
kPowerPressed,
kPowerReleased,
kPrintUiHierarchies,
kPrivacyScreenToggle,
kRestoreTab,
kRotateScreen,
kRotateWindow,
kScaleUiDown,
kScaleUiReset,
kScaleUiUp,
kShowEmojiPicker,
kToggleImeMenuBubble,
kShowShortcutViewer,
kShowTaskManager,
kStartAssistant,
kStopScreenRecording,
kSuspend,
kSwapPrimaryDisplay,
// Switch to another IME depending on the accelerator.
kSwitchIme,
kSwitchToLastUsedIme,
kSwitchToNextIme,
kSwitchToNextUser,
kSwitchToPreviousUser,
kTakePartialScreenshot,
kTakeScreenshot,
kTakeWindowScreenshot,
kToggleAppList,
kToggleCalendar,
kToggleCapsLock,
kToggleClipboardHistory,
kToggleDockedMagnifier,
kToggleFloating,
kToggleFullscreen,
kToggleFullscreenMagnifier,
kToggleGameDashboard,
kToggleHighContrast,
kToggleMaximized,
kToggleMessageCenterBubble,
kToggleMirrorMode,
kToggleMultitaskMenu,
kToggleOverview,
kToggleProjectorMarker,
kToggleResizeLockMenu,
kToggleSnapGroup,
kToggleSnapGroupWindowsMinimizeAndRestore,
kToggleSpokenFeedback,
kToggleStylusTools,
kToggleSystemTrayBubble,
kToggleWifi,
kTouchHudClear,
kTouchHudModeChange,
kTouchFingerprintSensor1,
kTouchFingerprintSensor2,
kTouchFingerprintSensor3,
kUnpin,
kVolumeDown,
kVolumeMute,
kVolumeUp,
kWindowCycleSnapLeft,
kWindowCycleSnapRight,
kWindowMinimize,
kMinimizeTopWindowOnBack,
kVolumeMuteToggle,
kToggleQuickInsert,
kAccessibilityAction,
kEnableSelectToSpeak,
kTilingWindowResizeLeft,
kTilingWindowResizeRight,
kTilingWindowResizeUp,
kTilingWindowResizeDown,
kToggleMouseKeys,
kResizePipWindow,
kToggleGeminiApp,
kToggleDoNotDisturb,
kToggleCameraAllowed,
kStartSunfishSession,
// 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
kDebugClearUseKMeansPref = 9000,
kDebugKeyboardBacklightToggle,
kDebugMicrophoneMuteToggle,
kDebugPrintLayerHierarchy,
kDebugPrintViewHierarchy,
kDebugPrintWindowHierarchy,
kDebugShowInformedRestore,
kDebugShowToast,
kDebugShowSystemNudge,
kDebugSystemUiStyleViewer,
kDebugToggleDarkMode,
kDebugToggleDynamicColor,
kDebugTogglePowerButtonMenu,
kDebugToggleShowDebugBorders,
kDebugToggleShowFpsCounter,
kDebugToggleShowPaintRects,
kDebugToggleTouchPad,
kDebugToggleTouchScreen,
kDebugToggleTabletMode,
kDebugToggleVideoConferenceCameraTrayIcon,
kDebugToggleWallpaperMode,
// Intentionally crash the ash process.
kDebugTriggerCrash,
kDebugToggleHudDisplay,
kDebugToggleVirtualTrackpad,
kDevAddRemoveDisplay,
// Different than kToggleAppList to ignore search-as-modifier-key
// rules for enabling the accelerator.
kDevToggleAppList,
kDevToggleUnifiedDesktop,
kDebugToggleFocusModeState,
kDebugStartSunfishSession,
kDebugShowTestWindow,
};
// LINT.ThenChange(//ash/public/mojom/accelerator_actions.mojom)
ASH_PUBLIC_EXPORT const char* GetAcceleratorActionName(
AcceleratorAction action);
ASH_PUBLIC_EXPORT base::flat_set<AcceleratorAction>
GetAcceleratorActionsForTest();
} // namespace ash
#endif // ASH_PUBLIC_CPP_ACCELERATOR_ACTIONS_H_