2017-03-07 2 views
1

gtkを使用して、Cで小さなグラフィカルプログラムを作成しています。既存のGTKアプリケーションを削除せずにキーをバインドします。

私はESCAPボタンを押したときに私は、キーボードショートカットを作成するために、アプリケーションの終了を管理:

gboolean on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data){ 
    switch(event->keyval){ 
     case GDK_Escape: 
      gtk_main_quit(); 
      break; 
    } 
    return TRUE; 
} 

私はGUIを作成するときに、私はキーの押下を検出するために、このコードを持っている:

g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK(on_key_press), pCtxt); 

問題は、TABキーを使用してボタンを選択する、またはgtk_entryにテキストを入力するなど、あらゆる種類の対話を無効にすることです。

keypressイベントのデフォルトの動作を破棄することなく、キーボードショートカットを使用するにはどうすればよいですか?

+1

あなたは私の全質問を読まなかった。 「キー押下イベントのデフォルト動作を破棄することなく、キーボードショートカットを使用するにはどうしたらよいですか?」 – user96649

答えて

1

イベントハンドラreturn FALSE;にイベントをさらに伝播させます。 documentationが言うように:

戻るTRUEは、イベントのために呼び出されてから、他のハンドラを停止します。 FALSEイベントをさらに伝搬させます。

+0

これで修正されました。ありがとうございます ! – user96649

関連する問題