[РЕШЕНО] После обновления xorg'а не переключается раскладка

Обновился до x11-base/xorg-x11-7.3 и x11-base/xorg-server-1.5.0, собранного с флагами USE="dri hal nptl sdl xorg" INPUT_DEVICES="evdev keyboard mouse synaptics" VIDEO_CARDS="i810 v4l vesa vga", драйвера видеокарты, мыши и клавиатуры пересобрал.
После обновления xorg'а не переключается раскладка, точнее не переключается только с клавиатуры средствами самого Xorg'а, мышкой по значку kkbswitch в трее или настроенными в программе "горячими" клавишами всё получается нормально.
Здесь и здесь смотрел - не помогло :(
Файл /etc/hal/fdi/policy/10russian-layout.fdi создавал, руководствуясь указанными ссылками.
Вывод команды

% lshal| grep 'input.x'
input.x11_driver = 'synaptics' (string)
input.x11_driver = 'evdev' (string)
input.x11_driver = 'evdev' (string)
input.xkb.layout = 'us,ru' (string)
input.xkb.model = 'evdev' (string)
input.xkb.options = {'grp:lwin_toggle'} (string list)
input.xkb.rules = 'base' (string)
input.xkb.variant = ',winkeys' (string)
input.x11_driver = 'evdev' (string)

Опции layout = 'us,ru' | xkb.options = {'grp:lwin_toggle'} | xkb.variant = ',winkeys' комбинировал разными способами и всё бестолку!
Смущает ещё то, что в Xorg.log

(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) AT Translated Set 2 keyboard: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) AT Translated Set 2 keyboard: xkb_model: "evdev"
(**) Option "xkb_layout" "us,ru"
(**) AT Translated Set 2 keyboard: xkb_layout: "us,ru"
(**) Option "xkb_variant" ",winkeys"
(**) AT Translated Set 2 keyboard: xkb_variant: ",winkeys"

нет упоминания о переключении раскладок.

А если kkbswitch

А если kkbswitch убрать/отключить?

Никак не влияет

Никак не влияет :(

На Opennet.ru нашёл

На Opennet.ru нашёл "некрасивое" решение своей проблемы.

Цитата:
Второй метод:
Второй метод состоит в том, что мы отключаем автоопределение
устройств. Для этого в xorg.conf в секцию ServerLayout дописываем
Option "AutoAddDevices" "False". После перегрузки иксов настройки
клавиатуры берутся из xorg.conf.

Подозреваю, что у второго метода есть свои недостатки, но я их пока не обнаружил.

Вообще-то у

Вообще-то у меня после обновления xorg portage предложил сделать etc-update, который был связан как раз с тем, что настройки клавиатуры из xorg-conf перенеслись в файл /etc/hal/fdi/policy/10-x11-input.fdi.
То есть из

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
        Option      "XkbModel"  "pc105"
        Option      "XkbLayout" "us,ru(winkeys),by(winkeys)"
        Option      "XkbOptions" "grp:caps_toggle,grp_led:scroll,compose:rwin"
EndSection

я получил

<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
   <match key="info.capabilities" contains="input.keys">
      <!-- Option "XkbModel" "pc105" -->
      <merge key="input.xkb.model" type="string">evdev</merge>
      <merge key="input.xkb.layout" type="string">us,ru(winkeys),by(winkeys)</merge>
      <merge key="input.xkb.options" type="strlist">grp:caps_toggle</merge>
      <append key="input.xkb.options" type="strlist">grp_led:scroll</append>
      <append key="input.xkb.options" type="strlist">compose:rwin</append>
   </match>
</deviceinfo>

автоматически.
Поэтому я даже не знаю, hal это у меня работает или xorg.conf - но никаких проблем с клавиатурой и раскладками нет.

А я сколько раз не прописывал

А я сколько раз не прописывал для input.xkb.options type="strlist", переключение раскладки так и не заработало.
В итоге сделал так для .options:
grp:alt_shift_toggle
,grp_led:scroll
И все стало хорошо.

Мой вариант решения этой проблемы:

Тоже долго возился (наверное, и волос седых добавилось :) ), но вышло всё-таки как надо.
Итак, после прочтения статьи "HOWTO hal и устройства ввода" из раздела "Русское Wiki" этого превосходного сборника статей по Gentoo, а также после прочтения множества других советов и тем на форумах, несколькоих файлов документации и некоторых стандартных конфигурационных файлов,это дело решилось следующим образом:
1. Отключил напрочь KDE-шную переключалку.
2. Поставил KKBSwitch.
3. В /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>

