2010-08-25 27 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