LINUX.ORG.RU

Вышел LoLo Switcher v.0.25

 , , ,


0

2

LoLo Switcher - низкоуровневый локальный переключатель клавиатуры для оконной системы X11. Работает в любых окружениях рабочего стола: KDE3, KDE4, GNOME, LXDE и прочих.

LoLo Switcher запускается как процесс на низком системном уровне и получает данные от клавиатуры напрямую из файла устройства. Обнаружив нужную последовательность кодов, LLS вызывает функции X11, отвечающие за переключение раскладки. Переключатель очень компактен и быстр, поддерживает любые модели клавиатур и джойстиков, реагирует на любые события устройства ввода, включая отпускание клавиш. Способен прозрачно работать параллельно с другими переключателями клавиатуры.

Гибкость срабатывания переключения языка обусловлена использованием регулярных выражений. Одно выражение фильтрует поток событий, второе вычленяет в потоке набор событий, при котором должно произойти переключение. Доступно как циклическое переключение языка, так и прямое. Автор использует LLS для переключения языков с помощью левого и правого SHIFT-а.

Сегодня стал доступен новый стабильный релиз LoLo Switcher v.0.25. Переключатель созрел для использования как на на 32-битных Linux-платформах, так и на платформах x86_64.

Для ознакомления с возможностями программы, на YouTube размещена видеодемонстрация работы.

Также доступно руководство по настройке.

>>> Официальная страница LoLo Switcher



Проверено: Aceler ()
Последнее исправление: Deleted (всего исправлений: 4)

>LoLo Switcher запускается как процесс на низком системном уровне

ЩИТО

yoghurt ★★★★★
()
Ответ на: комментарий от annulen

тем что он не дружит толком с переключением по отжатию клавиши

daemonpnz ★★★★★
()

Порадовало «здравствуйте мои юные друзья на видео» и зачётная скатерка с медвежатами :))))

anonymous
()
Ответ на: комментарий от daemonpnz

xneur в версиях до 0.13.0 бывает падуч и не всегда переключение срабатывает. с 0.13 у меня проблемы наконец-то ушли

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

а у меня в 0.13 отваливается периодически переключение.

daemonpnz ★★★★★
()
Ответ на: комментарий от daemonpnz

xneur не нужен.

> В xneur работает «по отпусканию клавиш ». А автор сего чуда писал свой велосипед, потому что не осилил xneur/gxneur.

Недавно «щупал» xneur на эту тему. Так вот, xneur можно настроить на выбор рраскладки по шифтам: левый шифт — латиница, правый шифт — кирилица.

На первый взгляд, работает отлично.

На второй взгляд, иногда падает. (Линух F14, xneur из каропки).

На третий взгляд, не работает в меню или при ативной... чёрт, как это будет по-русски? Например, набираешь текст в поле адреса в FF или в поле гуглопоиска, а услужливый FF выкидывает снизу списочек возможных вариантов... Так вот, когда на экране появляется такой списочек вариантов, xneur по шифтам *не* переключает.

Мораль: неработающий монстр xneur не нужен, закапывайте.

anonymous
()
Ответ на: комментарий от svu

> Что значит «ни от чего»?

Это значит единообразная система настройки, настраиваемая один раз в одном конфиге и работающая и в консоли, и в иксах, и в терминальном режиме, и вообще везде.

Зачем: а) чтобы везде работало одинаково, и б) чтобы выкинуть из остальных программ заботу о раскладках в) чтобы иметь единый центр управления глобальными хоткеями.

Помнишь, я писал, что при определённых условиях после запуска гномовой программе в KDE gnome-settings-daemon может перехватить некоторые горячие клавиши? С весёлыми последствиями, типа того что увеличение громкости отрабатывает KDE, а уменьшение Gnome :)

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

>Кстати, идея сделать поддержку раскладок клавиатуры в виде подсистемы, не зависящей вообще ни от чего — ни от консоли, ни от исков, работающая через псевдоинтерфейс — не такая плохая идея.

«Не такая плохая»?! Да это единственно возможный вариант!

DRVTiny ★★★★★
()
Ответ на: комментарий от Aceler

ну.. согласен, в любом случае данный switcher попадает под раздачу.

qnikst ★★★★★
()
Ответ на: комментарий от om-nom-nimouse

>Если при ребуте не меняется, можно попробовать его прописать. Естественно, в виде /dev/input/event5.

Надёжнее, конечно, правила для udev написать, если есть.

У меня такое подозрение, что дело не в udev (кстати, он у меня всё же есть), а в драйвере клавиатуры в иксах. Lolo, я так понимаю, предполагает, что у меня обязательно должен быть evdev, а не kbd.

tot-to
()

