/
key.go
190 lines (170 loc) · 2.45 KB
/
key.go
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
// Code generated by hand; DO NOT EDIT.
// This is a little bit stupid, but there are many public constants which is no value for writing godoc comment.
package input
import "math"
// Key is the type express the key inserted from user.
//go:generate gogen stringer -t=Key
type Key uint64
// UnkownKey use to set block manager cancel/finish key
var UnkownKey Key = math.MaxUint64
// ASCIICode is the type contains Key and it's ascii byte array.
type ASCIICode struct {
Key Key
ASCIICode []byte
}
const (
Escape Key = iota
ControlA
ControlB
ControlC
ControlD
ControlE
ControlF
ControlG
ControlH
controlI // not export. equal Tab.
controlJ // not export. equal Enter.
ControlK
ControlL
controlM // not export. equal Enter.
ControlN
ControlO
ControlP
ControlQ
ControlR
ControlS
ControlT
ControlU
ControlV
ControlW
ControlX
ControlY
ControlZ
// Meta[Alt] + [a-f]
MetaA
MetaB
MetaC
MetaD
MetaE
MetaF
MetaG
MetaH
MetaI
MetaJ
MetaK
MetaL
MetaM
MetaN
MetaO
MetaP
MetaQ
MetaR
MetaS
MetaT
MetaU
MetaV
MetaW
MetaX
MetaY
MetaZ
// Meta[Alt] + Shift [a-z]
// Meta[Alt] + [A-Z]
MetaShiftA
MetaShiftB
MetaShiftC
MetaShiftD
MetaShiftE
MetaShiftF
MetaShiftG
MetaShiftH
MetaShiftI
MetaShiftJ
MetaShiftK
MetaShiftL
MetaShiftM
MetaShiftN
MetaShiftO
MetaShiftP
MetaShiftQ
MetaShiftR
MetaShiftS
MetaShiftT
MetaShiftU
MetaShiftV
MetaShiftW
MetaShiftX
MetaShiftY
MetaShiftZ
ControlSpace
ControlBackslash
ControlSquareClose
ControlCircumflex
ControlUnderscore
ControlLeft
ControlRight
ControlUp
ControlDown
Up
Down
Right
Left
ShiftLeft
ShiftUp
ShiftDown
ShiftRight
Home
End
Delete
ShiftDelete
ControlDelete
PageUp
PageDown
BackTab
Insert
Backspace
// Aliases.
Tab
Enter
// Actually Enter equals ControlM, not ControlJ,
// However, in prompt_toolkit, we made the mistake of translating
// \r into \n during the input, so everyone is now handling the
// enter key by binding ControlJ.
// From now on, it's better to bind `ASCII_SEQUENCES.Enter` everywhere,
// because that's future compatible, and will still work when we
// stop replacing \r by \n.
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
F13
F14
F15
F16
F17
F18
F19
F20
F21
F22
F23
F24
// Matches any key.
Any
// Special
CPRResponse
Vt100MouseEvent
WindowsMouseEvent
BracketedPaste
// Key which is ignored. (The key binding for this key should not do anything.)
Ignore
// Key is not defined
NotDefined
)