사용자 키를 잡으려고 GUI 창에서 Ctrl + d를 누릅니다. 내 코드는 다음과 같습니다GDK 신호, 키 누르기 및 키 마스크
이 내 노트북에서 작동static gboolean
callback(GtkWidget *widget,
GdkEventKey *event,
gpointer data)
{
if(event->state == GDK_CONTROL_MASK && event->keyval == 'd')
gtk_main_quit();
return FASLE;
}
(우분투 11.04, GCC 4.5.2, libgtk 2.24.4). 그러나 새로운 시스템 (Ubuntu 12.10, gcc 4.7.2, libgtk 2.24.13)에서 동일한 작업을 수행하면 작동하지 않습니다.
는 I는 I가Ctrl
을 누르면
event->state
는 문서 (20) 대신에 4 또는 1 < < 2임을 나타내고 상기
if
문 앞에
g_print("%u\n", event->state);
첨가.
GDK_CONTROL_MASK
을 20으로 변경하면 최신 시스템에서는 작동하지만 이전 시스템에서는 작동하지 않습니다. 누군가 이것이 왜 일어나고 어떻게 해결해야하는지 말해주십시오.
많은 시스템에서 MOD2는 num lock입니다. 그래서 그것을 외면하는 것이 합리적입니다. CONTROL이 설정되어 있는지 확인하는 것만으로 Ctrl + Alt + D, Ctrl + Shift + D 등의 Ctrl + D도 처리 할 수 있습니다. 이는 이상적이지 않습니다. – Mikel