除了事件里面可以处理按键,SDL2还专门提供了SDL_keyboard.h, SDL_keycode.h, SDL_scancode.h三个文件来对按键进行操作。
三个枚举类型 这三个枚举类型在事件处理里面已经见过了:
- SDL_Keycode:按键码
- SDL_Keymod:附加按键(Shift,Alt,Ctrl之类的)
- SDL_Scancode:按键码
一个结构体 这个结构体也是记录按键键码的: SDL_Keysym 其实这个结构体里面只是封装了SDL_Keycode,SDL_Keymod,SDL_Scancode三个枚举类型。
Scancode,Keycode和按键名称之间的转化 其他两个到Scancode
|
|
其他两个到Keycode
|
|
其他两个到按键名称
|
|
也就是说存在下面的关系:
graph TD
A(Scancode) -->|SDL_GetKeyFromScancode| B(Keycode)
B -->|SDL_GetScancodeFromKey| A
B -->|SDL_GetKeyName| C(Key Name)
A --> |SDL_GetScancodeName| C
C --> |SDL_GetScancodeFromName| A
C --> |SDL_GetKeyFromName| B
获得/设置Keymod
|
|
获取键盘状态 获得焦点窗口
|
|
获得键盘按键
|
|
这个函数返回一个Uint8的数组。这个数组里面装载着对应Scancode的按键。如果为1代表按下了,比如检测w是否按下:
|
|
传入的参数numkeys代表要获得多少个按键的状态。如果为NULL的话就是全部按键。
其他函数 屏幕的虚拟键盘开启了吗
|
|
系统支持虚拟键盘吗
|
|