Два монитора + две клавы + HAL

Добрый день.

Есть система с двухголовым geforce, на TV-выходе которого висит телевизор. Есть две клавиатуры (вернее вторая - это не клавиатура, а ПДУ, который видится ядром как hid_samsung, кнопки эмулируют нажатия клавиш, в /dev/input отдельное устройство).

И есть желание на телевизоре держать постоянно запущенным freevo и управлять им с со второй клавиатуры-пульта.

Как я понимаю можно реализовать такое как multiseat, но тогда придется отключить HAL, ибо нужно будет настраивать клавиатуру в xorg.conf.

Может кто-нибудь более изящное решение предложит?
lavelas
Как я понимаю можно реализовать такое как multiseat, но тогда придется отключить HAL, ибо нужно будет настраивать клавиатуру в xorg.conf.

Может кто-нибудь более изящное решение предложит?
ИМХО, все настройки клавиатуры, которые можно сделать через xorg.conf, можно сделать и через hal.
Тогда может подскажите как в HAL повторить вот такую настройку:

   Section "ServerLayout"
           Identifier "Seat0"
           Screen "Screen0" 0 0
           InputDevice "Keyboard0" "CoreKeyboard"
           InputDevice "Mouse0" "CorePointer"
   EndSection
   Section "ServerLayout"
           Identifier "Seat1"
           Screen "Screen1"
           Screen "TV" RightOf "Screen1"
           InputDevice "Keyboard1" "CoreKeyboard"
           InputDevice "Mouse1" "CorePointer"
   EndSection
Это, видимо, через hal не настраивается. Правда, к настройке непосредствено клавиатуры эти строчки тоже отношения не имеют ;)

Слазив в Гугл, пришел к выводу, что mdm + Xephyr с input hotplug'ом пока не очень дружат.
А вот наверное ответ на мой вопрос:

X has the concept of core devices. There is exactly one core pointer and exactly one core keyboard. Before input-hotplug support, the X server would just take the first mouse and first keyboard specified in the configuration. Now there is a virtual core pointer and a virtual core keyboard. This allows X to be started with no physical devices.

All other devices, even when configured to send core events, are extension devices and treated differently. Each time a driver passes data to X, an extension event is generated. When this event is put into the event queue, the original device will be put into the EQ as well. All along the event processing the server will take into account the device the event came from. A core event on the other hand will - no matter which physical device it comes from - always appear to originate from the respective core device. GetPointerEvents() and GetKeyboardEvents() are responsible for generating xEvents from driver data. No core event will ever come from one of your other devices, they will all come from the virtual core pointer/keyboard. To the client this doesn't matter. Inside the server this is a important thing to know, as it affects grabs and other things.

В двух словах по-русски: Для иксов может быть только одна клавиатура и мышь. До поддержки input-hotplug X-сервер брал первую клаву и мышь, указанную в конфигурации. Теперь он использует виртуальную клавиатуру и мышь к которой подключаются реальные физические устройства.
 
Зарегистрироваться или войдите чтобы оставить сообщение.