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

RSS подписка

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

Проекты / Код

C, C++, Qt

LoLo Switcher - низкоуровневый переключатель клавиатуры для X11
07-09-2011
14:14:59

Официальная страница / 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 если нигде в стандартных местах не обнаружено ни одного конфиг-файла).


К списку проектов

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



Внимание!


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

 

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

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

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

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

База Аrmagedec

База SorokinRed

База Deadelf79

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

База Pipitos1983

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

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

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

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

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

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

База Alensav2 (стр. 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
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик