Создание макросов с помощью Python, взаимодействующего с Libinput

Я использую Fedora 22; и я пытаюсь создать очень простой скрипт макроса клавиатуры с uinput, который будет работать на серверах отображения (и в консоли).

После этого сообщения я понял, как сделайте это успешно в консоли и с помощью evdev;

Однако я также хочу иметь возможность делать это через libinput (для wayland, mir и X11); Кто-нибудь знает, как это можно сделать?


person Cestarian    schedule 16.02.2016    source источник
comment
Переименуйте файл в другое имя, кроме uinput.py, и повторите попытку.   -  person Vincent Savard    schedule 16.02.2016
comment
Также удалите любые uinput.pyc   -  person mechanical_meat    schedule 16.02.2016
comment
@VincentSavard Doh, это так элементарно! Это то, что я получаю за то, что не привык к импорту (в свою защиту я уже давно не касался любого кода, кроме сценариев bash). Я перефразировал вопрос, чтобы он соответствовал моему нынешнему затруднительному положению после того, как я его собрал. Спасибо за вашу помощь и извините за беспорядок.   -  person Cestarian    schedule 16.02.2016


Ответы (1)


Этот вопрос не совсем понятен в его нынешней форме, вы путаете два разных слоя стека.

libinput - это библиотека для обработки событий, поступающих от устройств evdev ядра. Он выполняет такие вещи, как прокрутка двумя пальцами, жесты сенсорной панели, эмуляция колеса мыши и т. Д. Для клавиатур он в значительной степени просто пересылает все, что ему дает ядро ​​(раскладки клавиатуры обрабатываются композитором и клиентом).

uninput - это интерфейс ядра для создания виртуальных устройств, которые затем отображаются как узлы устройств evdev ядра. libinput не заботится о том, является ли устройство физическим или виртуальным устройством uinput (на самом деле, набор тестов libinput интенсивно использует устройства uinput).

Таким образом, устройство, созданное с помощью uinput, находится ниже libinput, любое устройство клавиатуры, созданное с помощью uinput, будет отображаться как клавиатура в композиторе, использующем libinput. Таким образом, любое ключевое событие будет перенаправлено так же, как с обычной клавиатуры.

Теперь вы можете попробовать добавить поддержку макросов в libinput напрямую, но это сделать намного сложнее, и у него практически нет шансов получить апстрим. Для локального варианта использования должно быть достаточно решения на основе uinput.

person whot    schedule 21.02.2016
comment
Я надеялся создать стороннюю макропрограмму, которая обманет libinput, заставив думать, что вводятся с клавиатуры с помощью uinput. Но вы говорите, что вместо этого я могу создать устройство виртуальной клавиатуры с uinput, которое libinput сможет читать? - person Cestarian; 22.02.2016
comment
да, клавиатура, созданная с помощью uinput, будет выглядеть так же, как настоящая клавиатура для libinput - person whot; 22.02.2016
comment
Спасибо, попробую. - person Cestarian; 22.02.2016