2017-03-07 98 views
1

我使用gtk在C中制作一个小型图形程序。将密钥绑定到GTK应用程序,而不删除现有密钥

我成功地创建一个快捷键,当我按下亚太经社会按钮,应用程序退出:

gboolean on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data){ 
    switch(event->keyval){ 
     case GDK_Escape: 
      gtk_main_quit(); 
      break; 
    } 
    return TRUE; 
} 

当我创建GUI,我有这样的代码来检测按键:

g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK(on_key_press), pCtxt); 

问题是,它会禁用任何类型的交互,例如使用TAB键选择按钮,或者甚至将文本输入到gtk_entry中。

如何在不破坏按键事件的默认行为的情况下使用键盘快捷键?

+1

您没有看完我的整个问题。 “我怎样才能有键盘快捷键,而不会破坏按键事件的默认行为?” – user96649

回答

1

让您的事件处理程序return FALSE;进一步传播该事件。由于documentation说:

返回TRUE停止其他处理程序被调用的事件。 FALSE以进一步传播事件。

+0

这解决了它。谢谢 ! – user96649