#c #gtk #glib #gobject #clutter
#c #gtk #glib #gobject #беспорядок
Вопрос:
Мне нужно создать вертикальное меню, используя clutter на C. Кто-нибудь может мне помочь, как реализовать сдвиг фокуса с помощью клавиш навигации для меню, где я хочу выделить пункт меню с фокусом.
Ответ №1:
самый простой способ — пометить субъекта, который содержит все пункты меню, как реагирующий, назначить ему фокус с помощью клавиши clutter_actor_grab_key_focus()
и подключиться к key-press-event
сигналу. затем вы можете использовать clutter_event_get_key_symbol()
ClutterEvent
переданный сигнал и сопоставить его с ключевыми символами, такими как CLUTTER_KEY_Down
или CLUTTER_KEY_Up
.
тогда есть даже возможность использовать 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