Этот вопрос не совсем понятен в его нынешней форме, вы путаете два разных слоя стека.
libinput - это библиотека для обработки событий, поступающих от устройств evdev ядра. Он выполняет такие вещи, как прокрутка двумя пальцами, жесты сенсорной панели, эмуляция колеса мыши и т. Д. Для клавиатур он в значительной степени просто пересылает все, что ему дает ядро (раскладки клавиатуры обрабатываются композитором и клиентом).
uninput - это интерфейс ядра для создания виртуальных устройств, которые затем отображаются как узлы устройств evdev ядра. libinput не заботится о том, является ли устройство физическим или виртуальным устройством uinput (на самом деле, набор тестов libinput интенсивно использует устройства uinput).
Таким образом, устройство, созданное с помощью uinput, находится ниже libinput, любое устройство клавиатуры, созданное с помощью uinput, будет отображаться как клавиатура в композиторе, использующем libinput. Таким образом, любое ключевое событие будет перенаправлено так же, как с обычной клавиатуры.
Теперь вы можете попробовать добавить поддержку макросов в libinput напрямую, но это сделать намного сложнее, и у него практически нет шансов получить апстрим. Для локального варианта использования должно быть достаточно решения на основе uinput.
person
whot
schedule
21.02.2016
uinput.py
, и повторите попытку. - person Vincent Savard   schedule 16.02.2016uinput.pyc
- person mechanical_meat   schedule 16.02.2016