/ Published in: C
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
/*! * \brief GTK Program to get information about key pressed * \author Fabien Arcellier * * To compil with GTK : gcc -Wall `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o key_tool -g key_tool.c */ #include <gtk/gtk.h> static void destroy (GtkWidget*, gpointer); static gboolean key_press_event (GtkWidget*, GdkEventKey*, gpointer); int main(int argc, char *argv[]) { GtkWidget *window = NULL, *label= NULL; gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Key Pressed tool"); gtk_container_set_border_width (GTK_CONTAINER (window), 10); gtk_widget_set_size_request (window, 300, 300); gtk_window_set_resizable (GTK_WINDOW (window), FALSE); label = gtk_label_new ("Press a key"); gtk_label_set_selectable (GTK_LABEL (label), TRUE); gtk_container_add (GTK_CONTAINER (window), label); gtk_widget_show_all (window); g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (key_press_event), NULL); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); gtk_main(); return 0; } /*! * \brief Close application */ static void destroy (GtkWidget *window, gpointer data) { gtk_main_quit(); } /*! * \brief Display information about key pressed in label */ static gboolean key_press_event(GtkWidget *window, GdkEventKey *event, gpointer data) { char key_event_info[1024] = ""; char *event_string = NULL; GtkWidget *label = NULL; if (event -> string != NULL) { event_string = event -> string; } else { *event_string = '\0'; } send_event : %d\n \ time : %d \n \ state : %d \n \ keyval : %d \n \ length : %d \n \ string : %s \n \ hardware_keycode : %d \n \ group : %d \n \ is_modifier %d", event -> send_event, event -> state, event -> keyval, event -> length, event_string, event -> hardware_keycode, event -> group, event -> is_modifier ); label = gtk_bin_get_child (GTK_BIN (window)); gtk_label_set_text (GTK_LABEL (label), key_event_info); return TRUE; }