mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 18:58:54 +01:00
glfw: Start implementing glfw package (Key)
This commit is contained in:
parent
873128cc7e
commit
1fd445b0e4
86
genkeys.go
86
genkeys.go
@ -28,14 +28,63 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
|
"github.com/go-gl/glfw/v3.2/glfw"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
nameToGLFWKeys map[string]glfw.Key
|
||||||
nameToJSKeyCodes map[string][]string
|
nameToJSKeyCodes map[string][]string
|
||||||
keyCodeToNameEdge map[int]string
|
keyCodeToNameEdge map[int]string
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
nameToGLFWKeys = map[string]glfw.Key{
|
||||||
|
"Unknown": glfw.KeyUnknown,
|
||||||
|
"Space": glfw.KeySpace,
|
||||||
|
"Apostrophe": glfw.KeyApostrophe,
|
||||||
|
"Comma": glfw.KeyComma,
|
||||||
|
"Minus": glfw.KeyMinus,
|
||||||
|
"Period": glfw.KeyPeriod,
|
||||||
|
"Slash": glfw.KeySlash,
|
||||||
|
"Semicolon": glfw.KeySemicolon,
|
||||||
|
"Equal": glfw.KeyEqual,
|
||||||
|
"LeftBracket": glfw.KeyLeftBracket,
|
||||||
|
"Backslash": glfw.KeyBackslash,
|
||||||
|
"RightBracket": glfw.KeyRightBracket,
|
||||||
|
"GraveAccent": glfw.KeyGraveAccent,
|
||||||
|
"World1": glfw.KeyWorld1,
|
||||||
|
"World2": glfw.KeyWorld2,
|
||||||
|
"Escape": glfw.KeyEscape,
|
||||||
|
"Enter": glfw.KeyEnter,
|
||||||
|
"Tab": glfw.KeyTab,
|
||||||
|
"Backspace": glfw.KeyBackspace,
|
||||||
|
"Insert": glfw.KeyInsert,
|
||||||
|
"Delete": glfw.KeyDelete,
|
||||||
|
"Right": glfw.KeyRight,
|
||||||
|
"Left": glfw.KeyLeft,
|
||||||
|
"Down": glfw.KeyDown,
|
||||||
|
"Up": glfw.KeyUp,
|
||||||
|
"PageUp": glfw.KeyPageUp,
|
||||||
|
"PageDown": glfw.KeyPageDown,
|
||||||
|
"Home": glfw.KeyHome,
|
||||||
|
"End": glfw.KeyEnd,
|
||||||
|
"CapsLock": glfw.KeyCapsLock,
|
||||||
|
"ScrollLock": glfw.KeyScrollLock,
|
||||||
|
"NumLock": glfw.KeyNumLock,
|
||||||
|
"PrintScreen": glfw.KeyPrintScreen,
|
||||||
|
"Pause": glfw.KeyPause,
|
||||||
|
"LeftShift": glfw.KeyLeftShift,
|
||||||
|
"LeftControl": glfw.KeyLeftControl,
|
||||||
|
"LeftAlt": glfw.KeyLeftAlt,
|
||||||
|
"LeftSuper": glfw.KeyLeftSuper,
|
||||||
|
"RightShift": glfw.KeyRightShift,
|
||||||
|
"RightControl": glfw.KeyRightControl,
|
||||||
|
"RightAlt": glfw.KeyRightAlt,
|
||||||
|
"RightSuper": glfw.KeyRightSuper,
|
||||||
|
"Menu": glfw.KeyMenu,
|
||||||
|
"Last": glfw.KeyLast,
|
||||||
|
}
|
||||||
nameToJSKeyCodes = map[string][]string{
|
nameToJSKeyCodes = map[string][]string{
|
||||||
"Comma": {"Comma"},
|
"Comma": {"Comma"},
|
||||||
"Period": {"Period"},
|
"Period": {"Period"},
|
||||||
@ -75,21 +124,36 @@ func init() {
|
|||||||
}
|
}
|
||||||
// ASCII: 0 - 9
|
// ASCII: 0 - 9
|
||||||
for c := '0'; c <= '9'; c++ {
|
for c := '0'; c <= '9'; c++ {
|
||||||
|
nameToGLFWKeys[string(c)] = glfw.Key0 + glfw.Key(c) - '0'
|
||||||
nameToJSKeyCodes[string(c)] = []string{"Digit" + string(c)}
|
nameToJSKeyCodes[string(c)] = []string{"Digit" + string(c)}
|
||||||
}
|
}
|
||||||
// ASCII: A - Z
|
// ASCII: A - Z
|
||||||
for c := 'A'; c <= 'Z'; c++ {
|
for c := 'A'; c <= 'Z'; c++ {
|
||||||
|
nameToGLFWKeys[string(c)] = glfw.KeyA + glfw.Key(c) - 'A'
|
||||||
nameToJSKeyCodes[string(c)] = []string{"Key" + string(c)}
|
nameToJSKeyCodes[string(c)] = []string{"Key" + string(c)}
|
||||||
}
|
}
|
||||||
// Function keys
|
// Function keys
|
||||||
for i := 1; i <= 12; i++ {
|
for i := 1; i <= 12; i++ {
|
||||||
nameToJSKeyCodes["F"+strconv.Itoa(i)] = []string{"F" + strconv.Itoa(i)}
|
name := "F" + strconv.Itoa(i)
|
||||||
|
nameToGLFWKeys[name] = glfw.KeyF1 + glfw.Key(i) - 1
|
||||||
|
nameToJSKeyCodes[name] = []string{name}
|
||||||
}
|
}
|
||||||
// Numpad
|
// Numpad
|
||||||
// https://www.w3.org/TR/uievents-code/#key-numpad-section
|
// https://www.w3.org/TR/uievents-code/#key-numpad-section
|
||||||
for c := '0'; c <= '9'; c++ {
|
for c := '0'; c <= '9'; c++ {
|
||||||
nameToJSKeyCodes["KP"+string(c)] = []string{"Numpad" + string(c)}
|
name := "KP" + string(c)
|
||||||
|
nameToGLFWKeys[name] = glfw.KeyKP0 + glfw.Key(c) - '0'
|
||||||
|
nameToJSKeyCodes[name] = []string{"Numpad" + string(c)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nameToGLFWKeys["KPDecimal"] = glfw.KeyKPDecimal
|
||||||
|
nameToGLFWKeys["KPDivide"] = glfw.KeyKPDivide
|
||||||
|
nameToGLFWKeys["KPMultiply"] = glfw.KeyKPMultiply
|
||||||
|
nameToGLFWKeys["KPSubtract"] = glfw.KeyKPSubtract
|
||||||
|
nameToGLFWKeys["KPAdd"] = glfw.KeyKPAdd
|
||||||
|
nameToGLFWKeys["KPEnter"] = glfw.KeyKPEnter
|
||||||
|
nameToGLFWKeys["KPEqual"] = glfw.KeyKPEqual
|
||||||
|
|
||||||
nameToJSKeyCodes["KPDecimal"] = []string{"NumpadDecimal"}
|
nameToJSKeyCodes["KPDecimal"] = []string{"NumpadDecimal"}
|
||||||
nameToJSKeyCodes["KPDivide"] = []string{"NumpadDivide"}
|
nameToJSKeyCodes["KPDivide"] = []string{"NumpadDivide"}
|
||||||
nameToJSKeyCodes["KPMultiply"] = []string{"NumpadMultiply"}
|
nameToJSKeyCodes["KPMultiply"] = []string{"NumpadMultiply"}
|
||||||
@ -232,7 +296,7 @@ const inputKeysGlfwTmpl = `{{.License}}
|
|||||||
package input
|
package input
|
||||||
|
|
||||||
import (
|
import (
|
||||||
glfw "github.com/go-gl/glfw/v3.2/glfw"
|
"github.com/hajimehoshi/ebiten/internal/glfw"
|
||||||
)
|
)
|
||||||
|
|
||||||
var glfwKeyCodeToKey = map[glfw.Key]Key{
|
var glfwKeyCodeToKey = map[glfw.Key]Key{
|
||||||
@ -268,6 +332,20 @@ var keyCodeToKeyEdge = map[int]Key{
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const glfwKeysTmpl = `{{.License}}
|
||||||
|
|
||||||
|
{{.DoNotEdit}}
|
||||||
|
|
||||||
|
{{.BuildTag}}
|
||||||
|
|
||||||
|
package glfw
|
||||||
|
|
||||||
|
const (
|
||||||
|
{{range $name, $key := .NameToGLFWKeys}}Key{{$name}} = Key({{$key}})
|
||||||
|
{{end}}
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
type KeyNames []string
|
type KeyNames []string
|
||||||
|
|
||||||
func (k KeyNames) digit(name string) int {
|
func (k KeyNames) digit(name string) int {
|
||||||
@ -393,6 +471,7 @@ func main() {
|
|||||||
"internal/input/keys.go": inputKeysTmpl,
|
"internal/input/keys.go": inputKeysTmpl,
|
||||||
"internal/input/keys_glfw.go": inputKeysGlfwTmpl,
|
"internal/input/keys_glfw.go": inputKeysGlfwTmpl,
|
||||||
"internal/input/keys_js.go": inputKeysJSTmpl,
|
"internal/input/keys_js.go": inputKeysJSTmpl,
|
||||||
|
"internal/glfw/keys.go": glfwKeysTmpl,
|
||||||
} {
|
} {
|
||||||
f, err := os.Create(path)
|
f, err := os.Create(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -431,6 +510,7 @@ func main() {
|
|||||||
"KeyNames": names,
|
"KeyNames": names,
|
||||||
"LastKeyName": names[len(names)-1],
|
"LastKeyName": names[len(names)-1],
|
||||||
"KeyNamesWithoutMods": namesWithoutMods,
|
"KeyNamesWithoutMods": namesWithoutMods,
|
||||||
|
"NameToGLFWKeys": nameToGLFWKeys,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
23
internal/glfw/glfw.go
Normal file
23
internal/glfw/glfw.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright 2018 The Ebiten Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package glfw
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-gl/glfw/v3.2/glfw"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
Key = glfw.Key
|
||||||
|
)
|
129
internal/glfw/keys.go
Normal file
129
internal/glfw/keys.go
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
// Copyright 2013 The Ebiten Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// Code generated by genkeys.go using 'go generate'. DO NOT EDIT.
|
||||||
|
|
||||||
|
package glfw
|
||||||
|
|
||||||
|
const (
|
||||||
|
Key0 = Key(48)
|
||||||
|
Key1 = Key(49)
|
||||||
|
Key2 = Key(50)
|
||||||
|
Key3 = Key(51)
|
||||||
|
Key4 = Key(52)
|
||||||
|
Key5 = Key(53)
|
||||||
|
Key6 = Key(54)
|
||||||
|
Key7 = Key(55)
|
||||||
|
Key8 = Key(56)
|
||||||
|
Key9 = Key(57)
|
||||||
|
KeyA = Key(65)
|
||||||
|
KeyApostrophe = Key(39)
|
||||||
|
KeyB = Key(66)
|
||||||
|
KeyBackslash = Key(92)
|
||||||
|
KeyBackspace = Key(259)
|
||||||
|
KeyC = Key(67)
|
||||||
|
KeyCapsLock = Key(280)
|
||||||
|
KeyComma = Key(44)
|
||||||
|
KeyD = Key(68)
|
||||||
|
KeyDelete = Key(261)
|
||||||
|
KeyDown = Key(264)
|
||||||
|
KeyE = Key(69)
|
||||||
|
KeyEnd = Key(269)
|
||||||
|
KeyEnter = Key(257)
|
||||||
|
KeyEqual = Key(61)
|
||||||
|
KeyEscape = Key(256)
|
||||||
|
KeyF = Key(70)
|
||||||
|
KeyF1 = Key(290)
|
||||||
|
KeyF10 = Key(299)
|
||||||
|
KeyF11 = Key(300)
|
||||||
|
KeyF12 = Key(301)
|
||||||
|
KeyF2 = Key(291)
|
||||||
|
KeyF3 = Key(292)
|
||||||
|
KeyF4 = Key(293)
|
||||||
|
KeyF5 = Key(294)
|
||||||
|
KeyF6 = Key(295)
|
||||||
|
KeyF7 = Key(296)
|
||||||
|
KeyF8 = Key(297)
|
||||||
|
KeyF9 = Key(298)
|
||||||
|
KeyG = Key(71)
|
||||||
|
KeyGraveAccent = Key(96)
|
||||||
|
KeyH = Key(72)
|
||||||
|
KeyHome = Key(268)
|
||||||
|
KeyI = Key(73)
|
||||||
|
KeyInsert = Key(260)
|
||||||
|
KeyJ = Key(74)
|
||||||
|
KeyK = Key(75)
|
||||||
|
KeyKP0 = Key(320)
|
||||||
|
KeyKP1 = Key(321)
|
||||||
|
KeyKP2 = Key(322)
|
||||||
|
KeyKP3 = Key(323)
|
||||||
|
KeyKP4 = Key(324)
|
||||||
|
KeyKP5 = Key(325)
|
||||||
|
KeyKP6 = Key(326)
|
||||||
|
KeyKP7 = Key(327)
|
||||||
|
KeyKP8 = Key(328)
|
||||||
|
KeyKP9 = Key(329)
|
||||||
|
KeyKPAdd = Key(334)
|
||||||
|
KeyKPDecimal = Key(330)
|
||||||
|
KeyKPDivide = Key(331)
|
||||||
|
KeyKPEnter = Key(335)
|
||||||
|
KeyKPEqual = Key(336)
|
||||||
|
KeyKPMultiply = Key(332)
|
||||||
|
KeyKPSubtract = Key(333)
|
||||||
|
KeyL = Key(76)
|
||||||
|
KeyLast = Key(348)
|
||||||
|
KeyLeft = Key(263)
|
||||||
|
KeyLeftAlt = Key(342)
|
||||||
|
KeyLeftBracket = Key(91)
|
||||||
|
KeyLeftControl = Key(341)
|
||||||
|
KeyLeftShift = Key(340)
|
||||||
|
KeyLeftSuper = Key(343)
|
||||||
|
KeyM = Key(77)
|
||||||
|
KeyMenu = Key(348)
|
||||||
|
KeyMinus = Key(45)
|
||||||
|
KeyN = Key(78)
|
||||||
|
KeyNumLock = Key(282)
|
||||||
|
KeyO = Key(79)
|
||||||
|
KeyP = Key(80)
|
||||||
|
KeyPageDown = Key(267)
|
||||||
|
KeyPageUp = Key(266)
|
||||||
|
KeyPause = Key(284)
|
||||||
|
KeyPeriod = Key(46)
|
||||||
|
KeyPrintScreen = Key(283)
|
||||||
|
KeyQ = Key(81)
|
||||||
|
KeyR = Key(82)
|
||||||
|
KeyRight = Key(262)
|
||||||
|
KeyRightAlt = Key(346)
|
||||||
|
KeyRightBracket = Key(93)
|
||||||
|
KeyRightControl = Key(345)
|
||||||
|
KeyRightShift = Key(344)
|
||||||
|
KeyRightSuper = Key(347)
|
||||||
|
KeyS = Key(83)
|
||||||
|
KeyScrollLock = Key(281)
|
||||||
|
KeySemicolon = Key(59)
|
||||||
|
KeySlash = Key(47)
|
||||||
|
KeySpace = Key(32)
|
||||||
|
KeyT = Key(84)
|
||||||
|
KeyTab = Key(258)
|
||||||
|
KeyU = Key(85)
|
||||||
|
KeyUnknown = Key(-1)
|
||||||
|
KeyUp = Key(265)
|
||||||
|
KeyV = Key(86)
|
||||||
|
KeyW = Key(87)
|
||||||
|
KeyWorld1 = Key(161)
|
||||||
|
KeyWorld2 = Key(162)
|
||||||
|
KeyX = Key(88)
|
||||||
|
KeyY = Key(89)
|
||||||
|
KeyZ = Key(90)
|
||||||
|
)
|
@ -22,7 +22,7 @@
|
|||||||
package input
|
package input
|
||||||
|
|
||||||
import (
|
import (
|
||||||
glfw "github.com/go-gl/glfw/v3.2/glfw"
|
"github.com/hajimehoshi/ebiten/internal/glfw"
|
||||||
)
|
)
|
||||||
|
|
||||||
var glfwKeyCodeToKey = map[glfw.Key]Key{
|
var glfwKeyCodeToKey = map[glfw.Key]Key{
|
||||||
|
Loading…
Reference in New Issue
Block a user