Мне нужно создать вертикальное меню, используя беспорядок на C. Может кто-нибудь помочь мне, как реализовать сдвиг фокуса, используя клавиши навигации для меню, где я хочу выделить пункт меню с фокусом.
Самый простой способ - отметить актера, который содержит все пункты меню, как реактивные, назначить ему фокус с помощью clutter_actor_grab_key_focus() и подключиться к сигналу key-press-event.затем вы можете использовать clutter_event_get_key_symbol() на ClutterEvent, передаваемом сигналу, и сопоставлять его с символами клавиш, такими как CLUTTER_KEY_Down или CLUTTER_KEY_Up.
clutter_actor_grab_key_focus()
key-press-event
clutter_event_get_key_symbol()
ClutterEvent
CLUTTER_KEY_Down
CLUTTER_KEY_Up
, тогда даже есть возможность использовать ClutterBindingPool для обработки кортежейof (символ ключа, модификатор) и назначьте их определенной функции обратного вызова.
ClutterBindingPool
для получения дополнительной информации см. справку API:
http://developer.gnome.org/clutter/stable/ClutterActor.html#clutter-actor-grab-key-focus http://developer.gnome.org/clutter/stable/ClutterActor.html#ClutterActor-key-press-event http://developer.gnome.org/clutter/stable/clutter-Events.html#clutter-event-get-key-symbol http://developer.gnome.org/clutter/stable/clutter-Key-Bindings.html
список ключевых символов в заголовке clutter-keysyms.h:
http://git.gnome.org/browse/clutter/tree/clutter/clutter-keysyms.h
ВКулинарная книга, а также:
https://developer.gnome.org/clutter-cookbook/stable/events-handling-key-events.html