Как плохо что иксы такие простые и тормозные. Вот сделает Марк в Убунту Wayland, все будут ими пользоватьсяЮ и больше не надо будет доустанавливать такие программы!

Wormik
()
Ответ на: комментарий от DRVTiny

> «Не такая плохая»?! Да это единственно возможный вариант!

Архитектурно возможно красивый, но проблем с ним больше, чем с реализацией ввода в иксы, к примеру, в виде отдельной подсистемы. К примеру, переключение раскладки для активных окон всё равно придётся делать из иксов, что-то надо будет сделать с унаследованными приложениями, как-то работать с неклавиатурными устройствами ввода, такиеи как dasher, etc. API подобного решения будет довольно развесистым.

Т.е. работы много. Результат, впрочем, обещает быть. Ищем финансирование? :)

Aceler ★★★★★
()
Ответ на: комментарий от Evgueni

Смотря что понимать под взлетом. «That's not flying, that's just falling with style» (c) «Toy Story»

svu ★★★★★
()
Ответ на: комментарий от Aceler

Да, главная проблема — к чёрту совместимость. Ведь если реализовать такой слой работы с клавиатурой в Linux, за бортом останется BSD и Solaris.

Впрочем, если делать его красиво, т.е. к примру, D-Bus-ом, можно будет писать демоны эмуляции работы подобной подсистемы.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

> настраиваемая один раз в одном конфиге
У нас пока что нет кросс-ДЕ системы конфигурации ЕМНИП;) Ну, допустим, можно положить текстовый конфиг файл $HOME/.kbd со всеми параметрами. Но с такими текстовыми конфигами своя морока... В гноме это будет выглядеть как костыль. Да и в других ДЕ - тоже.


и работающая и в консоли, и в иксах, и в терминальном режиме, и вообще везде.

Штука в том, что универсальность и полная интеграция с конкретным ДЕ - взаимно противоположные цели. И я не уверен, что в случае клавиатуры надо так уж стремиться к универсальность. Использовать xk-c везде - это полезно. А конфигурации могут быть разными. Мне, например, нафиг не сдался русский в консоли. Тем более что клавиатурная раскладка без поддержки шрифтами - вещь бессмысленная.

Помнишь, я писал,

Это конкретные баги. Видимо, надо как-то научиться определять «хозяев» для разных ресурсов на десктопе.

svu ★★★★★
()
Ответ на: комментарий от Aceler

> Ищем финансирование? :)
Не найдете. Ибо задача бессмысленная. Никому из имеющих деньги не интересна клавиатура вне иксов (ну или проприетарной графики типа ондроеда).

svu ★★★★★
()
Ответ на: комментарий от Satou

Раньше был такой плагин для gswitchit

svu ★★★★★
()
Ответ на: комментарий от svu

> У нас пока что нет кросс-ДЕ системы конфигурации ЕМНИП;)

А зря :) Впрочем, она не нужна из-за того, что пользователей всё равно много, поэтому если делать подобную систему, её всё равно будет инициализировать конкретное DE или шелл входа.

Aceler ★★★★★
()
Ответ на: комментарий от daemonpnz

В xneur тоже есть логгер.

> Но это лучше чем суидный куязвимый кейлогер от автора на вашем компе.

В xneur тоде есть логгер. Да ещё с возможностью отправки логов по почте на любой адрес... Единственное преимущество, что xneur не суидный, но в данном случае это не очень важно.

anonymous
()

Позволяет ли сей замечательный переключатель настроить клавиши compose, выбора третьего уровня, meta, на лету менять раскладки?

Jaga ★★★
()
Ответ на: комментарий от Deleted

Отличная замена sudo получилась, даже пароль вводить не надо ;)

$ id
uid=1000(user) gid=1000(user)
$ USER=';touch /root/wtf;' /usr/sbin/loloswitcher
$ ls -l /root/wtf
-rw-r--r-- 1 root root 0 Окт 10 02:08 /root/wtf

Ты уверен в том, что ты написал? У тебя пользователь в группе рута читоли?

$ whoami
xi

$ USER=';touch /root/wtf;' /usr/sbin/loloswitcher

$ su
Пароль:

# whoami
root

# ls -l /root/wtf
ls: невозможно получить доступ к /root/wtf: Нет такого файла или каталога
webhamster
() автор топика
Ответ на: комментарий от x3al

>> не работает в меню

Кстати, а вообще в иксах это реально? Любое меню грабит ввод.

Присоединяюсь к вопросу. Я в иксах чайник, самопальную тривиальную выбиралку раскладки по шифтам накропал за пару часов, но столкнулся с той же проблемой — не работает в меню и при выпавших подсказках. Пришлось самопальную выбиралку закопать.

anonymous
()
Ответ на: комментарий от svu

> Никому из имеющих деньги не интересна клавиатура вне иксов

