Дожили. На работе запретили прямой доступ в интернет. Теперь просто так пользоваться интернетом нельзя. По корпоративным требованиям, в интернет можно выходить только через терминальный сервер. А денег на терминалку не дали. У нас постоянно так происходит - выпускают безумные требования, а закупку необходимого ПО производят через год. Что делать? Правильно, поднимать терминалку на Линухе.
Подолбавшись немного я выяснил, что самый вменяемый на сегодняшный день терминальный сервер - это 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-сервера.
И тогда я смогу нормально работать в интернете через линуховый терминальный сервер.