当从X11收到KeyPress
或KeyRelease
事件时,如何将结果转换为映射到物理键0到9和A到Z的虚拟代码,与键盘布局无关并且不受任何修改键的影响?
我试过这个:
XLookupString((XKeyEvent *) &ev, buffer, 10, &keysym, &compose);
这给了我一个keysym
,但这不是我想要的,因为只要按下SHIFT,ALT等修改键之一就会改变它。例如,按下" 1"在带有SHIFT的德语键盘上,keysym
将为33,对应于!
个字符。我希望得到的信息是" 1"但是,已经被压了。
我还试图查看keycode
的{{1}}成员,但这也没有帮助,因为它似乎是一个原始的扫描码,这在这里没有用,因为它会映射用不同语言的不同键。
那么,即使SHIFT,ALT等修改键也出现故障,如何找到已按下的键呢?
答案 0 :(得分:0)
要回答我自己的问题:将XKeycodeToKeysym()
参数设置为0,index
允许我获取原始密钥而不需要修改XKeyEvent
中的任何修饰符。