<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://man.deeptown.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://man.deeptown.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Burzhuy</id>
		<title>Deeptown Manual - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://man.deeptown.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Burzhuy"/>
		<link rel="alternate" type="text/html" href="http://man.deeptown.org/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Burzhuy"/>
		<updated>2026-05-31T10:32:57Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://man.deeptown.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%B4%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0</id>
		<title>Описание подсистемы ввода</title>
		<link rel="alternate" type="text/html" href="http://man.deeptown.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%B4%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0"/>
				<updated>2008-11-06T08:56:38Z</updated>
		
		<summary type="html">&lt;p&gt;Burzhuy: орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Подсистема ввода отвечает за считывание вводимой пользователем информации со всевозможных устройств (клавиатура, мышь, джойстик и пр.) и формирование на их основе событий ввода, которые затем передаются различным модулям. Подсистема предоставляет полную абстракцию от устройств ввода: в модули-обработчики передаются уже готовые события, связанные с конкретными действиями.&lt;br /&gt;
&lt;br /&gt;
== Схема обработки ввода пользователя ==&lt;br /&gt;
&lt;br /&gt;
Обработка пользовательского ввода состоит из следующих этапов.&lt;br /&gt;
&lt;br /&gt;
1. Устройство ввода (клавиатура, мышь и пр.) фиксирует действие пользователя (нажатие кнопки, движение мышью и т.д.) и передает сообщение об этом в движок ввода. В таком сообщении содержится тип события и всевозможные параметры. Например, когда пользователь нажимает кнопку на клавиатуре - передается событие key_press с двумя параметрами: идентификатор нажатой кнопки и unicode-символ, который ей соответствует. Когда пользователь отпускает кнопку - передается событие key_release с теми же параметрами.&lt;br /&gt;
&lt;br /&gt;
2. Движок ввода передает это событие всем активным '''контекстам ввода'''.&lt;br /&gt;
&lt;br /&gt;
Контекст ввода - это таблица преобразования низкоуровневых событий в пользовательские. Контекст ввода определяет правила, по которым события будут передаваться пользователю. Таких контекстов может быть несколько: например, для управления аватаром используется один контекст, а для работы с GUI - другой.&lt;br /&gt;
&lt;br /&gt;
Каждый из контекстов ввода обрабатывает низкоуровневые события независимо. Делает он это при помощи таблицы обработки событий. В этой таблице каждому низкоуровневому событию, удовлетворяющему определенным критериям (или же последовательности таких событий), соответствует вызов одного или нескольких обработчиков ввода.&lt;br /&gt;
&lt;br /&gt;
В качестве критерия могут использоваться различные условия на параметры события. Например, в качестве условия может выступать:&lt;br /&gt;
* нажатие любой клавиши (никакого критерия нет);&lt;br /&gt;
* нажатие любой клавиши при нажатой клавише shift (критерий модификатора);&lt;br /&gt;
* нажатие любой клавиши при отпущенной клавише ctrl (критерий модификатора);&lt;br /&gt;
* нажатие клавиши A (критерий параметра события);&lt;br /&gt;
* нажатие клавиши A при нажатой левой клавиши мыши (смешанный критерий).&lt;br /&gt;
* и т.д.&lt;br /&gt;
&lt;br /&gt;
3. Контекст ввода передает результат обработки события обработчикам ввода. Обработчик - это небольшой модуль, который выполняет с полученным событием какие-либо действия и отправляет результат пользователю.&lt;br /&gt;
&lt;br /&gt;
== Конфигурация ввода ==&lt;br /&gt;
&lt;br /&gt;
Файл конфигурации движка ввода находится по адресу '''/etc/world/input.conf''' в DISS.&lt;br /&gt;
&lt;br /&gt;
Формат этого файла следующий.&lt;br /&gt;
&lt;br /&gt;
Пустые строки и строки, начинающиеся с #, игнорируются.&lt;br /&gt;
&lt;br /&gt;
В начале файла перечислены устройства ввода, которые необходимо подключить. Устройство подключается директивой '''device''', за которой следует URL устройства - его тип и, возможно, какие-то параметры после двоеточия. У стандартных устройств никаких параметров нет. Так, клавиатура и мышь подключается директивами&lt;br /&gt;
&lt;br /&gt;
 device keyboard&lt;br /&gt;
 device mouse&lt;br /&gt;
&lt;br /&gt;
Далее идут описания контекстов.&lt;br /&gt;
&lt;br /&gt;
Описание контекста начинается с директивы '''context''', параметр которой - имя контекста. После этой директивы идет заполнение таблицы ввода директивой '''on'''.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим пример привязки нажатия клавиши A к отправке события объекту:&lt;br /&gt;
&lt;br /&gt;
 device keyboard&lt;br /&gt;
 device mouse&lt;br /&gt;
 &lt;br /&gt;
 context local_control&lt;br /&gt;
 &lt;br /&gt;
 on key_press check(key=A) do send_event:power_on&lt;br /&gt;
&lt;br /&gt;
Контекст '''local_control''' - используется для управления объектом на локальной сцене, т.е. для тестирования.&lt;br /&gt;
&lt;br /&gt;
Директива on создает в этом контексте обработчик события '''key_press''' (нажатие на клавишу клавиатуры) с критерием нажатия клавиши A. После ключевого слова '''do''' следуют URL-ы обработчиков этого события - в данном случае, это обработчик '''send_event''', который отправит событие '''power_on''' объекту, которым управляет пользователь.&lt;/div&gt;</summary>
		<author><name>Burzhuy</name></author>	</entry>

	</feed>