Od pewnego czasu mam nowy komputer. Laptopa Toshiba Satellite pro L20-102 wymieniono mi na Satellite a200-1iw . Dla zainteresowanych; jest to dość spory skok technologiczny. Ale nie o tym będzie traktował ten wpis. Jednym z wielu problemów jaki miałem to to iż nie mogłem wyłączyć touchpada poprzez ACPI. Jak to zazwyczaj bywa z „linuksem”, system ten daje sporo możliwości. Na początek instalujemy sterownik synaptics. Można go znaleźć w każdej dystrybucji. U mnie w Archu jest to paczka extra/synaptics 0.14.6.99-1.
Po instalacji zaczynamy konfigurację xów. Osobiście polecam używanie w laptopach sterownika synaptics w połączeniu z evdev aby mieć możliwość automatycznego wykrywania urządzeń HID. O tym będzie kolejny wpis.
Oto wycinek mojego xorg.conf:
Section “InputDevice”
Identifier “Synaptics TouchPad”
Driver “synaptics”
Option “Device” “/dev/psaux”
Option “Protocol” “auto-dev”
Option “LeftEdge” “0″
Option “RightEdge” “5000″
Option “TopEdge” “2000″
Option “BottomEdge” “4000″
Option “FingerLow” “30″
Option “FingerHigh” “30″
Option “MaxTapTime” “130″
Option “MaxTapMove” “220″
Option “VertScrollDelta” “100″
Option “HorizScrollDelta” “0″
Option “MinSpeed” “0.06″
Option “MaxSpeed” “0.15″
Option “AccelFactor” “0.009″
Option “SHMConfig” “true”
EndSectionSection “ServerLayout”
# InputDevice “Mouse1″ “CorePointer”
InputDevice “Synaptics TouchPad” “CorePointer”
….
EndSection
Teraz małe skrypcenie. Jak włączać i wyłączać touchpada. Metoda jest prosta :
#!/bin/bash
#touchpadonoff
stan=`synclient -l | grep TouchpadOff | awk ‘{print $3}’`
if [ $stan == “0″ ]; then
synclient TouchpadOff=1
elif [ $stan == “1″ ]; then
synclient TouchpadOff=0
fi
Jeżeli wykonamy skrypt to touchpad zmieni stan z włączonego na wyłączony i odwrotnie. Teraz tylko możemy już sobie podbindować to pod jakiś program lub klawisz i gotowe.
A co jeżeli chcemy aby po podłączeniu zewnętrznej myszki touchpad automatycznie nam się wyłączał. Piszemy inny skrypt i dodajemy go do autostartu albo .xinit`a . Poniższy skrypt w pythonie sprawdza w pętli czy nie podłączyliśmy jakiejś myszli a jeżeli tak to wyłącza touchpada.
#! /usr/bin/python
#touchpaddetect
import os
import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
system_bus = dbus.SystemBus()
def device_removed(device_name):
global hal, initial_mice
mice = hal.FindDeviceByCapability(”input.mouse”)
# initial_mice
if device_name in mice or device_name in initial_mice:
enable_trackpad()
def device_added(device_name):
global hal, initial_mice
mice = hal.FindDeviceByCapability(”input.mouse”)
if device_name in mice or device_name in initial_mice:
disable_trackpad()
def enable_trackpad():
os.system(”synclient TouchpadOff=0″)
def disable_trackpad():
os.system(”synclient TouchpadOff=1″)
system_bus.add_signal_receiver(
handler_function=device_removed,
signal_name=”DeviceRemoved”,
path=”/org/freedesktop/Hal/Manager”,
dbus_interface=”org.freedesktop.Hal.Manager” )
system_bus.add_signal_receiver(
handler_function=device_added,
signal_name=”DeviceAdded”,
path=”/org/freedesktop/Hal/Manager”,
dbus_interface=”org.freedesktop.Hal.Manager” )
hal = system_bus.get_object(’org.freedesktop.Hal’, ‘/org/freedesktop/Hal/Manager’)
initial_mice = hal.FindDeviceByCapability(”input.mouse”)
# see how many mice we have when we start up.
if len(initial_mice) == 1:
enable_trackpad()
else:
disable_trackpad()
loop = gobject.MainLoop()
loop.run()
Mamy już automatyczne włączanie i wyłączanie touchpada oraz mały skrypt do ręcznej zmiany stanu. Wypadało by podpiąć pierwszy mały skrypcik pod jakiś klawisz. Do tego potrzebne nam będą : xev którym wykryjemy kod klawisza oraz xmodmap który przypisze nam nazwę danemu klawiszowi.
Przykładowy plik konfiguracyjny .xmodmap znajdujący się u mnie w katalogu domowym.
keycode 174 = XF86AudioRaiseVolume
keycode 176 = XF86AudioLowerVolume
keycode 222 = XF86Standby
keycode 178 = XF86WWW
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
Teraz zostało nam przypisać do danego klawisza wykonywaną przez niego akcję. Ja użyłem do tego xbindkeys ale znak kilka innych narzędzi radzących sobie tak samo.
Przykładowy wycinek pliku konfiguracyjnego .xbindkeysrc :
“touchpadonoff”
XF86WWW
Może są metody łatwiejsze i szybsze ale wszystkie wymienione programy znajdują się standardowo w dystrybujcji i są częścią projektu xów.
Sphere: Related Content