macro_rules! ct_event { (key press $keychar:pat) => { ... }; (key press $mod:ident-$keychar:pat) => { ... }; (key release $keychar:pat) => { ... }; (key release $mod:ident-$keychar:pat) => { ... }; (keycode press $code:ident) => { ... }; (keycode press $mod:ident-$code:ident) => { ... }; (keycode release $code:ident) => { ... }; (keycode release $mod:ident-$code:ident) => { ... }; (mouse down $button:ident for $col:ident, $row:ident ) => { ... }; (mouse down $mod:ident-$button:ident for $col:ident, $row:ident ) => { ... }; (mouse up $button:ident for $col:ident, $row:ident ) => { ... }; (mouse up $mod:ident-$button:ident for $col:ident, $row:ident ) => { ... }; (mouse drag $button:ident for $col:ident, $row:ident ) => { ... }; (mouse drag $mod:ident-$button:ident for $col:ident, $row:ident ) => { ... }; (mouse any for $mouse:ident) => { ... }; (mouse any $mod:ident for $mouse:ident ) => { ... }; (mouse moved ) => { ... }; (mouse moved for $col:ident, $row:ident) => { ... }; (scroll $mod:ident down for $col:ident, $row:ident) => { ... }; (scroll down for $col:ident, $row:ident) => { ... }; (scroll $mod:ident up for $col:ident, $row:ident) => { ... }; (scroll up for $col:ident, $row:ident) => { ... }; (scroll left for $col:ident, $row:ident) => { ... }; (scroll right for $col:ident, $row:ident) => { ... }; (resized) => { ... }; (resized for $cols:ident, $rows:ident ) => { ... }; (focus-gained) => { ... }; (focus-lost) => { ... }; (paste $value:ident) => { ... }; }
Expand description
This macro produces pattern matches for crossterm events.
Example:
ⓘ
match event {
ct_event!(keycode press Left) => self.move_to_prev(false),
ct_event!(keycode press Right) => self .move_to_next(false),
ct_event!(keycode press CONTROL-Left) => {
let pos = self.prev_word_boundary();
self.set_cursor(pos, false);
}
ct_event!(keycode press CONTROL_SHIFT-Left) => {
let pos = self.prev_word_boundary();
self.set_cursor(pos, true);
}
ct_event!(key press CONTROL-'a') => self.set_selection(0, self.len()),
ct_event!(key press c) | ct_event!(key press SHIFT-c) => self.insert_char( * c),
ct_event!(mouse down Left for column,row) => {
// ...
}
ct_event!(mouse drag Left for column, _row) => {
// ...
}
ct_event!(mouse moved) => {
// ...
}
}Syntax:
"key" ("press"|"release") (modifier "-")? "'" char "'"
"keycode" ("press"|"release") (modifier "-")? keycode
"mouse" ("down"|"up"|"drag") (modifier "-")? button "for" col_id "," row_id
"mouse" "any" (modifier)? ("for" mouseevt)?
"mouse" "moved" ("for" col_id "," row_id)?
"scroll" ("up"|"down") "for" col_id "," row_id
where
modifier := <<one of the KeyModifiers's>> | "CONTROL_SHIFT" | "ALT_SHIFT"
char := <<some character>>
keycode := <<one of the defined KeyCode's>>
button := <<one of the defined MouseButton's>>