通常,扫描码是键盘(硬件)发射到OS的真实值,而键码是OS /库根据所选布局将其映射到的值.布局决定了扫描码与某些虚拟键码之间的映射.它是操作系统设置的一部分.在这里,通过布局,我的意思是功能布局; 还有机械和视觉布局.阅读Wikipedia中有关键盘布局的更多信息.扫描代码和虚拟密钥的概念可以通过MSDN中的说明更好地解释.
但是,SDL使用扫描码来表示不同的东西:美国QWERTY键盘中键的扫描码,其位置与相关位置相同.它是基于设备独立的方式,根据其位置表示密钥.这被隐藏在SDL手册中的一个不寻常的位置:
扫描码意味着与布局无关.将此视为"用户按下Q键,就像在美国QWERTY键盘上一样",无论这实际上是欧洲键盘还是德沃夏克键盘等等.扫描码始终是相同的键位置.
密钥代码是与布局相关的.将此视为"用户按下了特定键盘上标有'Q'的键."
例如,如果您按下美国QWERTY键盘上CAPS LOCK右侧两个键的键,它将报告SDL_SCANCODE_S的扫描码和SDLK_S的键码.Dvorak键盘上的相同键将报告SDL_SCANCODE_S的扫描码和SDLK_O的键码.
在上面的引用中,通过布局,手册表示功能布局.关于键盘的手册的主要部分是关于这个问题的一点简要介绍:
SDL_Scancode值用于表示键盘上键盘按键的物理位置.
SDL_Keycode值映射到键盘的当前布局,并与SDL_Scancode相关联.
使用哪一个留给应用程序:扫描码适用于控件与布局相关的情况(例如"WASD"键作为左手箭头键),而键码更适合控件依赖于字符的情况(例如,库存的"I"键).
在上面的引用中,通过布局,手册意味着机械/物理布局.因此,对于控制角色,例如,使用扫描码更好,而对于接收用户的名称,键码更好.
| 归档时间: |
|
| 查看次数: |
8315 次 |
| 最近记录: |