我试图找到一种方法来找出在 C 中按下了哪个键。这将在一个图形环境中,用 GTK2 编写,但我认为答案不存在。我想我也许可以使用 Xlib 来做到这一点,但我还没有找到任何结论性的东西。
有人对如何做到这一点有任何建议吗?
我设法使用以下代码捕获按键:
GtkWidget *window;
void gtk_widget_set_events(window,GDK_KEY_RELEASE_MASK);
g_signal_connect(window,"key_release_event",G_CALLBACK(hello),NULL);
但是,我想确定按下了哪个键。从 Aditya Kumar 发布的链接中,我知道答案在于使用 GdkEventKey,因为它是一个具有 keyval 字段的结构,但我似乎无法正确使用语法。获取此号码的正确方法是什么?
这是我尝试过的一种方法:
static void hello( GtkWidget *widget,
guint data ){
g_print ("Hello World, %d was pressed\n",data);}
当我捕捉到 key_release_event 时,我尝试通过这样做来提供“数据”:
g_signal_connect(window,"key_release_event",G_CALLBACK(hello),GdkEventKey.keyval);
但是,我收到如下编译器错误:
hello.c:85:5: error: expected ‘)’ before ‘.’ token
hello.c:85:5: error: expected expression before ‘,’ token