Переключение клавиатуры при помощи xxkb

Для чего это может потребоваться?

1) Если вас не устраивают стандартные средства Window Manager’а
2) Если вы используете легкий десктоп, в котором стандартных средств переключения не существует.
Возможно, есть еще какие- то варианты.

Рассмотрим настройку на основе IceWM в Debian GNU/Linux.

Сначала устанавливаем xxkb, если он еще не установлен

apt-get install xxkb

Теперь надо настроить параметры переключения.
Это можно сделать при помощи программы setxkbmap

setxkbmap us,ru
setxkbmap -model pc105
setxkbmap -option grp:lwin_toggle

Я использовал для переключения раскладки левую клавишу «Windows», но можно использовать также и другие модификаторы, например:

grp:shift_ctrl_toggle
grp:alt_shift_toggle

Для внешнего представления необходимо еще кое-что настроить.
Есть два варианта настроек — настройки для пользователя и настройки для всей системы. Сначала применяются системные настройки, затем настройки для пользователя.
Системные настройки xxkb хранятся в файле /etc/X11/app-defaults/XXkb, для их изменения вам потребуются права root, пользовательские — в файле ~/.xxkbrc

Настройка xxkb предполагает изменение одного из этих файлов, файл глобальных настроек будет работать для всех пользователей, а индивидуальные настройки перегружают общесистемные, что позволяет, например, задать разным пользователям разные сочетания клавиш для переключения раскладки.

Для корректной работы xxkb необходимо еще кое-то изменить в каком-либо из них.

! Включаем основное окно xxkb
XXkb.mainwindow.enable: yes
! Выключаем показ иконки xxkb в заголовках окон приложений
XXkb.mainwindow.appicon: no
! Указываем, что значок переключателя должен показываться
! в трее
XXkb.mainwindow.type: tray
! Устанавливаем тип трея
XXkb.mainwindow.in_tray: KDE
! Устанавливаем размер значка, который будет показываться в трее
! (!) Обязательно надо указать часть "+0+0"
XXkb.mainwindow.geometry: 15x15+0+0
! Указываем значки для каждой раскладки из тех,
! что были указаны в качестве параметров команды setxkbmap
! (!) Наличие всех 4 параметров в файле настроек обязательно.
XXkb.mainwindow.image.1: en15.xpm
XXkb.mainwindow.image.2: ru15.xpm
XXkb.mainwindow.image.3:
XXkb.mainwindow.image.4:

! Отключаем кнопку, поскольку будем использовать переключение только с клавиатуры
XXkb.button.enable: no

И после этого запускаем xxkb

xxkb &

Указание «&» необходимо для запуска xxkb в фоновом режиме.

Если при запуске вручную всё работает так, как и должно, можно устанавливать переключатель клавиатуры в автозагрузку.
Для этого я создал файл keyboard в папке ~/.icewm со следующим содержанием:

#!/bin/bash
setxkbmap us,ru
setxkbmap -model pc105
setxkbmap -option grp:lwin_toggle
sleep 2 && xxkb&

И добавил в файл ~/.icewm/startup строчку

~/.icewm/keyboard &

Теперь выходим из системы, или перезагружаемся и при следующем входе в систему. Если всё сделано правильно, в трее icewm увидим значок, и при нажатии на клавишу переключения произойдет переключение раскладки и изменение значка в трее.

Да, кстати. По умолчанию xxkb запоминает раскладку для каждого окна, что при определенных условиях уменьшает количество нажатий клавиш переключения раскладки. И это очень даже удобно.

[wysija_form id=»2″]