Организация переключения раскладок в linux с xorg 1.5.3
Недавно обновил xorg, само собой пришлось настраивать переключение раскладок через создание правил udev…
Так как в последнее время очень часто работаю в emacs, задумался, как сделать так, чтобы системное переключение раскладки игнорировало бы emacs… Встретил два варианта решения – один переключение раскладки с помощью отдельной программы, которая контролирует активное окно. Программа нормально не заработала, пришлось искать другой вариант решения. И на блоге Вязового Павла нашел упоминание, что scim позволяет решить эту проблему…
Долго не решался попробовать, просто потому, что еще год назад пытался использовать scim в гноме, неудачно… В итоге решился… =)
Удаляем правила hal, которые создали для переключения раскладок…
Устанавливаем следующие пакеты: scim, scim-tables и scim-m17n, затем в ~/.xinitrc или в файл, отрабатываемый при запуске оконного менеджера прописываем следующие строки:
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
scim -d &
Для того, чтобы задать игнорирование переключение раскладки в отдельных приложениях нужно в ~/.Xdefaults прописать следующее (на примере emacs):
Emacs*useXIM:false
После перезагрузки иксов scim вызывается нажатием Ctrl-Space, после чего появляется панель программки, которая показывает текущую раскладку и предоставляет возможность настроить программу. Чем мы и воспользуемся.
Принцип работы основан на том, что по умолчанию в системе уже используется определенный язык, который был выбран при установке и для его использования сторонних программ не нужно. А для включения второго языка просто запускается сам scim, который позволяет использовать массу языков, массу раскладок… Все это задается в настройках программы. Для начала выключаем все языки и раскладки и оставляем включенной только ru_kbd, после чего задаем нужную клавишу (или комбинацию клавиш) для включения программы, если дополнительных раскладок использовать не собираемся, то все остальные хоткеи выключаем. Задаем в программе основной язык – Russia… Собственно можно начинать пользоваться. =)
По умолчанию scim запоминает кодировку для каждого окна, при этом он становиться активен только в том случае, если фокус находиться в поле ввода. Все остальное время активна раскладка по умолчанию, в связи с чем те программы, что не понимают по русски начинают прекрасно работать…
Плюсы программы – не нужно трогать настройки клавы xorg, что в последнее время стало проблемой; не нужно использовать сторонние программы, которые запоминают раскладку каждого окна, все работает из коробки; встроенная индикация языка, при включении русского появляется маленькая панелька; отсутствие проблем с незнанием программами русской раскладки; умение программы игнорировать переключение раскладки в определенных программах.
Недостатки программы – замечено, что при использовании данного переключения в программе conkeror (форк огнелиса) при вводе на русском языке переопределяются некоторые клавиши, но это проблемы именно conkeror, больше этого не было замечено нигде.
Теперь становиться понятным, почему в Ubuntu включали scim по умолчанию. Жаль только не обьяснили, как ей пользоваться раньше, намного меньше проблем было бы… =)

Привет!
После того как прописал в ~/.config/openbox/autostart.sh
scim запускается в трее, после запуска openbox`a, но хоткеи не работают:
не появляется панелька, после нажатия Control+space.
Не знаешь в чем может біть причина?
Правой кнопкой по иконке и выбираем настроить. В окне настроек уже выбираем, какая раскладка будет включаться и как она будет включаться. А дальше уже все должно работать.
Спасибо за ответ!
http://imagepost.ru/images/2009-10-17–1255800959_1680x1050_scrot.png
http://imagepost.ru/images/2009-10-17–1255801068_1680x1050_scrot.png
Вроде как стоит, или что-то не так?
Вроде все правильно. Еще вопрос, в иксах настроено переключение раскладки? Если да, нужно убрать. Хотя, если на разных комбинациях висят, не должно мешать… При нажатии на C-space значок сцима меняется??
При нажатии на C-space ничего не меняется.
в иксах en/ua на alt+shift
я недавно настраивал scim, даже свою украинскую раскладку делал(http://wnaw.blogspot.com/2009/10/scim.html), но забіл как я его тогда заставил заработать.
тогда вроде как не мешало(но работало только когда включена английская раскладка)
а как отключить переключение в иксах?(crunchbang9.04(based on ubuntu))
Все зависит от того, как делал переключение раскладки. Если менял файл /etc/X11/xorg.conf, то убирай из него определение раскладки. Если через hal, то убирай там. По сути, если все сделал так, как описано, должно работать.
оно дефолтно настроилось, ubuntu же;)
но судя по тому что иксі новіе, оно должно біло прописаться через hal.
сейчас погуглю