LINUX.ORG.RU

[hald новый xorg раскладки] наглый hald игнорирует мои настройки


0

0

Зравствуйте.

Обновил иксы до 1.5.3. Начитался «руководств» о том, что теперь устройства ввода настраиваются не в xorg.conf, а в /etc/hal/fdi/policy/*.fdi

Перепробовал всё, что пишут в этих руководствах, но в выводе lshal не поменялось ничего:

udi = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0_logicaldev_input'
  info.addons.singleton = {'hald-addon-input'} (string list)
  info.capabilities = {'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button'} (string list)
  info.category = 'input'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0'  (string)
  info.product = 'Logitech USB Receiver'  (string)
  info.subsystem = 'input'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0_logicaldev_input'  (string)
  input.device = '/dev/input/event2'  (string)
  input.originating_device = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0'  (string)
  input.product = 'Logitech USB Receiver'  (string)
  input.x11_driver = 'evdev'  (string)
  input.xkb.layout = 'us'  (string)
  input.xkb.model = 'evdev'  (string)
  input.xkb.rules = 'base'  (string)
  input.xkb.variant = ''  (string)
  linux.device_file = '/dev/input/event2'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  linux.subsystem = 'input'  (string)
  linux.sysfs_path = '/sys/class/input/input2/event2'  (string)

в текущий момент в файле /etc/hal/fdi/policy/10-x11-input.fdi у меня прописано так:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keymap">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
</match>

<match key="info.capabilities" contains="input.keyboard">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
<merge key="input.xkb.rules" type="string">base</merge>
<merge key="input.xkb.layout" type="string">us,ru</merge>
<merge key="input.xkb.options" type="string">grp:shift_caps_toggle,grp_led:scroll,caps:internal,compose:ralt</merge>
</match>
</device>
</deviceinfo>

Пробовал разные вариации, в том числе изменить файл /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi - на его изменение hald тоже не реагирует! Сейчас в нём прописано, в частности

<merge key="input.xkb.layout" type="string">us,ru</merge>

hald перезапускаю путём давания команды /etc/init.d/hald restart

Посоветуйте сделать что-нибудь, что поможет, пожалуйста.

★★

HAL package version: 0.5.11

name_no ★★
() автор топика

> hald перезапускаю путём давания команды /etc/init.d/hald restart

Клавиатуру перевтыкать пробовал? Я подозреваю, что хал не обновит информацию до переподключения девайса.
Для обновления "на лету" поменяй проперти с помощью hal-set-property.

p.s. да здравствует перанальная настройка иксов!

gaa ★★
()
Ответ на: комментарий от name_no

>> Клавиатуру перевтыкать пробовал?
> Перезагрузка подходит?


Мда, хреновенько...

Ну тогда засунь куда-нибудь при старте иксовой сессии:
setxkbmap -rules base -option grp:shift_caps_toggle -option grp_led:scroll -option caps:internal -option compose:ralt us,ru

gaa ★★
()
Ответ на: комментарий от name_no

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

sda00 ★★★
()
Ответ на: комментарий от name_no

А что это за дистр такой ?
(ну чтоб самому обходить его десятой дорогой :))))

elipse ★★★
()

у тебя не правильные опции, вот работающие для тебя:

<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
   <match key="info.capabilities" contains="input.keyboard">
        <merge key="input.x11_options.XkbModel" type="string">evdev</merge>
        <merge key="input.x11_options.XkbLayout" type="string">us,ru(winkeys)</merge>
        <merge key="input.x11_options.XkbOptions" type="strlist">grp:caps_toggle</merge>
                <append key="input.x11_options.XkbOptions" type="strlist">altwin:super_win</append>
                <append key="input.x11_options.XkbOptions" type="strlist">compose:menu</append>
        <merge key="input.x11_driver" type="string">evdev</merge>
   </match>
</deviceinfo>


видишь тут x11_options.XkbLayout а не input.xkb.layout. 
Опции как у тебя годятся когда драйвер не evdev а kbd.

sicus
()

> /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi

этоот файл менять не надо, все свои настройки клади в /etc/hal/fdi/policy.

sicus
()

>на его изменение hald тоже не реагирует!

имхо и не должен.

Dudraug ★★★★★
()
Ответ на: комментарий от sicus

Спасибо за совет, я это тоже пробовал. Вот иллюстрация:


======================
combine@mediacenter ~ $ cat /etc/hal/fdi/policy/10-x11-input.fdi
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
        <match key="info.capabilities" contains="input.keyboard">
                <merge key="input.x11_options.XkbModel" type="string">evdev</merge>
                <merge key="input.x11_options.XkbLayout" type="string">us,ru(winkeys)</merge>
                <merge key="input.x11_options.XkbOptions" type="strlist">grp:caps_toggle</merge>
                <append key="input.x11_options.XkbOptions" type="strlist">altwin:super_win</append>
                <append key="input.x11_options.XkbOptions" type="strlist">compose:menu</append>
                <merge key="input.x11_driver" type="string">evdev</merge>
        </match>
</deviceinfo>
combine@mediacenter ~ $ sudo /etc/init.d/hald restart
 * WARNING:  you are stopping a boot service.
 * Stopping Hardware Abstraction Layer daemon ...                                                   [ ok ]
 * Starting Hardware Abstraction Layer daemon ...                                                   [ ok ]
combine@mediacenter ~ $ lshal | grep keyboard | wc -l
1
combine@mediacenter ~ $ lshal -u /org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0_logicaldev_input
udi = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0_logicaldev_input
'
  info.addons.singleton = {'hald-addon-input'} (string list)
  info.capabilities = {'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button'} (string list)
  info.category = 'input'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0'  (string)
  info.product = 'Logitech USB Receiver'  (string)
  info.subsystem = 'input'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0_logicaldev_input
'  (string)
  input.device = '/dev/input/event2'  (string)
  input.originating_device = '/org/freedesktop/Hal/devices/usb_device_46d_c517_noserial_if0'  (string)
  input.product = 'Logitech USB Receiver'  (string)
  input.x11_driver = 'evdev'  (string)
  input.xkb.layout = 'us'  (string)
  input.xkb.model = 'evdev'  (string)
  input.xkb.rules = 'base'  (string)
  input.xkb.variant = ''  (string)
  linux.device_file = '/dev/input/event2'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  linux.subsystem = 'input'  (string)
  linux.sysfs_path = '/sys/class/input/input2/event2'  (string)

combine@mediacenter ~ $     

========================

как видим, коварный hald продолжает меня игнорировать.

name_no ★★
() автор топика
Ответ на: комментарий от name_no

У меня вообще настройки hal не применялись после restart. делал init 1 потом init 2. Делай так после всех изменений.

Dudraug ★★★★★
()
Ответ на: комментарий от name_no

А вообще дистры обычно при установке спрашивают как настроить или при обновление иксов и хала, хал сам подхватывает старые настройки.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

> делал init 1 потом init 2. Делай так после всех изменений.

тут даже ребут не помогает...

name_no ★★
() автор топика

Еще должны отсутствовать секции для клавы и мышки в xorg.conf. Ну это так к слову. Но на вывод lshal это не должно влиять никак.

sicus
()
Ответ на: комментарий от sicus

> Еще должны отсутствовать секции для клавы и мышки в xorg.conf.

не обязательно:


less /var/log/Xorg.0.log

======
(WW) AllowEmptyInput is on, devices using drivers 'kbd' or 'mouse' will be disabled.
(WW) Disabling Keyboard0
(WW) Disabling Mouse0
======

name_no ★★
() автор топика
Ответ на: комментарий от name_no

> http://market.yandex.ru/model.xml?hid=723088&modelid=2107297


понятно, значит USB-receiver, это мышка и клава?! ну, видимо, хал не может понять как ему на юсбресивер воткнуть опции из input.fdi.

надо поискать в гугле, тут врядли у кого такое было.

sicus
()
Ответ на: комментарий от sicus

> видимо, хал не может понять как ему на юсбресивер воткнуть опции из input.fdi.

Он же абсолютно не смотрит названия файлов. Правило из строки match совпадает. Вручную (командой hal-set-property) параметры устанавливаются. Вообще, я тоже уже сдаюсь. В гугле ни у кого такого не было. При сборке hal портеж выдаёт советы:

* If you wish to use a non US layout, you may do so by executing:
* setxkbmap <layout> or by utilizing your Desktop Environment's
* Keyboard Layout Settings mechanism.
* Under GNOME, this is gnome-keyboard-properties, and under KDE
* it is kxkb.

так что придётся писать setxkbmap в скрипты...

name_no ★★
() автор топика
Ответ на: комментарий от sicus

Да, забыл добавить, есть второй комп, клава PS/2, на нём та же фигня

name_no ★★
() автор топика
Ответ на: комментарий от name_no

может поможет чем:
abook:~# eselect news read 2009-04-06-x_server-1_5
2009-04-06-x_server-1_5
  Title                      Migration to X.org Server 1.5
  Author                     Remi Cardona <remi@gentoo.org>
  Author                     Christian Faulhammer <fauli@gentoo.org>
  Posted                     2009-04-06
  Revision                   1

A lot of changes regarding device recognition and use by the X server
have been introduced in the 1.5 update.  As that version is going
stable on all architectures, users should read the upgrade guide [0]
before actually updating the package.

[0] http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-1.5-upgrade-guide.xml

sicus
()
Ответ на: комментарий от sicus

> может поможет чем

Это я прочитал до того, как обновил иксы. Прочитал и понял, что всё очень просто, можно обновлять :-)

name_no ★★
() автор топика

avp@arch:~$cat /etc/hal/fdi/policy/10-keymap.fdi
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keymap">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
</match>

<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.rules" type="string">base</merge>

<!-- If we're using Linux, we use evdev by default (falling back to
keyboard otherwise). -->
<merge key="input.xkb.model" type="string">keyboard</merge>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
string="Linux">
<merge key="input.xkb.model" type="string">evdev</merge>
</match>

<merge key="input.xkb.layout" type="string">us,ru</merge>
<merge key="input.xkb.options" type="string">grp:alt_shift_toggle</merge>
<merge key="input.xkb.variant" type="string">,winkeys</merge>
</match>
</device>
</deviceinfo>

avp@arch:~$cat /etc/hal/fdi/policy/10-x11-input.fdi
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.keys">
<!-- <merge key="input.x11_driver" type="string">kbd</merge>-->
<merge key="input.xkb.rules" type="string">xorg</merge>
<merge key="input.xkb.layout" type="string">us,ru(winkeys)</merge>
<!-- Option "XkbModel" "pc104" -->
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.variant" type="string">,winkeys</merge>
<merge key="input.xkb.options" type="strlist">grp:alt_shift_toggle</merge>
<append key="input.xkb.options" type="strlist">grp:switch</append>
</match>
</deviceinfo>
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbRules" type="string">xorg</merge>
<merge key="input.x11_options.XkbModel" type="string">evdev</merge>
<merge key="input.x11_options.AutoRepeat" type="string">500 30</merge>
<merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
<merge key="input.x11_options.XkbVariant" type="string">,winkeys</merge>
<merge key="input.x11_options.XkbOptions" type="strlist">grp:alt_shift_toggle</merge>
<append key="input.xkb.options" type="strlist">grp:switch</append>
</match>
</deviceinfo>

tmp_do
()
Ответ на: комментарий от sicus

Ночь пройдёт, наступит утро ясное. Правила подцепил. Он сволочь. Я ничего не делал, тупо спал.

name_no ★★
() автор топика
Ответ на: комментарий от sicus

Только что понял, в чём дело. Там файлик лежал:

/etc/hal/fdi/policy/.keep_sys-apps_hal-0

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

Хоть бы одна собака о таком файлике заикнулась

name_no ★★
() автор топика
Ответ на: комментарий от name_no

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

prof-alex
()
Ответ на: комментарий от gaa

Все беды в иксах начались, когда хфрее форканули в хорг. И опрос на ЛОРе поменяли...

svu ★★★★★
()
Ответ на: комментарий от prof-alex

> Должны игнорировать, стоит отписаться в гентушной бугзилле.

а я уж грешным делом подумал, что это фича, и пытался понять, зачем так делать...

name_no ★★
() автор топика
Ответ на: комментарий от name_no

Ненене это ж файл говорит чтоб папку не удаляли. А после экспериментов (кстати тоже в генту) выяснилось что правила hal после restart нифига не хватает (т.е. по lshal они конечно отображаются, но не действуют), а применяются они только если сперва сделать /etc/init.d/hald restart, а потом перезапустить X сервер (ctrl-alt-backspace). Причем если перезапускать только иксы, хал не трогая, помогает не всегда!)

yytreop
()

Имею ту же проблему на stable Gentoo.
Что имеется.
$ cat /etc/hal/fdi/policy/10-x11-input.fdi
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
   <match key="info.capabilities" contains="input.keyboard">
        <merge key="input.x11_options.XkbRules" type="string">evdev</merge>
        <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
        <merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
        <merge key="input.x11_options.XkbVariant" type="string">,winkeys</merge>
        <merge key="input.x11_options.XkbOptions" type="strlist">grp:alt_shift_toggle</merge>
                <append key="input.x11_options.XkbOptions" type="strlist">grp_led:scroll</append>
                <append key="input.x11_options.XkbOptions" type="strlist">caps:shift</append>
        <merge key="input.x11_driver" type="string">evdev</merge>
   </match>
</deviceinfo>

$ cat /etc/hal/fdi/policy/10-keymap.fdi
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keymap">
      <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
    </match>

    <match key="info.capabilities" contains="input.keys">
      <merge key="input.xkb.rules" type="string">evdev</merge>
      <merge key="input.xkb.model" type="string">pc105</merge>
      <merge key="input.xkb.layout" type="string">us,ru</merge>
      <merge key="input.xkb.options" type="string">grp:alt_shift_toggle,grp_led:scroll,caps:shift</merge>
      <merge key="input.xkb.variant" type="string">,winkeys</merge>
    </match>
  </device>
</deviceinfo>

Наличие в директории лишь одного из них никак не сказывается на неработоспособности.
Файлы .xsesion и .xsessionrc - удалены.

Вывод разных команд.
$ setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete+caps(shift)+numpad(microsoft)"        };
        xkb_compat    { include "complete+ledscroll(group_lock)"        };
        xkb_symbols   { include "pc+us+inet(evdev)+altwin(menu)+group(alt_shift_toggle)"        };
        xkb_geometry  { include "pc(pc105)"     };
};

$ lshal
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input'
  info.addons.singleton = {'hald-addon-input'} (string list)
  info.callouts.add = {'hal-setup-keymap', 'hal-setup-keymap'} (string list)
  info.capabilities = {'input', 'input.keyboard', 'input.keypad', 'input.keys', 'input.keymap', 'button'} (string list)
  info.category = 'input'  (string)
  info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port'  (string)
  info.product = 'AT Translated Set 2 keyboard'  (string)
  info.subsystem = 'input'  (string)
  info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input'  (string)
  input.device = '/dev/input/event3'  (string)
  input.keymap.data = {'e001:fn_esc', 'e009:battery', 'e00a:screenlock', 'e00b:camera', 'e00c:media', 'e00e:dvd', 'e031:help', 'e033:f21', 'e057:wlan', 'e008:presentation', 'e059:help'} (string list)
  input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port'  (string)
  input.product = 'AT Translated Set 2 keyboard'  (string)
  input.x11_driver = 'evdev'  (string)
  input.x11_options.XkbLayout = 'us,ru'  (string)
  input.x11_options.XkbModel = 'pc105'  (string)
  input.x11_options.XkbOptions = {'grp:alt_shift_toggle', 'grp_led:scroll', 'caps:shift'} (string list)
  input.x11_options.XkbRules = 'evdev'  (string)
  input.x11_options.XkbVariant = ',winkeys'  (string)
  input.xkb.layout = 'us,ru'  (string)
  input.xkb.model = 'pc105'  (string)
  input.xkb.options = 'grp:alt_shift_toggle,grp_led:scroll,caps:shift'  (string)
  input.xkb.rules = 'evdev'  (string)
  input.xkb.variant = ',winkeys'  (string)
  linux.device_file = '/dev/input/event3'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  linux.subsystem = 'input'  (string)
  linux.sysfs_path = '/sys/devices/platform/i8042/serio0/input/input3/event3'  (string)

В файле /etc/X11/xorg.conf отсутствуют секции с InputDevice.
Имеется секция
Section "ServerFlags"
        Option "AllowEmptyInput" "True"
        Option  "AllowMouseOpenFail" "True"
EndSection
В /var/log/Xorg.0.log ошибок не отмечено. Имеется следующее:
(II) config/hal: Adding input device AT Translated Set 2 keyboard
(**) AT Translated Set 2 keyboard: always reports core events
(**) AT Translated Set 2 keyboard: Device: "/dev/input/event3"
(II) AT Translated Set 2 keyboard: Found keys
(II) AT Translated Set 2 keyboard: Configuring as keyboard
(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
(**) Option "xkb_rules" "evdev"
(**) Option "xkb_model" "pc105"
(**) Option "xkb_layout" "us,ru"
(**) Option "xkb_variant" ",winkeys"
(**) Option "xkb_options" "grp:alt_shift_toggle,grp_led:scroll,caps:shift"

Клавиатура ноутбучная. Заметил следкющее: когда грузится KDE (xdm=kdm), то в сохранённой сессии у меня есть консоль. В ней какое-то время во время загрузки клавиатура работатет, т.к. работает клавиша вверх в истории. Потом перестаёт. Где ещё порыться?
Для меня загадка в /var/log/kdm.log
X.Org X Server 1.5.3
Release Date: 5 November 2008
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.28-gentoo-r5 x86_64
Current Operating System: Linux nf-100-28 2.6.28-gentoo-r5 #1 PREEMPT Fri Apr 24 15:21:52 MSD 2009 x86_64
Build Date: 28 April 2009  03:16:36PM

        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Wed Apr 29 12:49:13 2009
(==) Using config file: "/etc/X11/xorg.conf"
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Multiple definitions of the FOUR_LEVEL_KEYPAD key type
>                   Earlier definition ignored
Errors from xkbcomp are not fatal to the X server
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Multiple definitions of the FOUR_LEVEL_KEYPAD key type
>                   Earlier definition ignored
Errors from xkbcomp are not fatal to the X server
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Multiple definitions of the FOUR_LEVEL_KEYPAD key type
>                   Earlier definition ignored
Errors from xkbcomp are not fatal to the X server

KBAKEP
()
Ответ на: комментарий от KBAKEP

Мда. Нашёл. В настройках раскладки клавиатуры в KDE в параметрах XKB было активировано "использовать переключатели XKB". Убрал галку и всё заработало.

KBAKEP
()
Ответ на: комментарий от KBAKEP

Опять клавиатура не работает. На этот раз ошибок нигде не наблюдаю. Где ещё копать?

KBAKEP
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.