[sane-devel] scanbd and Canon LiDE 60: buttons not recognized ?

Wilhelm wilhelm.wm.meier at googlemail.com
Sun Apr 16 09:59:07 UTC 2017


Am 15.04.2017 um 20:38 schrieb Florian Gagel:
> Hi Wilhelm,
> 
> thanks, your modification made all four buttons work !

Great!

> This seems somewhat surprising to me at first glance, should  the
> backend not be strcmp'ed using "==0", providing
> an own section for each backend :-) ? Anyway, it works, even if the
> buttons are somewhat scrambled:

Please backout the last patch I sent and now apply the attached one.
This should mark your buttons with the right labels.

If thats ok for you, I'll check this into trunk.

Please report if teh patch is ok, or make your own modifications and
send the patch back to me to be inserted into trunk.

Thanks for using scanbd.

-- Wilhelm

>  (Button press at scanner)  -> (Action)
> --------------------
> Email  -> PDF
> PDF     -> Email
> Scan   -> Copy
> Copy   -> Scan.
> 
> I also used string-triggers only. The buttons may have to be pressed for
> a short period exceeding the polling interval.
> Some minor possible pitfalls using the installations defaults of
> scanbd-1.5.0 under Ubuntu 16.04:
> - I removed the default package and configured the newer scanbd 1.5.0 as
> described in the previous mail. I also used xinetd instead of the ubuntu
> default
>    bsd-inetd for network scanner access although this should be of no
> relevance.
> - Wilhelms patch has to be applied to scanbuttond_wrapper.c (removed
> assertion, return strings on any value of "button").
> - In scanbd.conf: Group should be "saned". Make sure all paths refer to
> /usr/local/etc/scanbd, scriptdir = /usr/local/etc/scanbd/scripts, ...
> - The new path also enters into /lib/systemd/system/scanbd.service,
> after changing that do "systemctl daemon-reload" and restart scanbd.
> 
> Now I am happy because of the four programmable buttons for my Odroid-U2
> SoC which has no monitor attached to it :-)
> 
> Thanks again Wilhelm and Happy Easter !
> 
>   Florian
> 
> Am 15.04.2017 um 17:32 schrieb Wilhelm:
>> Am 15.04.2017 um 16:13 schrieb Florian Gagel:
>>> Hi Wilhelm,
>>>
>>> thanks for your reply -  I made some progress in this issue however
>>> still did not fully succeed.
>>>
>>> - First step as you told me: make clean, configure --enable-scanbuttond,
>>> make, make install, copy manually the
>>> old backends to /usr/local/lib/scanbd/scanbuttond as described in the
>>> README (this all with the 1.5.0 version of scanbd).
>>> - Starting scanbd -f -d7, I first got a "scanbd: Can't get the scbtn
>>> device list" error.
>>> - I edited /usr/local/lib/scanbd/scanbuttond/backends/meta.conf, making
>>> it contain the single line "genesys" which was missing before.
>> Yes, per default this was not included - I added it to trunk.
>>
>>> - Then the LiDE-60 was recognized by the old backend, together with its
>>> four buttons !
>>> - However, scanbd finally stumbled on an assertion:/
>> Looks like you were the first one with an appropriate scanner to test
>> this ;-)
>>
>> You can safely remove the mentioned assertion if you return non-null
>> string-literals in all switch cases including the default case:
>>
>> --- scanbuttond_wrapper.c       (Revision 236)
>>
>> +++ scanbuttond_wrapper.c       (Arbeitskopie)
>>
>> @@ -1063,10 +1063,9 @@
>>
>>       slog(SLOG_INFO, "scanbtnd_button_name, backend: %s", backend_name);
>>
>>
>>
>>       if (strcmp("snapscan", backend_name)) {
>> -        assert(button <= 5);
>>           switch(button) {
>>           case 0:
>> -            return NULL;
>> +            return "zero";
>>               break;
>>           case 1:
>>               return "scan"; // "web";
>> @@ -1084,7 +1083,7 @@
>>               return "stop";
>>               break;
>>           default:
>> -            return NULL;
>> +            return "default";
>>               break;
>>           }
>>       }
>>
>>
>> If you don't mind please test this modification. I you succeed with it
>> I'll put it into trunk.
>>
>>> root at gandroid:/usr/local/etc/scanbd# scanbd -f -d7
>>> scanbd: reading config file /usr/local/etc/scanbd/scanbd.conf
>>> scanbd: debug on: level: 7
>>> scanbd: dropping privs to uid saned
>>> scanbd: dropping privs to gid scanner
>>> scanbd: group scanner has member:
>>> scanbd: saned
>>> scanbd: drop privileges to gid: 121
>>> scanbd: Running as effective gid 121
>>> scanbd: drop privileges to uid: 120
>>> scanbd: Running as effective uid 120
>>> scanbd: dbus_init
>>> scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
>>> scanbd: Loading /usr/local/lib/scanbd/scanbuttond/backends/meta.so
>>> scanbd: Loading /usr/local/lib/scanbd/scanbuttond/backends/genesys.so
>>> scanbd: Scanning for local-only devices
>>> scanbd: found device: CanoScan LiDE 60 Canon genesys:libusb:001:016
>>> scanbd: start_scbtn_threads
>>> scanbd: start the threads (1)
>>> scanbd: Starting poll thread for CanoScan LiDE 60
>>> scanbd: Thread started for device CanoScan LiDE 60
>>> scanbd: start dbus thread
>>> scanbd: scbtn_poll
>>> scanbd: udev init
>>> scanbd: get udev monitor
>>> scanbd: udev fd is non-blocking, now setting to blocking mode
>>> scanbd: start udev thread
>>> scanbd: udev thread started
>>> scanbd: timeout: 500 ms
>>> scanbd: Iteration on dbus call
>>> scanbd: found 15 options for device CanoScan LiDE 60
>>> scanbd: sane_find_matching_options
>>> scanbd: found 3 actions in section (null)
>>> scanbd: checking action scan with filter: ^scan.*
>>> scanbd: scanbtnd_button_name (1)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: found active option[0] scan for device CanoScan LiDE 60
>>> scanbd: installing action scan (0) for CanoScan LiDE 60, option[0]: scan
>>> as: test.script
>>> scanbd: multiple actions allowed
>>> scanbd: scanbtnd_button_name (2)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: found active option[1] copy for device CanoScan LiDE 60
>>> scanbd: scanbtnd_button_name (3)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: found active option[2] email for device CanoScan LiDE 60
>>> scanbd: scanbtnd_button_name (4)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: found active option[3] pdf for device CanoScan LiDE 60
>>> scanbd: scanbtnd_button_name (5)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: found active option[4] stop for device CanoScan LiDE 60
>>> scanbd: scanbtnd_button_name (6)
>>> scanbd: scanbtnd_button_name, backend: Genesys USB
>>> scanbd: scanbuttond_wrapper.c:1066: scanbtnd_button_name: Assertion
>>> `button <= 5' failed.
>>> Aborted
>>>
>>> Of course there are only 4 buttons physically, plus one hidden reset
>>> button. Now i am unsure whether simply to edit the source code in
>>> order to
>>> remove the assertion. My feeling is it might work then.
>>>
>>> Regards,
>>>      Florian/
>>>
>>> /Am 15.04.2017 um 12:26 schrieb Wilhelm Meier:
>>>> Hi Florian,
>>>>
>>>> scanbd totally relies on libsane to read the option (button) values. It
>>>> is known, that some backends aren't capable doing this ...
>>>>
>>>> For the Lide60 you can try uing the old scanbuttond backends
>>>> included in
>>>> the scanbd source tree. See the ReadMe.txt for instructions please.
>>>>
>>>>
>>>>
>>>> Am 15.04.2017 um 10:44 schrieb Florian Gagel:
>>>>> Hi,
>>>>>
>>>>> my LiDE60 is working well, either directly using scanimage with scanbd
>>>>> not running, as "genesys:libusb:001:016" or with running scanbd using
>>>>> xinetd as "net:localhost:genesys:libusb:001:016".
>>>>> However, none of the four buttons seem to be recognized:
>>>>>
>>>>> root at gandroid:/usr/local/etc/scanbd# scanbd -f -d7
>>>>> scanbd: reading config file /usr/local/etc/scanbd/scanbd.conf
>>>>> scanbd: debug on: level: 7
>>>>> scanbd: dropping privs to uid saned
>>>>> scanbd: dropping privs to gid scanner
>>>>> scanbd: group scanner has member:
>>>>> scanbd: saned
>>>>> scanbd: drop privileges to gid: 121
>>>>> scanbd: Running as effective gid 121
>>>>> scanbd: drop privileges to uid: 120
>>>>> scanbd: Running as effective uid 120
>>>>> scanbd: dbus_init
>>>>> scanbd: dbus match
>>>>> type='signal',interface='org.freedesktop.Hal.Manager'
>>>>> scanbd: SANE_CONFIG_DIR=/usr/local/etc/scanbd
>>>>> scanbd: sane version 1.0
>>>>> scanbd: Scanning for local-only devices
>>>>> scanbd: found device: genesys:libusb:001:016 Canon LiDE 60 flatbed
>>>>> scanner
>>>>> scanbd: start_sane_threads
>>>>> scanbd: Starting poll thread for genesys:libusb:001:016
>>>>> scanbd: Thread started for device genesys:libusb:001:016
>>>>> scanbd: sane_poll
>>>>> scanbd: start dbus thread
>>>>> scanbd: udev init
>>>>> scanbd: get udev monitor
>>>>> scanbd: udev fd is non-blocking, now setting to blocking mode
>>>>> scanbd: start udev thread
>>>>> scanbd: udev thread started
>>>>> scanbd: timeout: 500 ms
>>>>> scanbd: Iteration on dbus call
>>>>> scanbd: Iteration on dbus call
>>>>> scanbd: found 49 options for device genesys:libusb:001:016
>>>>> scanbd: sane_find_matching_options
>>>>> scanbd: found 5 actions in section (null)
>>>>> scanbd: checking action scan with filter: ^scan.*
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: checking action email with filter: ^email$
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: checking action copy with filter: ^copy$
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: checking action preview with filter: ^preview$
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: installing action preview (0) for genesys:libusb:001:016,
>>>>> option[4]: preview as: test.script
>>>>> scanbd: multiple actions allowed
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: Initial value of option preview is 0
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: checking action globaltest with filter: ^message.*
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: sane_find_matching_functions
>>>>> scanbd: found 2 functions in section (null)
>>>>> scanbd: checking function function_knob with filter: ^message.*
>>>>> scanbd: option[1] has no name
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[3] is not active
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[7] has no name
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[12] has no name
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[14] is not active
>>>>> scanbd: option[15] is not active
>>>>> scanbd: option[16] is not active
>>>>> scanbd: option[17] is not active
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[26] has no name
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[36] has no name
>>>>> scanbd: option[37] is not active
>>>>> scanbd: option[38] is not active
>>>>> scanbd: option[39] is not active
>>>>> scanbd: option[40] is not active
>>>>> scanbd: option[41] is not active
>>>>> scanbd: option[42] is not active
>>>>> scanbd: option[43] is not active
>>>>> scanbd: option[44] is not active
>>>>> scanbd: option[45] is not active
>>>>> scanbd: option[46] has no name
>>>>> scanbd: option[47] is not active
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: checking function function_mode with filter: ^mode.*
>>>>> scanbd: option[1] has no name
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: installing function function_mode for genesys:libusb:001:016,
>>>>> option[2]: mode as env: SCANBD_FUNCTION_MODE
>>>>> scanbd: option[3] is not active
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[7] has no name
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[12] has no name
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[14] is not active
>>>>> scanbd: option[15] is not active
>>>>> scanbd: option[16] is not active
>>>>> scanbd: option[17] is not active
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[26] has no name
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: option[36] has no name
>>>>> scanbd: option[37] is not active
>>>>> scanbd: option[38] is not active
>>>>> scanbd: option[39] is not active
>>>>> scanbd: option[40] is not active
>>>>> scanbd: option[41] is not active
>>>>> scanbd: option[42] is not active
>>>>> scanbd: option[43] is not active
>>>>> scanbd: option[44] is not active
>>>>> scanbd: option[45] is not active
>>>>> scanbd: option[46] has no name
>>>>> scanbd: option[47] is not active
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found 6 local device sections
>>>>> scanbd: checking device section avision with filter: ^avision.*
>>>>> scanbd: checking device section fujitsu with filter: ^fujitsu.*
>>>>> scanbd: checking device section hp with filter: ^hpaio.*
>>>>> scanbd: checking device section pixma with filter: ^pixma.*
>>>>> scanbd: checking device section snapscan with filter:
>>>>> (.*snapscan.*|.*Perfection.*)
>>>>> scanbd: checking device section canon with filter: ^genesys.*
>>>>> scanbd: found 1 local action for device genesys:libusb:001:016 [canon]
>>>>> scanbd: sane_find_matching_options
>>>>> scanbd: found 1 actions in section canon
>>>>> scanbd: checking action file with filter: ^file.*
>>>>> scanbd: found active option[2] mode (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[4] preview (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[5] depth (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[6] resolution (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[8] tl-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[9] tl-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[10] br-x (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[11] br-y (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[13] custom-gamma (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[18] swdeskew (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[19] swcrop (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[20] swdespeck (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[21] despeck (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[22] swskip (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[23] swderotate (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[24] brightness (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[25] contrast (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[27] lamp-off-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[28] lamp-off-scan (type: 0) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[29] threshold (type: 2) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[30] threshold-curve (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[31] disable-dynamic-lineart (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[32] disable-interpolation (type: 0) for
>>>>> device genesys:libusb:001:016
>>>>> scanbd: found active option[33] color-filter (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[34] calibration-file (type: 3) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[35] expiration-time (type: 1) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: found active option[48] clear-calibration (type: 4) for device
>>>>> genesys:libusb:001:016
>>>>> scanbd: sane_find_matching_functions
>>>>> scanbd: no matching functions in section canon
>>>>> scanbd: timeout: 500 ms
>>>>> scanbd: Start the polling for device genesys:libusb:001:016
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: Iteration on dbus call
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: Iteration on dbus call
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>> scanbd: checking option preview number 4 (0) for device
>>>>> genesys:libusb:001:016: value: 0
>>>>> scanbd: Iteration on dbus call
>>>>> scanbd: polling thread for genesys:libusb:001:016, before
>>>>> cancellation point
>>>>> scanbd: polling thread for genesys:libusb:001:016, after
>>>>> cancellation point
>>>>> scanbd: polling device genesys:libusb:001:016
>>>>> scanbd: get_sane_option_value
>>>>>
>>>>>
>>>>> My scanbd.conf:
>>>>>
>>>>> /*
>>>>>   * $Id: scanbd.conf 237 2017-04-05 05:46:59Z wimalopaan $
>>>>>   *
>>>>>   *  scanbd - KMUX scanner button daemon
>>>>>   *
>>>>>   *  Copyright (C) 2008 - 2016 Wilhelm Meier (wilhelm.meier at fh-kl.de)
>>>>>   *
>>>>>   *  This program is free software; you can redistribute it and/or
>>>>> modify
>>>>>   *  it under the terms of the GNU General Public License as
>>>>> published by
>>>>>   *  the Free Software Foundation; either version 2 of the License, or
>>>>>   *  (at your option) any later version.
>>>>>   *
>>>>>   *  This program is distributed in the hope that it will be useful,
>>>>>   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>>>   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>>>   *  GNU General Public License for more details.
>>>>>   *
>>>>>   *  You should have received a copy of the GNU General Public License
>>>>>   *  along with this program; if not, write to the Free Software
>>>>>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>>>>> 02110-1301, USA.
>>>>>   */
>>>>>
>>>>>
>>>>> # global settings
>>>>> global {
>>>>>          # turn on debugging
>>>>>                  # log to console
>>>>>          debug   = true
>>>>>
>>>>>          # debug logging
>>>>>          # 1=error, 2=warn, 3=info, 4-7=debug
>>>>>          debug-level = 7
>>>>>                  # drop priviliges to this user
>>>>>          #=============================
>>>>>          # Linux (most distributions use the saned user):
>>>>>          # user    = saned
>>>>>          # ArchLinux (ArchLinux doesn't have saned user)
>>>>>          # user    = daemon
>>>>>          # *BSD
>>>>>          # user    = root
>>>>>          user    = saned
>>>>>
>>>>>          # Group to be used
>>>>>          #=================
>>>>>          # Linux (most distributions use the lp group to access
>>>>> scanners)
>>>>>          # group   = lp
>>>>>          # ArchLinux (ArchLinux uses the scanner group)
>>>>>          # group = scanner
>>>>>          #
>>>>>          # *BSD (no group lp here, use daemon instead)
>>>>>          # group   = daemon # root
>>>>>          #
>>>>>          #group   = lp
>>>>>          group   = scanner
>>>>>
>>>>>          # the saned executable for manager-mode
>>>>>          saned   = "/usr/sbin/saned"
>>>>>          saned_opt  = {} # string-list
>>>>>          saned_env  = { "SANE_CONFIG_DIR=/etc/scanbd" } # list of
>>>>> environment vars for saned
>>>>>
>>>>>          # Scriptdir specifies where scanbd normally looks for
>>>>> scripts.
>>>>>          # The scriptdir option can be defined as:
>>>>>          #   - a path relative to the configuations
>>>>> (<path>/etc/scanbd)
>>>>> directory
>>>>>          #   - an abosolute path
>>>>>          # Examples:
>>>>>          # scriptdir = scripts
>>>>>          # sets scriptdir to <path>/etc/scanbd/scripts.
>>>>>          # scriptdir = /some/path
>>>>>          # sets scriptdir to the specified absolute path
>>>>>          # Default scriptdir is <path>/etc/scanbd, this is normally
>>>>> appropriate
>>>>>          scriptdir = /etc/scanbd/scripts
>>>>>                  # Scripts to execute upon device insertion/removal.
>>>>>          # It can be necessary to load firmware into the device
>>>>> when it
>>>>> is first
>>>>>          # inserted. For example, scanbuttond backend does not know
>>>>> how
>>>>> to load
>>>>>          # scanner firmware, and it can be rectified by making a
>>>>> custom
>>>>> script.
>>>>>          # A simple command like "scanimage -L" in an example
>>>>> insert.script
>>>>>          # invokes saned and it loads the appropriate firmware if
>>>>> necessary.
>>>>>          # These scripts receive environmental variables named in the
>>>>> "environment" subsection:
>>>>>          # SCANBD_DEVICE - device name (fixed string "dbus device" for
>>>>> dbus notification)
>>>>>          # SCANBD_ACTION - "insert" or "remove", so one script can
>>>>> be used.
>>>>>          # device_insert_script = "insert.script"
>>>>>          # device_remove_script =
>>>>>
>>>>>          # scanbuttond_backends_dir sets the path where scanbd
>>>>> looks for
>>>>> the scanbuttond backends
>>>>>          # It can be defined as relative path, starting from the
>>>>> scanbd
>>>>> config directory or
>>>>>          # as an absolute path
>>>>>          # Default is <libdir>/scanbd/scanbutond/backends
>>>>>          # Example
>>>>>          # scanbuttond_backends_dir =
>>>>> "/usr/local/lib/scanbd/scanbuttond/backends"
>>>>>
>>>>>          # poll timeout in [ms]
>>>>>          # (for polling the devices)
>>>>>          timeout = 500
>>>>>                  pidfile = "/var/run/scanbd.pid"
>>>>>                  # env-vars for the scripts
>>>>>          environment {
>>>>>                  # pass the device label as below in this env-var
>>>>>                  device = "SCANBD_DEVICE"
>>>>>                  # pass the action label as below in this env-var
>>>>>                  action = "SCANBD_ACTION"
>>>>>          }
>>>>>
>>>>>          # function definitions
>>>>>          # values of the options are simply passed via env-vars
>>>>>
>>>>>          function function_knob {
>>>>>                  filter = "^message.*"
>>>>>                  desc   = "The value of the function knob / wheel /
>>>>> selector"
>>>>>                  env    = "SCANBD_FUNCTION"
>>>>>          }
>>>>>          function function_mode {
>>>>>                  filter = "^mode.*"
>>>>>                  desc   = "Color mode"
>>>>>                  env    = "SCANBD_FUNCTION_MODE"
>>>>>          }
>>>>>
>>>>>          multiple_actions = true # allow multiple actions per
>>>>> option (up
>>>>> to the total amount of options)
>>>>>
>>>>>          # action definitions
>>>>>          # if the filter matches and the value changes
>>>>>          # from from-value to to-value,
>>>>>          # <script> is executed
>>>>>          # <script> is the full pathname (do not include any
>>>>> parameters)
>>>>>          # if parameters are needed, write a script
>>>>>                  # since we can have only at most one action for
>>>>> each option, the
>>>>> action-script
>>>>>          # can use the function definition (see above) to distinguish
>>>>> different tasks
>>>>>          # (e.g. use the env-var SCANBD_FUNCTION defined above)
>>>>>                  action scan {
>>>>>                  filter = "^scan.*"
>>>>>                  numerical-trigger {
>>>>>                          from-value = 1
>>>>>                          to-value   = 0
>>>>>                  }
>>>>>                  desc   = "Scan to file"
>>>>>                  # script must be an relative path starting from
>>>>> scriptdir (see above),
>>>>>                  # or an absolute pathname.
>>>>>                  # It must contain the path to the action script
>>>>> without
>>>>> arguments
>>>>>                  # Absolute path example: script =
>>>>> "/some/path/foo.script
>>>>>                  script = "test.script"
>>>>>          }
>>>>>          action email {
>>>>>                  filter = "^email$"
>>>>>                  string-trigger {
>>>>>                          from-value  = ""
>>>>>                          to-value    = "^email.*"
>>>>>                  }
>>>>>                  desc   = "Scan to email"
>>>>>                  # script must be an relative path starting from
>>>>> scriptdir (see above),
>>>>>                  # or an absolute pathname.
>>>>>                  # It must contain the path to the action script
>>>>> without
>>>>> arguments
>>>>>                  # Absolute path example: script =
>>>>> "/some/path/foo.script
>>>>>                  script = "test.script"
>>>>>          }
>>>>>          action copy {
>>>>>                  filter = "^copy$"
>>>>>                  string-trigger {
>>>>>                          from-value  = ""
>>>>>                          to-value    = "^copy.*"
>>>>>                  }
>>>>>                  desc   = "Copy to printer"
>>>>>                  # script must be an relative path starting from
>>>>> scriptdir (see above),
>>>>>                  # or an absolute pathname.
>>>>>                  # It must contain the path to the action script
>>>>> without
>>>>> arguments
>>>>>                  # Absolute path example: script =
>>>>> "/some/path/foo.script
>>>>>                  script = "test.script"
>>>>>          }
>>>>>          action preview {
>>>>>                  filter = "^preview$"
>>>>>                  numerical-trigger {
>>>>>                          from-value = 1
>>>>>                          to-value   = 0
>>>>>                  }
>>>>>                  desc   = "Preview"
>>>>>                  # script must be an relative path starting from
>>>>> scriptdir (see above),
>>>>>                  # or an absolute pathname.
>>>>>                  # It must contain the path to the action script
>>>>> without
>>>>> arguments
>>>>>                  # Absolute path example: script =
>>>>> "/some/path/foo.script
>>>>>                  script = "test.script"
>>>>>          }
>>>>>          action globaltest {
>>>>>                  filter = "^message.*"
>>>>>                  desc   = "Test (print all env vars)"
>>>>>                  # script must be an relative path starting from
>>>>> scriptdir (see above),
>>>>>                  # or an absolute pathname.
>>>>>                  # It must contain the path to the action script
>>>>> without
>>>>> arguments
>>>>>                  # Absolute path example: script =
>>>>> "/some/path/foo.script
>>>>>                  script = "test.script"
>>>>>          }
>>>>> }
>>>>>
>>>>> # include
>>>>> # include another file at this point. This may only occur outside
>>>>> general and devices blocks.
>>>>> # an include statement may be relative to the direcory where
>>>>> scanbd.conf
>>>>> is located or absolute
>>>>> # include("scanner.d/myscanner.conf")
>>>>> # include("/my/long/path/myscanner.conf")
>>>>>
>>>>> # devices
>>>>> # each device can have actions and functions, you can disable not
>>>>> relevant devices
>>>>> include(scanner.d/avision.conf)
>>>>> include(scanner.d/fujitsu.conf)
>>>>> include(scanner.d/hp.conf)
>>>>> include(scanner.d/pixma.conf)
>>>>> include(scanner.d/snapscan.conf)
>>>>> include(scanner.d/canon.conf)
>>>>> #include(scanner.d/plustek.conf)
>>>>>
>>>>>
>>>>> I also commented out the include statements for the devices, tested
>>>>> different sections for the options such as "preview", tried the
>>>>> default
>>>>> Ubuntu-Package for 16.04 as well as the newest version 1.5.0 of
>>>>> scanbd.
>>>>>
>>>>> Syslog contains essentially the same output as scanbd -f -d7, no
>>>>> events
>>>>> registered at all on button press. Scanimage -A also gave no evidence
>>>>> for the presence of scanner buttons.
>>>>>
>>>>> For me it seems that the problem might be the scanner button
>>>>> options not
>>>>> being recognized, strangely there are options "with no name" ?!
>>>>>
>>>>> Thanks very much for any hint !
>>>>>
>>>>>
>>>>> Regards,
>>>>>
>>>>>
>>>>>    Florian
>>>>>
>>>>>
>>>>>
>>>
>>>
>>
> 
> 

-------------- next part --------------
Index: scanbuttond_wrapper.c
===================================================================
--- scanbuttond_wrapper.c	(Revision 236)
+++ scanbuttond_wrapper.c	(Arbeitskopie)
@@ -1062,13 +1062,37 @@
     assert(backend_name);
     slog(SLOG_INFO, "scanbtnd_button_name, backend: %s", backend_name);
 
-    if (strcmp("snapscan", backend_name)) {
-        assert(button <= 5);
+    if (strcmp("genesys", backend_name) == 0) {
         switch(button) {
         case 0:
-            return NULL;
+            return "zero";
             break;
         case 1:
+            return "copy"; 
+            break;
+        case 2:
+            return "scan"; 
+            break;
+        case 3:
+            return "pdf"; 
+            break;
+        case 4:
+            return "email"; 
+            break;
+        case 5:
+            return "stop";
+            break;
+        default:
+            return "default";
+            break;
+        }
+    }
+    else {
+        switch(button) {
+        case 0:
+            return "zero";
+            break;
+        case 1:
             return "scan"; // "web";
             break;
         case 2:
@@ -1084,9 +1108,10 @@
             return "stop";
             break;
         default:
-            return NULL;
+            return "default";
             break;
         }
+        
     }
     return NULL;
 }


More information about the sane-devel mailing list