mirror of https://github.com/asciimoo/wuzz
[enh] configurable keybindings ++ help popup
parent
0c6ade0216
commit
bf3c5b6bca
@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/jroimartin/gocui"
|
||||
)
|
||||
|
||||
type CommandFunc func(*gocui.Gui, *gocui.View) error
|
||||
|
||||
var COMMANDS map[string]func(string, *App) CommandFunc = map[string]func(string, *App) CommandFunc{
|
||||
"submit": func(_ string, a *App) CommandFunc {
|
||||
return a.SubmitRequest
|
||||
},
|
||||
"save": func(_ string, a *App) CommandFunc {
|
||||
return a.OpenSaveDialog
|
||||
},
|
||||
"history": func(_ string, a *App) CommandFunc {
|
||||
return a.ToggleHistory
|
||||
},
|
||||
"quit": func(_ string, _ *App) CommandFunc {
|
||||
return quit
|
||||
},
|
||||
"focus": func(args string, a *App) CommandFunc {
|
||||
return func(g *gocui.Gui, _ *gocui.View) error {
|
||||
return a.setViewByName(g, args)
|
||||
}
|
||||
},
|
||||
"nextView": func(_ string, a *App) CommandFunc {
|
||||
return a.NextView
|
||||
},
|
||||
"prevView": func(_ string, a *App) CommandFunc {
|
||||
return a.PrevView
|
||||
},
|
||||
"scrollDown": func(_ string, _ *App) CommandFunc {
|
||||
return scrollViewDown
|
||||
},
|
||||
"scrollUp": func(_ string, _ *App) CommandFunc {
|
||||
return scrollViewUp
|
||||
},
|
||||
"pageDown": func(_ string, _ *App) CommandFunc {
|
||||
return pageDown
|
||||
},
|
||||
"pageUp": func(_ string, _ *App) CommandFunc {
|
||||
return pageUp
|
||||
},
|
||||
}
|
||||
|
||||
func scrollView(v *gocui.View, dy int) error {
|
||||
v.Autoscroll = false
|
||||
ox, oy := v.Origin()
|
||||
if oy+dy < 0 {
|
||||
dy = -oy
|
||||
}
|
||||
if _, err := v.Line(dy); dy > 0 && err != nil {
|
||||
dy = 0
|
||||
}
|
||||
v.SetOrigin(ox, oy+dy)
|
||||
return nil
|
||||
}
|
||||
|
||||
func scrollViewUp(_ *gocui.Gui, v *gocui.View) error {
|
||||
return scrollView(v, -1)
|
||||
}
|
||||
|
||||
func scrollViewDown(_ *gocui.Gui, v *gocui.View) error {
|
||||
return scrollView(v, 1)
|
||||
}
|
||||
|
||||
func pageUp(_ *gocui.Gui, v *gocui.View) error {
|
||||
_, height := v.Size()
|
||||
scrollView(v, -height*2/3)
|
||||
return nil
|
||||
}
|
||||
|
||||
func pageDown(_ *gocui.Gui, v *gocui.View) error {
|
||||
_, height := v.Size()
|
||||
scrollView(v, height*2/3)
|
||||
return nil
|
||||
}
|
||||
|
||||
func quit(g *gocui.Gui, v *gocui.View) error {
|
||||
return gocui.ErrQuit
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/jroimartin/gocui"
|
||||
)
|
||||
|
||||
var KEYS = map[string]gocui.Key{
|
||||
"F1": gocui.KeyF1,
|
||||
"F2": gocui.KeyF2,
|
||||
"F3": gocui.KeyF3,
|
||||
"F4": gocui.KeyF4,
|
||||
"F5": gocui.KeyF5,
|
||||
"F6": gocui.KeyF6,
|
||||
"F7": gocui.KeyF7,
|
||||
"F8": gocui.KeyF8,
|
||||
"F9": gocui.KeyF9,
|
||||
"F10": gocui.KeyF10,
|
||||
"F11": gocui.KeyF11,
|
||||
"F12": gocui.KeyF12,
|
||||
"Insert": gocui.KeyInsert,
|
||||
"Delete": gocui.KeyDelete,
|
||||
"Home": gocui.KeyHome,
|
||||
"End": gocui.KeyEnd,
|
||||
"PageUp": gocui.KeyPgup,
|
||||
"PageDown": gocui.KeyPgdn,
|
||||
"ArrowUp": gocui.KeyArrowUp,
|
||||
"ArrowDown": gocui.KeyArrowDown,
|
||||
"ArrowLeft": gocui.KeyArrowLeft,
|
||||
"ArrowRight": gocui.KeyArrowRight,
|
||||
"CtrlTilde": gocui.KeyCtrlTilde,
|
||||
"Ctrl2": gocui.KeyCtrl2,
|
||||
"CtrlSpace": gocui.KeyCtrlSpace,
|
||||
"CtrlA": gocui.KeyCtrlA,
|
||||
"CtrlB": gocui.KeyCtrlB,
|
||||
"CtrlC": gocui.KeyCtrlC,
|
||||
"CtrlD": gocui.KeyCtrlD,
|
||||
"CtrlE": gocui.KeyCtrlE,
|
||||
"CtrlF": gocui.KeyCtrlF,
|
||||
"CtrlG": gocui.KeyCtrlG,
|
||||
"Backspace": gocui.KeyBackspace,
|
||||
"CtrlH": gocui.KeyCtrlH,
|
||||
"Tab": gocui.KeyTab,
|
||||
"CtrlI": gocui.KeyCtrlI,
|
||||
"CtrlJ": gocui.KeyCtrlJ,
|
||||
"CtrlK": gocui.KeyCtrlK,
|
||||
"CtrlL": gocui.KeyCtrlL,
|
||||
"Enter": gocui.KeyEnter,
|
||||
"CtrlM": gocui.KeyCtrlM,
|
||||
"CtrlN": gocui.KeyCtrlN,
|
||||
"CtrlO": gocui.KeyCtrlO,
|
||||
"CtrlP": gocui.KeyCtrlP,
|
||||
"CtrlQ": gocui.KeyCtrlQ,
|
||||
"CtrlR": gocui.KeyCtrlR,
|
||||
"CtrlS": gocui.KeyCtrlS,
|
||||
"CtrlT": gocui.KeyCtrlT,
|
||||
"CtrlU": gocui.KeyCtrlU,
|
||||
"CtrlV": gocui.KeyCtrlV,
|
||||
"CtrlW": gocui.KeyCtrlW,
|
||||
"CtrlX": gocui.KeyCtrlX,
|
||||
"CtrlY": gocui.KeyCtrlY,
|
||||
"CtrlZ": gocui.KeyCtrlZ,
|
||||
"Esc": gocui.KeyEsc,
|
||||
"CtrlLsqBracket": gocui.KeyCtrlLsqBracket,
|
||||
"Ctrl3": gocui.KeyCtrl3,
|
||||
"Ctrl4": gocui.KeyCtrl4,
|
||||
"CtrlBackslash": gocui.KeyCtrlBackslash,
|
||||
"Ctrl5": gocui.KeyCtrl5,
|
||||
"CtrlRsqBracket": gocui.KeyCtrlRsqBracket,
|
||||
"Ctrl6": gocui.KeyCtrl6,
|
||||
"Ctrl7": gocui.KeyCtrl7,
|
||||
"CtrlSlash": gocui.KeyCtrlSlash,
|
||||
"CtrlUnderscore": gocui.KeyCtrlUnderscore,
|
||||
"Space": gocui.KeySpace,
|
||||
"Backspace2": gocui.KeyBackspace2,
|
||||
"Ctrl8": gocui.KeyCtrl8,
|
||||
}
|
Loading…
Reference in New Issue