Gtk модификаторы нажатия клавиш - PullRequest
0 голосов
/ 10 октября 2011

Я пытаюсь проверить, нажата ли клавиша управления, но не могу.Согласно документации, я пытаюсь это сделать:

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;
}

Сигналы поднимаются и проходят правильно, но логика не проходит условие «если».Я хотел бы знать почему, поэтому, пожалуйста, помогите.

1 Ответ

0 голосов
/ 12 октября 2011

Чтобы проверить, нажата ли Ctrl сама по себе, необходимо проверить код клавиши нажатой клавиши. Вы должны быть в состоянии проверить поле события keyval и проверить наличие GDK_KEY_Control_L или GDK_KEY_Control_R. Вы также можете проверить поле hardware_keycode, но я не знаю, переносимо ли оно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...