Wszystko wykonujemy z root'a:
EDIT
########################################################## Zmiana koncepcji. #################################################################
Cały czas podnoszę kernel wraz z current paczkami, i zauważam przy wielu modyfikacjach Xorga Display itp problemy z odwoływaniem się do xinputa itp. Odwoływanie się do zewnętrznych skomplikowanych skryptów, które i tak wymagają znów dostępu do display zmusiły mnie do zmiany koncepcji. Może trochę brutalnie, jednak będziemy na czas wyłączenia touchpada wywalać psmouse z modproba.
Sprawa wygląda dużo prościej niż w poprzedniej koncepcji.
Edytujemy/tworzymy plik /etc/udev/rules.d/90-disable_touchpad.rules i wrzucamy do niego
Kod: Zaznacz cały
ACTION=="add", KERNELS=="input*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_PATH}!="platform-i8042-serio-1", RUN+="/sbin/modprobe -r psmouse"
ACTION=="remove", KERNELS=="input*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_PATH}!="platform-i8042-serio-1", RUN+="/sbin/modprobe psmouse"
Kod: Zaznacz cały
udevadm control --reload-rules
Dodatkowe informacje / wyjaśnienia
Jak widzimy w regule, dzielimy eventy na dwie pozycje Add oraz Remove, dochodzi warunek input. ID_INPUT_MOUSE wynika z informacji uzyskanych z polecenia
Kod: Zaznacz cały
udevadm info --query=all --name=/dev/input/mouse1
Pozdr.
######################################################################################################################################
########################################################## Old Version #################################################################
Tworzymy plik /etc/udev/rules.d/90-disable_touchpad.rules i wrzucamy zawartość:
Kod: Zaznacz cały
ACTION=="change",
SUBSYSTEM=="input",
RUN+="/bin/sh /usr/bin/mouse_test.sh"
Kod: Zaznacz cały
#!/bin/sh
export DISPLAY=:0
export XAUTHORITY=$(ps wwwwaux | grep auth|grep "/usr/bin/X"|awk '{print $20}')
if lsusb -v|grep -iq mouse;then
xinput --set-prop "PS/2 Generic Mouse" "Device Enabled" 0
synclient TouchpadOff=1
else
xinput --set-prop "PS/2 Generic Mouse" "Device Enabled" 1
synclient TouchpadOff=0
fi
Kod: Zaznacz cały
chmod +x /usr/bin/mouse_test.sh
/etc/rc.d/rc.udev reload
Parę uwag: W zależności od sterownika touchpada są dwie różne możliwości wyłączania touchpada w systemie 1. synclient oraz 2.xinput. Jeśli działa jedna, to druga nie, tak więc by było uniwersalnie dla każdego, nie rozwodziłem się na dodatkowe zależności w skrypcie.
Enjoy!
EDIT
#################################### Sam pomysł bardzo mocno zwalnia uruchamianie systemu. Moja propozycja ####################################
/etc/rc.d/rc.mouse_auto
Kod: Zaznacz cały
#!/bin/sh
start() {
if [ -f /etc/udev/90-disable_touchpad.rules ];then
mv /etc/udev/90-disable_touchpad.rules /etc/udev/rules.d/90-disable_touchpad.rules;
else
echo 'ACTION=="change",
SUBSYSTEM=="input",
RUN+="/bin/sh /usr/bin/mouse_test.sh"
' > /etc/udev/rules.d/90-disable_touchpad.rules
fi
/etc/rc.d/rc.udev force-restart > /dev/null
/sbin/mouse_test.sh
echo 'Mouse auto switch daemon Turn ON'
}
stop() {
if [ -f /etc/udev/rules.d/90-disable_touchpad.rules ];then mv /etc/udev/rules.d/90-disable_touchpad.rules /etc/udev/90-disable_touchpad.rules;fi
# /etc/rc.d/rc.udev force-restart > /dev/null
echo 'Mouse auto switch daemon Turn OFF'
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
Kod: Zaznacz cały
/etc/rc.d/rc.mouse_auto start
Kod: Zaznacz cały
/etc/rc.d/rc.mouse_auto stop
Tags: Auto Switch Off Touchpad With External Mouse | wylaczenie touchpad | Automatyczne wylaczenie touchpad | linux touchpad i myszka | linux touchpad with mouse | how to disable touchpad | disable touchpad