#c #linux #keyboard #x11
#c #linux #клавиатура #x11
Вопрос:
Я использую некоторые «удобные для пользователя» программы, которые требуют, чтобы я время от времени вводил длинные последовательности сочетаний клавиш и других символов. Я нашел несколько инструментов, таких как cnee, но ничего, что могло бы помочь мне автоматизировать эти последовательности без затрат времени и усилий. Я просто добавил исходный код в одну из этих программ (Qt), но у другой много зависимостей, поэтому для ее создания потребуется время.
Будучи также заинтересованным в разработке Linux, мне пришла в голову идея написать модифицированную версию драйвера клавиатуры, которая позволяла бы определять и вызывать макросы с помощью одной выделенной клавиши. Помимо автоматизации моих нажатий клавиш, которые могут создавать или не создавать большую бизнес-модель, это также был бы хороший самообучающийся проект для программирования драйверов Linux.
Насколько сложно было бы реализовать простой драйвер клавиатуры под Linux, чтобы среды с графическим интерфейсом, такие как Gnome, понимали это? Можно перестроить ядро или выполнить некоторые команды с правами root для загрузки этого драйвера, когда это необходимо.
В качестве альтернативы это может быть перехват где-то над драйвером, но в целом, чем ниже, тем лучше.
Комментарии:
1. Это должно быть выполнимо путем генерации поддельных событий нажатия клавиш и освобождения клавиш и отправки их в текущее активное окно (GetInputFocus()).
2. Qt framework никогда не был драйвером клавиатуры Linux. Я адаптировал к своим потребностям некоторые приложения Qt, изменив ярлыки в их исходном коде и перестроив их, но не все приложения достаточно легко создавать из исходного кода.
Ответ №1:
Вам не нужно писать весь драйвер. Вам нужен только C uinput
и некоторое время для разработки. Что делать: 0. Поиск узла устройства клавиатуры. вы можете использовать evtest или обнаруживать его динамически. Вы можете пропустить это, если знаете путь к узлу устройства событий клавиатуры (например, /dev/input/event5 ).
open
клавиатура по пути.- захват устройства для предотвращения утечки в Xorg / Wayland compositor
- создайте
uinput
устройство с теми же спецификациями. - Используется
poll
для получения необработанного ввода с клавиатуры и перехватывания событий клавиш.