我尝试检查是否按下了控制键,但我不能。 根据文档我试试这个:
G_MODULE_EXPORT gboolean
KEYPRESS_window1(GtkWidget *window1, GdkEventKey* pKey, gpointer user_data)
{
guint modifiers;
modifiers = gtk_accelerator_get_default_mod_mask();
g_print("modifiers %d\n", modifiers);
g_print("pKey->state %d\n", pKey->state);
if ((pKey->state & modifiers) == GDK_CONTROL_MASK)
{
ctrlpressed = 1;
return TRUE;
}
return FALSE;
}
信号被提升并正确传递但逻辑不通过“if”条件。 我想知道原因,所以请帮忙。
答案 0 :(得分:0)
要检查 Ctrl 是否只是按下它,您需要检查按下的键的键代码。您应该能够检查事件的keyval
字段并检查GDK_KEY_Control_L
或GDK_KEY_Control_R
。您也可以查看hardware_keycode
字段,但我不知道这是否可移植。