I need to catch CTRL+SHIFT+C
and for this I was using the following:
#include <gtk/gtk.h>
GtkWidget *createWindow ( const gint width, const gint height );
gboolean ctrl_plus_shift_plus_C_key_callback ( GtkWidget *widget, GdkEventKey *event );
int main ( void )
{
GtkWidget *window;
gtk_init ( NULL, NULL );
window = createWindow ( 200, 200 );
g_signal_connect_swapped ( window, "key_press_event", G_CALLBACK ( ctrl_plus_shift_plus_C_key_callback ), NULL );
/// ***
gtk_widget_show_all ( window );
gtk_main();
}
GtkWidget *createWindow ( const gint width, const gint height )
{
GtkWidget *window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
gtk_widget_set_events ( window, GDK_KEY_PRESS_MASK );
/// ***
g_signal_connect ( window, "destroy", gtk_main_quit, window );
gtk_widget_set_size_request ( window, width, height );
gtk_container_set_border_width ( GTK_CONTAINER ( window ), 50 );
return window;
}
gboolean ctrl_plus_shift_plus_C_key_callback ( GtkWidget *widget, GdkEventKey *event )
{
( void ) widget;
if ( event->state & ( GDK_CONTROL_MASK | GDK_SHIFT_MASK ) )
{
if ( event->keyval == GDK_KEY_c || event->keyval == GDK_KEY_C )
{
g_print ( "CTRL + SHIFT + C was catched\n" );
}
return FALSE;
}
return TRUE;
}
The program works fine as expected, or at least I was sure about it.
When I press CTRL+SHIFT+C
I get the following Output:
CTRL + SHIFT + C was catched
But this happens also if I press CTRL + C
or SHIFT + C
.
How do I need to handle this so that It works only for CTRL+SHIFT+C
?