Tag: 键盘快捷键

GDK信号,按键和按键掩码

我试图抓住用户键在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,它适用于较新的系统,但不适用于较旧的系统。 有人请告诉我为什么会发生这种情况以及如何解决这个问题。