А вот этого мы нахлебались в терминальных серверах, ага. В иксах-то оно работает…

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Ну если сделать такую систему, договориться об используемых именах - можно как-то унифицировать... Но неочевидно, нафиг вообще весь этот огород городить. Людей, бегающих между ДЕ, слишком мало, чтобы оправдать затраты...

svu ★★★★★
()
Ответ на: комментарий от tot-to

> У меня такое подозрение, что дело не в udev (кстати, он у меня всё же есть), а в драйвере клавиатуры в иксах. Lolo, я так понимаю, предполагает, что у меня обязательно должен быть evdev, а не kbd.

Ну ты проверь, меняется ли твой файл девайса /devices/platform/i8042/serio0/input/input5 при перезагрузке. Если не меняется, прописывай LoLo Switcher на него и всё, никакого evdev не нужно.

webhamster
() автор топика
Ответ на: комментарий от svu

> Это конкретные баги.

Меню грабит ввод с клавиатуры, из-за чего не работают хоткеи, даже смена раскладки. Совершенно эпические баги при удалённой работе в терминальном режиме, типа неработающей вообще точки на цифровой клавиатуре, или несовместимого режима работы NumLock. А что творится в случае, если на сервере раскладки русская и английская, а на клиенте три-четыре, включая китайскую — ни в сказке сказать, ни вслух произнести. Одновременная работа обычной клавиатуры и клавиатуры для слепых тоже приводит к интересным эффектам, плюс очень нетривиальная настройка. Подключение на лету клавиатуры по Bluetooth — по-моему, работает только в андроиде, во всяком случае обычная убунта подключала устройство и на этом успокаивалась, работать оно не начинало.

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

Aceler ★★★★★
()
Ответ на: комментарий от svu

> А что с терминальными серверами??

Коротко: баги. Поскольку клавиатура сначала обрабатывается локально, потом данные передаются на удалённую машину и обрабатывается там ещё раз.

Нет, если ты используешь терминал на базе протокола X, всё хорошо. Если у тебя VNC/NX, то всё плохо.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

А, тады да, понятно. Я-то испугался, что с иксами все плохо...

svu ★★★★★
()
Ответ на: комментарий от svu

> Ну если сделать такую систему, договориться об используемых именах - можно как-то унифицировать...

Я так и предложил. Финансирования мы не найдём, если только скинуться всем ЛОРом :) Для студенческого проекта слишком круто. Остаётся только попробовать написать не с чем не совместимый велосипед в качестве прототипа и посмотреть, будут ли преимущества наглядными.

За сим и остановимся.

Aceler ★★★★★
()
Ответ на: комментарий от qnikst

> пооконное запоминание раскладки не поможет?
Если закрыть окно с вкладками того же поджина и открыть снова, то раскладка будет та, что по умолчанию в системе

Satou ★★★★
()
Ответ на: комментарий от Aceler

> в виде независимой подсистемы
На каком уровне? Ядра? Иксов? Если на уровне ядра - вроде как евдев был попыткой создать именно это. Но если приложение иксовое - нехорошо игнорировать иксовые интерфейсы.

svu ★★★★★
()
Ответ на: комментарий от Aceler

> Остаётся только попробовать написать не с чем не совместимый велосипед
Видимо, его в этом топике и обсуждают;)

svu ★★★★★
()
Ответ на: комментарий от Satou

Вот все о переключалках рассуждают, а есть ли возможность для отдельных приложений назначить раскладку по умолчанию, чтоб в ИМ-клиенте всегда русская, а в консоли и бровзере англицкая?

KDE умеет.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

>KDE умеет.

Игнорировать глобальные шорткаты переключения раскладки? Или таки назначать определённую раскладку определённому окну? Как?

anonymous
()
Ответ на: комментарий от svu

> На каком уровне? Ядра? Иксов?

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

Aceler ★★★★★
()
Ответ на: комментарий от Satou

>У меня xfce

То есть EWMH/ICCCM-совместимый WM? man xdotool, man setxkbmap, man любой_язык_программирования_баша_хватит.

x3al ★★★★★
()

Может автор подскажет вменяемый конфиг для раскладки Ctrl+Shift ?

Вариант с опеннета «Sequence0=(?<!1;|2;)(((1,29,1;1,42,1;|1,42,1;1,29,1;)(1,29,0;1,42,0;|1,42,0;1,29,0;))|((1,54,1;1,97,1;|1,97,1;1,54,1;)(1,54,0;1,97,0;|1,97,0;1,54,0;)))$» у меня глючит, при переключении, не меняя раскладку. Точнее меняет при нажатии и при отжатии возвращает обратно. Срабатывает только в некоторых не понятных мне случаях и только при медленном нажании.

anonymous
()

Оно умеет per-application language?

