예제 #1
0
파일: sdl.go 프로젝트: gnanderson/Go-SDL
// 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

}
예제 #2
0
파일: sdl.go 프로젝트: rsaarelm/teratogen
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
}
예제 #3
0
파일: sdl.go 프로젝트: kearsley/Go-SDL
// 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

}
예제 #4
0
파일: keyboard.go 프로젝트: beoran/fungo
func GetKeyState() []uint8 {
	ks := C.SDL_GetKeyState(nil)
	ptr := (*[K_LAST]byte)(unsafe.Pointer(ks))
	res := ptr[0:K_LAST]
	return res
}