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

How do I handle keyboard events in GTK+3?

我应该使用什么 signals/functions 在 GTK+3 中获取键盘输入?

我环顾四周,我所知道的唯一教程似乎涵盖了 GTK+3 (zetcode and gnome developer)。

谁能给我指出正确的方向?

我将在这里总结一下如何在 GTK3 中处理键盘事件,希望对您有用,因为我在其他地方找不到它。

假设您正在使用 GTK+3,并且您希望应用程序在您按下 space 键时执行某些操作。这就是你的做法:

  • 首先为你的[=27启用#GDK_KEY_PRESS_MASK掩码=]Gdk.Window:

    gtk_widget_add_events(window, GDK_KEY_PRESS_MASK);
    
  • 然后将 window 与 keyboard_press() 函数连接起来:

    g_signal_connect (G_OBJECT (window), "key_press_event",
            G_CALLBACK (my_keypress_function), NULL);
    
  • 定义你的keyboard_press()一旦space 键 已被按下:

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

是 g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (on_key_press), NULL);