From c269b1fa9eaa247ef2b863367c249b996b4a01be Mon Sep 17 00:00:00 2001 From: Thomas White Date: Mon, 17 Jun 2019 23:45:25 +0200 Subject: Prevent auto-repeat on playback keys --- src/display.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'src/display.c') diff --git a/src/display.c b/src/display.c index 72dfb2b..ed10330 100644 --- a/src/display.c +++ b/src/display.c @@ -472,6 +472,23 @@ static void execute_command(struct nanolight *nl) } +static gboolean key_release_sig(GtkWidget *da, GdkEventKey *event, struct nanolight *nl) +{ + switch ( event->keyval ) { + + case GDK_KEY_KP_Enter : + nl->go_lock = 0; + break; + + case GDK_KEY_KP_Add : + nl->sb_lock = 0; + break; + } + + return FALSE; +} + + static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanolight *nl) { gboolean r; @@ -509,11 +526,17 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanoligh break; case GDK_KEY_KP_Enter : - printf("Go!\n"); + if ( !nl->go_lock ) { + printf("Go!\n"); + nl->go_lock = 1; + } break; case GDK_KEY_KP_Add : - printf("Stop/back!\n"); + if ( !nl->sb_lock ) { + printf("Stop/back!\n"); + nl->sb_lock = 1; + } break; case GDK_KEY_Home : @@ -611,6 +634,7 @@ static gint realise_sig(GtkWidget *da, struct nanolight *nl) gdk_window_set_accept_focus(win, TRUE); g_signal_connect(G_OBJECT(nl->im_context), "commit", G_CALLBACK(im_commit_sig), nl); g_signal_connect(G_OBJECT(da), "key-press-event", G_CALLBACK(key_press_sig), nl); + g_signal_connect(G_OBJECT(da), "key-release-event", G_CALLBACK(key_release_sig), nl); g_signal_connect(G_OBJECT(da), "button-press-event", G_CALLBACK(button_press_sig), nl); g_signal_connect(G_OBJECT(da), "button-release-event", G_CALLBACK(button_release_sig), nl); g_signal_connect(G_OBJECT(da), "motion-notify-event", G_CALLBACK(motion_sig), nl); -- cgit v1.2.3