Переключение раскладки в Xfce: какое наHALство!

Извиняюсь за очередной вычурный заголовок, но речь действительно пойдет об использовании демона HAL (Hardware abstraction layer) для изменения раскладки клавиатуры. Раньше эта процедура прописывалась в файле /etc/X11/xorg.conf, но нынче этот способ считается устаревшим и рекомендуется потихоньку мигрировать в сторону более прогрессивных методов настройки «иксов».

Ага. Это я сейчас такой умный и правильный, когда решение уже найдено и внедрено. Но еще пару часов назад мозг был взорван очередной заморочкой Xfce. После обновления ОС Slackware с версии 13.0 до 13.1 перестала переключаться раскладка на русскую, хотя локаль выставлена правильно. Проблема не нова и раньше решалась установкой плагина xfce-kbd. Но он написан каким-то частным лицом, причем так давно, что даже не компилируется с самой свежей версией Xfce, включенной в состав Slackware 13.1. Пришлось усиленно гуглить.

В ходе поиска обнаружилась туева хуча статей о том, что нужно «всего-лишь подправить xorg.conf». Такое quick & dirty решение я отложил на крайний случай. Если уж ребята из команды Xfce отказались от этого способа конфигурирования, то, наверно, не зря. Должно же оно как-то настраиваться без рудиментарных способов. Однако страницы Google по запросу «xfce keyboard layout switch» были до бесконечности заполнены УГ по поводу xorg.conf.

Выручили (и не в первый раз) гентушники. Именно на их суровых страницах, изобилующих фразами типа

А FAQ кто читать будет? Дядя Ваня?


или

Какие однако бывшие бунтологи пошли или вантузятнеки?
Они даже читать не умеют =) А еще что то хотят.


нашлось совершенно точное решение проблемы, причем подходящее не только для Gentoo, но и для любой внятной Linux-системы: нужно создать файл /etc/hal/fdi/policy/10-x11-input.fdi со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?> 
<deviceinfo version="0.2"> 
    <device> 
    <match key="info.capabilities" contains="input.mouse"> 
            <merge key="input.x11_driver" type="string">mouse</merge> 
        <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"> 
        <!-- If we're using Linux, we use evdev by default (falling back to 
        mouse otherwise). --> 
        <merge key="input.x11_driver" type="string">evdev</merge> 
        </match> 
    </match> 
 
    <match key="info.capabilities" contains="input.keys"> 
        <merge key="input.x11_driver" type="string">keyboard</merge> 
        <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"> 
        <!-- If we're using Linux, we use evdev by default (falling back to 
        keyboard otherwise). --> 
            <merge key="input.x11_driver" type="string">evdev</merge> 
        </match> 
        <merge key="input.xkb.layout" type="string">us,ru,ua</merge> 
        <merge key="input.xkb.variant" type="string">,winkeys,winkeys</merge> 
        <merge key="input.xkb.options" type="string">grp:ctrl_shift_toggle,grp:lctrl_lshift_toggle</merge> 
    </match> 
    </device> 
</deviceinfo>


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

Комментарии (6)

RSS свернуть / развернуть
+
0
Мда, ну и наворотили
У меня были похожие проблемы — я запускал
setxkbmap  -option grp:caps_toggle,grp_led:scroll "us,ru"
avatar

Sergei_T

  • 28 мая 2010, 15:59
+
0
кстати на счет этой команды, вот не всегда она работает. Я так и не разобрался чья конкретно эта магия, но на двух идентичных ноутах, на одном работало только через хал, а на втором только через эту команду
avatar

ksandras

  • 30 мая 2010, 22:29
+
0
Я поначалу попробовал повесить на горячие клавиши

setxkbmap ru


и

setxkbmap en


Последнее, конечно, неправильно: надо не en, а us. Но я расстроился, стал гуглить дальше и… в итоге нашел кошерное решение .
avatar

yababay

  • 28 мая 2010, 16:04
+
0
У меня этой командой нормально переключает
avatar

Sergei_T

  • 28 мая 2010, 17:08
+
0
Актуально !
avatar

Markony

  • 28 мая 2010, 19:45
+
0
ох уж этот hal)) Я еще долго ковырялся, что бы через него заставить работать synaptic)) Пока не узнал, что имеет смысл просто скопипастить из экзамплов файл синпатика и чуть-чутть подправить
avatar

ksandras

  • 29 мая 2010, 09:57

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.