This document describes the expected behavior of power buttons on Chrome OS devices as of M71. Earlier versions of Chrome OS have used different behavior.
A device's form factor affects the behavior of its power button. The following descriptions of form factors provide shared vocabulary.
Convertible Chromebooks have 360-degree hinges that allow them to be used in both laptop mode and tablet mode (sometimes also called Touchview mode). As such, they typically feature power buttons located on their sides that are accessible in all configurations. They may have a dedicated Lock key on the keyboard.
Clamshell Chromebooks have hinges that stop before reaching 180 degrees, supporting only traditional laptop form factors. Their power buttons are typically located at the top-right corner of the keyboard (i.e. to the right of Volume Up and just above Backspace). Clamshells are always in laptop mode.
Some Chrome OS devices look like tablets. They may or may not support a detachable keyboard or base. These devices are typically in tablet mode but may switch to laptop mode when a keyboard is attached.
Chromeboxes, Chromebases, and related devices that lack integrated keyboards typically feature legacy ACPI-style power buttons.
Chromebits don't have power buttons.
While a Chrome OS device is in tablet mode, tapping the power button once turns the screen off. This is intended to give users an easy way to turn the screen off before carrying the device, and it happens regardless of whether a user is logged in or not. If a user is logged in and the “Show lock screen when waking from sleep” setting is enabled, the screen is additionally locked immediately. Tapping the power button a second time after the screen has been turned off turns the screen back on.
If Volume keys are pressed in combination it works as a shortcut for some features, see [debug buttons] documentation for more key combinations with power buttons.
If the power button is held for a half second or longer before being released, the screen remains on and a power menu with
Lock screen and
Feedback options is displayed. The power button may be tapped again to dismiss the menu. Note that the options shown might differ based on the user session state. For example, if the device is already locked, options will not include
If the user holds the power button for an additional 650 milliseconds while the menu is displayed, a cancellable pre-shutdown animation begins in which the screen fades to white. After the animation finishes, the screen turns off and the system shuts down. The user may also shut the system down by holding the power button from the menu-not-shown state.
Some of the above delays are lengthened slightly if the screen was initially off when the user began holding the power button.
If the display is off due to user inactivity or manually setting the screen brightness to zero, the power button turns the display back on rather than locking the screen or shutting down the system.
The behavior of the power button while in laptop mode is identical to the behavior while in tablet mode, with one exception: tapping the power button has no effect. Turning the screen off is less useful while in laptop mode, and ignoring taps may mitigate accidental power button presses.
Tablet and slate devices that are considered “touch-centric” (typically meaning that they're distributed without a keyboard folio) use tablet-like power button behavior even when a folio or other external keyboard is attached.
On devices that don't report power button releases properly, tapping the power button displays the power menu described above. Tapping the power button again while the menu is displayed shuts the system down.
Some power button behavior is consistent across all Chrome OS devices to date:
powerd receives power button events from the kernel's input subsystem and reports them to Chrome via D-Bus as described in the Input document.
User-facing behavior power button behavior is spread across multiple classes in Chrome:
chromeos::PowerManagerClientreceives D-Bus notifications about power button events from powerd.
ash::PowerButtonControllerinitiates action in response to power button events received from powerd.
ash::LockStateControllercontains the high-level logic for transitioning between different animations and performing actions when they complete.
ash::SessionStateAnimatordisplays animations and contains durations.
ash::PowerButtonDisplayControllercontains logic related to forcing the display off in response to power button events.
The always-tablet-like power button behavior used on touch-centric devices is controlled by the presence of the
touch_centric_device USE flag, which instructs session_manager to pass a
--force-tablet-power-button command-line flag to Chrome.
Chromebox- and Chromebase-style behavior is enabled by setting the
legacy_power_button USE flag in a Portage overlay, which causes powerd's
legacy_power_button pref to be set and the
--aura-legacy-power-button flag to be passed to Chrome.