Repository navigation
Expand file tree
/
Copy pathkeyevent.go
More file actions
87 lines (79 loc) · 2.36 KB
/
Copy pathkeyevent.go
File metadata and controls
87 lines (79 loc) · 2.36 KB
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
package main
import termbox "github.com/nsf/termbox-go"
type ActionType uint8
type Action uint8
type Keybind struct {
Mod termbox.Modifier
Key termbox.Key
Ch rune
ActionType ActionType
Action Action
}
// ActionTypes
const (
ACTION_TYPE_TWEET = iota + 1
ACTION_TYPE_COMMAND
ACTION_TYPE_BOTH
ACTION_TYPE_ALL
)
// Actions
const (
ACTION_RELOAD = iota + 1
ACTION_QUIT
ACTION_ESC
ACTION_K
ACTION_J
ACTION_G
ACTION_SHIFT_G
ACTION_R
ACTION_UP
ACTION_DOWN
ACTION_LEFT
ACTION_RIGHT
ACTION_DELETE
ACTION_SPACE
ACTION_EXECUTE_COMMAND
ENTER_NORMAL_MODE
ENTER_COMMAND_MODE
)
const NO_MOD = 0
const NO_KEY = 0
const NO_CH = 0
const NO_ACTION_TYPE = 0
const NO_ACTION = 0
var KeybindList = []Keybind{
{NO_MOD, termbox.KeyCtrlQ, NO_CH, ACTION_TYPE_ALL, ACTION_QUIT},
{NO_MOD, termbox.KeyCtrlC, NO_CH, ACTION_TYPE_ALL, ENTER_NORMAL_MODE},
{NO_MOD, termbox.KeyEsc, NO_CH, ACTION_TYPE_ALL, ACTION_ESC},
{NO_MOD, NO_KEY, ':', ACTION_TYPE_ALL, ENTER_COMMAND_MODE},
{NO_MOD, termbox.KeyCtrlR, NO_CH, ACTION_TYPE_TWEET, ACTION_RELOAD},
{NO_MOD, termbox.KeyArrowUp, NO_CH, ACTION_TYPE_TWEET, ACTION_UP},
{NO_MOD, termbox.KeyArrowDown, NO_CH, ACTION_TYPE_TWEET, ACTION_DOWN},
{NO_MOD, NO_KEY, 'k', ACTION_TYPE_BOTH, ACTION_K},
{NO_MOD, NO_KEY, 'j', ACTION_TYPE_BOTH, ACTION_J},
{NO_MOD, NO_KEY, 'g', ACTION_TYPE_BOTH, ACTION_G},
{NO_MOD, NO_KEY, 'G', ACTION_TYPE_BOTH, ACTION_SHIFT_G},
{NO_MOD, NO_KEY, 'r', ACTION_TYPE_BOTH, ACTION_R},
{NO_MOD, termbox.KeyArrowLeft, NO_CH, ACTION_TYPE_COMMAND, ACTION_LEFT},
{NO_MOD, termbox.KeyArrowRight, NO_CH, ACTION_TYPE_COMMAND, ACTION_RIGHT},
{NO_MOD, termbox.KeyBackspace, NO_CH, ACTION_TYPE_COMMAND, ACTION_DELETE},
{NO_MOD, termbox.KeyBackspace2, NO_CH, ACTION_TYPE_COMMAND, ACTION_DELETE},
{NO_MOD, termbox.KeySpace, NO_CH, ACTION_TYPE_COMMAND, ACTION_SPACE},
{NO_MOD, termbox.KeyEnter, NO_CH, ACTION_TYPE_COMMAND, ACTION_EXECUTE_COMMAND},
}
func GetActionTypeByEvent(event termbox.Event) ActionType {
for _, keybind := range KeybindList {
if event.Mod == keybind.Mod && event.Key == keybind.Key && event.Ch == keybind.Ch {
return keybind.ActionType
}
}
return NO_ACTION_TYPE
}
func GetActionByEvent(event termbox.Event) Action {
for _, keybind := range KeybindList {
if event.Mod == keybind.Mod && event.Key == keybind.Key && event.Ch == keybind.Ch {
return keybind.Action
}
}
return NO_ACTION
}