[sane-devel] [Scanbd] Set up for Canon PIXMA multifunction scanner - no button response

Wilhelm wilhelm.meier at fh-kl.de
Thu Oct 13 11:23:25 UTC 2016


Oh, mixed the values ...

         action btest {
                 filter = "^button.*"
                 numerical-trigger {
                         from-value = 0
                         to-value   = 1
                 }
                 desc   = "Scan to file"
                 script = "test.script"
         }


Am 13.10.2016 um 11:16 schrieb Wilhelm:
> Matt, you need something like this in your config:
> 
>         action btest {
>                 filter = "^button.*"
>                 numerical-trigger {
>                         from-value = 1
>                         to-value   = 0
>                 }
>                 desc   = "Scan to file"
>                 script = "test.script"
>         }
> 
> --
>  Wilhelm
> 
> Am 13.10.2016 um 09:09 schrieb matt clark:
>> Thanks Wilhelm.  I had changed that while trying to debug the problem,
>> not sure why this would be a problem.  Have reverted to the
>> scanbd.conf from source, with modifications to sane.d directory and
>> comment out the unnecessary manufacturer scanner.d profiles.  revised
>> config is attached - apologies for the length of code.
>>
>> ---
>>
>> /*
>>  * $Id: scanbd.conf 213 2015-10-05 06:52:50Z wimalopaan $
>>  *
>>  *  scanbd - KMUX scanner button daemon
>>  *
>>  *  Copyright (C) 2008 - 2015  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
>>
>>         # the saned executable for manager-mode
>>         saned   = "/usr/sbin/saned"
>>         saned_opt  = {} # string-list
>> saned_env  = { "SANE_CONFIG_DIR=/etc/scanbd/sane.d" } # 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)
>>
>>
>> On Thu, Oct 13, 2016 at 4:10 PM, Wilhelm <wilhelm.meier at fh-kl.de> wrote:
>>>
>>> Looking at your log file it seems that action "globaltest" isn't
>>> installed. There may be 2 reasons for this:
>>>
>>> 1) the regex doenst't match
>>>
>>> 2) there is no trigger definition for the action
>>>
>>> HtH
>>
> 
> 


-- 
Wilhelm




More information about the sane-devel mailing list