summaryrefslogtreecommitdiff
path: root/examples/go-dashboard/src/github.com/mum4k/termdash/keyboard/keyboard.go
blob: 3a852b32638190ad052acbd8fb144c39ce1a3b8f (plain)
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
// Copyright 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Package keyboard defines well known keyboard keys and shortcuts.
package keyboard

// Key represents a single button on the keyboard.
// Printable characters are set to their ASCII/Unicode rune value.
// Non-printable (control) characters are equal to one of the constants defined
// below.
type Key rune

// String implements fmt.Stringer()
func (b Key) String() string {
	if n, ok := buttonNames[b]; ok {
		return n
	} else if b >= 0 {
		return string(b)
	}
	return "KeyUnknown"
}

// buttonNames maps Key values to human readable names.
var buttonNames = map[Key]string{
	KeyF1:         "KeyF1",
	KeyF2:         "KeyF2",
	KeyF3:         "KeyF3",
	KeyF4:         "KeyF4",
	KeyF5:         "KeyF5",
	KeyF6:         "KeyF6",
	KeyF7:         "KeyF7",
	KeyF8:         "KeyF8",
	KeyF9:         "KeyF9",
	KeyF10:        "KeyF10",
	KeyF11:        "KeyF11",
	KeyF12:        "KeyF12",
	KeyInsert:     "KeyInsert",
	KeyDelete:     "KeyDelete",
	KeyHome:       "KeyHome",
	KeyEnd:        "KeyEnd",
	KeyPgUp:       "KeyPgUp",
	KeyPgDn:       "KeyPgDn",
	KeyArrowUp:    "KeyArrowUp",
	KeyArrowDown:  "KeyArrowDown",
	KeyArrowLeft:  "KeyArrowLeft",
	KeyArrowRight: "KeyArrowRight",
	KeyCtrlTilde:  "KeyCtrlTilde",
	KeyCtrlA:      "KeyCtrlA",
	KeyCtrlB:      "KeyCtrlB",
	KeyCtrlC:      "KeyCtrlC",
	KeyCtrlD:      "KeyCtrlD",
	KeyCtrlE:      "KeyCtrlE",
	KeyCtrlF:      "KeyCtrlF",
	KeyCtrlG:      "KeyCtrlG",
	KeyBackspace:  "KeyBackspace",
	KeyTab:        "KeyTab",
	KeyCtrlJ:      "KeyCtrlJ",
	KeyCtrlK:      "KeyCtrlK",
	KeyCtrlL:      "KeyCtrlL",
	KeyEnter:      "KeyEnter",
	KeyCtrlN:      "KeyCtrlN",
	KeyCtrlO:      "KeyCtrlO",
	KeyCtrlP:      "KeyCtrlP",
	KeyCtrlQ:      "KeyCtrlQ",
	KeyCtrlR:      "KeyCtrlR",
	KeyCtrlS:      "KeyCtrlS",
	KeyCtrlT:      "KeyCtrlT",
	KeyCtrlU:      "KeyCtrlU",
	KeyCtrlV:      "KeyCtrlV",
	KeyCtrlW:      "KeyCtrlW",
	KeyCtrlX:      "KeyCtrlX",
	KeyCtrlY:      "KeyCtrlY",
	KeyCtrlZ:      "KeyCtrlZ",
	KeyEsc:        "KeyEsc",
	KeyCtrl4:      "KeyCtrl4",
	KeyCtrl5:      "KeyCtrl5",
	KeyCtrl6:      "KeyCtrl6",
	KeyCtrl7:      "KeyCtrl7",
	KeySpace:      "KeySpace",
	KeyBackspace2: "KeyBackspace2",
}

// Printable characters, but worth having constants for them.
const (
	KeySpace = ' '
)

// Negative values for non-printable characters.
const (
	KeyF1 Key = -(iota + 1)
	KeyF2
	KeyF3
	KeyF4
	KeyF5
	KeyF6
	KeyF7
	KeyF8
	KeyF9
	KeyF10
	KeyF11
	KeyF12
	KeyInsert
	KeyDelete
	KeyHome
	KeyEnd
	KeyPgUp
	KeyPgDn
	KeyArrowUp
	KeyArrowDown
	KeyArrowLeft
	KeyArrowRight
	KeyCtrlTilde
	KeyCtrlA
	KeyCtrlB
	KeyCtrlC
	KeyCtrlD
	KeyCtrlE
	KeyCtrlF
	KeyCtrlG
	KeyBackspace
	KeyTab
	KeyCtrlJ
	KeyCtrlK
	KeyCtrlL
	KeyEnter
	KeyCtrlN
	KeyCtrlO
	KeyCtrlP
	KeyCtrlQ
	KeyCtrlR
	KeyCtrlS
	KeyCtrlT
	KeyCtrlU
	KeyCtrlV
	KeyCtrlW
	KeyCtrlX
	KeyCtrlY
	KeyCtrlZ
	KeyEsc
	KeyCtrl4
	KeyCtrl5
	KeyCtrl6
	KeyCtrl7
	KeyBackspace2
)

// Keys declared as duplicates by termbox.
const (
	KeyCtrl2          Key = KeyCtrlTilde
	KeyCtrlSpace      Key = KeyCtrlTilde
	KeyCtrlH          Key = KeyBackspace
	KeyCtrlI          Key = KeyTab
	KeyCtrlM          Key = KeyEnter
	KeyCtrlLsqBracket Key = KeyEsc
	KeyCtrl3          Key = KeyEsc
	KeyCtrlBackslash  Key = KeyCtrl4
	KeyCtrlRsqBracket Key = KeyCtrl5
	KeyCtrlSlash      Key = KeyCtrl7
	KeyCtrlUnderscore Key = KeyCtrl7
	KeyCtrl8          Key = KeyBackspace2
)