私がやりたかったのは、マウスクリックの「clicked」信号とキープレスの「key_press_event」信号を同じコールバック関数に接続することです。コードは次のように始まりました。
static void s_up(GtkWidget *btn,
gpointer data)
{
code ...
}
...
int main(int argc, char **argv)
{
...
g_signal_connect(button, "clicked", G_CALLBACK(s_up), NULL);
}
マウスクリックをうまく処理しました。次に、キーボードのプレスを追加したいと思いました。だから私はコードを
static void s_up(GtkWidget *btn,
GdkEventKey *event
gpointer data)
{
if(event->keyval == 's')
more code ...
}
...
int main(int argc, char **argv)
{
...
g_signal_connect(button, "key_press_event", G_CALLBACK(s_up), NULL);
}
キーボードで「s」を押すと機能しました。
私の質問は、両方のシグナルを同じs_up
コールバック関数に接続する方法ですか? の明らかな問題以外に、if(event->keyval == 's')
両方を呼び出してみgtk_signal_connect
ましたが、ボタンをクリックすると、SegFault が を指していましたs_up
。「s」を押しても何も起こりませんでした。どんな助けでも大歓迎です。