Доброго дня или ночи, уважаемый читатель моего скромного блога. Сегодня я расскажу о небольшом трюке, который позволит переключать раскладку клавиатуры в Xubuntu Linux в обе стороны. Это окажется полезным, если ты используешь болшее количество раскладок в системе, нежели две стандартных для большинства пользователей — Русскую и Английскую.
Для начало следует определить, как пишутся краткие названия для установленных у тебя в системе раскладок. Для этого следует просмотреть каталог /usr/share/X11/xkb/symbols/:
$ ls /usr/share/X11/xkb/symbols/ af cm gn kz nec_vndr sk al cn gr la ng sn altwin compose group latam nl sony_vndr am ctrl hp_vndr latin no srvr_ctrl apl cz hr level3 nokia_vndr sun_vndr ara de hu level5 np sy at digital_vndr ie lk olpc terminate az dk il lt pc th ba ee in lv ph tj bd empty inet ma pk tm be epo iq macintosh_vndr pl tr bg es ir mao pt tw br et is md ro typo brai eurosign it me rs tz bt fi jp mk ru ua bw fo ke ml rupeesign us by fr keypad mm se uz ca fujitsu_vndr kg mn sgi_vndr vn capslock gb kh mt sharp_vndr xfree68_vndr cd ge kpdl mv shift za ch gh kr nbsp si
Для примера я буду использовать три раскладки — Русскую, Английскую и Украинскую. Для смены раскладки будет использоваться стандартная утилита: setxkbmap. Принцип будет такой — с помощью конструкции switch-case в скрипте мы укажем список необходимых вариантов раскладки клавиатуры, в первом скрипте раскладка будет производиться смена раскладки в одну сторону, а во втором в обратную. Для указания текущей позиции раскладки будет использоваться файл для текущей конфигурации — ~/xkb-switch/.xkb-switch.fb — ему необходимо задать права на запись и чтение. Это обычный текстовый файл, который можно создать самому (по умолчанию скрипт создаст его, если на каталог ~/xkb-switch будет задано право на запись) с помощью команды:
touch ~/xkb-switch/.xkb-switch.fb chmod 0777 ~/xkb-switch/.xkb-switch.fb
Скрипты xkbsw-right.sh и xkbsw-left.sh создадим в каталоге ~/xkb-switch/ и зададим им права на исполнение (chmod +x ~/xkb-switch/xkbsw-*.sh). Далее запуск этих скриптов будет необходимо добавить на запуск по горячим клавишам (это делается через графический интерфейс в Настройках системы->Клавиатура). P.S. — «~/» означает в Linux домашний каталог текущего пользователя.
Итак, сами скрипты:
xkbsw-right.sh
#!/bin/bash now=$(cat ~/xkb-switch/.xkb-switch.fb) case "$now" in "1") setxkbmap -layout ru,us,ua echo 2 > ~/xkb-switch/.xkb-switch.fb ;; "2") setxkbmap -layout us,ua,ru echo 3 > ~/xkb-switch/.xkb-switch.fb ;; "3") setxkbmap -layout ua,ru,us echo 1 > ~/xkb-switch/.xkb-switch.fb ;; *) echo 1 > ~/xkb-switch/.xkb-switch.fb ;; esac
xkbsw-left.sh
#!/bin/bash now=$(cat ~/xkb-switch/.xkb-switch.fb) case "$now" in "1") setxkbmap -layout ua,ru,us echo 3 > ~/xkb-switch/.xkb-switch.fb ;; "2") setxkbmap -layout us,ua,ru echo 1 > ~/xkb-switch/.xkb-switch.fb ;; "3") setxkbmap -layout ru,us,ua echo 2 > ~/xkb-switch/.xkb-switch.fb ;; *) echo 1 > ~/xkb-switch/.xkb-switch.fb ;; esac
Обрати внимание — раскладки без пробела после запятых. Первая раскладка — та, которая будет установлена в системе после выполнения команды. Последующие — те, между которыми можно будет переключаться (через обычный CTRL+SHIFT), если указать одну раскладку — то выбор при переключении исчезнет.