GUIウィンドウでユーザーキープレスCtrl + dをキャッチして終了しようとしています。私のコードは次のようになります。
static gboolean
callback(GtkWidget *widget,
GdkEventKey *event,
gpointer data)
{
if(event->state == GDK_CONTROL_MASK && event->keyval == 'd')
gtk_main_quit();
return FASLE;
}
これは私のラップトップ(Ubuntu 11.04、gcc 4.5.2、libgtk 2.24.4)で動作します。しかし、新しいシステム (Ubuntu 12.10、gcc 4.7.2、libgtk 2.24.13) で同じことを行うと、機能しません。
g_print("%u\n", event->state);
ステートメントの前に追加しましif
た。 を押すCtrl
と、event->state
ドキュメントの 4 または 1 << 2 ではなく 20 であることが示されます。を 20に変更するGDK_CONTROL_MASK
と、新しいシステムでは機能しますが、古いシステムでは機能しません。なぜこうなったのか、どうすれば直せるのか誰か教えてください。