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 }