ubuntuusers.de

ubuntuusers.deWikiscanbuttond

scanbuttond

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Wiki/Icons/scanner.png Viele Scanner haben Tasten, mit denen sich Vorlagen direkt kopieren, faxen oder mailen lassen. Leider ist Software, die diese Tasten überwacht und nutzbar macht, in vielen Fällen nur für proprietäre Betriebssysteme verfügbar. scanbuttond {en} hilft, diese Tasten auch unter Linux zu nutzen. Momentan werden Scanner von Epson, Canon, Agfa und HP unterstützt. Eine genaue Liste der jeweiligen Modelle findet man auf der Hardwareseite {en} der Programm-Homepage .

Installation

Zuerst muss das folgende Paket installiert [1] werden:

  • scanbuttond (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install scanbuttond 

sudo aptitude install scanbuttond 

Konfiguration

Die benötigten Dateien initscanner.sh und buttonpressed.sh existieren zunächst nur als Beispieldateien (angehängtes ".example") im Verzeichnis /etc/scanbuttond. Um diese Dateien umzubenennen und zu bearbeiten, benötigt man Root-Rechte [2]. Nachdem man die beiden Konfigurationsdateien erstellt bzw. umbenannt hat, müssen diese noch ausführbar gemacht werden [3].

Damit der Scanner auch gefunden wird, muss in der neu erzeugten Datei /etc/scanbuttond/initscanner.sh der Befehl

sane-find-scanner

aktiviert werden [4].

Nun startet man im Terminal [5] scanbuttond per

scanbuttond -f 

im Vordergrund. Wenn man jetzt die Tasten am Scanner drückt, sollte das Terminal eine Meldung ausgeben, die jeder gedrückten Taste eine eindeutige Nummer zuordnet. In etwa so:

button 1 has been pressed on plustek:libusb:002:005
button 2 has been pressed on plustek:libusb:002:005
button 3 has been pressed on plustek:libusb:002:005

Diese Zuordnung sollte man sich merken, sie wird später bei der Einrichtung der Aktionen noch gebraucht.

scanbuttond arbeitet mit Bash-Skripts, d.h. beim Drücken einer Scanner-Taste wird die Nummer der Taste an das Skript buttonpressed.sh im Verzeichnis /etc/scanbuttond/ übergeben. Das Skript startet dann abhängig von der Taste eine Aktion. Im Skript sieht das dann ungefähr so aus:

#!/bin/sh

# This script[...]like scanimage.

TMPFILE="/tmp/scan.tiff"
LOCKFILE="/tmp/copy.lock"

case $1 in
        1)
                echo "button 1 has been pressed on $2"
                ;;
        2)
                echo "button 2 has been pressed on $2"
                ;;
        3)
                echo "button 3 has been pressed on $2"
                ;;
        4)
                echo "button 4 has been pressed on $2"
                ;;
esac

Momentan gibt das Skript nur aus, welche Taste gedrückt wurde; dieses Verhalten gilt es nun zu ändern. Dazu öffnet man die Skript-Datei mit einem Texteditor [3] und trägt die gewünschten Kommandos an den entsprechenden Stellen anstatt des echo-Befehls ein, z. B. „scanimage > bild.pnm“, um ein Dokument unter Verwendung der Standardeinstellungen einzuscannen und als bild.pnm zu speichern. Wenn nun die entsprechende Taste gedrückt wird, startet sofort die festgelegte Aktion, in diesem Fall das Speichern des Scans im eigenen Ordner.

Hinweis:

Sollte ein Scanner mehr als 4 Tasten besitzen, so kann man das Skript einfach erweitern, indem man weitere nummerierte Zeilen unter '4)' einfügt.

Experten-Info:

Anstatt die Kommandos direkt in buttonpressed.sh einzutragen, könnte man weitere Skripte aufrufen. Siehe dazu auch die weiterführende Anleitung im Gentoo-Wiki {en}

Hat man die gewünschten Änderungen getätigt, speichert man die Datei. Nun kann man noch unter "System -> Einstellungen -> Startprogramme" den Eintrag scanbuttond -f hinzufügen und zukünftig nach jeder Anmeldung die programmierten Scannertasten sofort nutzen.

Skript-Beispiele

Hinweis:

Um diese Skripte nutzen zu können, müssen die Pakete

  • netpbm

  • libtiff-tools

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install netpbm libtiff-tools 

sudo aptitude install netpbm libtiff-tools 

installiert [1] sein.

Hier das für Skripte angepasste buttonpressed.sh sowie einige Beispiel-Skripte für Scannen, Kopieren und Mailen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/sh
TMPDIR="$HOME/Desktop"                              #hier wird ein Verzeichnis für die Datei festgelegt; durch die Verwendung der Umgebungsvariable $HOME wird jedesmal der Desktop des aktuellen Benutzers verwendet
TMPFILE="$TMPDIR/scan`date +%Y%m%d`-`date +%H%M%S`" #wir generieren uns hier den Dateinamen für das spätere Ergebnis; der Name besteht aus dem Präfix scan und wird jedesmal um Datum und Uhrzeit ergänzt
                                                    #Dateinamenerweiterungen werden später hinzugefügt
