Linux-демон для изменения пользовательского потока ввода? - PullRequest
2 голосов
/ 25 апреля 2011

Я хотел бы написать программу для переназначения пользовательского ввода для таких вещей, как изменение раскладки клавиатуры, но также и для более сложных вещей, таких как создание сокращенной программы (например, вывод «t qk fx jmps o lr dz» как «quick fox»). перепрыгивает через ленивую собаку "). Я бы предпочел сделать это на уровне Х или ниже.

Могу ли я создать виртуальную клавиатуру, основанную на реальных пользовательских данных? В идеале я бы хотел какой-то простой интерфейс (то есть стандартный ввод в программу - это серия реальных событий пользовательского ввода, вывод - это события пользовательского ввода для виртуальной клавиатуры), но если это невозможно, меня все равно заинтересует указатели на то, как это можно сделать. Я сейчас ничего не знаю об аппаратных устройствах Linux, низкоуровневых X-компонентах или ядре; на самом деле я довольно новичок в Linux. Ссылки на учебники по основам не будут недооценены.

1 Ответ

2 голосов
/ 27 апреля 2011

Для этого можно использовать подсистему событий Linux:

  • Используйте интерфейс событий ввода Linux (evdev) для получения событий от любого устройства ввода. См. Также заголовочный файл input.h для получения дополнительной информации о действующем API.

  • Используйте EVIOCGRAB ioctl для захвата устройства клавиатуры, чтобы никакие другие приложения пользовательского пространства, кроме вашего демона, не получали никаких событий ввода.

  • Используйте интерфейс uinput для создания новой виртуальной клавиатуры с любыми необходимыми вам функциями. См. Также заголовочный файл uinput.h для получения дополнительной информации об API uinput и this для удобочитаемого пошагового руководства.

В качестве примера можно привести несколько приложений, таких как EvRouter , ESE Key Daemon и мое собственное evmapd .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...