C でどのキーが押されたかを調べる方法を見つけようとしています。これは GTK2 で書かれたグラフィカル環境になりますが、そこに答えがあるとは思いません。Xlib を使用してこれを行うことができると思いますが、これについて決定的なものを見つけることができませんでした。
これを行う方法について何か提案はありますか?
次のコードを使用して、キープレスをキャッチできました。
GtkWidget *window;
void gtk_widget_set_events(window,GDK_KEY_RELEASE_MASK);
g_signal_connect(window,"key_release_event",G_CALLBACK(hello),NULL);
ただし、どのキーが押されているかを特定したいと思います。Aditya Kumar によって投稿されたリンクから、keyval フィールドを持つ構造であるため、答えは GdkEventKey を使用することにあることがわかりますが、構文を正しく取得できないようです。この番号を取得する正しい方法は何ですか?
これは私が試した方法です:
static void hello( GtkWidget *widget,
guint data ){
g_print ("Hello World, %d was pressed\n",data);}
key_release_event をキャッチしたときに、これを実行して「データ」を提供しようとしました。
g_signal_connect(window,"key_release_event",G_CALLBACK(hello),GdkEventKey.keyval);
ただし、次のようなコンパイラ エラーが発生します。
hello.c:85:5: error: expected ‘)’ before ‘.’ token
hello.c:85:5: error: expected expression before ‘,’ token