// Gets a snapshot of the current keyboard state func GetKeyState() []uint8 { var numkeys C.int array := C.SDL_GetKeyState(&numkeys) var ptr = make([]uint8, numkeys) *((**C.Uint8)(unsafe.Pointer(&ptr))) = array // TODO return ptr }
func IsKeyDown(key KeySym) bool { var numKeys C.int keys := C.SDL_GetKeyState(&numKeys) if int(key) < 0 || int(key) >= int(numKeys) { return false } // Keys is a byte array // XXX: Is this idiomatic for accessing C arrays? result := (*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(keys)) + uintptr(key))) return *result != 0 }
// Gets a snapshot of the current keyboard state func GetKeyState() []uint8 { GlobalMutex.Lock() var numkeys C.int array := C.SDL_GetKeyState(&numkeys) var ptr = make([]uint8, numkeys) *((**C.Uint8)(unsafe.Pointer(&ptr))) = array // TODO GlobalMutex.Unlock() return ptr }
func GetKeyState() []uint8 { ks := C.SDL_GetKeyState(nil) ptr := (*[K_LAST]byte)(unsafe.Pointer(ks)) res := ptr[0:K_LAST] return res }