1 //! Demonstrates how to match on modifiers like: Control, alt, shift.
2 //!
3 //! cargo run --example event-match-modifiers
4
5 use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
6
match_event(read_event: Event)7 fn match_event(read_event: Event) {
8 match read_event {
9 // Match one one modifier:
10 Event::Key(KeyEvent {
11 modifiers: KeyModifiers::CONTROL,
12 code,
13 }) => {
14 println!("Control + {:?}", code);
15 }
16 Event::Key(KeyEvent {
17 modifiers: KeyModifiers::SHIFT,
18 code,
19 }) => {
20 println!("Shift + {:?}", code);
21 }
22 Event::Key(KeyEvent {
23 modifiers: KeyModifiers::ALT,
24 code,
25 }) => {
26 println!("Alt + {:?}", code);
27 }
28
29 // Match on multiple modifiers:
30 Event::Key(KeyEvent { code, modifiers }) => {
31 if modifiers == (KeyModifiers::ALT | KeyModifiers::SHIFT) {
32 println!("Alt + Shift {:?}", code);
33 } else {
34 println!("({:?}) with key: {:?}", modifiers, code)
35 }
36 }
37
38 _ => {}
39 }
40 }
41
main()42 fn main() {
43 match_event(Event::Key(KeyEvent {
44 modifiers: KeyModifiers::CONTROL,
45 code: KeyCode::Char('z'),
46 }));
47 match_event(Event::Key(KeyEvent {
48 modifiers: KeyModifiers::SHIFT,
49 code: KeyCode::Left,
50 }));
51 match_event(Event::Key(KeyEvent {
52 modifiers: KeyModifiers::ALT,
53 code: KeyCode::Delete,
54 }));
55 match_event(Event::Key(KeyEvent {
56 modifiers: KeyModifiers::ALT | KeyModifiers::SHIFT,
57 code: KeyCode::Right,
58 }));
59 match_event(Event::Key(KeyEvent {
60 modifiers: KeyModifiers::ALT | KeyModifiers::CONTROL,
61 code: KeyCode::Home,
62 }));
63 }
64