Увидела свет новая версия переключателя клавиатуры LoLo Switcher 0.27 для оконной среды X11 в ОС Linux.
LoLo Switcher - это низкоуровневый переключатель клавиатуры, который считывает коды нажатых клавиш прямо из файла устройства ввода. Обнаружив нажатие комбинаций клавиш, ответсвенных за переключение языка ввода, LoLo Switcher вызывает стандартную функцию переключения языка в среде X11. LoLo Switcher работает как в режиме "кольцевого" переключения раскладок, так и в режиме прямого переключения, когда для каждой раскладки соответсвует своя комбинация клавиш. LoLo Switcher распознает не только нажатия клавиш, но и их отжатия. LoLo Switcher позволяет настроить переключение раскладки на абсолюно любую комбинацию клавиш, так как напрямую работает с аппаратными кодами клавиатуры.
Больше года назад была выпущена предыдущая стабильная версия LoLo Switcher 0.25. Почему же за год появилась только одна новая версия? Потому что LoLo Switcher просто работает, и в улучшениях не нуждается.
Поводом выпустить новую версию стали просьбы пользователей некоторых дистрибутивов (например, OpenSUSE 12.1), у которых оказался разломанным стек событий в KDE 4.8.x. Внешне это выглядело так: LoLo Switcher работает некоторое время, после чего вываливается с ошибкой
Short input keyboard device read
Я не мог помочь пользователям потому, что у меня подобная проблема не появлялась. Но после недавнего переезда с Debian Stable на Debian Testing (Wheezy), подобная проблема проявилась и у меня. Я внес изменения в LoLo Switcher, протестировал, и теперь выкладываю новую версию на официальной странице:
Официальная страница проекта LoLo Switcher
Изменения в версии 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 в том случае, если не видно кодов нажатых клавиш