ZkouÅ¡el jsem nespoÄet způsobů jak softwarovÄ› prohodit stav dvÃÅ™ek CD mechaniky, ale pokaždé se naÅ¡la nÄ›jaká moucha a tÅ™ebaže to pár hodin Å¡lo, nakonec se hodnota stavu dvÃÅ™ek otoÄila vůÄi skuteÄnému stavu a tÃm pádem už s nimi neÅ¡lo hýbat. A dneska koneÄnÄ› nápad.
#!/bin/sh
# Skript na prohozenà stavu dvÃÅ™ek mechaniky
device=/dev/cdrom
delay=0.7 # Do kolika sec se dvÃÅ™ka urÄitÄ› nevysunou
statfile=/tmp/cdrom_stat # Soubor nesoucà stav dvÃÅ™ek
echo 'c' >$statfile # DvÃÅ™ka nejprve považujeme za zavÅ™ená
# Vysunout a ihned zapsat stav (nutné provést na pozadÃ)
eject $device && echo 'o' >$statfile &
# PoÄkat chvilku, než by skonÄil eject pÅ™i *otevÅ™ených* dvÃÅ™kách
sleep $delay
# Pokud je už teÄ mechanika otevÅ™ená,
# byla pravdÄ›podobnÄ› otevÅ™ená i pÅ™edtÃm --> zavÅ™Ãt ji.
[ "`cat $statfile`" = "o" ] && eject $device -t
Pokud spustÃme program eject, skonÄà až ve chvÃli, kdy jsou dvÃÅ™ka skuteÄnÄ› otevÅ™ená. Pokud tedy už otevÅ™ená jsou, program skonÄà téměř okamžitÄ›, v opaÄném pÅ™ÃpadÄ› mu to vÅ¡ak vÄ›tÅ¡inou trvá pÅ™es sekundu, než dvÃÅ™ka celá vyjedou. Jako prodlevu delay je proto tÅ™eba zvolit Äas, do nÄ›jž se zavÅ™ená dvÃÅ™ka urÄitÄ› nestihnou otevÅ™Ãt, ale pokud otevÅ™ená jsou, tak do této doby program eject spolehlivÄ› skonÄÃ. MnÄ› fungovaly hodnoty v intervalu <0.1; 1.1>, jiné nefungovaly vždycky. Levá mez je závislá na vytÞenà systému, které kolÃsá podstatnÄ› vÃc než rychlost otevÅ™enà dvÃÅ™ek, na nÞ závisà mez vpravo. Je proto spolehlivÄ›jšà volit trochu vyššà prodlevu než je průmÄ›r nejkratšà a nejdelšà funkÄnà prodlevy. Pokud má vaÅ¡e mechanika dvÃÅ™ka rychlejÅ¡Ã, prodlevu bude možná tÅ™eba malinko snÞit. Znà to vÅ¡echno trochu složitÄ›, ale prostÄ› tam mrsknÄ›te nÄ›jakou hodnotu a buÄ zabere nebo ji zmÄ›nÃte.
heh jako wubec tmu nerzumim ze :D
heh jakooo wubéc tomuhle nrozumim :D:D :p nechapu ty kdo se zajima o pocal :)
SkvÄ›lé, pÅ™esnÄ› tÃmhle jsem si lámal hlavu nÄ›co pÅ™es hodinu a ne a ne na to kápnout. DÃk. Využità mám následovné (v KDE v adresari Autostart jako .desktop soubor):
ksystraycmd --hidden --startonshow --keeprunning --tooltip "Otevre nebo zavre dvirka DVD mechaniky." --icon /opt/kde/share/icons/KDEmod-Icons-Tango/22x22/devices/dvd_unmount.png /home/donny/skripty/open_close_cd.sh&>/dev/null