Немного переделанная autoscanner.c по клавише "1" - сканируем в JPG, "2" - в PDF
#include <curses.h>
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <linux/kd.h>
#include <sys/ioctl.h>
#include <time.h>
int main()
{
char command_str[500];
int c;
time_t t;
struct tm tim;
int fd = open("/dev/console",O_RDONLY); //системный динамик
initscr(); // подготавливаем дисплей
timeout(-1);
noecho();
cbreak();
keypad(stdscr,TRUE);
do{
c = getch(); //ждем нажатия клавиши
time(&t); // текущее время
localtime_r(&t,&tim); // преобразуем в человеческий формат
switch(c)
{
case 10: // клавиша "Enter"
case 49: // клавиша "1"
case 360: // клавиша "1" на стрелочках
sprintf(command_str,
"scanimage -d epson:libusb:001:002 --mode Color --resolution 150 > /tmp/temp1.pnm && convert --sharpen 50 /tmp/temp1.pnm /scan/%04d_%02d_%02d_%02d_%02d_%02d.jpg && rm -f /tmp/temp1.pnm;",tim.tm_year+1900,tim.tm_mon+1,tim.tm_mday,tim.tm_hour,tim.tm_min,tim.tm_sec);
system(command_str); //сканируем
sleep(11); //ждем пока сканер вернет
//каретку (подбираем время экспериментально)
// ioctl(fd,KDMKTONE,(600<<16)+1190); // бикаем динамиком
break;
case 50: // клавиша "2"
case 258: // клавиша "2" на стрелочках
sprintf(command_str,
"scanimage -d epson:libusb:001:002 --mode Color --resolution 150 > /tmp/out.pnm && convert -density 150 /tmp/*.pnm /tmp/out.ps && ps2pdf /tmp/out.ps /scan/%04d_%02d_%02d_%02d_%02d_%02d.pdf && rm -f /scan/*.pnm;rm -f /tmp/out.ps;rm -f /out.pnm",tim.tm_year+1900,tim.tm_mon+1,tim.tm_mday,tim.tm_hour,tim.tm_min,tim.tm_sec);
system(command_str);
sleep(11);
//ioctl(fd,KDMKTONE,(600<<16)+1190);
break;
default: // бикаем динамиком если клавиша неизвестна
ioctl(fd,KDMKTONE,(200<<16)+1190);
}
timeout(0); // снимаем режим ожидания нажатия клавиши
while (getch()!=ERR)
; // вычищаем буфер клавиатуры, если успели понажимать на кнопки
timeout(-1); // включаем режим ожидания нажатия клавиши
}while(c!=101); // клавиша "Е" - Выход из программы, можно убрать чтоб
// пользователи случайно не нажали
endwin(); // при выходе возвращаем дисплей в исходное состояние
}