added implementation in GO lang
This commit is contained in:
83
internal/modes/input.go
Normal file
83
internal/modes/input.go
Normal file
@ -0,0 +1,83 @@
|
||||
package modes
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
||||
)
|
||||
|
||||
func justPressedKeys() []ebiten.Key {
|
||||
var keys []ebiten.Key
|
||||
keys = inpututil.AppendJustPressedKeys(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
func childKey(key ebiten.Key) bool {
|
||||
switch key {
|
||||
case ebiten.KeyControl, ebiten.KeyControlLeft, ebiten.KeyControlRight,
|
||||
ebiten.KeyShift, ebiten.KeyShiftLeft, ebiten.KeyShiftRight,
|
||||
ebiten.KeyAlt, ebiten.KeyAltLeft, ebiten.KeyAltRight,
|
||||
ebiten.KeyMeta, ebiten.KeyEscape,
|
||||
ebiten.KeyF1, ebiten.KeyF2, ebiten.KeyF3, ebiten.KeyF4,
|
||||
ebiten.KeyF5, ebiten.KeyF6, ebiten.KeyF7, ebiten.KeyF8,
|
||||
ebiten.KeyF9, ebiten.KeyF10, ebiten.KeyF11, ebiten.KeyF12:
|
||||
return false
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
func keyLabel(key ebiten.Key) string {
|
||||
if r, ok := keyRune(key); ok {
|
||||
return string(r)
|
||||
}
|
||||
switch key {
|
||||
case ebiten.KeySpace:
|
||||
return "SPACE"
|
||||
case ebiten.KeyEnter, ebiten.KeyNumpadEnter:
|
||||
return "ENTER"
|
||||
case ebiten.KeyBackspace:
|
||||
return "BKSP"
|
||||
case ebiten.KeyDelete:
|
||||
return "DEL"
|
||||
case ebiten.KeyTab:
|
||||
return "TAB"
|
||||
case ebiten.KeyArrowLeft:
|
||||
return "LEFT"
|
||||
case ebiten.KeyArrowRight:
|
||||
return "RIGHT"
|
||||
case ebiten.KeyArrowUp:
|
||||
return "UP"
|
||||
case ebiten.KeyArrowDown:
|
||||
return "DOWN"
|
||||
default:
|
||||
return key.String()
|
||||
}
|
||||
}
|
||||
|
||||
func keyRune(key ebiten.Key) (rune, bool) {
|
||||
if key >= ebiten.KeyA && key <= ebiten.KeyZ {
|
||||
return rune('A' + int(key-ebiten.KeyA)), true
|
||||
}
|
||||
if key >= ebiten.KeyDigit0 && key <= ebiten.KeyDigit9 {
|
||||
return rune('0' + int(key-ebiten.KeyDigit0)), true
|
||||
}
|
||||
if key >= ebiten.KeyNumpad0 && key <= ebiten.KeyNumpad9 {
|
||||
return rune('0' + int(key-ebiten.KeyNumpad0)), true
|
||||
}
|
||||
return 0, false
|
||||
}
|
||||
|
||||
func digitValue(key ebiten.Key) (string, bool) {
|
||||
r, ok := keyRune(key)
|
||||
if !ok || r < '0' || r > '9' {
|
||||
return "", false
|
||||
}
|
||||
return string(r), true
|
||||
}
|
||||
|
||||
func parseDigit(s string) int {
|
||||
v, _ := strconv.Atoi(s)
|
||||
return v
|
||||
}
|
||||
Reference in New Issue
Block a user