Обработка ввода и вывода

X сервер направляет ввод клиенты посредством событий ввода, ассоциированных с окном. В простейшем случае, когда происходят события клавиатуры или указателя, X сервер посылает событие клиенту который явно выражает интерес в событиях этого типа в окне которое содержит указатель. Тем не менее, процесс обработки бывает и более сложным. Клиент может захватить кнопку указателя или клавишу клавиатуры, указатель или клавиатуру, или целиком сервер; клиент при этом принимает соответствующие события. Клиет может установить фокус ввода на некоторое окно, и X сервер затем передает события этому окну даже если указатель находится за пределами этого окна.

Для изоляции приложения от этих сложностей, Xt и Motif содержат средства для низкоуровневой обработки ввода пользователя в приложение:

Большинство приложений используют эти высокоуровневые интерфейсы, пременяя Xt и Motif для обработки ввода пользователя на низком уровне. Если приложение нуждается в большем контроле, оно может предоставить свой собственный обработчик событий, подпрограмму вызываемую из цикла диспетчеризации Xt когда виджет принимает событие указанного типа. Приложение также может предоставить собственный цикл диспетчеризации событий.

Вопросы ввода, фокуса и клавиатурной навигации обсуждаются более подробно в Главе 13.

Для большинства виджетов Xt и Motif самостоятельно производят обработку вывода. Например, в виджетах Label или Text, когда приложение изменяет отображаемый тектс, Motif автоматически перерисовывает содержимое виджета. Большинство виджетов имеют ресурсы которые управляют внешним видом вывода, таким как шрифт используемый при отображении текста.

Motif предоставляет виджет DrawingArea для приложений которые нуждаются в проведении графического вывода или большем контроле или гибкости при отображении текста. DrawingArea обсуждается более подробно в Главе 15.