Подмена событий клавиатуры в Linux?

После нескольких бесплодных попыток, всё-таки напишу в Q&A.


ПРЕДЫСТОРИЯ


Хочу упростить себе работу с клавиатурой под Linux (в Windows это решается с помощью AutoHotKey):

— CapsLock + HJKL — стрелки (плюс ещё пара комбинаций);

— голый CapsLock — переключение раскладки;

— Shift +CapsLock — настоящий капс.


Первая попытка: раскладка для xkb (на капс вешается Level3Switch). Голый капс вообще невозможен. Кроме того, ничего почему-то не работает в Java-приложениях и некоторых других программах (Monodevelop). В общем, неудача.


Вторая попытка: демон, грабящий капс и щлющий XTestFakeKeyEvent, отпуская клавиатуру на время отправки события. Уже лучше, но теперь глючит в лисе (от нажатия CapsLock'а до его отпускания, теряется фокус: курсор видно от случая к случаю, выделение не видно вообще). К тому же, не удалось заставить работать авторепит (а для стрелок он практически необходим).


СОБСТВЕННО, ВОПРОС


Пришёл к выводу, что нужен демон (может быть даже модуль ядра, не знаю), который полностью заберёт себе /dev/input/event0 и отдаст системе что-нибудь другое. Как сграбить устройство и читать события, вроде нашёл тут. Осталось выяснить, как программно создать устройство, которое подхватится системой как клавиатура?


Буду благодарен за любые ссылки/советы, как эту затею реализовать.

Никогда не писал системных вещей, и самостоятельно нарыть в интернете этого не смог, извините :)
  • Вопрос задан
  • 3311 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Eddy_Em
Может быть вам поможет xdotool + xbindkeys?
Ответ написан
darkdimius
@darkdimius
— голый CapsLock — переключение раскладки;
— Shift +CapsLock — настоящий капс.

setxkbmap -layout «us,ru(winkeys)» -option «grp:caps_toggle,grp_led:caps»
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы