Introduce `is_command_pressed` to `ModifiersState`

This commit is contained in:
Héctor Ramón Jiménez 2020-11-10 21:18:21 +01:00
parent 3b2ed0d6f0
commit 86fa12229e
2 changed files with 21 additions and 1 deletions

View File

@ -15,6 +15,26 @@ pub struct ModifiersState {
} }
impl ModifiersState { impl ModifiersState {
/// Returns true if the current [`ModifiersState`] has a "command key"
/// pressed.
///
/// The "command key" is the main modifier key used to issue commands in the
/// current platform. Specifically:
///
/// - It is the `logo` or command key (⌘) on macOS
/// - It is the `control` key on other platforms
///
/// [`ModifiersState`]: struct.ModifiersState.html
pub fn is_command_pressed(self) -> bool {
#[cfg(target_os = "macos")]
let is_pressed = self.logo;
#[cfg(not(target_os = "macos"))]
let is_pressed = self.control;
is_pressed
}
/// Returns true if the current [`ModifiersState`] has at least the same /// Returns true if the current [`ModifiersState`] has at least the same
/// modifiers enabled as the given value, and false otherwise. /// modifiers enabled as the given value, and false otherwise.
/// ///

View File

@ -123,7 +123,7 @@ impl Application for Example {
Event::Keyboard(keyboard::Event::KeyPressed { Event::Keyboard(keyboard::Event::KeyPressed {
modifiers, modifiers,
key_code, key_code,
}) if modifiers.control => handle_hotkey(key_code), }) if modifiers.is_command_pressed() => handle_hotkey(key_code),
_ => None, _ => None,
}) })
} }