Spec-Zone.ru › GTK 4.0

Обзор обработки ввода и событий в GTK

Устройства и события
Распространение событий
Ввод с клавиатуры
Контроллеры событий и жесты
Состояния жестов

В этой главе подробно описывается, как GTK обрабатывает ввод. Если вас интересует, что происходит при преобразовании нажатия клавиши или движения мыши пользователем в изменение виджета GTK, вам следует прочитать эту главу. Эти знания также будут полезны, если вы решите реализовать свои собственные виджеты.

Наиболее распространёнными устройствами ввода, с которыми каждый пользователь компьютера взаимодействует, являются клавиатура и мышь; помимо них, GTK поддерживает тачпады, сенсорные экраны и более экзотические устройства ввода, такие как графические планшеты. Внутри GTK каждое такое устройство ввода представлено объектом GdkDevice.

Для упрощения работы с вариативностью между этими устройствами ввода GTK имеет концепцию логических и физических устройств. Конкретные физические устройства, имеющие множество различных характеристик (мыши могут иметь 2, 3 или 8 кнопок, клавиатуры имеют разные раскладки и могут или не могут иметь отдельную цифровую клаву и т. д.), представлены как физические устройства. Каждое физическое устройство ассоциировано с виртуальным логическим устройством. Логические устройства всегда представляют собой пары указатель/клавиатура — вы можете представить такую пару как «место».

Виджеты GTK, как правило, работают с логическими устройствами и, таким образом, могут использоваться с любым устройством указания или клавиатурой.

Когда пользователь взаимодействует с устройством ввода (например, перемещает мышь или нажимает клавишу на клавиатуре), GTK получает события от системы окон. Как правило, они направлены на определённую поверхность — для событий указателя, поверхность под указателем (захваты усложняют это), для событий клавиатуры, поверхность с фокусом клавиатуры.

GDK преобразует эти исходные события системы окон в GdkEvents. Типичными событиями ввода являются щелчки кнопок, движение указателя, нажатия клавиш или события касания. Все они представлены как GdkEvents, но вы можете различать различные события, посмотрев их тип, используя gdk_event_get_event_type().

Некоторые события, такие как события касания или пары нажатия-отпускания кнопки, связаны друг с другом в «последовательности событий», которая однозначно идентифицирует события, относящиеся к одному взаимодействию.

Когда GTK создаёт GdkSurface, он подключается к сигналу «событие» на нём, который получает все эти события ввода. Поверхности имеют сигналы и свойства, например, для обработки событий, связанных с управлением окнами.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/input-overview.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API