1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
use nom;
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
pub enum Mode {
ApplicationCursor,
Ansi,
SmallFont,
SmoothScroll,
ReverseVideo,
Origin,
AutoWrap,
AutoRepeat,
FormFeed,
PrintComplete,
CursorVisible,
CursorRTL,
HebrewKeyboard,
HebrewEncoding,
Ascii,
NorthAmericanKeyboard,
ProPrinterEmulation,
VerticalCoupling,
PageCoupling,
ApplicationKeypad,
Backspace,
DataProcessing,
SetMargins,
LimitedTransmission,
KeyPosition,
Saver,
NoClear,
CopyRTL,
AutoResize,
Modem,
AutoAnswerback,
ConcealAnswerback,
IgnoreNull,
HalfDuplex,
SecondaryKeyboard,
Overscan,
NumLock,
CapsLock,
HostIndicatorLed,
}
impl Mode {
#[inline]
pub fn parse<'a>(value: u32) -> Result<Self, nom::ErrorKind> {
match value {
1 => Ok(Mode::ApplicationCursor),
2 => Ok(Mode::Ansi),
3 => Ok(Mode::SmallFont),
4 => Ok(Mode::SmoothScroll),
5 => Ok(Mode::ReverseVideo),
6 => Ok(Mode::Origin),
7 => Ok(Mode::AutoWrap),
8 => Ok(Mode::AutoRepeat),
18 => Ok(Mode::FormFeed),
19 => Ok(Mode::PrintComplete),
25 => Ok(Mode::CursorVisible),
34 => Ok(Mode::CursorRTL),
35 => Ok(Mode::HebrewKeyboard),
36 => Ok(Mode::HebrewEncoding),
42 => Ok(Mode::Ascii),
57 => Ok(Mode::NorthAmericanKeyboard),
58 => Ok(Mode::ProPrinterEmulation),
61 => Ok(Mode::VerticalCoupling),
64 => Ok(Mode::PageCoupling),
66 => Ok(Mode::ApplicationKeypad),
67 => Ok(Mode::Backspace),
68 => Ok(Mode::DataProcessing),
69 => Ok(Mode::SetMargins),
73 => Ok(Mode::LimitedTransmission),
81 => Ok(Mode::KeyPosition),
97 => Ok(Mode::Saver),
95 => Ok(Mode::NoClear),
96 => Ok(Mode::CopyRTL),
98 => Ok(Mode::AutoResize),
99 => Ok(Mode::Modem),
100 => Ok(Mode::AutoAnswerback),
101 => Ok(Mode::ConcealAnswerback),
102 => Ok(Mode::IgnoreNull),
103 => Ok(Mode::HalfDuplex),
104 => Ok(Mode::SecondaryKeyboard),
106 => Ok(Mode::Overscan),
108 => Ok(Mode::NumLock),
109 => Ok(Mode::CapsLock),
110 => Ok(Mode::HostIndicatorLed),
_ => Err(nom::ErrorKind::Custom(9004)),
}
}
}
impl Into<u32> for Mode {
#[inline]
fn into(self) -> u32 {
match self {
Mode::ApplicationCursor => 1,
Mode::Ansi => 2,
Mode::SmallFont => 3,
Mode::SmoothScroll => 4,
Mode::ReverseVideo => 5,
Mode::Origin => 6,
Mode::AutoWrap => 7,
Mode::AutoRepeat => 8,
Mode::FormFeed => 18,
Mode::PrintComplete => 19,
Mode::CursorVisible => 25,
Mode::CursorRTL => 34,
Mode::HebrewKeyboard => 35,
Mode::HebrewEncoding => 36,
Mode::Ascii => 42,
Mode::NorthAmericanKeyboard => 57,
Mode::ProPrinterEmulation => 58,
Mode::VerticalCoupling => 61,
Mode::PageCoupling => 64,
Mode::ApplicationKeypad => 66,
Mode::Backspace => 67,
Mode::DataProcessing => 68,
Mode::SetMargins => 69,
Mode::LimitedTransmission => 73,
Mode::KeyPosition => 81,
Mode::NoClear => 95,
Mode::CopyRTL => 96,
Mode::Saver => 97,
Mode::AutoResize => 98,
Mode::Modem => 99,
Mode::AutoAnswerback => 100,
Mode::ConcealAnswerback => 101,
Mode::IgnoreNull => 102,
Mode::HalfDuplex => 103,
Mode::SecondaryKeyboard => 104,
Mode::Overscan => 106,
Mode::NumLock => 108,
Mode::CapsLock => 109,
Mode::HostIndicatorLed => 110,
}
}
}