Оконная подсистема

Настройка оконной подсистемы и управление маршрутизацией событий ввода.

В данном разделе приводятся сведения по конфигурированию и настройке оконной подсистемы. Настройка и конфигурирование оконной подсистемы непосредственно связаны с модулем screen-winmgr, который транслирует события ввода из менеджера ввода в оконную подсистему. Поэтому настройка оконной подсистемы фактически сводится к настройке и конфигурированию модуля screen-winmgr.

Конфигурация параметров
Устройства ввода
Калибровка
Объединение устройств ввода
Запрет дисплеев для устройств ввода
Настройка различных конфигураций устройств ввода
Установка курсоров

Конфигурация параметров

Оконная подсистема идентифицируют конфигурацию своих параметров через переменную окружения GRAPHICS_ROOT. Она должна указывать на директорию, содержащую конфигурационный файл $GRAPHICS_ROOT/screen.conf. Обычно целевая директория располагается по адресу /usr/lib/graphics/<platform>.

Устройства ввода

Для каждого устройства, которое планируется поддерживать в оконной подсистеме, необходимо описать свою секцию в конфигурационном файле $GRAPHICS_ROOT/screen.conf. Возможные значения имен в данной секции - keyboard, mouse и touch. Нумерация должна начинаться с единицы. Каждая секция конкретного устройства должна содержать путь, который создает devi-hid, запущенный в режиме ресурс-менеджера. Путь имеет вид /dev/devi/<inputname0-9>.

Калибровка

Калибровка touch-дисплея производится с помощью утилиты gf-calib. Для начала следует убедиться, что io-display запущен. Далее необходимо запустить devi-hid в режиме standalone ресурс-менеджера с необходимыми опциями:

/usr/photon/bin/devi-hid -Pr touch

После этого нужно запустить утилиту gf-calib, с параметрами которой можно ознакомиться на соответствующей странице, и следовать указаниям, появляющимся на экране. Например, для запуска gf-calib без курсора с созданием калибровочного файла не по умолчанию, запустите gf-calib со следующими опциями:

gf-calib -D -f /tmp/non-default-calib-file

Для запуска gf-calib с созданием калибровочного файла по умолчанию для touchscreen-устройства 1, запустите gf-calib со следующими опциями:

gf-calib -i 1

Объединение устройств ввода

Оконная подсистема позволяет объединять устройства ввода, заставляя их действовать как одно целое. Данная способность возможна из-за ввода понятия "группа" ( параметр group в $GRAPHICS_ROOT/screen.conf). Нумерация групп начинается с единицы. В единый момент времени на дисплее отображается один курсор активной на данный момент группы ввода. Также технология групп ввода помогает запрещать дисплеи для какой-либо группы.

Таким образом, если вы захотите, например, объединить в одну группу мышь и тачпад, в конфигурационный файл нужно ввести следующее:

begin mouse 1
device = /dev/devi/mouse0
group = 1
end mouse
begin touch 1
device = /dev/devi/touch0
display = 2
group = 1
end touch

Запрет дисплеев для устройств ввода

Добавление групп ввода позволяет запрещать дисплеи для этих групп. По умолчанию все дисплеи разрешены для любых устройств ввода. Запрет дисплея отображает курсор на данном дисплее, но не транслирует в окна события ввода.

Для того, чтобы запретить дисплеи, в конфигурационном файле $GRAPHICS_ROOT/screen.conf следует определить секцию input-group. Нумерация начинается с единицы и непосредственно связана с параметром group устройств ввода. Далее, в секции input-group определяем параметр deny-displays, в котором через запятую перечисляются дисплеи, которые запрещены для данной группы.

Таким образом, чтобы, например, запретить для мыши группы ввода 3 дисплей 5, мы должны внести в конфигурационный файл следующее:

begin input-group 3
deny-displays = 5
end input-group

Настройка различных конфигураций устройств ввода

Пример настройки одиночного touchscreen

Настройка touchscreen-устройств должна начинаться с калибровки. В общих чертах процесс калибровки описан выше, а также на странице справки gf-calib. Пример запуска devi-hid для одиночного touchscreen-устройства:

/usr/photon/bin/devi-hid -Pr touch

В файле $GRAPHICS_ROOT/screen.conf нужно указать адрес устройства и, если это touchscreen-дисплей, номер дисплея:

