Pull to refresh

X Neural Switcher — Поваренная книга (Часть 1). Предтечи и аналоги

Reading time 3 min
Views 6.6K
Приветствую.

В этой части цикла статей об xneur я хочу рассказать о программах для GNU/Linux, которые косвенно или явно имеют отношение к переключению раскладки, перехвату событий клавиатуры, записи или логированию нажатий клавиш, а так же скриптам, выполняющим подобные xneur функции.

Речь пойдет о тех программах, которые я знаю, пробовал, и из которых брал те или иные идеи работы с xlib и перехватом клавиатуры в linux.

Сами по себе, эти программы прямого отношения к xneur не имеют, но если вам захочется сделать что-то подобное xneur, то для общего развития ознакомиться с ними и с их кодом стоит (только в том случае, если потеряете исходники xneur).


Предтечи


xev
Является утилитой из пакета x11-utils. Предназначена для показа очереди сообщений X сервера.
При запуске отображает свое окно и показывает все сообщения X сервера, предназначенные этому окну. В прочем, может показывать сообщения X сервера и для других окон по их ID. Перехвата клавиатуры как такового не производит, просто показывает копию очереди сообщений.

xdotool, xvkbd
Программы для отправки приложениям клавиатурных нажатий, текста или щелчков мышью. Обе программы в той или иной степень используют расширение XTEST протокола X11.
xdootool живет тут www.semicomplete.com/projects/xdotool. Программа вообще позволяет очень многое: симулировать клавиатурный ввод, мышь (щелчки и движение), передвижение, изменение размеров, скрытие или показ окон, etc. Рекомендую эту программу для скриптования.

Аналоги


sven
Эта программа (http://sven.linux.kiev.ua/), умершая еще на заре xneur, позволяет настроить дополнительные клавиши на мультимедийной клавиатуре. Это такие клавиши как: «WWW», «E-mail», кнопки регуляции громкости, управления CD-ROM и др. Более того, даже если вы используете обычную клавиатуру, с помощью Sven можно эмулировать мультимедиа-клавиши при помощи клавиатурных сочетаний, например: Ctrl+w — запуск веб-браузера и т.д. Для включения функции конвертации текста надо включить модуль Autoconvert. Замечу, что для этого модуля программа использует ранние наработки xneur (ранние и плохие алгоритмы эвристики).
Про эту программу могу сказать только одно, жаль, что она больше не развивается, я так надеялся, что у xneur будет конкурент. Конкуренция вообще стимулирует развитие.

bash-скрипт конвертирования текста
Доступен тут habrahabr.ru/blogs/shells/120502.Как работает и что внутрях у него — написано по ссылке. Недостатками этого скрипта являются, во первых, полная зависимость от конкретной раскладки — для не qwerty-раскладок скрипт надо переделывать. Во вторых, скрипт выполняет только конвертацию выделенного текста, и все.

Кейлогеры


lkl
По моему, самый старый кейлогер для linux. Гнездится здесь sourceforge.net/projects/lkl.
При работе использует стандартные прерывания, требует прав root. Давным давно не развивается и убран из репозиториев Ubuntu.

logkeys
В каком-то роде преемник lkl. Исходники можно взять тут code.google.com/p/logkeys. В описаниях пакета для Ubuntu про него пишут: «Logkeys аналогичен многим другим доступным программам для записи нажимаемых пользователем клавиш, но он более актуальный, исключает повторные нажатия клавиш и не приводит к сбоям графической системы X. Он опирается на события подсистемы ввода Linux. Однажды установленный, он записывает нажатия всех обычных и функциональных клавиш, также учитывая состояние клавиш-модификаторов Ctrl и AltGr.»
Я пробовал, действительно пишет, но лог весь на латинице, совсем не переводит текст в прочие раскладки. Ну и еще меня смущает, что этой программе надо явно указать с какого устройства в /dev/input ловить события. В общем, что бы его использовать как кейлогер, надо быть уверенным что машина, на которой он запущен, не будет меняться. А так, переткнул usb-клавиатуру в другой порт, и до свидания.

xnee
Программа для записи и воспроизведения действий пользователя для X11.
Когда я ее пробовал, у нее была критическая несовместимость с Xlib, программа падала сразу. Зато в пакет программы входит много всего — консольный интерфейс, графический интерфейс и даже апплет для панели Gnome2. Но не заработала у меня, увы.

Резюмируя


Программ и утилит для работы с клавиатурой в linux масса. И каждая утилита выполняет свою работу отлично. Но при попытке объединения функционала различных утилит для такого простого действия как «перехватить клавишу — обработать нажатие — при необходимости передать нажатие обратно, или не передавать» начинается карусель. Если прибавить сюда необходимость следить не за одним приложением, а за многими, то проблемы еще больше вырастают. Ну и ко всему прочему прибавьте сюда зоопарк графических тулкитов — тут вообще треш. Стоит ли говорить, что еще существует огромное количество дистрибутивов linux со своим зоопарком версий библиотек?

Через пару лет работы над xneur, я уже не удивляюсь отсутствию распространенных вирусов для linux — тут сам черт ногу сломит. Вот поэтому xneur иногда работает странно. И это в большинстве случаев не проблема моих кривых рук.

Предыдущие части серии


X Neural Switcher — Поваренная книга (Часть 0).


Следующие части серии


X Neural Switcher — Поваренная книга (Часть 2). Алгоритмы.
Tags:
Hubs:
+41
Comments 20
Comments Comments 20

Articles