#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

syscfg.defs:
    BUTTON_DBLCLICK_TICKS:
        description: >
            Maximum time in wich a second click should be performed
            to consider it a double click. This will also introduce
            a delay for generating the single click event.
        value: '(OS_TICKS_PER_SEC / 4)'
    BUTTON_LONGHOLD_TICKS:
        description: >
            Minimum time to wait with the button pressed to consider
            it a long hold (long press, long click, long double click).
        value: '(OS_TICKS_PER_SEC)'
    BUTTON_REPEAT_FIRST_TICKS:
        description: >
            Time to wait before generating the first repeated action.
        value: '(OS_TICKS_PER_SEC)'
    BUTTON_REPEAT_TICKS:
        description: >
            Time to wait before generating consecutive repeated action.
        value: '(OS_TICKS_PER_SEC)'
    BUTTON_EVENT_MAX:
        description: >
            Maximum number of pending button event. (about 20bytes/event)
        value: 10
    BUTTON_USE_DOUBLE:
        description: >
            Include code for double click.
        value: 1
    BUTTON_USE_LONG:
        description: >
            Include code for long click/dblclick.
        value: 1
    BUTTON_USE_REPEAT:
        description: >
            Include code for auto-repeating last action.
        value: 0
    BUTTON_USE_EMULATION:
        description: >
            Include code for emulating buttons using simultaneous click
        value: 0
    BUTTON_USE_FILTERING:
        description: >
            Allow rejecting of event for which we are not interrested
            to be notified.
        value: 0
    BUTTON_EMIT_ACTION:
        description: >
            Include code for generation of action event.
        value: 1
    BUTTON_EMIT_STATE_CHANGED:
        description: >
            Include code for generation of state changed event.
        value: 0
    BUTTON_USE_PER_BUTTON_CALLBACK_EVENTQ:
        description: >
            Allow to specify per button event queue for callback processing.
            By default os_eventq_dflt_get()
        value: 0
