/// The current state of the keyboard modifiers. #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub struct ModifiersState { /// Whether a shift key is pressed pub shift: bool, /// Whether a control key is pressed pub control: bool, /// Whether an alt key is pressed pub alt: bool, /// Whether a logo key is pressed (e.g. windows key, command key...) pub logo: bool, } impl ModifiersState { /// Returns true if the current [`ModifiersState`] has at least the same /// modifiers enabled as the given value, and false otherwise. /// /// [`ModifiersState`]: struct.ModifiersState.html pub fn matches(&self, modifiers: ModifiersState) -> bool { let shift = !modifiers.shift || modifiers.shift && self.shift; let control = !modifiers.control || modifiers.control && self.control; let alt = !modifiers.alt || modifiers.alt && self.alt; let logo = !modifiers.logo || modifiers.logo && self.logo; shift && control && alt && logo } }