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