4. В файле /etc/X11/xorg.conf закомментировал (поставил перед строкой знак "#" ;) ) все упоминания о клавиатуре и мыши, как то


Section "ServerLayout" 
 
    Identifier     "Layout0" 
    Screen      0  "Screen0" 0 0 
#    InputDevice    "Keyboard0" "CoreKeyboard" 
#    InputDevice    "Mouse0" "CorePointer" 
#    InputDevice    "Touchpad" "SendCoreEvents" 
EndSection

а также следующие разделы:


#Section "InputDevice"  
#    Identifier  "Mouse0"  
#    Driver      "mouse"  
#    Option        "Protocol" "PS/2"  
#    Option        "Device" "/dev/input/mice"  
#EndSection  
#  
#Section "InputDevice"  
#    Option         "XkbRules" "xorg"  
#    Option         "XkbOptions" "grp:ctrl_shift_toggle,grp:lctrl_lshift_toggle"  
#    Option         "XkbLayout" "us,ru(winkeys),ua(winkeys)"  
#    Option         "XkbVariant" "winkeys"  
#    Identifier  "Keyboard0"  
##    Driver      "kbd"  
#    Option        "XkbModel" "pc104"  
#EndSection

целиком, ибо они после установки HAL не должны играть роли.
5. Перезапустил демон hald командой:


/etc/init.d/hald restart

6. Перезапустил X-сервер.

Примечание: Я описал случай, когда на компьютере есть 3 раскладки клавиатуры: английская (us), русская (ru) и украинская (ua), а раскладка переключается сочетанием клавиш "Ctrl+Shift" как справа, так и слева.
Если такие параметры вам не подходят, то просто замените соответствующие пункты своими.

Не понял, а чем это от FAQ'а

Не понял, а чем это от FAQ'а отличается?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

make.conf

меня такой вопрос интересует.
в /etc/make.conf у меня INPUT_DEVICES="keyboard mouse"
xorg-server в USE флагах позволяет включить "keyboard mouse evdev"

теперь если мы глобально в make.conf выставляем "evdev"
и убираем "keyboard mouse"
после этого пересобираем мир с новым флагом и получим систему где все устройства ввода будут доступны исключительно через hal и правила.
я правильно понимаю?
и как после этого указывать раскладку в консоли?

В консоли раскладка

В консоли раскладка указывается в /etc/conf.d/keymaps. INPUT_DEVICES в make.conf вляет только на иксы

А что будет, если и клавиатура и мышь сидят на PS/2-USB адаптре?

А вот что будет. После того, как мы настраиваем hal, он может самостоятельно заполнять свойства xkb.* для МЫШИ, и более того, рассматривать ее как первую клавиатуру. По одному и тому же USB порту приходят также и прерывания от настоящей клавиатуры, поэтому собственно ничего страшного в этом нет... - до тех пор, пока нам не нужно настроить несколько раскладок. Для того, чтобы переключение раскладок заработало в этом случае, нужно писать настройки языков ввода, клавишь переключения и т.п. не только в раздел input.keyboard но и дублировать то же самое в input.mouse.
В моем случае это помогло, а случай у меня такой:
Мышь: Microsoft Mouse (USB) включена в USB-PS/2 адаптор, который в свою очередь включен в переключалку системных блоков iView, и оттуда уже через PS/2-USB адаптор подрубается к этому проклятому Dell-у.
Клавиатура: То же самое, кроме того, что она сразу была PS/2, и USB-PS/2 адаптер перед iView у нее отсутствует.

Кстати сказать, у меня Dell через раз клавиатуру биосом распознает, так что hal/edev rulezz )))

Случилось нечто подобное:

Случилось нечто подобное: после обновления иксов перестало работать переключение раскладок. hal не использую, вылечилось добавлением Option "AutoAddDevices" "false" в секцию Section "ServerLayout".
P.S. Если честно, не понимаю, зачем это делать через hal?

хех, некропостинг )

хех, некропостинг ) )
посмотрите на даты постов - поймете

Да я на всякий случай, чтоб

Да я на всякий случай, чтоб самому не забыть что делал :).

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".