//! Demonstrates how to match on modifiers like: Control, alt, shift. //! //! cargo run --example event-match-modifiers use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers}; fn match_event(read_event: Event) { match read_event { // Match one one modifier: Event::Key(KeyEvent { modifiers: KeyModifiers::CONTROL, code, }) => { println!("Control + {:?}", code); } Event::Key(KeyEvent { modifiers: KeyModifiers::SHIFT, code, }) => { println!("Shift + {:?}", code); } Event::Key(KeyEvent { modifiers: KeyModifiers::ALT, code, }) => { println!("Alt + {:?}", code); } // Match on multiple modifiers: Event::Key(KeyEvent { code, modifiers }) => { if modifiers == (KeyModifiers::ALT | KeyModifiers::SHIFT) { println!("Alt + Shift {:?}", code); } else { println!("({:?}) with key: {:?}", modifiers, code) } } _ => {} } } fn main() { match_event(Event::Key(KeyEvent { modifiers: KeyModifiers::CONTROL, code: KeyCode::Char('z'), })); match_event(Event::Key(KeyEvent { modifiers: KeyModifiers::SHIFT, code: KeyCode::Left, })); match_event(Event::Key(KeyEvent { modifiers: KeyModifiers::ALT, code: KeyCode::Delete, })); match_event(Event::Key(KeyEvent { modifiers: KeyModifiers::ALT | KeyModifiers::SHIFT, code: KeyCode::Right, })); match_event(Event::Key(KeyEvent { modifiers: KeyModifiers::ALT | KeyModifiers::CONTROL, code: KeyCode::Home, })); }