Собираем
информацию
по крупицам
Новости


Новости

Про глобальный перехват клавиш в X11 (XWindow)
09-06-2016
01:41:12

Дожили. На работе запретили прямой доступ в интернет. Теперь просто так пользоваться интернетом нельзя. По корпоративным требованиям, в интернет можно выходить только через терминальный сервер. А денег на терминалку не дали. У нас постоянно так происходит - выпускают безумные требования, а закупку необходимого ПО производят через год. Что делать? Правильно, поднимать терминалку на Линухе.

 

Подолбавшись немного я выяснил, что самый вменяемый на сегодняшный день терминальный сервер - это x2go. Раньше он был проприетарным, теперь стал полность опенсорсным. И в нем почти все работает.

 

Но есть небольшая проблема, которая для меня весьма критична. Эта проблема - переключение языка на клавиатуре. Я не признаю никакого другого способа переключения раскладки, кроме правой и левой клавиши Shift. Нажимаем левый шифт - включается английская раскладка. Нажимаем правый шифт - включается русская раскладка. Причем, переключение должно происходить в момент отжатия клавиши Shift-а, потому что иначе невозможно набрать большие буквы в текущем языке. Кроме того, нажатие-отжатие Shift-ов должно быть чистым, без нажатия в это время других клавиш. Такого переключения не предоставляла ни одна из существующих переключалок клавиатуры.

 

Точнее, единственная переключалка, которая могла это сделать - это XNeur. Но она глючила неимоверно:

 

https://www.linux.org.ru/forum/desktop/6719991?cid=6724540

 

Да и в 2016 году дела обстоят не лучшим образом:

 

https://www.linux.org.ru/forum/desktop/12651168

 

То есть, небыло никакой возможности работать в Linux так, как удобно. Это меня настолько удручало, что я в какой-то момент решился, и написал свой переключатель клавиатуры LoLo Switcher. Я шел к этой программе 12 лет. Она позволяет настроить переключение раскладки на абсолютно любую комбинацию клавиш. Работает с любым физическим устройством - хоть с клавиатурой, хоть с джойстиком. Если нужно, можно подключить и MIDI-клавиатуру, и переключать РУС/ЛАТ по клавишам Ля и Фа. Вот демонстрация работы этой программы на YouTube:

 

Демонстрация переключения раскладки с помощью LoLo Switcher

 

Такие уникальные возможности доступны благодаря тому, что LoLo Switcher напрямую работает с файлом устройства. И эта же особенность приводит к тому, что мой переключатель не может работать в режиме удаленного X-терминала.

 

Я несколько раз пытался разобраться и найти код, который бы позволял отслеживать все клавиатурные события самого X-сервера. Но максимум, что я находил - это описание примеров, которые работают в одном окне, и не могут глобально отследить события в других окнах. Я заглянул в исходники XNeur (ведь он почти умел глобально отслеживать события клавиатуры), и мне стало страшно. Я понял, почему XNeur работает в одних программах, и не работает в других.

 

И вот теперь, похоже, пришло время таки создать код, который бы позволял глобально отслеживать все клавиатурные события X11. Потому что если я его не напишу, то работать в интернете через линуховый терминал я просто не смогу. И такой код я наконец-то написал. По этому поводу я сделал следующую статью:

 

Как в Linux глобально отловить нажания клавиш в X11 (XWindow)

 

Да, этот код отлавливает все клавиатурные события X11. И если он нормально покажет себя в режиме X-терминала, то я наконец-то смогу сделать из LoLo Switcher полноценный переключатель, работающий не на низком уровне, а на уровне X-сервера.

 

И тогда я смогу нормально работать в интернете через линуховый терминальный сервер.

 



Интересное на сайте


Отладчик GDB » Отладка в gdb: как отловить обращение к переменной или к нужному свойству класса

Недавно мне пришлось отлаживать один крупный проект, который содержал большие куски говнокода. Необходимость в отладке возникла из-за того, что в одно...


Демо, сделанное в генераторе » Xintrea Home Page Demo

Размер: 250 Кбайт Требования: Windows 95/98/XP Год: 2005   Демка для моего старого сайта xi.net.ru. Демка сделана просто щелчками мышки, с ...


Мультиплатформенные игры » Ежик-попрыгунчик. Лесная тропа.

Игра про ёжика, который прыгает по подвижным платформам и собирает яблочки.   Эта игра писалась в рамках конкурса конференции разработчиков игр ...

RSS подписка

Подпишитесь на новости сайта по RSS

Поделиться



О, смотри-ка какое хорошее место. Дайте два!

Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Fadk

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик