• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use bitflags::bitflags;
2 
3 /// A parsed ANSI escape sequence.
4 ///
5 /// Check the [`Parser`](struct.Parser.html) structure documentation for examples
6 /// how to retrieve these values.
7 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8 pub enum Sequence {
9     /// A keyboard event sequence.
10     Key(KeyCode, KeyModifiers),
11     /// A mouse event sequence.
12     Mouse(Mouse, KeyModifiers),
13     /// A cursor position (`x`, `y`).
14     ///
15     /// Top/left cell is represented as `Sequence::CursorPosition(1, 1)`.
16     CursorPosition(u16, u16),
17 }
18 
19 bitflags! {
20     /// A key modifiers.
21     pub struct KeyModifiers: u8 {
22         const SHIFT = 0b0000_0001;
23         const CONTROL = 0b0000_0010;
24         const ALT = 0b0000_0100;
25         const META = 0b0000_1000;
26     }
27 }
28 
29 /// A key code.
30 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
31 pub enum KeyCode {
32     Backspace,
33     Enter,
34     Left,
35     Right,
36     Up,
37     Down,
38     Home,
39     End,
40     PageUp,
41     PageDown,
42     Tab,
43     BackTab,
44     Delete,
45     Insert,
46     F(u8),
47     Char(char),
48     Null,
49     Esc,
50 }
51 
52 /// A mouse event.
53 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
54 pub enum Mouse {
55     /// A mouse button press.
56     Down(MouseButton, u16, u16),
57     /// A mouse button release.
58     Up(MouseButton, u16, u16),
59     /// A mouse movement with pressed button.
60     Drag(MouseButton, u16, u16),
61     /// A mouse wheel scrolled up.
62     ScrollUp(u16, u16),
63     /// A mouse wheel scrolled down.
64     ScrollDown(u16, u16),
65 }
66 
67 /// A mouse button.
68 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
69 pub enum MouseButton {
70     Left,
71     Right,
72     Middle,
73     /// This variant is provided only if [`Parser`](struct.Parser.html) doesn't know which
74     /// mouse button was pressed/released.
75     ///
76     /// An example is [rxvt](https://en.wikipedia.org/wiki/Rxvt) - it provides which mouse
77     /// button was pressed, but doesn't provide which mouse button was released.
78     Any,
79 }
80