我正在尝试在 GUI 窗口上捕获用户按键 Ctrl+d 以退出。我的代码如下所示:
static gboolean
callback(GtkWidget *widget,
GdkEventKey *event,
gpointer data)
{
if(event->state == GDK_CONTROL_MASK && event->keyval == 'd')
gtk_main_quit();
return FASLE;
}
这适用于我的笔记本电脑(Ubuntu 11.04、gcc 4.5.2、libgtk 2.24.4)。但是当我在较新的系统(Ubuntu 12.10、gcc 4.7.2、libgtk 2.24.13)上做同样的事情时,它就不起作用了。
我在声明g_print("%u\n", event->state);
之前添加if
,它表明当我按 时Ctrl
,event->state
文档中的 20 而不是 4 或 1 << 2。如果我将其更改GDK_CONTROL_MASK
为 20,它适用于较新的系统,但不适用于旧系统。有人请告诉我为什么会发生这种情况以及如何解决它。