我试图通过PySDL2(当前版本为0.7.0;source/documentation)学习SDL。它为SDL的所有正常函数提供了一个ctypesPython包装器,并通过其sdl2.ext
包提供了更多的Python函数来处理细节并以Python类型返回结果。例如,sdl2.ext.get_events()
将调用sdl2.SDL_PumpEvents()
,然后窥视队列上的所有事件并将它们作为Python列表返回。在
但是,我无法判断SDL_GetkeyboardState()
是否存在这样一个方便函数。函数的官方SDL Wiki documentation将其定义为:
const Uint8* SDL_GetKeyboardState(int* numkeys)
其中numkeys可以为null(否则它将接收返回数组的长度),返回的Uint8*是一个指向键状态数组的指针,该数组由SDL_Scancode值索引,如果键向下,则保持1,如果键向上,则保持0。在
PySDL2确实提供了通过sdl2.keyboard.SDL_GetKeyboardState(numkeys)
直接调用SDL\'GetKeyboardState,但它返回的ctypes值并不立即有用。在
所以我的问题是,是否还有一些Pythonic函数可以通过PySDL2获取当前SDL键盘状态?如果有,它是什么?应该如何使用?如果没有,应该提交一份吗?在
作为参考,我想我自己已经找到了实现这个功能的方法,但这是ctypes的一次粗略的洗礼,所以我可能弄错了一些东西:
^{pr2}$
有一种更简单的解决方案,不需要导入
ctypes
:下面是一个使用
numkeys
而不是常量SDL_NUM_SCANCODES
的修改:相关问题 更多 >
编程相关推荐