如何在GTK + 3中处理键盘事件?

时间:2017-05-21 14:33:47

标签: c gtk3 keyboard-events

我应该使用哪些信号/功能在GTK + 3中输入键盘?

我环顾四周,我所知道的唯一涵盖GTK + 3(zetcodegnome developer)的教程似乎并没有涵盖这一点。

任何人都可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

感谢xing的建议,这真的很有帮助。我迷路了,因此我的问题可能过于笼统,无法摆脱C社区部分传统的贬低。我将在这里总结一下如何处理GTK3中的键盘事件,我希望这些事件很有用,因为我无法在其他任何地方找到它。

想象一下,您正在使用GTK + 3,并且您希望应用程序在按空格键时执行某些操作。你就是这样做的:

首先启用 Gdk.Window #GDK_KEY_PRESS_MASK 掩码:

gtk_widget_add_events(window, GDK_KEY_PRESS_MASK);

- 然后使用 keyboard_press() 功能连接窗口:

g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (my_keypress_function), NULL);

- 按空格键后,将 keyboard_press() 定义为某些内容:

gboolean my_keypress_function (GtkWidget *widget, GdkEventKey *event, gpointer data) {
    if (event->keyval == GDK_KEY_space){
        printf("SPACE KEY PRESSED!")
        return TRUE;
    }
    return FALSE;
}

答案 1 :(得分:2)

它' S g_signal_connect(G_OBJECT(window)," key_press_event",G_CALLBACK(on_key_press),NULL);