Поиск по блогу :

    4 мая 2008 г.

    Проблема с переключением раскладки клавиатуры в Ubuntu 8.04

    С переходом на версию Ubuntu 8.04 я первым делом столкнулся с весьма досадным багом, который заключался в следующем. Например я, люблю в убунте переключаться между языками с помощью клавиши CapsLock, кто-то любит сочетание Ctrl+Shift, в отличии от стандартного сочетания клавиш Alt+Shift, поэтому первым делом я зашел в 'Система'->'Параметры'->'Клавиатура'->'Раскладки' и выставил себе свое любимое сочетание. Все применилось, я нормально продолжал работать, пока не перезагрузил компьютер. После перезагрузки мое сочетание не работало и так происходило каждый раз, сколько бы я не менял раскладку в настройках.

    Посмотрев файл xorg.conf, я с досадой обнаружил, что настройки клавиатуры, после изменения, не сохраняются в этом файле. Я попробовал прописать их сюда вручную, но сочетание начинало работать только в том случае, если в настройках клавиатуры была убрана галочка с пункта 'Отдельная раскладка для каждого окна'. Ясно дело, этот способ меня не у строил, поэтому пришлось поискать более приемлимый вариант.
    Ниже приведенный способ, сложно назвать решением проблемы, скорее всего это смахивает на костыль, но что поделать, придется пока довольствоваться им, пока не выпустят исправление к столь досадному багу.
    В статье описывается комбинация клавиш Ctrl+Shift, ваша задача подставлять свои данные.

    Исправление бага

    1. Первым делом идем и выставляем в настройках 'Раскладки' нужную нам комбинацию клавиш, ну и попутно все остальное.
    2. Теперь в терминале пишем:
    $
    xprop -root | grep XKB

    На выводе мы видим примерно следующее:
    _XKB_RULES_NAMES_BACKUP(STRING) = "xorg", "pc105", "us", "grp:alt_shift_toggle"
    _XKB_RULES_NAMES(STRING) = "xorg", "pc105", "us,ru", ",winkeys", "grp:ctrl_shift_toggle,grp_led:scroll"

    _XKB_RULES_NAMES_BACKUP - это данные из файла /etc/X11/xorg.conf;
    _XKB_RULES_NAMES - это данные из текущей сессии, в которой вы работаете. Нам потребуется именно эта строка.
    3. Открываем для редактирования файл /etc/X11/xorg.conf
    $
    sudo nano /etc/X11/xorg.conf

    4. Ищем секцию Section "InputDevice" где описывается клавиатура.
    И меняем ее в соответствии с данными полученными из строки _XKB_RULES_NAMES. В итоге должно получиться что-то вроде этого:
    Section "InputDevice"
    Identifier "Generic Keyboard"
    Driver "Keyboard"
    Option "CoreKeyboard"
    Option "XkbRules" "xorg"
    Option "XkbModel" "pc105"
    Option "XkbVariant" ",winkeys"
    Option "XkbLayout" "us,ru"
    Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
    EndSection
    Не забудьте поменять значение параметра 'Driver' с kbd на Keyboard - иначе ничего не выйдет.
    5. Перезагружаемся.
    Если все правильно сделано, то переключение раскладки будет работать так, как вам нужно :)