Fórum Ubuntu CZ/SK
Ostatní => Otevřená diskuze kolem Linuxu a OSS => Téma založeno: nettezzaumana 11 Května 2007, 18:34:07
-
Zdravím,
Snažím se vytvořit HOWTO pro nastavení InputDevices pro X-window-system. Zároveň vytvářím podpůrné skripty pro integraci speciálních tlačítek zejména na laptopech. Tato tlačítka je podle mě možné integrovat právě do xorg.conf a manipulace s možnostmi ACPI se náležitě zjednoduší a ztransparentní.
Pracuji na Ubuntu (takže primární kompatabilita jest pro od Debianu odvozené distribuce), používám ntb ASUS F3T (ALPS touchpad) a jako grafickou kartu mám nvidia go 7300.
Vytvořil jsem skript založený na 'nvidia-xconfig', pro lepší a jednoduché nastavení sekcí „Device“, „Screen“ a „Extensions“ pro Ubuntu Linux. To ale není můj hlavní záměr.
V současné době se potýkám se zásadním problémem: nerozumím zcela přesně způsobu deklarace „Option 'Device'“ v sekci „InputDevice“ v /etc/X11/xorg.conf. Dostávám totiž rozdílné výpisy z /proc/bus/input/devices když nastartuju linux s rozdílně zapojeným zařízením jako např. USB myš. Touchpad sice funguje jako stále /dev/psaux, ale to mi připadá neobratné, protože bych do xorg.conf chtěl integrovat i právě ona speciální tlačítka, a ta se mi právě pokaždé inicializují jinak a proto je nemohu deklarovat jako /dev/input/eventX. Je pravda, že jediné co zůstává stále stejné je položka „P: Phys=...“, ale ani po přečtení mnoha man pages a jiné dokumentace jsem nenašel její propojení s /dev.
Manuálové stránky mi dříve přišly „za trest“ a že jsou příliš obšírné, ale např. 'man xorg.conf' mi teď připadá nejmírněji řečeno „ošizená“.
Dále úplně přesně nechápu tlačítko „Fn“ na notebooku. U sebe mám pomocí tohoto tlačítka nastaveny některé vychytané funkce související s manipulací s hardwarem (hlasitost, ovládání LCD, vypínání touchpadu a wifi, pouštění programů apod), nicméně toto tlačítko je pro klávesovou zkratku použitelné pouze ve formě „event“ a jen s některýma klávesama (u mě pouze s Fx). Napsal jsem si pro ten účel v C prográmek na vypisování vstupních signálů a ten mi potvrdil, že takovýto signál vyvolá pouze použítí s Fx klávesama a jinak s ničím jiným. Mimo jiné i v Gnome v dialogu „nastavení klávesových zkratek“ je tato zkratka definovaná jako event v decimálním formátu.
Takže co bych rád:
1. Pokud se někdo bude chtít zapojit do tohoto projektu, budu rád. V současné chvíli by se mi hodil někdo, kdo má zkušenosti s VGA kartama od Amd (dříve Ati) a popř. jiným touchpadem.
2. Dále bych rád požádal o jakoukoliv radu nebo o dokumentaci související s výše uvedenými otázkami. Zejména pokud by mi nemohl někdo ozřejmit způsob systémové deklarace fyzických zařízení a jejich propojení s /dev.
3. Jako poslední téma vhodné k zamyšlení je způsob, jak synchronizovat takto do X deklarovaná tlačítka, jinak související s acpi-events s acpi. Já osobně v současném stádiu vývoje používám pro tyto fce jednoduchý a dle mého soudu prasácký opis: nevolám přímo jednotlivé acpi.sh, ale volám `opisem` samotné acpi.
O mě:
Používám Linux už pár let a cítím silnou potřebu mu vrátit co mi dává, proto se snažím např. s touto aktivitou. Jsem samouk, programuji v C, učím se Javu a jako pomůcky občas používám skripty nejčastěji v #!/bin/sh a perlu ..
Pokud výše uvedené někoho zaujalo a má k tomu co říct, nebo je-li schopen a ochoten zodpovědět mé otázky, nebo má-li dokumentaci která by mi pomohla a nebo na konec, děláte-li někdo na tom samém nebo příbuzném tématu, kontaktujte mě prosím na fantomas@darkcastle.eu a uvidíme co dál.
Moje ambice jsou asi mimořádně velké, protože kdyby se nakonec podařilo vylepšit samotný instalátor X-window-systemu, uděláme dobře.
PS. Pokud si toto přečte Radek Hulán, tak nepředpokládaje, že snad krom puzení „vrátit Linuxu co mu dal“, bude znát odpověď na jakoukoliv z mých otázek, by ho mohlo napadnout snad jediné, a sice poslat mi peníze. Proto prosím:
Radku Huláne, peníze mě neposílej. Pošli je v rámci svého nehynoucího obdivu k „Wov.Solutions“ do nějaké rozvojové země, aby si i chudí domorodci mohli nad rámec projektu „Starter“ napsat dokument třebas se žádostí o pracovní místo.
Howg
-
Přesunuto do vhodnějšího tématu a duplicitní příspěvěk smazán.
-
Nevím zda je to ještě aktuální, osobně se snažím "jen" rozchodit všechna hejblátka na R1F,
2. Dále bych rád požádal o jakoukoliv radu nebo o dokumentaci související s výše uvedenými otázkami. Zejména pokud by mi nemohl někdo ozřejmit způsob systémové deklarace fyzických zařízení a jejich propojení s /dev.
Při svém hledání jsem narazil na info jak je to vlastně všechno propojené, snad to bude užitečné:
http://www.linuxjournal.com/article/6396
http://www.linuxjournal.com/article/6429
-
uff. myslim, ze tohle je jeden z prvnich mych prispevku na tomto foru ;)
program jsem nevytvoril, pac se to ukazalo jako prilis obtizne, spokojiv se s tim, ze uz alespon vim, jak se to dela.
nejjednodussi je rucne vychytat eventy pri stisku kombinace funkcnich tlacitek pomoci dbus-monitor a nebo acpi_listen .. jednoduse spuste (viz. priklady nize) jednu z techto aplikaci (doporucuji acpi_listen) a mackejte funkcni tlacitka a sledujte co to vypisuje ..
# dbus-monitor --system
signal sender=org.freedesktop.DBus -> dest=:1.35 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.35"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=AcpiEvent
string "hotkey ATKD 00000095 00000000"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=PowersaveEvent
string "other"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=AcpiEvent
string "hotkey ATKD 0000005c 00000001"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=PowersaveEvent
string "other"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=AcpiEvent
string "hotkey ATKD 0000006b 00000003"
signal sender=:1.8 -> dest=(null destination) path=/com/novell/powersave; interface=com.novell.powersave.manager; member=PowersaveEvent
string "other"
> acpi_listen
hotkey ATKD 00000095 00000001
hotkey ATKD 0000005c 00000002
hotkey ATKD 0000006b 00000004
..
dal uz je to jednoduche jako facka::
vytvorime soubor, kde si definujeme co delaji "takto odchytana" tlacitka, ulozime ho treba jako /sbin/myevents a priradime mu executable flag ::
#!/bin/bash
# what should perform our hardware events
case "$1" in
prvni_cudlik )
konqueror &
exit 0
;;
druhy_cudlik )
echo "nekdo zmacknul muj druhy cudlik" >/dev/tty10 &
exit 0
;;
treti_cudlik )
echo "zmacknuli treti cudlik" >/dev/tty10 &
exit 0
;;
esac
a potom nas zajima retezec od zacatku do posledniho cisla. Akce se definuji jako soubory v /etc/acpi/events ..
Priklad ::
/etc/acpi/events/prvni_cudlik
event=hotkey ATKD 00000095
action=/sbin/myevents prvni_cudlik
Spusti se konqueror, stejne jako dva nasledujici soubory o5 provedou pozadovanou akci dle /sbin/myevents
/etc/acpi/events/druhy_cudlikevent=hotkey ATKD 0000005c
action=/usr/bin/myevents druhy_cudlik
/etc/acpi/events/treti_cudlikevent=hotkey ATKD 0000006b
action=/usr/bin/myevents treti_cudlik
posledni dva jen napriklad vypisou hlasku na na terminal 10, ze nam nekdo zmacknul cudlik
..atd
!! pozor !!
prikazy se provadeji jako root, proto je nutne v /sbin/myevents pouzivat su/sudo (su <username> -c "foo") pri akcich, kdy je nevhodne, aby se spousteli s rootovskejma pravama ..
napr .. treba ono spusteni konqueroru ..
.. takze to pak vypada takto .. s acpi & dbusem lze cvicit jeste mnohem vic a ucinil jsem mnoho daleko straslivejsich objevu, ale tohle snad musi stacit. ;)
staci si zahrat na hackera a pustit se do dokumentaci acpi driveru v kernelu, protoze nektera tlacitka jsou jednoduse nepodporovana.
ps. tado metoda je to nejjednodusi a efektivni reseni, diky kteremu lze priradit ruznym tlacitkum na ntbs vsechny akce, ktere si lze predstavit
pps. program jsem nedopsal, pac by to slozite musel parsovat z /proc a ted to integrovat do xorg .. fuj
zdravi ntz ;)
-
ps. tenhle prispevek byl stoprocentne kdysi jeden z uplne prvnich na zdejsim foru .. huh
jsem rad, ze jsem ho ted nakonec snad doresil..
enjoy by ntz ;)