15 июня 2009

новый xorg в Slackware-current

Итак Slackware-current получила новый Xorg и вместе с ним массу интереснейших эффектов, ну а я массу впечатлений.
Увидев столь существенные изменения в Changelog'е решил отложить обновление на праздники, и не прогадал.
Обновив все доступные пакеты, я попробовал загрузить новые иксы. И вот что из этого получилось.
Во первых "наконец-то" иксы собраны с жесткой привязкой к libhal.
Во вторых интереснейшим образом повели себя тачпад и клавиатура.
В третьих окончательно и бесповоротно отсох драйвер видеокарты (i810).

Для полноты картины:

Asus A3fc
GPU: intel 945GM
touchpad: synaptics

Начнем с третьего пункта, как наиболее радикального.
Со старым xorg.conf иксы работать не хотели ни в какую. Ничего страшного. Внесем исправления в секцию "Device", пропишем вместо i810 новый драйвер intel и вуаля.
Итак иксы загрузились. Однако в глаза бросилось "что-то не-то". Этим чем-то оказалось оказалось дефолтное DPI равное 86. А я привык к 96. Опция DisplaySize в xorg.conf признаков жизни не подавала, что с ней, что без нее DPI не изменялся.
Пришлось немного поизучать эту тему. Оказалось, что для некоторых карт в Xorg с версии 7.2 необходимо добавлять опция NoDDC в секцию Device.
Итого получилось вот что:

Section "Device"
Identifier "videocard"
VendorName "Intel"
BoardName "945 GPM"
Driver "intel"
BusId "PCI:0:2:0"
Option "DRI" "true"
Option "NoDDC"
Option "AccelMethod" "xaa"
EndSection

Видимо в новом Xorg изменился метод ускорения по-умолчанию. mplayer начал здорово тормозить.
Возвращаем старый метод ускорения XAA.

Переходим к пункту 2.
О клавиатуре. Нельзя сказать что она не работает. Работает все, но стрелочка вверх (up arrow) ведет себя как PrintScreen. Так как первое что я делаю загрузившись в иксы - это вызываю эмулятор терминала, в котором активно пользуюсь историей команд, то заметил такое, мягко говоря, странное поведение я мгновенно. Что же делать? Оказалось нужно отключить автоопределение устройств. Итак снова берем в руки vi и xorg.conf и добавляем в секцию ServerFlags новую опцию AutoAddDevices с значением false.

Section "ServerFlags"
...
Option "AutoAddDevices" "false"
...
EndSection

Кнопка вверх работает адекватно, и слава Богу.
По ходу дела выяснилось, что на три кнопки (Ctrl-Alt-Bksp) иксы больше не пошлешь, опция DontZap по умолчанию включена. Снова залезаем в xorg.conf в раздел ServerFlags и выставляем нужное:

Section "ServerFlags"
...
Option "DontZap" "false"
...
EndSection

Запускаем иксы, проверяем три кнопки. А вот и не работает. Пристальное изучение вопроса привело к XKB, а именно к опции terminate:ctrl_alt_bksp.
И снова открывает xorg.conf. На этот раз секцию InputDevice с описанием клавиатуры и добавляем нужное:

Section "InputDevice"
...
Option "XkbOptions" "grp:ctrl_shift_toggle,grp:switch,grp_led:scroll,terminate:ctrl_alt_bksp"
...
EndSection

Вот теперь клавиатура работает адекватно.

О тачпаде.
Тачпад работает, но довольно странно. Перестал работать горизонтальный и вертикальный скролл а также тыркание пальцем в поверхность (это должно было означать клик), ну и за компанию курсор стал передвигаться ОЧЕНЬ неторопливо.
Благо нашлась утилита synclient. Запущенная с опцией -l она показывает список настроек тачпада и позволяет их менять так сказать в реальном времени. После изучения вывода данной команды были обнаружены искомые опции и тут же проверены:

synclient VertEdgeScroll=1
synclient HorizEdgeScroll=1
synclient TapButton1=1

Помогло мгновенно. Скролл заработал, клик по поверхности тоже. И двойной и тройной.
Ну а чтобы вернуть приличную скорость курсору оказалось достаточным заменить мое старое описание тачпада на новое, взятое с gentoo-шного описания synclient'а. Метод гугления еще никто не отменял.
Было вот что:

Section "InputDevice"
Driver "synaptics"
Identifier "TouchPad1"
Option "Device" "/dev/input/mouse1"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.1"
Option "MaxSpeed" "0.3"
Option "AccelFactor" "0.01"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection

Стало вот так:

Section "InputDevice"
Identifier "TouchPad1"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "RightEdge" "5500" #This is a little bigger than the default narrowing the scroll region
Option "BottomEdge" "4500" #This is a little bigger than the default narrowing the scroll region
Option "RTCornerButton" "0" #disable Right Top corner "button"
Option "RBCornerButton" "0" #disable Right Bottom corner "button"
Option "SHMConfig" "on" #this allows configuration of the touchpad using qsynaptics, synclient, or what have you.
Option "VertEdgeScroll" "1"
Option "HorizEdgeScroll" "1"
Option "TapButton1" "1"
EndSection

Тачпад работает.

Ну и наконец первое.
Установить пакеты hal и hal-info, к сожалению, пришлось (все-таки в Slackware неудобно все пересобирать make world нет, да и понять зависимости можно только опытным путем). Однако после установки HAL'а я сразу же его отключил:

chmod -x /etc/rc.d/rc.hald

Полет нормальный.

Комментариев нет: