/ 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;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                