понедельник, 31 марта 2008 г.

KKBSwitch не отображает код языка

Исторически сложилось так, что для индикации текущей раскладки клавиатуры я пользуюсь пакетом kkbswitch. Этот пакет меня вполне устраивал до моего перехода на Kubuntu. Но вот на этой ОС у меня с ним возникла одна неприятная ситуация. Вместо отображения кода языка индикатор показывал цифры 1 и 2. После обновления до Kubuntu 7.10 цифра 1 сменилась на EN, что не могло не радовать, но вот вместо RU упорно отображалась двойка. Мириться с этим я не собирался :)

Можно было конечно последовать совету многоуважаемого Raa, согласиться с тем, что kkbswitch - глючный пакет (похоже, что он действительно глючный (по крайней мере его дебиановский вариант, поскольку, как я уже сказал, до перехода на Kubuntu у меня с этим пакетом проблем не возникало)), и отказаться от него полностью. Но гораздо интереснее было заставить его отображать код языка.
После весьма продолжительных и безрезультатных поисков описания подобной проблемы, а также после многократных попыток каким-то образом исправить конфиги, было решено пойти на крайние меры - сборку пакета из исходников. Решение оказалось удачным (в какой-то мере), поэтому именно его я и опишу.
Итак вначале избавимся от стандартного пакета:

$ sudo apt-get remove kkbswitch

Также я на всякий случай удалил конфиги:

$ rm -r ~/.kde/share/apps/kkbswitch ~/.kde/share/config/kkbswitchrc

Далее скачиваем и распаковываем исходники:

$ wget http://downloads.sourceforge.net/kkbswitch/kkbswitch-1.4.3.tar.gz
$ tar -xzf kkbswitch-1.4.3.tar.gz
$ cd kkbswitch-1.4.3

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

$ sudo apt-get install xorg-dev libqt3-headers libqt3-mt-dev kde-devel

После окончания установки всех нужных пакетов, можно собирать kkbswitch:

$ ./configure
$ make
$ sudo make install

Готово :). Можем найти KKBSwitch в меню KDE > Служебные, а можем запустить его прямо из консоли:

$ kkbswitch

И вот, при переключении раскладки на русскую, мы победоносно любуемся кодом RU :). Правда при переключении на английскую, вместо EN мы видим US :\. Ну что ж, не всё сразу :). Чтобы это поправить достаточно создать файл настроек. Но создавать мы его не будем, а скопируем готовый из нашего дистрибутива. Итак, находясь в папке kkbswitch-1.4.3, выполним

$ cp kkbswitch/group_names ~/.kde/share/apps/kkbswitch

Теперь перезапускаем kkbswitch и ... ничего не изменяется. А всё потому, что разработка данного пакета замерла три года назад, а KDE не стоит на месте. С тех пор изменились названия групп раскладок, и нам придется поправить файл group_names.
Итак в указанном файле заменяем "US/ASCII" на "U.S. English", а "Russian" - на "Russia"

$ sed -i 's/US\/ASCII/U\.S\.\ English/g' ~/.kde/share/apps/kkbswitch/group_names
$ sed -i 's/Russian/Russia/g' ~/.kde/share/apps/kkbswitch/group_names

Теперь перезапускаем kkbswitch и ... свершилось :). Теперь индикатор отображает коды EN и RU, чего я и хотел достичь.

7 комментариев:

  1. Я обычно включаю отображение флагов вместо цифр и аббревиатур.

    ОтветитьУдалить
  2. Это, несомненно, личное дело каждого. Но вот меня флаги абсолютно не устраивают. Они у меня ассоциируются со странами, а не с языками (Возможно потому, что я не живу ни в США ни в России).

    ОтветитьУдалить
  3. Блин... Прошу прощения, не знаю, как так вышло, но я протормозил и перепутал kkbswitch с xneur. Именно о последнем я отзывался как о "глючном" пакете. До первого же у меня вообще до сих пор не дошли руки :-)
    Только что поставил себе kkbswitch из репозитория. Да, действительно немного глючит: иногда вылетает при настройках, не показывает коды языков. И все-таки, после того, как я включил в нем режим переключателя и отключил kxkb, переключатель стал на удивление шустрым. Давно мечтал о таком. Спасибо, Mak_s, что напомнил :-)

    ОтветитьУдалить
  4. Mark ogromnoe chelovecheskoe spasibo ot tajika Linuxoida

    ОтветитьУдалить
  5. Только что закончил проверять под lenny debian - все заработало сразу. Ничего пересобирать не пришлось - флаги и буквы - все было на месте. Однако чтобы, видеть для английской раскладки британский, а американский флаг пришлось честно в xorg.conf поменять

    Option "XkbLayout" "su,ru"

    на

    Option "XkbLayout" "gb,ru"

    что вообщем-то справедливо :)))

    ОтветитьУдалить
  6. Проделал манипуляции с файлом group_names но в индикаторе также виднеются буквы us. :(
    Система debian lenny kkbswitch 1.4.3 из стандартных репозиториев

    ОтветитьУдалить
  7. В debiane этот глюк до сих пор не поправили (

    ОтветитьУдалить