2010-08-25 30 views
3

我想获得与映射无关的密钥代码,但文档说XKeyEvent结构中的“密钥代码”取决于硬件和驱动程序,我不能依赖它。如何在Windows中获得一些便携式密钥代码,如VK_ *?X11中的便携式键盘代码?

回答

4

你想要的关键syms,而不是关键代码。 见XKeycodeToKeysym()和/usr/include/X11/keysymdef.h

要严格正确的(特别是与国际化),你需要的代码一起的http://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkkeys-x11.c 行一大堆但是,如果你使用的原料Xlib而不是工具包,你可能不关心这种事情(如果你真的在工作多年),而XKeycodeToKeysym()对于美国键盘来说已经足够了。

+1

但是如果用户将键盘布局更改为非美国的东西呢? – 2010-08-25 17:36:04

+0

是的,就是这样。我错误地使用了XLookupString()而不是XKeycodeToKeysym()。 – 2010-08-25 18:26:31

+1

如果你关心国际键盘和语言,那么使用工具包而不是Xlib是唯一理智的事情。我链接到的gtk文件给你的键盘部分,但省去了输入法,相当于GtkAccelGroup(使加速器与国际键盘一起工作),显示/渲染任意Unicode,双向文本编辑等。 我不确定如何简要总结gdkkeys-x11.c ......我的意思是,这并不容易。我实现了该文件的第一个版本,但我不记得它的很多。 Just XKeycodeToKeysym()可能已经足够用于很多目的。 – 2010-08-26 04:24:26