вторник, 1 апреля 2008 г.

Настройка переключателя раскладки в KDE - прощайте, тормоза!

Переключалка раскладки KDE (kxkb) - пожалуй, одна из наиболее известных компонент этой замечтательной среды. Она является объектом многочисленных шуток в адрес KDE, и неоспоримым аргументом в холиварах на тему "Gnome vs KDE". Действительно, очень странно, что у разработчиков так и не дошли руки привести переключатель в порядок. Тем не менее, это не конец света. Есть простой и довольно известный способ избавиться от проблем с переключателем.

Итак, чтобы избавиться от проблем с переключателем раскладки KDE, можно воспользоваться простым и надежным способом: отключить его! А Вы думали, я расскажу, как правильно его настраивать? С Первым апреля Вас! :-)

Тема, пожалуй, довольно избитая, но, как ни странно, далеко не все еще удосужились отключить kxkb. Если Вы тоже не в восторге от него, советую Вам это сделать. А если Вы еще не успели его настроить, то и не делайте это. С задачей переключения раскладки куда лучше справляется Xorg. На него мы и возложим эту задачу.

Рецепт:
1. Возьмите кофиг Xorg:

$ sudo vim /etc/X11/xorg.conf

2. Найдите раздел, описывающий конфигурацию клавиатуры. У меня он выглядел следующим образом.

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection

3. Добавьте сюда русскую раскладку. Вот что у меня вышло в итоге.

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp_led:caps,grp:caps_toggle"
EndSection

Ключевыми элементами конфига являются следующие опции.

"XkbLayout" "us,ru" - включаем две раскладки клавиатуры.

"XkbVariant" ",winkeys" - указываем вариант раскладки для русского языка. Я включил стандартный для Windows вариант, т.к. уже довольно сильно привык к нему. Если не указывать эту опцию, то знаки пунктуации и другие спец символы в русской раскладке будут расположены подругому.

"XkbOptions" "grp_led:scroll,grp:caps_toggle" - дополнительные настройки. "grp_led:casp" - индикация раскладки с помощью лампочки Caps Lock. "grp:caps_toggle" - переключение раскладки с помощью клавиши Caps Lock. Если не нравится переключать капсом, можете указать "grp:ctrl_shift_toggle" или другое по своему вкусу.

4. Если вы уже успели включить переключатель kxkb, то запустите центр управления и отключите его.

5. Перезапустите Xorg. Для этого завершите сеанс, и затем нажмите Ctrl+Alt+BackSpace.

Все! Теперь вы можете наслаждаться молниеносной реакцией клавиатуры на требование переключить раскладку. К тому же, имхо, этот способ настройки переключателя гораздо более прозрачный и простой, чем настройка с помощью центра управления. С последним мне пришлось немало повоевать прежде, чем переключатель заработал.

Однако, все-таки, это не совсем все. Теперь у нас нет индикатора раскладки клавиатуры :-) Но это поправить еще проще. Просто установите kkbswitch:

$ sudo apt-get install kkbswitch

Запустите его: Alt+F2, kkbswitch. Через контекстное меню настройте по вкусу и включите автозапуск.

Стоит заметить, что текущая версия kkbswitch в репозитории Debian Lenny и Ubuntu довльно глючная. Индикатор иногда вылетает во время настройки, а также отказывается отображать коды языков. Я установил отображение флагов и больше не трогаю его - мне этого вполне достаточно. Если же Вас это не устраивает, то предыдущая статья - Вам в помощь. В ней Mak_s рассказал о своих сражениях с этим индикатором, которые, надо сказать, завершились довольно успешно :-)

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

  1. А xxkb не пробовали? пользуюсь им с тех пор как кдешный поламали.

    ОтветитьУдалить
  2. > хммм, а если так?

    Можно, конечно и хммм :) Никто ведь ничего не навязывает.
    Но даже в указанной Вами статье (кстати хорошая статья, спасибо за ссылку) в самом начале говорится следующее:
    если у вас уже настроены раскладки в X сервере, вам нет необходимости использовать kxkb. Для индикации раскладки достаточно установить kkbswitch.
    Так что предложенный Raa способ гораздо более универсален :)

    ОтветитьУдалить
  3. А можно включить нужную раскладку и не перезапуская X-сервера:

    setxkbmap -layout us,ru -variant ,winkeys -option grp:shift_toggle,grp:caps_toggle

    Плюс такого метода в том, что работает везде (в том числе на чужих машинах, за которые иногда надо садиться). Минус — настройка не сохраняется при перезапуске иксов.

    ОтветитьУдалить
  4. а можно использовать kxkb и чтобы нормально работало, в файле ~/.kde/share/config/kdeglobals изменить параметр Switch to Next Keyboard Layout=Shift+Alt_L;Alt+Shift_L
    После перезагрузки иксов всё будет работать как часы... и раскладки будут переключаться и индикатор в трее работать

    ОтветитьУдалить
  5. entw, скажите мне пожалуйста, если клавишу (или комбинации клавишь) переключения раскладки устанавливать посредством центра управления, тогда кто будет обрабатывать нажатие этой клавиши (комбинации): Xorg или KDE?
    Практически все комбинации клавишь, которые там устанавливаются, предназначены для управления окнами. Это наводит на мысль, что если я там же установлю и переключатель раскладки, то сигнал будет от клавиатуры к Xorg, а от Xorg - в оконный менеджер KDE, а последний уже будет переключать раскладку, обращаясь обратно к Xorg. Так получается? У меня есть подозрение, что именно это у меня вызывало тормоза переключателя на моем далеко не самом мощном компьютере.

    ОтветитьУдалить
  6. Честно говоря, не знаю, о чём вы говорите.

    У меня kxkb ни разу не глючил, пользуюсь им уже давненько. Что я делаю не так?

    ОтветитьУдалить
  7. Понятия не имею :-) Я уже слышал такое. Пока мне не удалось проследить какие-либо закономерности. У меня как на работе так и дома эта переключалка жутко тормозила. Переключишь раскладку, набираешь слова, потом глядь на экран (да, не умею печатать вслепую :-) ) - а раскладка еще не переключилась, или переключилась на половине текста. Ну и настроить ее мне не с первого раза удалось: оказалось, нужно выставлять комбинацию в другом разделе настроек.

    ОтветитьУдалить
  8. Спасибо за совет! Долго не мог понять кто же отвечает за переключение раскладки? мучался уже больше года с xkb. Наконец благодаря вашей статье настроил Xorg )))

    ОтветитьУдалить
  9. Спасибо, мне помогло, подтверждаю, способ работает.

    ОтветитьУдалить
  10. со вчера на сегодня перешел на debian503
    половину ночи промучался с установкой драйверов nvidia, а затем и с переключением раскладок клавиатуры изрядно повозился.

    все заработало благодаря следующей строчке из вашей статьи
    ---
    Option "XkbRules" "xorg"
    ---

    судя по остальным строкам именно её не хватало во многих других руководствах, которые довелось повстречать :)

    спасибо.

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