Added Key and KeyMod consts.
Refactored events to use Key and KeyMod where applicable. Added IsKeyDown method.
This commit is contained in:
parent
7d7bc43a80
commit
ff60dcb236
@ -72,14 +72,14 @@ type DisplayOrientationEvent struct {
|
|||||||
|
|
||||||
type KeyEvent struct {
|
type KeyEvent struct {
|
||||||
EventBase
|
EventBase
|
||||||
KeyCode int
|
KeyCode Key
|
||||||
Display *Display
|
Display *Display
|
||||||
}
|
}
|
||||||
|
|
||||||
type KeyCharEvent struct {
|
type KeyCharEvent struct {
|
||||||
KeyEvent
|
KeyEvent
|
||||||
UnicodeCharacter rune
|
UnicodeCharacter rune
|
||||||
Modifiers uint
|
Modifiers KeyMod
|
||||||
Repeat bool
|
Repeat bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,13 +165,13 @@ func (eq *EventQueue) mapEvent(e *C.ALLEGRO_EVENT) Event {
|
|||||||
return &MouseButtonUpEvent{MouseEvent{eb, int(mouse.x), int(mouse.y), int(mouse.z), int(mouse.w), nil}, uint(mouse.button), float32(mouse.pressure)}
|
return &MouseButtonUpEvent{MouseEvent{eb, int(mouse.x), int(mouse.y), int(mouse.z), int(mouse.w), nil}, uint(mouse.button), float32(mouse.pressure)}
|
||||||
case C.ALLEGRO_EVENT_KEY_DOWN:
|
case C.ALLEGRO_EVENT_KEY_DOWN:
|
||||||
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
||||||
return &KeyDownEvent{KeyEvent{eb, int(key.keycode), nil}}
|
return &KeyDownEvent{KeyEvent{eb, Key(key.keycode), nil}}
|
||||||
case C.ALLEGRO_EVENT_KEY_UP:
|
case C.ALLEGRO_EVENT_KEY_UP:
|
||||||
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
||||||
return &KeyUpEvent{KeyEvent{eb, int(key.keycode), nil}}
|
return &KeyUpEvent{KeyEvent{eb, Key(key.keycode), nil}}
|
||||||
case C.ALLEGRO_EVENT_KEY_CHAR:
|
case C.ALLEGRO_EVENT_KEY_CHAR:
|
||||||
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
key := (*C.ALLEGRO_KEYBOARD_EVENT)(unsafe.Pointer(e))
|
||||||
return &KeyCharEvent{KeyEvent{eb, int(key.keycode), nil}, rune(key.unichar), uint(key.modifiers), bool(key.repeat)}
|
return &KeyCharEvent{KeyEvent{eb, Key(key.keycode), nil}, rune(key.unichar), KeyMod(key.modifiers), bool(key.repeat)}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
177
allegro5/keyboard.go
Normal file
177
allegro5/keyboard.go
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
package allegro5
|
||||||
|
|
||||||
|
// #include <allegro5/allegro.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type Key int
|
||||||
|
|
||||||
|
const (
|
||||||
|
KeyA Key = 1
|
||||||
|
KeyB = 2
|
||||||
|
KeyC = 3
|
||||||
|
KeyD = 4
|
||||||
|
KeyE = 5
|
||||||
|
KeyF = 6
|
||||||
|
KeyG = 7
|
||||||
|
KeyH = 8
|
||||||
|
KeyI = 9
|
||||||
|
KeyJ = 10
|
||||||
|
KeyK = 11
|
||||||
|
KeyL = 12
|
||||||
|
KeyM = 13
|
||||||
|
KeyN = 14
|
||||||
|
KeyO = 15
|
||||||
|
KeyP = 16
|
||||||
|
KeyQ = 17
|
||||||
|
KeyR = 18
|
||||||
|
KeyS = 19
|
||||||
|
KeyT = 20
|
||||||
|
KeyU = 21
|
||||||
|
KeyV = 22
|
||||||
|
KeyW = 23
|
||||||
|
KeyX = 24
|
||||||
|
KeyY = 25
|
||||||
|
KeyZ = 26
|
||||||
|
Key0 = 27
|
||||||
|
Key1 = 28
|
||||||
|
Key2 = 29
|
||||||
|
Key3 = 30
|
||||||
|
Key4 = 31
|
||||||
|
Key5 = 32
|
||||||
|
Key6 = 33
|
||||||
|
Key7 = 34
|
||||||
|
Key8 = 35
|
||||||
|
Key9 = 36
|
||||||
|
KeyPad0 = 37
|
||||||
|
KeyPad1 = 38
|
||||||
|
KeyPad2 = 39
|
||||||
|
KeyPad3 = 40
|
||||||
|
KeyPad4 = 41
|
||||||
|
KeyPad5 = 42
|
||||||
|
KeyPad6 = 43
|
||||||
|
KeyPad7 = 44
|
||||||
|
KeyPad8 = 45
|
||||||
|
KeyPad9 = 46
|
||||||
|
KeyF1 = 47
|
||||||
|
KeyF2 = 48
|
||||||
|
KeyF3 = 49
|
||||||
|
KeyF4 = 50
|
||||||
|
KeyF5 = 51
|
||||||
|
KeyF6 = 52
|
||||||
|
KeyF7 = 53
|
||||||
|
KeyF8 = 54
|
||||||
|
KeyF9 = 55
|
||||||
|
KeyF10 = 56
|
||||||
|
KeyF11 = 57
|
||||||
|
KeyF12 = 58
|
||||||
|
KeyEscape = 59
|
||||||
|
KeyTilde = 60
|
||||||
|
KeyMinus = 61
|
||||||
|
KeyEquals = 62
|
||||||
|
KeyBackspace = 63
|
||||||
|
KeyTab = 64
|
||||||
|
KeyOpenBrace = 65
|
||||||
|
KeyCloseBrace = 66
|
||||||
|
KeyEnter = 67
|
||||||
|
KeySemicolon = 68
|
||||||
|
KeyQuote = 69
|
||||||
|
KeyBackslash = 70
|
||||||
|
KeyBackslash2 = 71 /* DirectInput calls this DIK_OEM_102: "< > | on UK/Germany keyboards" */
|
||||||
|
KeyComma = 72
|
||||||
|
KeyFullstop = 73
|
||||||
|
KeySlash = 74
|
||||||
|
KeySpace = 75
|
||||||
|
KeyInsert = 76
|
||||||
|
KeyDelete = 77
|
||||||
|
KeyHome = 78
|
||||||
|
KeyEnd = 79
|
||||||
|
KeyPgup = 80
|
||||||
|
KeyPgdn = 81
|
||||||
|
KeyLeft = 82
|
||||||
|
KeyRight = 83
|
||||||
|
KeyUp = 84
|
||||||
|
KeyDown = 85
|
||||||
|
KeyPadSlash = 86
|
||||||
|
KeyPadAsterisk = 87
|
||||||
|
KeyPadMinus = 88
|
||||||
|
KeyPadPlus = 89
|
||||||
|
KeyPadDelete = 90
|
||||||
|
KeyPadEnter = 91
|
||||||
|
KeyPrintScreen = 92
|
||||||
|
KeyPause = 93
|
||||||
|
KeyAbntC1 = 94
|
||||||
|
KeyYen = 95
|
||||||
|
KeyKana = 96
|
||||||
|
KeyConvert = 97
|
||||||
|
KeyNoConvert = 98
|
||||||
|
KeyAt = 99
|
||||||
|
KeyCircumflex = 100
|
||||||
|
KeyColon2 = 101
|
||||||
|
KeyKanji = 102
|
||||||
|
KeyPadEquals = 103 /* MacOS X */
|
||||||
|
KeyBackQuote = 104 /* MacOS X */
|
||||||
|
KeySemicolon2 = 105 /* MacOS X -- TODO: ask lillo what this should be */
|
||||||
|
KeyCommand = 106 /* MacOS X */
|
||||||
|
KeyBack = 107 /* Android back key */
|
||||||
|
KeyVolumeUp = 108
|
||||||
|
KeyVolumeDown = 109
|
||||||
|
KeySearch = 110
|
||||||
|
KeyDPadCenter = 111
|
||||||
|
KeyButtonX = 112
|
||||||
|
KeyButtonY = 113
|
||||||
|
KeyDPadUp = 114
|
||||||
|
KeyDPadDown = 115
|
||||||
|
KeyDpadLeft = 116
|
||||||
|
KeyDpadRight = 117
|
||||||
|
KeySelect = 118
|
||||||
|
KeyStart = 119
|
||||||
|
KeyButtonL1 = 120
|
||||||
|
KeyButtonR1 = 121
|
||||||
|
KeyButtonL2 = 122
|
||||||
|
KeyButtonR2 = 123
|
||||||
|
KeyButtonA = 124
|
||||||
|
KeyButtonB = 125
|
||||||
|
KeyThumbL = 126
|
||||||
|
KeyThumbR = 127
|
||||||
|
KeyUnknown = 128
|
||||||
|
KeyModifiers = 215
|
||||||
|
KeyLShift = 215
|
||||||
|
KeyRShift = 216
|
||||||
|
KeyLCtrl = 217
|
||||||
|
KeyRCtrl = 218
|
||||||
|
KeyAlt = 219
|
||||||
|
KeyAltGr = 220
|
||||||
|
KeyLWin = 221
|
||||||
|
KeyRWin = 222
|
||||||
|
KeyMenu = 223
|
||||||
|
KeyScrollLock = 224
|
||||||
|
KeyNumLock = 225
|
||||||
|
KeyCapsLock = 226
|
||||||
|
)
|
||||||
|
|
||||||
|
type KeyMod uint
|
||||||
|
|
||||||
|
const (
|
||||||
|
KeyModShift KeyMod = 0x00001
|
||||||
|
KeyModCtrl = 0x00002
|
||||||
|
KeyModAlt = 0x00004
|
||||||
|
KeyModLWin = 0x00008
|
||||||
|
KeyModRWin = 0x00010
|
||||||
|
KeyModMenu = 0x00020
|
||||||
|
KeyModAltGr = 0x00040
|
||||||
|
KeyModCommand = 0x00080
|
||||||
|
KeyModScrollLock = 0x00100
|
||||||
|
KeyModNumlock = 0x00200
|
||||||
|
KeyModCapsLock = 0x00400
|
||||||
|
KeyModInaltseq = 0x00800
|
||||||
|
KeyModAccent1 = 0x01000
|
||||||
|
KeyModAccent2 = 0x02000
|
||||||
|
KeyModAccent3 = 0x04000
|
||||||
|
KeyModAccent4 = 0x08000
|
||||||
|
)
|
||||||
|
|
||||||
|
func IsKeyDown(k Key) bool {
|
||||||
|
var state C.ALLEGRO_KEYBOARD_STATE
|
||||||
|
C.al_get_keyboard_state(&state)
|
||||||
|
return bool(C.al_key_down(&state, C.int(k)))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user