将密钥绑定到 GTK 应用程序,而不删除现有的

Bind a key to a GTK application, without removing the existing one

我正在使用 gtk 用 C 编写一个小的图形程序。

我成功地创建了一个键盘快捷键,当我按下 escap 按钮时,应用程序退出:

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 中输入文本。

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

让您的事件处理程序 return FALSE; 进一步传播事件。正如 documentation 所说:

Return TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.