Собираем
информацию
по крупицам


Новости

Про глобальный перехват клавиш в 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-сервера.

 

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

 



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


Flash-анимация » Клип клуба "Сакура"

Оборудование: Pentium-200MMX, RAM 32Мб Среда: Flash MX Год: 2002   Этот клип я создавал, преследуя две цели.   Первая цель - разобраться с ...


Штучки-дрючки » Самодельный диафильм

Недавно я нашел в чулане диапроектор и коробку с диафильмами, которые много лет назад засунул на самую дальнюю полку. Увидев эти коробки, я тут же всп...


Игры под Windows » Shareholder (Акционер)

Игра, написанная вместе с Сергеем Шпаковым. Разработка застыла на этапе глубокой беты. Шпаков сделал интерфейс и хотсид, я писал искуственный интеллек...

RSS подписка

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


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

Внимание!

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

Доступны к просмотру следующие базы знаний:

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

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

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

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