Nobody about something

Включение тачпада, при отключении мыши

Написано 26 октября 2010 в 12:48 - Рубрики: *nix

Что-то захотелось мне сделать как на маках. Чтобы когда я вытыкаю мышь, тачпад включался. И наоборот.

Требования:

  1. Synaptics тачпад
  2. Xorg с поддержкой udev (1.8 и выше)
  3. Включённая в конфиге иксов опция SHMConfig для тачпада

Создал скрипт /usr/local/bin/touchpad который бы отключал тачпад. (разумеется, с правом исполнения).
Его содержимое:

#!/bin/sh
if [ -n "$1" ]; then
        USER=$(/usr/bin/who | /usr/bin/awk '$2 ~ /:0/ {print $1}');
        if [ "$1" = "1" -o "$1" = "0" ]; then
                /bin/su $USER -c "DISPLAY=:0 /usr/bin/synclient  TouchpadOff=$1"
        else
                /bin/su $USER -c "DISPLAY=:0 /usr/bin/synclient |grep TouchpadOff |sed -r 's/.*=\s+//g'"
        fi
fi

В конфиге иксов за тачпад и мышь отвечает вот такой кусок:

Section "InputClass"
  Identifier "synaptics-all"
  Driver "synaptics"
  Option "SHMConfig" "true"
  Option "HorizEdgeScroll" "0"
  Option "VertEdgeScroll" "1"
  Option "TapButton1" "1"
  Option "TouchpadOff" "1"
  Option "MaxSpeed" "0.3"
  Option "MinSpeed" "0.3"
  MatchIsTouchpad "on"
EndSection

Section "InputClass"
  Identifier "mouse-all"
  Driver "evdev"
  Option "ButtonMapping" "1 10 3 4 5 6 7 8 9 2 11 12"
  MatchIsPointer "on"
EndSectio

Затем создал файл /etc/udev/rules.d/01-touchpad.rules с таким содержимым:

ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse-all", RUN+="/usr/local/bin/touchpad 1"
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse-all", RUN+="/usr/local/bin/touchpad 0"

ENV{ID_CLASS} должен совпадать с Identifier в секции мыши

Далее ребут udev (/etc/init.d/udev restart) и вуаля

Метки: , , ,

Комментирование закрыто.