Я пытаюсь найти способ узнать, какая клавиша нажата в 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);
Однако я хотел бы определить, какая клавиша нажата. Из ссылки, опубликованной Адитьей Кумаром, я знаю, что ответ заключается в использовании GdkEventKey, поскольку это структура с полем keyval, но я не могу правильно понять синтаксис. Как правильно получить этот номер?
Это метод, который я пробовал:
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