barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 3 января 2012 г.

Настройка тачпада Synaptics в Debian + XFCE

В Гноме тап по тачпаду "из коробки" работал как клик левой кнопкой мыши, в XFCE же почему-то - нет, что собственно и стало поводом поковыряться в конфигах иксов с целью настройки тачпада. Как ни странно, двухпальцевый скроллинг сразу же работал и там, и там (чего не было в Ubuntu, где приходилось ставить Synaptics`овскую утилиту для настройки), а вот поведение тапа двумя пальцами меня тоже не устраивало - оно воспринималось как правый клик, а мне хотелось бы чтобы как в винде - как клик центральной кнопкой, удобно открывать ссылки в браузере на новой вкладке =).
За основу была взята инструкция отсюда: http://www.crunchbang.ru/viewtopic.php?id=938, большое спасибо за неё автору. Я добавил в неё лишь двухпальцевый скроллинг, настройку тапа двумя пальцами и откалибровал скорость перемещения курсора.
Во-первых, убеждаемcя, что у нас действительно тачпад Synaptics:

root@eeedebian:/home/aspirin# egrep -i 'synap|alps|etps' /proc/bus/input/devices
N: Name="SynPS/2 Synaptics TouchPad"
Нам понадобиться модуль synaptics для иксов, поэтому он тоже должен быть установлен:
root@eeedebian:/home/aspirin# aptitude search xserver-xorg-input-synaptics
i A xserver-xorg-input-synaptics    - Synaptics TouchPad driver for X.Org server
p   xserver-xorg-input-synaptics-de - Synaptics TouchPad driver for X.Org server
В этот пакет также входит удобная утилита для мониторинга событий тачпада synclient, которая в дальнейшем пригодится.
Теперь идем в /etc/X11/xorg.conf. Если у Вас его нет - как его сгенерировать, я писал тут: http://barbitoff.blogspot.com/2011/06/touchscreen-egalax-eeepc-t101mt-debian.html, под пунктом 2. Там же написано, как перезапускать искы.
В xorg.conf добавляем следующие строчки (секции, которые уже имеются, добавлять нет необходимости - можно просто вставить в них ещё одну строчку):
Section "ServerLayout"
     InputDevice "Synaptics Touchpad" "SendCoreEvents"
EndSection
...
Section "Module"
Load "synaptics"
EndSection
...
Section "InputDevice"
  Identifier      "Synaptics Touchpad"
  Driver          "synaptics"
#  Option          "SendCoreEvents"        "true"
  Option          "Device"                "/dev/psaux"
  Option          "Protocol"              "auto-dev"
  Option          "HorizEdgeScroll"       "0" # выключаем скроллинг границами тачпада
  Option          "VertEdgeScroll"       "0" # выключаем скроллинг границами тачпада
  Option    "VertTwoFingerScroll" "1" # включаем двухпальцевый скроллинг
  Option  "HorizTwoFingerScroll" "1" # включаем двухпальцевый скроллинг
  Option  "EmulateTwoFingerMinW" "8" # если толщина больше 8 - значит 2 пальца (мой один палец вообще воспринимается не больше, чем 6)
  Option  "EmulateTwoFingerMinZ" "60" # при 70 иногда "проскальзывает", воспринимая 2 пальца за один
  Option          "SHMConfig"             "true"
  Option          "Emulate3Buttons"   "on"
  Option          "LeftEdge"      "1700"
  Option          "RightEdge"     "5300"
  Option          "TopEdge"       "1700"
  Option          "BottomEdge"    "4200"
  Option          "FingerLow"     "35"
  Option          "FingerHigh"    "40"
  Option          "MaxTapTime"    "180"
  Option          "MaxTapMove"    "220"
  Option          "VertScrollDelta" "100"
  Option          "HorizScrollDelta" "50"
  Option          "MinSpeed"      "0.24"
  Option          "MaxSpeed"      "0.48"
  Option          "AccelFactor" "0.00100"
  Option          "TapButton1" "1" #тап одним пальцем -> левый клик
  Option          "TapButton2" "2" #тап двумя пальцами -> центральный клик
  Option          "TapButton3" "3" #эх, жаль, что при эмуляции многопальцевости 3 пальца почему-то не детектируются, а то можно было бы на 3 пальца навесить правую кнопку мыши
EndSection


Собственно, что настроено вышеуказанным конфигом:
  • Выключена прокрутка краями тачпада, включена прокрутка двумя пальцами
  • Скорость движения курсора настраивается параметрами MinSpeed и MaxSpeed, тут уж, как говорится, на вкус и цвет.. Мне нравится, чтобы курсор бегал пошустрее (наверное из-за мыши с 3000dpi), так что я эти параметры увеличил.
  • Опция TapButton1 включила заветный левый клип по тапу одним пальцем
  • Опцией TapButton2 я включил нажатие центральной кнопки по тапу двумя пальцами. Тап 3 пальцами к сожалению не заработал, так как у моего тачпада родной поддержки многопальцевости видимо нет, а при эмуляции драйвер распознает только 2 пальца. 
Кстати об эмуляции: необходимость её использования определить просто: запускаем synclient -m 100, и нажимаем по тачпаду несколькоми пальцами стразу. Если в столбце "f" все время единица - значит тач не умеет определять многопальцевое нажатие. В таком случае продолжаем нажимать на тач то одним, то двумя пальцами, и смотреть на изменение значений в столбцах "w" (ширина нажатия) и "z" (сила нажатия). Наша задача - определить порог по ширине и силе нажатия, отличающий нажатие одного пальца от нажатий двух. Причем важнее всего именно параметр "w", так как сила может быть примерно одинаковой для обоих случаев. Для моих пальцев "w" при нажатии одним пальцем равняется 5, максимум 6, а двумя - не менее 10. Поэтому я взял на всякий случай пороговое значение 8, и присвоил его опции "EmulateTwoFingerMinW". В качестве "EmulateTwoFingerMinZ" я взял 60, хотя порой можно и одним пальцем с такой силой тыкнуть, но ложных срабатываний это не вызывает. А вот установка значения, скажем, 70, приводит иногда к тому, что двухпальцевый скроллинг воспринимается просто как перемещение курсора, если нажать с недостаточной силой. В принципе, при такой эмуляции многопальцевости не составило бы труда определять и нажатия тремя пальцами, установив соответствующий порог ширины нажатия, но программисты synaptics не стали с этим заморачиваться, а жаль.

После изменения конфига перезапускаем иксы и пробуем.

По всем опциям настройки тачпада есть неплохое описание в man synaptics, ещё пара полезностей (как, например, отключение тачпада при наборе на клавиатуре, что мне, лично, не нужно) достаточно доступно описана тут: http://www.crunchbang.ru/viewtopic.php?id=938, так что успехов =).

1 комментарий:

  1. На два пальца навесь просто правую кнопку, а центральную в топку.. кому она нужна...

    Option "TapButton2" "3"

    ОтветитьУдалить