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

RSS подписка

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

Новости


Новости

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

 

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

 



Поделиться этой страницей



Внимание!


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

 

База Xintrea (стр. 1)

База Rarrugas (стр. 1)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean (стр. 1)

База Аrmagedec

База SorokinRed

База Deadelf79

База Adgaver (стр. 1)

База Pipitos1983

База Soxsten (стр. 1)

База Silenn (стр. 1)

База Shlyapnikova - херомантия и ригидность

База Svoynickname (стр. 1)

База Larson227 (стр. 1)

База Velonski (стр. 1)

База BrokeRU (стр. 1)

База Mcold (стр. 1)

База Alensav (стр. 1)

База Consp11 (стр. 1)

База Kozlov-AE (стр. 1)

База Wwwlir (стр. 1)

База Duwaz (стр. 1)

 

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

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База RuDennn (Bunny-Hop)

База Manakaden

База Vitvrn

База Fanrok

База Grimar

База_Juryak

База Nicolasomsk

База Azatserikbaev

База Shut913

 

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

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