begin touch 1
device = /dev/devi/touch0
display = 1
group = 1
end touch


Caution: Если $GRAPHICS_ROOT/screen.conf был изменен, следует перезапустить screen-winmgr, чтобы изменения вступили в силу.

Калибровка, как было сказано выше, осуществляется с помощью утилиты gf-calib. На выходе данная утилита возвращает стандартизированный файл калибровки, идентичный по формату файлу утилиты calib. Пример выполнения калибровки для touchscreen-дисплея с отключенным курсором:

gf-calib -D

После успешной калибровки следует перезапустить devi-hid. Для одиночного touchscreen-дисплея нет необходимости указывать номер устройства и калибровочный файл, если только он не отличается от калибровочного файла по умолчанию. Пример перезапуска для одиночного touchscreen-дисплея:

slay -f devi-hid
/usr/photon/bin/devi-hid -Pr touch

Пример настройки двух разноформатных touchscreen

Процесс калибровки в данном примере будет несколько отличаться от одиночного touchscreen-устройства. Для нескольких touchscreen-устройств должно быть запущено соответствующее количество экземпляров devi-hid в режиме standalone ресурс-менеджер (опции -Pr). Если этого не сделать, то события нажатия ото всех устройств будут адресовываться первому устройству.

Для запуска нескольких экземпляров devi-hid следует указать номер устройства ввода с помощью опции -u номер_устройства. Параметр номер_устройства можно получить с помощью утилиты hidview с опцией -a, последующего касания touch-устройства и анализа вывода утилиты.


Caution: Фактическая нумерация устройств может не совпадать с нумерацией их подключения. Убедитесь, что номер устройства указан верно.

Пример запуска devi-hid для двух touchscreen-устройств:

/usr/photon/bin/devi-hid -Pr touch -u 0
/usr/photon/bin/devi-hid -Pr touch -u 1

В файле $GRAPHICS_ROOT/screen.conf также должен быть указан верный порядок дисплеев для избежания их инверсии. Верный порядок выясняется опытным путем:

begin touch 1
device = /dev/devi/touch1
display = 1
group = 1
end touch
begin touch 2
device = /dev/devi/touch0
display = 2
group = 1
end touch


Caution: Если $GRAPHICS_ROOT/screen.conf был изменен, следует перезапустить screen-winmgr, чтобы изменения вступили в силу.

Если Вы калибруете дисплеи разного разрешения и размеров tocuhscreen-матрицы, укажите при начале калибровки имя выходного калибровочного файла для каждого touchscreen-устройства, а также номер этого устройства (можно получить с помощью утилиты hidview). Пример выполнения калибровки для двух touchscreen-дисплеев:

gf-calib -i 0 -f /etc/system/config/calib.first
gf-calib -i 1 -f /etc/system/config/calib.sec

После успешной калибровки следует перезапустить devi-hid для каждого дисплея, указав в качестве параметра полученные калибровочные файлы. Пример перезапуска для двух touchscreen-дисплеев:

slay -f devi-hid
/usr/photon/bin/devi-hid -Pr touch -u 0 abs -f /etc/system/config/calib.first
/usr/photon/bin/devi-hid -Pr touch -u 1 abs -f /etc/system/config/calib.sec

Установка курсоров


Note: В среде с запущенным Photon'ом курсор Photon'а можно отключить, добавив в файл /etc/system/config/display.conf следующую строку для интересующего дисплея:

cursor=none


Для каждой группы ввода можно установить свой набор курсоров. Также можно установить стандратный набор курсоров, который будет использоваться для всех групп ввода, в которых данный набор не переопределен.

Для того, чтобы установить набор курсоров, в конфигурационном файле $GRAPHICS_ROOT/screen.conf следует определить секцию cursors. Набор курсоров по умолчанию и путь к ним опредляется значением параметра config_path, конфигурационный файл по умолчанию определяется значением standard ( /usr/share/screen/cursors.kfc). Для отключения курсоров установите значение параметра config_path в none. Для конкретной группы ввода путь к набору курсоров определяется параметром group<1-9>.

В следующем фрагменте конфигурационного файла объявлен набор курсоров по умолчанию, расположенный по стандартному пути, а также набор курсоров для группы ввода 1:

begin cursors
config_path = standard
group1 = /usr/share/screen/group.kfc
end cursors




Предыдущий раздел: Руководство пользователя