Portál AbcLinuxu, 12. května 2025 01:45
Aug 7 08:21:44 1201N martin: Touchpad is: Aug 7 08:21:44 1201N martin: Error in parsing synclient!!!
#!/bin/sh case "$1" in hotkey) case "$3" in 00000037) TOUCHPAD=`synclient -l | grep TouchpadOff | awk '{print $3}'` logger "Touchpad: $TOUCHPAD" case "$TOUCHPAD" in 0) echo 0 > /sys/class/leds/eeepc::touchpad/brightness synclient TouchpadOff=1 unclutter -idle 2 -root & notify-send "Touchpad is OFF" ;; 1) echo 1 > /sys/class/leds/eeepc::touchpad/brightness synclient TouchpadOff=0 pkill unclutter notify-send "Touchpad is ON" ;; *) logger "Error in parsing synclient !!!" ;; esac ;; *) logger "Unknown Media Key: $1 / $2 / $3" ;; ..... atd, atd
#!/bin/sh TOUCHPAD=`synclient -l | grep TouchpadOff | awk '{print $3}'` echo $TOUCHPAD
Bolo by vhodne sem dat cely skript, tak ako je a nie len cast.
Ono to funguje, len si tam spravil chybu. Odkazujes na 3. (slovom treti) argument namiesto 2 v sekcii pre hotkey. :)
#!/bin/sh # Default acpi script that takes an entry for all actions minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq` maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq` setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" set $* case "$1" in hotkey) # povodny zapis # case "$3" in case "$2" in 00000037) TOUCHPAD=`synclient -l | grep TouchpadOff | awk '{print $3}'` logger "Touchpad is: $TOUCHPAD" case "$TOUCHPAD" in 0) echo 0 > /sys/class/leds/eeepc::touchpad/brightness synclient TouchpadOff=1 unclutter -idle 2 -root & logger "Touchpad si ON" ;; 1) echo 1 > /sys/class/leds/eeepc::touchpad/brightness synclient TouchpadOff=0 pkill unclutter logger "Touchpad is OFF" ;; *) logger "Error in parsing synclient!!!" ;; esac ;; *) logger "Unknown mediakey $1 / $2 / $3 / $4" ;; esac ;; button/mute) case "$2" in MUTE) logger "Mute button pressed: $2" amixer set Master toggle ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/volumedown) case "$2" in VOLDN) amixer set Master 2dB- unmute ;; *) logger "ACPI error volumedown" ;; esac ;; button/volumeup) case "$2" in VOLUP) amixer set Master 2dB+ unmute ;; *) logger "ACPI Error volumeup" ;; esac ;; button/power) case "$2" in PBTN|PWRF) logger "PowerButton pressed: $2" poweroff ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/sleep) case "$2" in SLPB|SBTN) echo -n mem >/sys/power/state ;; *) logger "ACPI action undefined: $2" ;; esac ;; ac_adapter) case "$2" in AC|ACAD|ADP0) case "$4" in 00000000) echo -n $minspeed >$setspeed #/etc/laptop-mode/laptop-mode start ;; 00000001) echo -n $maxspeed >$setspeed #/etc/laptop-mode/laptop-mode stop ;; esac ;; *) logger "ACPI action undefined: $2" ;; esac ;; battery) case "$2" in BAT0) case "$4" in 00000000) logger 'Battery online' ;; 00000001) logger 'Battery offline' ;; esac ;; CPU0) ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/lid) case "$3" in close) logger 'LID closed' ;; open) logger 'LID opened' ;; *) logger "ACPI action undefined: $3" ;; esac ;; *) logger "ACPI group/action undefined: $1 / $2 / $3 / $4" ;; esac # vim:set ts=4 sw=4 ft=sh et:
A mozno je to sprostost, co som napisal. Ale podstata je, ze by bolo viac nez vhodne skontrolovat, ake argumenty sa pouzivaju. Daj si tam kontrolne body, napr. echo $3 pred case a tak podobne, pripadne echo $@ alebo najlepsie obe.
synclient -l | grep TouchpadOff > /nekam/kde/lze/zapisovat/ttest1 2> /nekam/kde/lze/zapisovat/ttest1_err synclient -l > /nekam/kde/lze/zapisovat/ttest2 2> /nekam/kde/lze/zapisovat/ttest2_errpřed
TOUCHPAD=`synclient -l …
a stisknout a juknout do těch souborů.case
vypsal parametry, klidně třeba
echo "Vstupní parametry '$1' '$2' '$3'" > /nekam/kde/lze/zapisovat/ttest0Samozřejmně můžete všechno do jednoho souboru pomocí >> to už je na Vás.
/usr/bin/synclient
, a vemte v potaz že ten acpi skript se pouští pod rootem.
export XAUTHORITY=/home/martin/.Xauthority export DISPLAY=":0"
ttest1_err
a ttest2_err
,synclient
nastavuje touchpad pro X-ka a musí komunikovat z Xserverem a musí vědět komu to nastavuje, tedy i kterou xseesion, a v .xauthority je uložena cookie, přes kterou se synclient autorizuje vůči Xserveru a tím vlastně komunikuje pod rolí určenou v .xauthority a tím pádem nastaví touchpad pro vaši session.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.