Настройка оконной подсистемы и управление маршрутизацией событий ввода.
В данном разделе приводятся сведения по конфигурированию и настройке оконной подсистемы. Настройка и конфигурирование оконной подсистемы непосредственно связаны с модулем 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 1device = /dev/devi/mouse0group = 1end mousebegin touch 1device = /dev/devi/touch0display = 2group = 1end touch
Добавление групп ввода позволяет запрещать дисплеи для этих групп. По умолчанию все дисплеи разрешены для любых устройств ввода. Запрет дисплея отображает курсор на данном дисплее, но не транслирует в окна события ввода.
Для того, чтобы запретить дисплеи, в конфигурационном файле $GRAPHICS_ROOT/screen.conf следует определить секцию input-group. Нумерация начинается с единицы и непосредственно связана с параметром group устройств ввода. Далее, в секции input-group определяем параметр deny-displays, в котором через запятую перечисляются дисплеи, которые запрещены для данной группы.
Таким образом, чтобы, например, запретить для мыши группы ввода 3 дисплей 5, мы должны внести в конфигурационный файл следующее:
begin input-group 3deny-displays = 5end input-group
Пример настройки одиночного touchscreen
Настройка touchscreen-устройств должна начинаться с калибровки. В общих чертах процесс калибровки описан выше, а также на странице справки gf-calib. Пример запуска devi-hid для одиночного touchscreen-устройства:
/usr/photon/bin/devi-hid -Pr touch
В файле $GRAPHICS_ROOT/screen.conf нужно указать адрес устройства и, если это touchscreen-дисплей, номер дисплея:
begin touch 1device = /dev/devi/touch0display = 1group = 1end touch
![]() | Если $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-устройства и анализа вывода утилиты.
![]() | Фактическая нумерация устройств может не совпадать с нумерацией их подключения. Убедитесь, что номер устройства указан верно. |
Пример запуска 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 1device = /dev/devi/touch1display = 1group = 1end touchbegin touch 2device = /dev/devi/touch0display = 2group = 1end touch
![]() | Если $GRAPHICS_ROOT/screen.conf был изменен, следует перезапустить screen-winmgr, чтобы изменения вступили в силу. |
Если Вы калибруете дисплеи разного разрешения и размеров tocuhscreen-матрицы, укажите при начале калибровки имя выходного калибровочного файла для каждого touchscreen-устройства, а также номер этого устройства (можно получить с помощью утилиты hidview). Пример выполнения калибровки для двух touchscreen-дисплеев:
gf-calib -i 0 -f /etc/system/config/calib.firstgf-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
![]() | В среде с запущенным Photon'ом курсор Photon'а можно отключить, добавив в файл /etc/system/config/display.conf следующую строку для интересующего дисплея:
|
Для каждой группы ввода можно установить свой набор курсоров. Также можно установить стандратный набор курсоров, который будет использоваться для всех групп ввода, в которых данный набор не переопределен.
Для того, чтобы установить набор курсоров, в конфигурационном файле $GRAPHICS_ROOT/screen.conf следует определить секцию cursors. Набор курсоров по умолчанию и путь к ним опредляется значением параметра config_path, конфигурационный файл по умолчанию определяется значением standard
( /usr/share/screen/cursors.kfc). Для отключения курсоров установите значение параметра config_path в none
. Для конкретной группы ввода путь к набору курсоров определяется параметром group<1-9>.
В следующем фрагменте конфигурационного файла объявлен набор курсоров по умолчанию, расположенный по стандартному пути, а также набор курсоров для группы ввода 1:
begin cursorsconfig_path = standardgroup1 = /usr/share/screen/group.kfcend cursors
Предыдущий раздел: Руководство пользователя