Официальная страница / Official page
(Rus)
LoLo Switcher - это низкоуровневый локальный переключатель клавиатуры для оконной системы X11. Он способен работать в любых окружениях рабочего стола: в KDE3, в KDE4, GNOME, LXDE и прочих. LLS работает напрямую с устройством ввода, очень компактен и быстр, поддерживает любые модели клавиатур и джойстиков. LLS способен прозрачно работать параллельно с другими переключателями клавиатуры. LLS содержит встроенные средства диагностики кодов, передаваемые из устройства ввода в компьютер.
Лицензия: GPL v.3 и BSD
Последняя актуальная версия: 0.39 (27.04.2021)
Принцип работы
LoLo Switcher работает как процесс на низком системном уровне, и получает данные от клавиатуры напрямую из файла устройства. Обнаружив нужную последовательность кодов, LLS вызывает функции X11, отвечающие за переключение раскладки.
Исходники
Начиная с 01.08.2016 исходники LoLo Switcher лежат в репозитарии GitHub:
https://github.com/xintrea/LoLoSwitcher
Сборки
v.0.39
LoLo Switcher v.0.39 (standart), (GitHub)
v.0.32
LoLo Switcher v.0.32 (standart), (GitHub)
v.0.31
LoLo Switcher v.0.31 (standart), (GitHub)
v.0.30
LoLo Switcher v.0.30 (standart), (GitHub)
LoLo Switcher v.0.30 (precompile x86-64 binary build), 15 Kb
v.0.28
LoLo Switcher v.0.28 (standart), (GitHub)
LoLo Switcher v.0.28 (precompile i586 binary build), 16 Kb
v.0.27
LoLo Switcher v.0.27 (standart), 31 Kb
LoLo Switcher v.0.27 (precompile i586 binary build), 15 Kb
v.0.25
LoLo Switcher v.0.25 (standart), 30 Kb
LoLo Switcher v.0.25 (precompile i586 binary build), 16 Kb
v.0.20
LoLo Switcher v.0.20 (standart), 30 Kb
LoLo Switcher v.0.20 (precompile i586 binary build), 15 Kb
v.0.15
LoLo Switcher v.0.15 (standart), 29 Kb
LoLo Switcher v.0.15 (precompile i586 binary build), 14 Kb
Материальная поддержка
Поддержи проект LoLo Switcher. Он десятилетиями радует своих пользователей!
- Чашечка кофе автору - 250 руб.
- Шаверма, салатик, компот - 500 руб.
- Кружка пива, рыба, сухарики - 750 руб.
- Ни в чем себе не отказывай - 1000 руб.
Или другая сумма...
А еще можно так:
И даже так:
Сбербанк: 5469 5200 3008 5419
PayPal: https://www.paypal.me/SMStepanov
WMZ: Z586949314665
WMP: P914723712675
ЮMoney (ex. Яндекс.Деньги) : 410011385378014
BTC: 13U5ZWfifBs1XDzJYRmwCjUqFqz3LEwPar
ETH: 0x5FB23243c77FAb8f13C46941c112cF5E9E8483A8
Использование
Процесс настройки LoLo Switcher подробно расписан в статье "Конфигурирование LoLo Switcher. Полное руководство".
Посмотреть видео демонстрации работы LoLo Switcher можно на YouTube.
Обсудить переключатель клавиатуры LoLo Switcher можно на форуме сайта WebHamster.ru.
Стандартные настройки
По-умолчнию LLS настроен на два языка, переключение происходит с помощью левого и правого SHIFT, в момент переключения издается звуковой сигнал разного тона (если в системе есть программа beep).
План развития
Дальнейшее развитие LoLo Switcher состоит в его адаптации к новым версиям X-сервера и/или Wayland инфраструктуры. Возможно, что когда-нибудь LoLo Switcher заработает в чистой текстовой консоли (включаемой по Ctrl+Alt+F1, F2, ..., F6).
История версий
Версии 0.1 - 0.14
Внутренние пробные и отладочные версии
Версия 0.15
Первая публичная версия с поддержкой клавиатуры и джойстика.
Версия 0.20
- Исправлена кодировка некоторых *.cpp и *.h файлов, которые имели cp1251 вместо UTF-8;
- В CMakeLists.txt задана опция компилирования -O0 для файла EventQueue.cpp, так как в нем gcc генерирует неправильный цикл обратного обхода очереди для микропроцессора AMD;
- В функции отдельного потока threadFunc() добавлено закрытие потока bash-команды с помощью вызова pclose();
- Изменен механиз вызова функции отдельного потока. Сделана правильная передача номера выполняемой команды, чтобы небыло потенциальной порчи стека. Добавлена устновка атрибутов потока в значение PTHREAD_CREATE_DETACHED, чтобы ресурсы потока после его завершения были освоождены для использования новыми потоками;
- Удален файл postinstall.cmake, его функционал внесен в CMakeLists.txt;
- В CMakeLists.txt выставлен режим компиляции Release;
- Программа проверена с помощью valgrind, сделаны небольшие доработки, теперь при работе в любом режиме нет ни одной ошибки в инструменте проверки Memcheck;
- Доработаны readme-файлы, добавлена информация о зависимых библиотеках.
Версия 0.25
- В код внесены изменения для компиляции на 64-х битных платформах;
- Выделен отдельный класс AccessControl, в котором происходят действия по повышению и понижению привелегий;
- Сделано определение STRING_LEN которое задает стандартную длинну C-строк во всех классах программы. Магические константы во всех классах заменены на это определение;
- Доработан Config.cpp, улучшена работа со строками при парсинге данных в конфиг-файле;
- Доработки в ParseHelper.cpp. Доработан метод get_comma_separate_valuei(). Упрощены методы getparamvalue() и getparamname();
- В ParseHelper.cpp добавлено подключение заголовка Main.h, в функциях все магические константы с длинной строки заменены на STRING_LEN;
- Проверка на доступ к защищенным ресурсам;
- Проверка через valgring, проверка через htop, релиз.
Версия 0.27
- В Config.cpp удалены вызовы popen, используемые для запуска bash-команд chown для установки правильных прав на каталог конфигурации и файл конфигурации в случае, если их нет в системе. Вместо них теперь используется C-функция chown()
- В Config::getUserDirectory() и Config::getUserName() считывание значений переменных окружения в методах через функцию getenv() сделано с ограничением на длинну строки. Затем в конец области строки добавляется 0
- В Config::readFile() считанная из файла конфигурации строка для безопасности сразу подвергается обработке, в конец области считанной строки добавляется 0
- Исправлен выход из программы в случае получения обрывочного события клавиатуры и джойстика. Такое поведение замечено в OpenSUSE 12.1 и в Debian Testing (Wheezy) в среде KDE 4.8.x
- В режим теста кодов устройства (опция -t1) добавлено пояснение, что нужно настроить параметр InputDevice в том случае, если не видно кодов нажатых клавиш
Версия 0.30
- В стандартном конфиге добавлено пояснение, что лучше прописывать параметр InputDevice по идентификатору, а не просто как eventX. Это необходимо, чтобы LoLoSwitcher всегда работал, даже если клавиатура была переключена в другой USB-слот, или eventX заняло другое USB-устройство,вставленное до запуска компьютера
- Добавлена возможность переподключения устройства клавиатуры в случае, если во время работы LoLoSwitcher клавиатура была вытащена и снова воткнута в гнездо
- Исправлен сегфолт, появляющийся при компиляции в gcc 9.2.x, которого в версиях gcc 4.7.x не было
Версия 0.39
- Сделана возможность работы на "тупых" KVM, в которых не предусмотрено удерживание устройства ввода (то есть устройства на уровне схемотехники просто отключаются и подключаются). Для этого в конфиг-файле используются опции AllowWaitDeviceConnect, AllowDeviceReconnect, DeviceReconnectTime.
- Сделана опция -c. Это возможность запуска с указанным конфиг-файлом, вместо поиска файла конфигурации в стандартных местах.
- Сделана опция -p для печати в консоль содержимого стандартного конфиг-файла. Это помогает при написании новых конфиг-файлов. (Следует напомнить, что стандартный конфиг-файл автоматически создается в каталоге ~/.config/loloswitcher если нигде в стандартных местах не обнаружено ни одного конфиг-файла).