В Maverick что-то 'починили' и описанный тут способ переключения раскладки клавиатуры перестал нормально работать. setxkbmap после переключения раскладки выносил остальные раскладки и гномовский индикатор языка отказывался нормально работать.
Вся эта карусель связана с тем, что циклическое переключение языков (если их больше 2-х) - зло, имхо, не удобно постоянно перебирать раскладки вручную, более комфортно назначить на каждый язык свой хоткей.
Решения нашлось, хотя не сразу. На ЛОРе описана похожая проблема, основная идея заключается в назначении хоткея на процесс программного перебора раскладки до нужной. До Maverick все решалось проще, но, как написано в первом абзаце - не все коту масленица :).
Для начала нам понадобится маленькая утилита skb, которая возвращает текущую раскладку. Эту утилиту придется собрать из исходников, но перед этим нужны сорцы X11:
sudo apt-get install libx11-dev wget http://plhk.ru/static/skb/skb-0.3.tar.gz tar xfvz skb-0.3.tar.gz cd skb-0.3 make sudo make install
Следующий этап - выбор клавиши для циклической смены языка, можно сделать либо в стандартной gui'шной утилите, либо вот такой командой (которую придется добавить в автозагрузку)
setxkbmap -layout 'us,ua,ru' -option 'grp:rwin_toggle'
Для смены раскладки я выбрал правую клавишу win - у меня редко используется.
Установим утилиту xdotool, которая умеет генерить событие нажатия определенной клавиши
sudo apt-get install xdotool
На вход xdotool принимает код клавиши. Что бы узнать код нужной клавиши запускаем xev нажимаем нужную клавишу и смотрим ее код.
Список клавиш клавиатуры и назначенных на них действий в системе
xmodmap -pke
А теперь гвоздь программы - скрипт который умеет перебирать раскладки и включать нужную
#! /bin/sh while [ `skb -1` != $1 ] do xdotool key ISO_Next_Group done
Делаем скрипт исполняем и создаем симлинк в /usr/local/bin/
chmod +x switch /home/proft/scripts/switchlayout.sh sudo ln -s /home/proft/scripts/switchlayout.sh /usr/local/bin/
Пользоваться скриптом так
switchlayout.sh USA switchlayout.sh Ukr switchlayout.sh Rus
Теперь остается назначить в Keyboard Shortcuts удобные клавиши на вызов switchlayout.sh.
Получилось много действий для такого простого процесса, но оно того стоит.
Дополнительное чтиво