189 lines
4.7 KiB
Go
189 lines
4.7 KiB
Go
|
package allg5
|
||
|
|
||
|
// #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
|
||
|
KeyPageUp = 80
|
||
|
KeyPageDown = 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)))
|
||
|
}
|
||
|
|
||
|
func IsAnyKeyDown(keys ...Key) bool {
|
||
|
var state C.ALLEGRO_KEYBOARD_STATE
|
||
|
C.al_get_keyboard_state(&state)
|
||
|
for _, k := range keys {
|
||
|
if bool(C.al_key_down(&state, C.int(k))) {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
return false
|
||
|
}
|