| //! 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, |
| })); |
| } |