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

C / C++

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.27 (26.11.2012)

 

 

Принцип работы

 

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

 

 

Скачать

 

 

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 подробно расписан в статье "Конфигурирование LoLo Switcher. Полное руководство".

 

Посмотреть видео демонстрации работы LoLo Switcher можно на YouTube.

Обсудить переключатель клавиатуры LoLo Switcher можно на форуме сайта WebHamster.ru.

 

 

Стандартные настройки

 

По-умолчнию LLS настроен на два языка, переключение происходит с помощью левого и правого SHIFT, в момент переключения издается звуковой сигнал разного тона (если в системе есть программа beep).

 

 

План развития

 

Дальнейшее развитие LoLo Switcher видится в подключении работы с событиями X11. Тогда LLS станет не просто локальным низкоуровневым переключателем, а полноценным X11 приложением, способным предоставить свой функционал при удаленном подключении к X-серверу. Для этого мне нужна помощь сообщества, а именно нужен пример кода, который способен получать события клавиатуры (или события джойстика) не только в одном текущем X-окне, но и во всех окнах X-сервера.

 

 

История версий

 

Версии 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 в том случае, если не видно кодов нажатых клавиш 

 

 


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

Интересное на сайте


Платформа 1C:Предприятие » Как в 1С v.8.2 получить XML-код для DOM-элемента

При написании процедур вызгрузки и загрузки XML данных часто требуется конвертирование частей DOM-дерева в XML код. Части DOM-дерева обычно представле...


Штучки-дрючки » Самодельный диафильм

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


Классическая анимация » Прыгающая подушка

Оборудование: Pentium-IV, Wacom Graphire3 CTE-630 Среда: Flash 8 Год: 2005   Первая и, видимо, последняя попытка нарисовать мини-мультфильм по т...

RSS подписка

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


Купить террасную доску в террасная доска wpc.moscow.
Частные объявления услуг по грузоперевозкам в москве www.alsena.ru.

Внимание!

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

Доступны к просмотру следующие базы знаний:

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

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

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