In einer shell geht das einfach ueber "read".
Mir hab ich ein shell skript geschrieben, in dem ich Tastatureingaben verwende, um die Lautstaerke zu regeln und Radiostationen von 0-9 auszuwaehlen.
Ich wechsel dafuer in ein bestehendes Verzeichnis.
Dort ist in einem Textfile die alte Lautstaerke abgelegt. Der alte Wert wird eingelesen, auf plausible Werte von 0>=x<=100 geprueft. Dann wird die neue Lautstaerke berechnet und gesetzt.
In einer Schleife wird dafuer die Tastatur abgefragt mit "read". Die Lautstaerke wird sofort veraendert und auf den naechsten Tastendruck gewartet.
Erst bei einer meiner Stationstasten von 0-9 wird die Schleife verlassen. Der Wert der Stationstaste wird dann in ein Textfile geschrieben und das Skript endet.
Code: Select all
#/bin/bash
#set volume and get radio station keys 0-9
#set sane default values
cd /var/lib/internet-radio/
TMP="$(pwd)"
REPLY="$(cat $TMP/reply)"
VOL="$(cat $TMP/vol)"
test "$VOL" -lt 0 && VOL=50
test "$VOL" -gt 100 && VOL=50
#echo volume = "$VOL"%
#set last volume
#nmixer -q -s pcm="$VOL"
#amixer info
#amixer controls
#amixer -q -M -c 0 set PCM "$VOL"%
#amixer -q -M -c 0 cset numid=1 "$VOL" unmute
#where n is 0=auto, 1=headphones, 2=hdmi
#amixer -q cset numid=3 0
#amixer -q cset numid=3 1
#amixer -q cset numid=3 2
KEY=''
ACTION=''
until test -n "$ACTION"
do
#lynx -dump -nolist http://localhost/cgi-bin/dialog-cgi
echo
echo -n " Lautstärke = $VOL""% "
echo -n "Sender = $(cat last) "
#read -n 1 KEY
read -p 'Taste: ' -n 1 KEY
echo
case "$KEY" in
[0-9])
ACTION="$KEY"
;;
[+])
test "$VOL" -le 95 && VOL=$[$VOL + 5]
nmixer -q -s pcm="$VOL" > /dev/null
#amixer -q -M -c 0 cset numid=1 "$VOL"% unmute
echo "$VOL" > "$TMP/vol"
;;
[-])
test "$VOL" -ge 5 && VOL=$[$VOL - 5]
nmixer -q -s pcm="$VOL" > /dev/null
#amixer -q -M -c 0 cset numid=1 "$VOL"% unmute
echo "$VOL" > "$TMP/vol"
;;
[,.])
echo
MPD_HOST=mpd.example.com /usr/bin/mpc next | head -n1
;;
*)
KEY=''
;;
esac
done
REPLY="$ACTION"
echo $REPLY > $TMP/reply
So hast Du schon mal einen funktionierenden Beispiel code, der leichter anzuapssen ist.
Entweder rufst Du ein eigenes Programm in dem Skript auf, oder kannst Deine Eingaben auch wie ich in meinem Beispiel festhalten und spaeter von anderen Programmen auswerten lassen.
nmixer und amixer sind verschiedene Konsole Programme, die bei Dir evtl. noch nicht vorinstalliert sind. Auswendig weiss ich jetzt nicht in welchen Paketen sie enthalten sind, mit "sudo apt-cache search Programmname" laesst sich das herausfinden und mit "apt-get install" die gefundenen Pakete installieren.
have fun,
cu Frank