42 lines
770 B
Go
42 lines
770 B
Go
package ui
|
|
|
|
import (
|
|
"lab.zaar.be/thefish/alchemyst-go/util"
|
|
blt "lab.zaar.be/thefish/bearlibterminal"
|
|
)
|
|
|
|
var modifiers = []int{blt.TK_SHIFT, blt.TK_ALT, blt.TK_CONTROL}
|
|
|
|
func ReadKey() (string, int) {
|
|
if !blt.HasInput() {
|
|
return "", blt.TK_NONE
|
|
}
|
|
var key = blt.Read()
|
|
var pressed = ""
|
|
var isModifier, _ = util.IntInSlice(key, modifiers)
|
|
if !isModifier {
|
|
|
|
pressed = Scancodemap[key]
|
|
|
|
if blt.Check(blt.TK_SHIFT) != 0 {
|
|
pressed = "Shift+" + pressed
|
|
}
|
|
if blt.Check(blt.TK_ALT) != 0 {
|
|
pressed = "Alt+" + pressed
|
|
}
|
|
if blt.Check(blt.TK_CONTROL) != 0 {
|
|
pressed = "Ctrl+" + pressed
|
|
}
|
|
//appctx.Logger().Debug().Msg(pressed)
|
|
}
|
|
|
|
return pressed, key
|
|
}
|
|
|
|
func ReadKeyCode() int {
|
|
if !blt.HasInput() {
|
|
return blt.TK_NONE
|
|
}
|
|
return blt.Read()
|
|
}
|