Gtk按键修饰符

时间:2011-10-10 17:28:37

标签: gtk

我尝试检查是否按下了控制键,但我不能。 根据文档我试试这个:

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”条件。 我想知道原因,所以请帮忙。

1 个答案:

答案 0 :(得分:0)

要检查 Ctrl 是否只是按下它,您需要检查按下的键的键代码。您应该能够检查事件的keyval字段并检查GDK_KEY_Control_LGDK_KEY_Control_R。您也可以查看hardware_keycode字段,但我不知道这是否可移植。