Как udev отправляет уведомление об изменении устройства ввода в Xorg?
Я хочу выяснить, почему графические таблицы активны, только если они подключены при запуске Xorg (и перестает работать со спамом Xorg.0.log
если я его снова подключу).
Насколько я знаю, работы Xorg по горячему подключению, основанные на udev, каким-то образом остаются связанными с udev после запуска.
- Где детали этого? Какой механизм связи Xorg с udev? Прямое сокетное соединение? D-Bus?
- Какие сообщения искать в журналах udev или Xorg на предмет отсутствия связи между udev и Xorg?
- Как вручную запустить повторное перечисление Xorg устройств ввода?
1 ответ
Он использует механизмы, представленные libudev.
Копаясь в исходном коде Xorg, мы видим в udev.c, что он вызывает udev_monitor_new_from_netlink
,
Затем, изучая исходный код udev, мы видим в libudev-monitor.c, что эта функция в конечном итоге создает сокет netlink.
Я не знаю простого способа "понюхать" сокеты netlink; но, возможно, в udev есть пример кода, который вы можете скомпилировать и запустить, чтобы подписаться на один и тот же источник событий и отобразить подробную информацию.
В вашей ситуации я бы попробовал это:
- я могу отключить / повторно подключить другие устройства ввода? (например, любая USB-мышь или клавиатура)
- что я вижу в логах udev при отключении / повторном подключении планшета?
И, кстати, какие сообщения спамятся в журналах Х?