LOCKFILE="/tmp/copy.lock"                           #Variable für das Lockfile, das kennzeichnet, ob der Scanner schon in Benutzung ist; wird hier nicht verwendet

case $1 in
        1)      echo "Button 1 pressed"                        #wird Button 1 gedrückt so wird eine Meldung ausgegeben (nur sichtbar, wenn scanbuttond im Vordergrund läuft - zum Debuggen)
                $HOME/.scanscripts/scan.sh $TMPFILE $DEVICE    #und das Skript scan.sh im versteckten Ordner .scanscripts im Homeverzeichnis gestartet; zusätzlich werden noch Name und Ort des Tempfiles,
                ;;                                             #sowie die Adresse des Scanners übergeben, sinnvoll bei mehr als einem Scanner

        2)      echo "Button 2 pressed"                        #wird Button 2 gedrückt, so wird eine Meldung ausgegeben (siehe oben)
                $HOME/.scanscripts/copy.sh $TMPFILE $DEVICE    #und das Skript copy.sh im versteckten Ordner .scanscripts im Homeverzeichnis gestartet; zu übergebenen Attributen siehe oben
                ;;
        3)      echo "Button 3 pressed"                        #wird Button 3 gedrückt, so wird eine Meldung ausgegeben (siehe oben)
                $HOME/.scanscripts/mail.sh $TMPFILE $DEVICE    #und das Skript mail.sh im versteckten Ordner .scanscripts im Homeverzeichnis gestartet; zu übergebenen Attributen siehe oben
                ;;
esac

Hier das Skript zum einfachen Scannen

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh
TMPFILE=$1 #Enthält zukünftigen Speicherort und Dateiname des Scans

scanimage --format pnm --mode Color --depth 8 --resolution 300 -l 0 -t 0 -x 215mm -y 280mm --lampoff-time 300 > ${TMPFILE}.pnm #scanimage scannt die Vorlage und speichert sie als Dateiname.pnm,
                                                                                                                               #die einzelnen Optionen sind von Scanner zu Scanner unterschiedlich (hier Farbscan
                                                                                                                               #in einer Auflösung von 300dpi)

pnmtojpeg -quality 85 -optimize -comment "was immer man als Kommentar haben will" $TMPFILE.pnm > $TMPFILE.jpeg # die .temp-Datei wird mittels pnmtojpeg in eine jpeg-Datei umgewandelt und dabei komprimiert

rm -f $TMPFILE.pnm  #jetzt muss nur noch die temporäre Datei gelöscht werden

Und hier zum Kopieren

1
2
3
4
5
6
7
8
#!/bin/sh

TMPFILE=$1  #siehe Skript zum Scannen
scanimage --format tiff --mode Gray --resolution 300 --brightness -3 -l 0 -t 0 -x 215mm -y 297mm > ${TMPFILE}.tiff  #scannt das Bild ein und speichert es als tiff (hier in Graustufen und Auflösung 300dpi)

tiff2ps -z -w 8.27 -h 11.69 $TMPFILE.tiff | lpr   # eingescanntes Bild wird in Postscript umgewandelt und an den Standarddrucker gesendet

rm -f $TMPFILE.tiff  #temporäre Datei wird gelöscht

Zum Schluss noch eins zum Versenden per Mail:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/sh

TMPFILE=$1  #siehe Skript zum Scannen
scanimage --format pnm --mode Color --depth 8 --resolution 300 -l 0 -t 0 -x 215mm -y 280mm --lampoff-time 300 > ${TMPFILE}.pnm  #scannt das Bild ein und speichert es als pnm

pnmtojpeg -quality 85 -optimize -comment "was immer man als Kommentar haben will" $TMPFILE.pnm > $TMPFILE.jpeg    #wandelt das Bild von pnm zu jpeg um

rm -f ${TMPFILE}.pnm #temporäre Datei wird gelöscht

#hier wird Evolution zum Versenden eingesetzt
evolution --display=:0.0 "mailto:?attach=$TMPFILE.jpeg" #öffnet Evolutions Maileditor und fügt das Bild als Anhang hinzu

Tipps

Experten-Info:

Erweiterter Hardware Support (unter anderem auch für die HP 39xx Serie) ist in der Version scanbuttond_0.2.3.cvs20090713-1 vorhanden.

Sollten beim Einsatz der scanbuttond_0.2.3.cvs20090713-1 Version folgende Fehlermeldungen im syslog auftauchen:

scanbuttond: libusbi: could not claim interface for device 003:004. (code=-1)
scanbuttond: scanbtnd_open failed, error code: -19

muss in der Datei /etc/default/scanbuttond der Eintrag RUN_AS_USER=saned zu RUN_AS_USER=root geändert werden.

Alternativen

Diese Revision wurde am 16. April 2014 16:07 von KojiroAK erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, Scanner