Portál AbcLinuxu, 7. května 2025 19:55

Dotaz: Acpi a synclient

10.6.2010 11:30 Šákul | skóre: 2
Acpi a synclient
Přečteno: 196×
Odpovědět | Admin
Ahoj na notebooku IBM TP T40p se snažím rozchodit vypínání touchpadu přes ACPI. Toggle skript mi funguje pokud ho spustím ručně z bashe. Pokud do skriptu přidám něco navíc například xscreensaver-command -lock, tak mi to obrazovku zamkne (i přes acpi), ale touchad je stále vypnutý nebo zapnutý. Distro mám gentoo. Díky za rady
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.6.2010 15:42 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Odpovědět | | Sbalit | Link | Blokovat | Admin
A pokud skript spustíte jako root? (Přes acpi se také nespouští pod vaším uživatelem...). Může to být podobný problém jako při spouštění z cronu, zkuste si vypsat něco do nějakého souboru/logu, třeba synclient -l nebo návratovou hodnotu po synclient TouchpadOff=1; echo $? > soubor.log.
10.6.2010 18:29 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
I pokud se přepnu přes su na roota, tak mi skript funguje a touchpad zapíná nebo vypíná.
10.6.2010 19:41 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
A ten zbytek? synclient -l přes acpi funguje? synclient TouchpaddOff=1 vrací nulu?
10.6.2010 20:58 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
Vrací 1.
10.6.2010 21:35 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Hm, tak je to rozbitý. A žádné chybové hlášení nevypíše? Jenom vrátí 1? (Jinak se omlouvám za překlep ve slově Touchpadd).
10.6.2010 21:42 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
Do logu to hodi jen tu 1. nic vic. Kdyz se kouknu do /var/log/messages, tak to pise unhandled event.
10.6.2010 22:33 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Standardní i chybový výstup byste do logu musel přesměrovat

synclient TouchpadOff=1 > soubor.log 2>&1

ale mně to chyby píše na standardní výstup, tak v tom asi problém nebyl.

unhandled event by asi nevadila, pokud se vám ten handler spouští tak to je hlavní.

Není možné že se to třeba vypne a hned zase zapne? Já mám svůj handler přibližně takto:
if (synclient -l | grep -e "TouchpadOff" | grep -e "0" > /dev/null) ; then
  synclient TouchpadOff=1
else
  synclient TouchpadOff=0
fi
if (synclient -l | grep -e "TouchpadOff" | grep -e "0" > /dev/null) ; then
  message="Touchpad is On"
else
  message="Touchpad is Off"
fi
echo "$message" > soubor.log
10.6.2010 22:36 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Jo ale zapomněl jsem že vám synclient vrací 1, takže prostě z nějakého důvodu nefunguje... Takže to nebude problém vypnout/zapnout.
10.6.2010 23:23 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
Tak synclient se nemuze pripojit k xserveru. Proc, ale netusim.
11.6.2010 06:11 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Dát hlášku do Google nepomohlo? Co třeba synclient -s? synclient connect to x server
11.6.2010 14:19 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
synclient -s vypisuje nápovědu k příkazu.
11.6.2010 17:16 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Souhlasí, také mám verzi bez -s. Ještě mne napadá, pokud víte (jak vlastně, nějaké hlášení?) že se nemůže spojit s X serverem, tak mrkněte jestli máte v /etc/X11/xorg.conf SHMConfig true. V manu sice píší jen o -m a -h, ale pokud třeba by to pomohlo.

For the -m and -h options, SHM must be enabled by setting the option SHMConfig "on" in your XOrg/XFree86 configuration.
11.6.2010 17:18 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
A nebo třeba zkuste emergnout jinou verzi (nebo překompilovat starou) xf86-input-synaptics no... Pokud jste třeba upgradoval Xorg, tak je dobré překompilovat x11-drivers (seznam: qlist -I -C x11-drivers).
11.6.2010 11:37 koso
Rozbalit Rozbalit vše Re: Acpi a synclient
Skuste upravit moj script:

#!/bin/bash

. /usr/share/acpi-support/power-funcs

getXconsole

STATUS=$(synclient -l | grep TouchpadOff | awk '{ print $3 }')

if [ "$STATUS" = '0' ]; then logger "[Fn-F8] Touchpad disabled"; synclient TouchpadOff=1; su $user -c "notify-send ThinkPad 'Touchpad disabled' -i touchpad -t 1000"

else logger "[Fn-F8] Touchpad enabled"; synclient TouchpadOff=0; su $user -c "notify-send ThinkPad 'Touchpad enabled' -i touchpad -t 1000" fi

Problem je pravdepodobne s xserverom, kedze root nema pristup k premenym prostredia, ktore pouziva uzivatel. Vsetko by mali poriesit funkcie dosutpne s acpi (tie includy na uvod). V scripte mate navyse ukazku, ako moze script zobrazit notifikacie priamo na desktope prihlaseneho uzivatela.
13.6.2010 20:08 Šákul | skóre: 2
Rozbalit Rozbalit vše Re: Acpi a synclient
Díky toto pomohlo. Jen jsem se chvíli trápil s acpi-support v gentoo, pak jsem stáhnul balík pro ubuntu a nakopíroval ty funkce z něj....
13.6.2010 21:58 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Acpi a synclient
Já používám těchto pár řádků, ale ono to asi bude podobné:
getXuser() {
  user=$(who | grep -m1 ":$displaynum " | cut -d\  -f 1)
  if [[ -z "$user" ]]; then
    user=$(who | grep -m1 ":$displaynum" | cut -d\  -f 1)
  fi
  if [[ -n "$user" ]]; then
    userhome=$(getent passwd $user | cut -d: -f6)
    export XAUTHORITY=$userhome/.Xauthority
  else
    export XAUTHORITY="$(ps -C X f | tail -n 1 | sed -n -r 's/^.* -auth ([^ ]+) .*$/\1/gp')"
  fi
}

#Find the right XServer to be configured.
for x in /tmp/.X11-unix/*; do
  displaynum=$(sed s,/tmp/.X11-unix/X,, <<<"$x")
  getXuser;
  if [[ -n "$XAUTHORITY" ]]; then
    export DISPLAY=":$displaynum"
  fi
done
neuvědomil jsem si, že díky tomu for cyklu se mi XAUTHORITY a DISPLAY nastaví vždy, pro všechny acpi handlery, tedy i pro synclient :(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.