x4DA ★★★★★
()
Ответ на: комментарий от anonymous

Может автор подскажет вменяемый конфиг для раскладки Ctrl+Shift ?

Вариант с опеннета

Sequence0=(?<!1;|2;)(((1,29,1;1,42,1;|1,42,1;1,29,1;)(1,29,0;1,42,0;|1,42,0;1, 29,0;))|((1,54,1;1,97,1;|1,97,1;1,54,1;)(1,54,0;1,97,0;|1,97,0;1,54,0;)))$

у меня глючит, при переключении, не меняя раскладку. Точнее меняет при нажатии и при отжатии возвращает обратно. Срабатывает только в некоторых не понятных мне случаях и только при медленном нажании.

Этот регвыр с опеннета сделан каким-то товарищем впопыхах и недоделан. Кстати, откуда пробел в середине «1, 29,0;» ?


Тут просто всё нужно разложить по полочкам. Объясняю логику.


Во-первых, в начале регвыра обычно используется конструкция:

(?<!1,29,1;|1,29,2;|1,97,1;|1,97,2;|1,56,1;|1,56,2;|1,100,1;|1,100,2;)

которая означает «не зажаты никакае клавиши-модификаторы». То есть, грубо говоря, эта конструкция отслеживает начало последовательности. Назовем ее заголовком. После нее нужно писать коды нажатия/отжатия Ctrl+Shift.

Далее. Как ты хочешь, чтобы срабатывало переключение?


1. Хочу при нажатии Ctrl+Shift.

Тогда после заголовка надо дописать:

1,29,1;1,42,1;$


2. Хочу при нажатии Ctrl+Shift, но Ctrl могу держать долго, до того как нажму Shift.

Тогда после заголовка надо дописать:

1,29,1;1,29,2;1,42,1;$

Тут код 1,29,2; - это код удерживания клавиши Ctrl. В LoLo Switcher последовательные одинаковые коды в очереди «смыкаются». То есть, клавиша при зажатии генерирует 1,29,2;1,29,2;1,29,2;1,29,2;... но в очереди будет один только код 1,29,2;


3. Хочу комбинацию метода 1 и 2.

Тогда после заголовка надо дописать:

1,29,1;(1,29,2;)*1,42,1;$

Тут код (1,29,2;)* означает - либо будет удерживаться Ctrl, либо не будет.


4. Хочу при нажатии по пункту 3 и дальнейшем отпускании сначала Shift, потом Ctrl.

Тогда после заголовка надо дописать:

1,29,1;(1,29,2;)*1,42,1;(1,42,2;)*1,42,0;(1,29,2;)*1,29,0;$

Тут в середине есть код (1,42,2;)* - означает что Shift может удерживаться, а может нет.

1,42,0; - отпускание Shift

(1,29,2;)* - клавиша Ctrl продолжает удерживаться (или не продолжает)

1,29,0; - отпустили Ctrl


Но, человек отпускает клавиши «как получится». Он может отпустить сначала Shift, потом Ctrl, а может наоборот - сначала Ctrl, потом Shift.


5. Для отпускания «наоборот» подойдет выражение (после заголовка):

1,29,1;(1,29,2;)*1,42,1;(1,42,2;)*1,29,0;(1,42,2;)*1,42,0;$


Теперь нужно объединить срабатывание как по пункту 4, так и по пункту 5. Для этого тупо можно сделать ИЛИ между этими выражениями (не забываем, что это без заголовка):

((1,29,1;(1,29,2;)*1,42,1;(1,42,2;)*1,42,0;(1,29,2;)*1,29,0;)|(1,29,1;(1,29,2;)*1,42,1;(1,42,2;)*1,29,0;(1,42,2;)*1,42,0;))$

Вот примерно так.

webhamster
() автор топика
Ответ на: комментарий от webhamster

Да, и конечно это выражение для Sequence0, когда выставлено

SwitchMethod=0

то есть переключение по кругу.

webhamster
() автор топика
Ответ на: комментарий от webhamster

Ты уверен в том, что ты написал?

Да.

У тебя пользователь в группе рута читоли?

Нет.

Сначала удали ~/.config/loloswitcher/, потом запусти, чтобы вызвался неэкранированный popen(«chown $USER ...») под рутом. Функция Config::createStandartConfig() если что.

Посмотрел я исходники, извини, но это какое-то недоразумение. Если уж пишеь suid-программу, так озаботься о безопасности. А у тебя переполнение буфера на переполнении буфера и неэкранированным popen-ом погоняет.

P.S. Зачем там вообще пайп? Ты про chown(2) не в курсе что-ли?

Deleted
()

Re:Вышел oLoLo Switcher v.0.25

KDEшники придумали, не иначе. У них до сих пор штатная переключалка не работает.

terminator
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.