# -*- coding: utf-8 -*-
#
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

''' This configuration file consists of:

Some path definitions and parameters:
    gesture_files_path: the path of the gesture files
    trackpad_device_file: the trackpad device file
    trackpad_drivers: possible trackpad drivers that may be used
    xorg_log: the xorg log file
    xcapture_timeout: the timeout if there are no more X events coming in
    xcapture_max_post_replay_time: the max allowable duration after
        the completion of device file playback

functionality_list: details the specific functionalities to be tested.

filename_attr: specifies the components to generate test file names
'''

import trackpad_util


''' Path definitions '''
# trackpad_test_data: specifies the top directory for whole trackpad test data
trackpad_test_data = '/var/tmp/trackpad_test_data'

# gesture_files_path_root: specifies the root directory saving the test files
gesture_files_path_root = trackpad_test_data + '/test_files'

# gesture_files_path: specifies the path (symbolic link) for autotest
gesture_files_path = gesture_files_path_root + '/work'

# gesture_files_path_latest: specifies the latest path (symbolic link)
# When performing gesture recording, this link points to the latest created
# user gesture file path. This symbolic is updated whenver there is a new user
# gesture file path created.
gesture_files_path_latest = gesture_files_path_root + '/latest'

# gesture_files_path_autotest: specifies the autotest path (symbolic link)
# used when performing autotest. As default, it points to the same directory
# as latest; however, it could be overwritten dynamically in order to run
# autotest on different user file path.
gesture_files_path_autotest = gesture_files_path_root + '/autotest'

# gesture_files_subpath_regression: specifies the relative subpath
# to the hardware_Trackpad directory for regresion test
# The regression test could be either a short or long test.
model = trackpad_util.get_model()
gesture_files_subpath = 'data/gestures'
gesture_files_subpath_regression = os.path.join(gesture_files_subpath, model)
regression_subset_list = ['short', 'long']
regression_default_subset = 'short'

# Define the gesture sets for 'long' and 'short' regression test on various
# platforms. For now, the two sets are the same. The short regression gesture
# set is a subset of the long one.
regression_gesture_sets = {
    'long':  {'mario': 'user_20120425_071603',
              'zgb': 'user_20120426_124823',
              'alex': 'user_20120430_114727',
              'lumpy': 'user_20120426_071316',
             },
    'short': {'mario': 'user_20120425_071603',
              'zgb': 'user_20120426_124823',
              'alex': 'trackpad_user_study_short',
              'lumpy': 'user_20120426_071316',
             },
}

# Define the file to look up the gestures used in short/long regression test
regression_gestures_dict = {
    'long': None,
    'short': os.path.join(gesture_files_subpath, 'regression_gestures_short'),
}

# gesture_files_path_work: specifies the working path used for downloading
# files from storage server
gesture_files_path_work= gesture_files_path_root + '/work'

# gesture_files_path_results: path of the test results
gesture_files_path_results = trackpad_test_data + '/results'


# The device file is used to record/replay trackpad device events.
# The device file is created by evdev.
# Priority about which trackpad device file to use:
# (1) Use trackpad device specified on trackpad_record command line.
# (2) Probe /dev/input/event* for trackpad device.
# TODO(josephsih): get rid of (3) and (4) below
# (3) Using the trackpad device specified in the config file here.
# (4) Using the trackpad device hardcoded in trackpad_util module.
# Note that the path of the device file may vary from model to model.
trackpad_device_file = '/dev/input/event6'


''' Parameters to find trackpad X input driver '''
trackpad_drivers = ('cmt', 'multitouch', 'synaptics')
xorg_log = '/var/log/Xorg.0.log'

''' Parameters to find trackpad device in xinput '''
xinput_trackpad_string = ('touchpad', 'trackpad', 'cyapa')

''' Parameters for Xcapture '''
xcapture_timeout = 1
xcapture_max_post_replay_time = 20
mtplot_gui = False


''' area: a broader category that several functionalities belong to.
          E.g., area[0]: 1 finger point & click.
          It consists of a short name and a long name.
'''

area = {
    0: ('click', '1 finger point & click'),
    1: ('select', 'Click & select/drag'),
    2: ('right_click', '2 finger alternate/right click'),
    3: ('scroll', '2 finger scroll'),
    4: ('palm', 'Palm/thumb detection'),
}


''' functionality_list: the list of test functionalities

    A functionality is a TrackpadTestFunctionality object and has the
    following attributes:

    TrackpadTestFunctionality(

        name: the name of the functionality,
              e.g., any_finger_click, any_angle_click

        subname: specifying variations of a particular functionality
              e.g., physical means a physical click
                    tap means a tap to click
                    left means the left hand
                    right means the right hand
              Note: a subname of the functionality no_min_width_click looks like
                    subname=(('physical', 'tap'),
                             ('left', 'right'),
                    ),
                    In this case, the variations of the file name include
                    no_min_width_click.physical.left-...
                    no_min_width_click.physical.right-...
                    no_min_width_click.tap.left-...
                    no_min_width_click.tap.right-...

        description: the description of the functionality

        prompt, subprompt: Prompt messages about a functionality and its
              subname when recording

        area: the area to which the functionality belongs,
              e.g., '2 finger scroll'

        criteria: configurable criteria associated with a functionality.
              It includes
                  'max_movement': the max cursor movement allowed
                      examples 1: To specify movement no more than 5 pixels
                          'max_movement': 5,
                      examples 2: To specify no movement allowed
                          'max_movement': 0,
                  'button': the count of button events specified.
                      examples 1: To specify one left button click:
                          'button': ('Button Left', '==', 1),
                      examples 2: To specify five left button click:
                          'button': ('Button Left', '==', 5),
                      examples 3: To specify no button events at all:
                          'button': None,

        weight: the weight of each functionality, used to calculate how well
              a driver performs. This attribute is for future use.

        enabled: True or False to indicate whether this functionality will be
              used during recording or during the autotest.

        files: the list of test files. Can be specific file names, or '*', or
              something like 'two_finger_scroll.down-*'
              e.g., for the functionality of 'any_finger_click',
                    Some possible specifications are:
                    - '*': matches all files 'any_finger_click*':
                    - 'any_finger_click.tap.*'
                    - 'any_finger_click.physical.left.*'
                    - 'any_finger_click.physical.right.4-alex-john-*.dat'
    ),
'''

# the min distance of single drag gesture
select_drag_distance = 100
# the allowable max cursor movement during a click
click_movement = 5
# the allowable max cursor movement during palm contact
palm_movement = 5
# the ratio between the movement of the two axes
# E.g., if your finger is tracking left, y_move / x_move <= move_ratio.
move_ratio = 0.15
# max accumulated motion allowed in between button events
max_motion_mixed = 20
# max accumulated button wheel events allowed
max_button_wheel_mixed = 15
# the min distance of finger tracking
tracking_distance = 20
# motion trace buffer for clicks
motion_trace_before = 6
motion_trace_after = 6
TRACE_FOR_10_MINS = 80 * 60 * 10
LONG_MOTION_TRACE = TRACE_FOR_10_MINS


functionality_list = [

    ### Area 0: 1 finger point & click
    TrackpadTestFunctionality(
        name='any_finger_click',
        subname=('physical_click', 'tap'),
        description='Any finger, including thumb, can click',
        prompt='Make a {0} with every finger of either hand starting from '
               'thumb to pinky. Repeat the procedure {1} to make {2} in total.',
        subprompt={
            'physical_click': ('physical click', 'twice', '10 clicks'),
            'tap':            ('soft tap', 'twice', '10 taps'),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Left', '==', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='any_angle_click',
        subname=('physical_click', 'tap'),
        description='Finger can be oriented at any angle relative to '
                    'trackpad',
        prompt='Make a {0} with any finger of either hand at 0, 45, 90, '
               '135, 180 degrees with the horizontal axis respectively. '
               'Repeat the procedure {1} to make {2} in total.',
        subprompt={
            'physical_click': ('physical click', 'twice', '10 clicks'),
            'tap':            ('soft tap', 'twice', '10 taps'),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Left', '==', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='any_location_click',
        subname=('physical_click', 'tap'),
        description='Click can occur at any location on trackpad '
                    '(no hot zones)',
        prompt='Make a {0} with any finger of either hand in the upper, '
               'middle, and bottom parts of the trackpad respectively. '
               'Repeat the procedure {1} to make {2} in total.',
        subprompt={
            'physical_click': ('physical click', '3 times', '9 clicks'),
            'tap':            ('soft tap', '3 times', '9 taps'),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Left', '==', 9),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='no_min_width_click',
        subname=('physical_click', 'tap'),
        description='Single finger click should not have a defined minimum '
                    'width (i.e. click possible with finger tip and/or '
                    'fingernail)',
        prompt='Make {0} using any finger tip {1} of either hand.',
        subprompt={
            'physical_click': ('physical clicks 5 times', '(fingernail)'),
            'tap':            ('soft tap 5 times', ''),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Left', '==', 5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='no_cursor_wobble',
        subname=('physical_click', 'tap'),
        description='No cursor wobble, creep, or jumping (or jump back) '
                    'during clicking',
        prompt='Make {0} using any finger of either hand.',
        subprompt={
            'physical_click': ('physical clicks 5 times',),
            'tap':            ('soft tap 5 times',),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Left', '==', 5),
            #
            # Mark off the following two new rules. Enable them when the
            # new method button_dev is stable.
            #
            # Criteria for physical_click
            #'button_dev(physical_click)': (
            #    ('NOP', ('Finger On', True)),
            #    ('NOP', ('Device Mouse Click Press', True)),
            #    ('NOP', ('Device Mouse Click Release', True)),
            #    ('NOP', ('One Finger On', True)),
            #    ('NOP', ('Two Fingers On', False)),
            #    ('NOP', ('Three Fingers On', False)),
            #    ('NOP', ('Four Fingers On', False)),
            #    ('Motion', '<=', 0),
            #    ('Button', 'Button Left'),
            #    ('NOP', ('Finger Off', 'DONTCARE')),
            #),
            #
            # Criteria for tap: using the old method
            #'total_movement(tap)': ('Motion', '==', 0),
            #'button(tap)':         ('Button Left', '==', 5),
            #
            # button_dev method for tap is not supported yet.
            # Uncomment the following rules when it is ready.
            #
            #'button_dev(tap)': (
            #    ('NOP', ('Finger On', True)),
            #    ('NOP', ('Device Mouse Click Press', False)),
            #    ('NOP', ('Device Mouse Click Release', False)),
            #    ('NOP', ('One Finger On', True)),
            #    ('NOP', ('Two Fingers On', False)),
            #    ('NOP', ('Three Fingers On', False)),
            #    ('NOP', ('Four Fingers On', False)),
            #    ('Motion', '<=', 0),
            #    ('Button', 'Button Left'),
            #    ('NOP', ('Finger Off', 'DONTCARE')),
            #),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='drum_roll',
        subname=(('click', 'tap',),
                 ('l1r1',),
        ),
        description='Drum roll: One finger (including thumb) touches '
                    'trackpad followed shortly (<500ms) by a second finger '
                    'touching trackpad should not result in cursor jumping',
        prompt='Alternate {0} with {1} for about 5 seconds.',
        subprompt={
            'click': ('clicking',),
            'tap':   ('tapping',),
            'l1r1':  ('2 different fingers',),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '==', 0),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='drum_roll0',
        subname=('l0r1', 'l1r1', 'r0r1', 'r1r2'),
        description='Drum roll: One finger (including thumb) touches '
                    'trackpad followed shortly (<500ms) by a second finger '
                    'touching trackpad should not result in cursor jumping',
        prompt='Drum roll: use the {0} of your {1} hand touching trackpad '
               'followed shortly (<500ms) by the {2} of your {3} hand '
               'touching trackpad. Repeat the gesture for about {4}.',
        subprompt={
            'l0r1': ('thumb', 'left', 'first finger', 'right', '5 times'),
            'l1r1': ('first finger', 'left', 'first finger', 'right',
                     '5 times'),
            'r0r1': ('thumb', 'right', 'first finger', 'right', '5 times'),
            'r1r2': ('first finger', 'right', 'middle finger', 'right',
                     '5 times'),
        },
        area=area[0],
        criteria={
            'total_movement': ('Motion', '==', 0),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='2fscroll_1fclick',
        subname=('vert', 'horiz',),
        description='2f scroll. Stop scrolling, then raise one finger. Click '
                    'with finger remaining on trackpad. Single finger click '
                    'should result.',
        prompt='Two finger scroll {0} several times for about 3 seconds '
               'without the fingers leaving the trackpad. Lift one of the '
               'finger. The other finger make a physical click.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[0],
        criteria={
            'sequence': (('*'),
                         ('ButtonPress', 'Button Left'),
                         ('ButtonRelease', 'Button Left'),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    ### Area 1: Click & select/drag
    TrackpadTestFunctionality(
        name='single_finger_select_2d',
        subname=('physical_click', 'tap_and_half'),
        description='(Single finger) Finger physical click or '
                    'tap & a half, then finger - remaining in contact '
                    'with trackpad - drags along surface of trackpad',
        prompt='Use any finger to make {0} and drag in arbitrary '
               'directions for about a few seconds without the finger '
               'leaving the trackpad.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
        },
        #
        # Mark off the follow new rules. Enable them when they are stable.
        #
        #criteria={
        #    'button_segment(physical_click)': (
        #        ('accept_1st_gesture_only', False),
        #        ('NOP', ('Device Mouse Click Press', 'before', True)),
        #        ('NOP', ('Device Mouse Click Release', 'between', True)),
        #        ('Button', 'Button Left'),
        #        ('Motion', '>=', select_drag_distance),
        #    ),
        #    'button_segment(tap_and_half)': (
        #        ('accept_1st_gesture_only', False),
        #        ('Button', 'Button Left'),
        #        ('Motion', '>=', select_drag_distance),
        #    ),
        #},
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='single_finger_select',
        subname=(('physical_click', 'tap_and_half'),
                 ('vert', 'horiz'),
        ),
        description='(Single finger) Finger physical click or '
                    'tap & a half, then finger - remaining in contact '
                    'with trackpad - drags along surface of trackpad',
        prompt='Use any finger to make {0} and drag {1} for a few times '
               'without the finger leaving the trackpad.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
            'vert':           ('up and down',),
            'horiz':          ('left and right',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
            'move_ratio': move_ratio,
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='single_finger_lifted_2d',
        subname=None,
        description='(Single finger) If finger leaves trackpad for only '
                    '800ms-1s, select/drag should continue',
        prompt='Use any finger to make tap & a half and drag in arbitrary '
               'directions on the trackpad for a few seconds. Lift your '
               'finger no more than 800ms-1s and then drag again in '
               'arbitrary directions for a few seconds.',
        subprompt=None,
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion', '>=', select_drag_distance),
                         ('NOP', '1st Finger Lifted'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='single_finger_lifted',
        subname=('vert', 'horiz'),
        description='(Single finger) If finger leaves trackpad for only '
                    '800ms-1s, select/drag should continue',
        prompt='Use any finger to make tap & a half and drag {0} for a'
               'few times without the finger leaving the trackpad. '
               'Lift your finger no more than 800ms-1s and drag {0} again '
               'for a few times without the finger leaving the trackpad. '
               'Lift your finger when finished.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('NOP', '1st Finger Lifted'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
            'move_ratio': move_ratio,
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='two_fingers_select_2d',
        subname=('physical_click', 'tap_and_half'),
        description="(Two fingers) 1st finger click or tap & a half, "
                    "2nd finger's movement selects/drags",
        prompt='Use 1st finger to make {0}, and 2nd finger to drag in '
               'arbitrary directions for a few seconds.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='two_fingers_select',
        subname=(('physical_click', 'tap_and_half'),
                 ('vert', 'horiz'),
        ),
        description="(Two fingers) 1st finger click or tap & a half, "
                    "2nd finger's movement selects/drags",
        prompt='Use 1st finger to make {0}, and 2nd finger to drag {1} a '
               'few times without the finger leaving the trackpad.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
            'vert':           ('up and down',),
            'horiz':          ('left and right',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
            'move_ratio': move_ratio,
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='two_fingers_lifted_2d',
        subname=('physical_click', 'tap_and_half'),
        description='(Two fingers) Continues to drag when second finger '
                    'is lifted then placed again.',
        prompt='Use 1st finger to make {0}, and 2nd finger to drag in '
               'some direction without the finger leaving the trackpad. '
               'Lift your 2nd finger for a while and then use your 2nd finger '
               'to drag one more time. Lift both fingers when finished.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('NOP', '2nd Finger Lifted'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='two_fingers_lifted',
        subname=(('physical_click', 'tap_and_half'),
                 ('vert', 'horiz'),
        ),
        description='(Two fingers) Continues to drag when second finger '
                    'is lifted then placed again.',
        prompt='Use 1st finger to make {0}, and 2nd finger to drag {1}  for '
               'a few times without the finger leaving the trackpad. '
               'Lift your finger for a while and then drag {1} again for a '
               'few times without the finger leaving the trackpad. '
               'Lift both fingers when finished.',
        subprompt={
            'physical_click': ('physical click',),
            'tap_and_half':   ('tap & a half',),
            'vert':           ('up and down',),
            'horiz':          ('left and right',),
        },
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('NOP', '2nd Finger Lifted'),
                         ('Motion_x_or_y', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
            'move_ratio': move_ratio,
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='two_fingers_no_delay_2d',
        subname=None,
        description='(Two fingers) Drag should be immediate (no delay between '
                    'movement of finger and movement of selection/drag)',
        prompt='Use 1st finger to click and hold. Use 2nd finger to drag in '
               'arbitrary directions for a few seconds without leaving the '
               'trackpad. Then release two fingers.',
        subprompt=None,
        area=area[1],
        criteria={
            'sequence': (('ButtonPress', 'Button Left'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonRelease', 'Button Left'),
            ),
            'delay': 0.2,
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    ### Area 2: 2 finger alternate/right click
    TrackpadTestFunctionality(
        name='basic_right_click',
        subname=('physical_click', 'tap'),
        description='Basic two-finger clicks should work.',
        prompt='Use two fingers together to make {0} 5 times. Right '
               'clicks should results.',
        subprompt={
            'physical_click': ('physical clicks',),
            'tap':   ('taps',),
        },
        area=area[2],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Right', '==', 5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='x_seconds_interval',
        subname=('1',),
        description='1st use case: 1st finger touches trackpad, '
                    'X seconds pass, 2nd finger touches trackpad, '
                    'physical click = right click, where X is any '
                    'number of seconds',
        prompt='1st finger touches trackpad, wait {0} seconds, and then '
               '2nd finger touches trackpad. Click with those fingers. '
               'Lift the fingers together. ',
        subprompt={
            '1':   ('1',),
        },
        area=area[2],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Right', '==', 1),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='x_seconds_interval3',
        subname=(('0.3', '1', '3'),
        ),
        description='1st use case: 1st finger touches trackpad, '
                    'X seconds pass, 2nd finger touches trackpad, '
                    'physical click = right click, where X is any '
                    'number of seconds',
        prompt='1st finger touches trackpad, wait {0} seconds, and then '
               '2nd finger touches and makes a physical click. Lift two '
               'fingers together. Repeat this procedure 3 times.',
        subprompt={
            '0.3': ('0.3',),
            '1':   ('1',),
            '3':   ('3',),
        },
        area=area[2],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Right', '==', 3),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='roll_case',
        subname=('300',),
        description='2nd use case ("roll case"): If first finger generates a '
                    'click and second finger "rolls on" within 300ms of first '
                    'finger click, an alternate/right click results.',
        prompt='1st finger generates a click, and 2nd finger rolls on '
               'within {0} milliseconds. Lift two fingers together. '
               'Repeat this procedure 3 times.',
        subprompt={
            '300': ('300',),
        },
        area=area[2],
        criteria={
            'total_movement': ('Motion', '<=', click_movement),
            'button':         ('Button Right', '==', 3),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='one_finger_tracking_2d',
        subname=None,
        description='1 finger tracking, never leaves trackpad, 2f '
                    'arrives and there is a click. Right click results.',
        prompt='1st finger moves in arbitrary directions for a few seconds, '
               'never leaves trackpad, and then the 2nd finger arrives and '
               'make a click. Lift two fingers together. '
               'Repeat this procedure 3 times.',
        subprompt=None,
        area=area[2],
        criteria={
            'sequence': (('Motion', '>=', select_drag_distance),
                         ('ButtonPress', 'Button Right'),
                         ('ButtonRelease', 'Button Right'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonPress', 'Button Right'),
                         ('ButtonRelease', 'Button Right'),
                         ('Motion', '>=', select_drag_distance),
                         ('ButtonPress', 'Button Right'),
                         ('ButtonRelease', 'Button Right'),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    ### Area 3: 2 finger scroll

    TrackpadTestFunctionality(
        name='basic_two_finger0',
        subname=('vert', 'horiz'),
        description='Basic two-finger scroll should work.',
        prompt='Use two finger to scroll {0} continuously for a few seconds.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='basic_two_finger',
        subname=('up', 'down', 'left', 'right'),
        description='Basic two-finger scroll should work.',
        prompt='Use two finger to scroll {0}.',
        subprompt={
            'up':  ('from bottom to top',),
            'down':  ('from top to bottom',),
            'left':  ('from right to left',),
            'right':  ('from left to right',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='basic_2nd_finger',
        subname=('vert', 'horiz'),
        description='1st finger contacts trackpad, 2nd finger '
                    'moves vertically and scroll mirrors that movement',
        prompt='Touch the trackpad with one finger, and use 2nd finger '
               'to move {0} continuously for a few seconds.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='2nd_finger_vertical',
        subname=(('up', 'down'),
                 ('above', 'same_y', 'below'),
        ),
        description='1st finger contacts trackpad, 2nd finger '
                    'moves vertically and scroll mirrors that movement',
        prompt='Touch the trackpad with one finger, and move 2nd finger '
               'from {1} the 1st finger to move {0} to the edge.',
        subprompt={
            'up':  ('up',),
            'down': ('down',),
            'above': ('above',),
            'same_y': ('the same y (row) as',),
            'below': ('below',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='2nd_finger_horizontal',
        subname=(('left', 'right'),
                 ('left_of', 'same_x', 'right_of'),
        ),
        description='1st finger contacts trackpad, 2nd finger '
                    'moves vertically and scroll mirrors that movement',
        prompt='Touch the trackpad with one finger, and use 2nd finger '
               'from {1} the 1st finger to move {0} to the edge.',
        subprompt={
            'left':  ('left',),
            'right': ('right',),
            'left_of':  ('the left of',),
            'same_x': ('the same x (column) as',),
            'right_of': ('the right of',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='near_parallel',
        subname=(('up', 'down', 'left', 'right'),
                 ('parallel',),
        ),
        description='1st: Two fingers moving near parallel result in scroll',
        prompt='Use two fingers spacing naturally {1} to scroll {0}. ',
        subprompt={
            'up':       ('from bottom to top',),
            'down':     ('from top to bottom',),
            'left':     ('from right to left',),
            'right':    ('from left to right',),
            'parallel': ('in parallel',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='near_parallel0',
        subname=(('up', 'down', 'left', 'right'),
                 ('parallel', '45',),
        ),
        description='1st: Two fingers moving near parallel result in scroll',
        prompt='Use a finger of your left hand and a finger of your right '
               'hand with two fingers about 1 cm apart. Scroll {0} across '
               'half of the trackpad with two fingers moving {1}',
        subprompt={
            'up':       ('up',),
            'down':     ('down',),
            'left':     ('left',),
            'right':    ('right',),
            'parallel': ('in parallel',),
            '45':       ('far away with an angle about 45 degrees.',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='2nd_finger_vertical0',
        subname=('up', 'down'),
        description='2nd: 1st finger contacts trackpad, 2nd finger '
                    'moves vertically and scroll mirrors that movement',
        prompt='Touch the trackpad with one finger, and use 2nd finger '
               'to move {0} across half of the trackpad.',
        subprompt={
            'up':   ('up',),
            'down': ('down',),
        },
        area=area[3],
        criteria={
            # TODO(josephsih): Before 2nd finger touching, there could be some
            # movements generated by first finger. Detect the movement only
            # after 2nd finger touching.
            # Same for '2nd_finger_horizontal' below.
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='2nd_finger_horizontal0',
        subname=('left', 'right'),
        description='2nd: 1st finger contacts trackpad, 2nd finger '
                    'moves horizontally and scroll mirrors that movement',
        prompt='Use a finger contacts the trackpad, and use 2nd finger '
               'to move {0} across half of the trackpad.',
        subprompt={
            'left':  ('left',),
            'right': ('right',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='exclude_thumb',
        subname=('vert', 'horiz'),
        description='Test that finger exclude thumb in scroll',
        prompt='Use the thumb of either hand contacts the bottom of the '
               'trackpad, and then use two other fingers to scroll {0} for a '
               'few times.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='finger_spacing',
        subname=(('up', 'down'),
                 ('close', 'proper'),
                 ('parallel', 'inline'),
        ),
        description='Scroll should occur regardless of spacing '
                    '(close or distant) between fingers',
        prompt='Use two fingers {1} {2} to scroll {0}.',
        subprompt={
            'up':       ('from bottom to top',),
            'down':     ('from top to bottom',),
            'close':    ('contacting together',),
            'proper':   ('spacing naturally',),
            'parallel': ('in parallel',),
            'inline':   ('in a vertical line',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='finger_spacing0',
        subname=(('vert',),
                 ('close', 'proper', 'distant'),
        ),
        description='Scroll should occur regardless of spacing '
                    '(close or distant) between fingers',
        prompt='Use two fingers {1} to scroll {0} for a few times.',
        subprompt={
            'vert':    ('up and down',),
            'close':   ('contacting together',),
            'proper':  ('spacing naturally in your own way',),
            'distant': ('spacing far on two sides of the trackpad',),
        },
        area=area[3],
        criteria={
            'total_movement': ('Motion', '==', 0),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='reflect_vertical',
        subname=('up', 'down',),
        description='Vertical scroll, reflecting movement of finger(s)',
        prompt='(1) Use two fingers to scroll {0} slowly for about 3~4 '
               'seconds. Lift the fingers.\n '
               '(2) Use two fingers to scroll {0} again at a fast speed '
               'for about 1 second. Then lift fingers.\n ',
        subprompt={
            'up':     ('up',),
            'down':   ('down',),
        },
        area=area[3],
        criteria={
            'button':         ('Button Wheel', '>=', 10),
            'wheel_speed':    ('Wheel Speed Multiplier', '>=', 1.5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='reflect_vertical0',
        subname=('up', 'down',),
        description='Vertical scroll, reflecting movement of finger(s)',
        prompt='(1) Use two fingers to scroll {0} slowly for about 4 '
               'seconds. Lift the fingers.\n '
               '(2) Use two fingers to scroll {0} again at a medium speed '
               'for about 1~2 seconds. Then lift fingers.\n '
               '(3) Use two fingers to scroll {0} again at a fast speed '
               'for less than 0.5 seconds. Then lift fingers. ',
        subprompt={
            'up':     ('up',),
            'down':   ('down',),
        },
        area=area[3],
        criteria={
            'button':         ('Button Wheel', '>=', 10),
            'wheel_speed':    ('Wheel Speed Multiplier', '>=', 1.5),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='reflect_horizontal',
        subname=('left', 'right',),
        description='Horizontal scroll, reflecting movement of finger(s)',
        prompt='(1) Use two fingers to scroll {0} slowly for about 3~4 '
               'seconds. Lift the fingers.\n '
               '(2) Use two fingers to scroll {0} again at a fast speed '
               'for about 1 second. Then lift fingers.\n ',
        subprompt={
            'left':   ('left',),
            'right':  ('right',),
        },
        area=area[3],
        criteria={
            'button':         ('Button Wheel', '>=', 10),
            'wheel_speed':    ('Wheel Speed Multiplier', '>=', 1.5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='reflect_horizontal0',
        subname=('left', 'right',),
        description='Horizontal scroll, reflecting movement of finger(s)',
        prompt='(1) Use two fingers to scroll {0} slowly for about 4 '
               'seconds. Lift the fingers.\n '
               '(2) Use two fingers to scroll {0} again at a medium speed '
               'for about 1~2 seconds. Then lift fingers.\n '
               '(3) Use two fingers to scroll {0} again at a fast speed '
               'for less than 0.5 seconds. Then lift fingers. ',
        subprompt={
            'left':   ('left',),
            'right':  ('right',),
        },
        area=area[3],
        criteria={
            'button':         ('Button Wheel', '>=', 10),
            'wheel_speed':    ('Wheel Speed Multiplier', '>=', 1.5),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='no_sudden_jump',
        subname=('up', 'down', 'left', 'right'),
        description='Consistent scrolling with two fingers '
                    '(no sudden jumps)',
        prompt='Use two fingers to scroll steadily {0} to the bezel edge.',
        subprompt={
            'up':    ('from bottom to top',),
            'down':  ('from top to bottom',),
            'left':  ('from right to left',),
            'right': ('from left to right',),
        },
        area=area[3],
        # TODO(josephsih): there are no proper criteria yet.
        # The idea is that it at least needs to meet two criteria:
        # (1) the scroll valuators divided by interarrival times should be
        #     consistent.
        # (2) The interarrival times should be consistent.
        criteria={
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='regardless_prior_state',
        subname=(('up', 'down',),
                 ('single_finger_movement',
                  'right_click',
                  'click_and_drag',
                  'three_finger_contact',),
        ),
        description='Scroll occurs whenever the requirements are met, '
                    'regardless of prior state (e.g. single finger '
                    'movement, right click, click & drag, three finger '
                    'contact with trackpad)',
        prompt='{1} Use the two fingers to scroll {0}.',
        subprompt={
            'up':    ('up',),
            'down':  ('down',),
            'single_finger_movement': ('Use a finger tracking arbitrarily. '
                                       'Without the finger leaving the pad, '
                                       'a 2nd finger touches the trackpad.',),
            'right_click': ('Use two fingers to make a right click. '
                            'All fingers leave the trackpad. '
                            'Within 300ms, two fingers touch the '
                            'trackpad again.',),
            'click_and_drag': ('Make a click and drag gesture in any '
                               'direction. All fingers leave the trackpad. '
                               'Within 300ms, two fingers touch the trackpad '
                               'again.',),
            'three_finger_contact': ('Use two fingers to scroll in any '
                                     'direction. Have a 3rd finger in '
                                     'contact. Then go back to two fingers.',),
        },
        area=area[3],
        criteria={
            'sequence': (('*'),
                         ('Button Wheel', '>=', 10),
                         ('Motion', '==', 0),
            ),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    ### Area 4: Palm/thumb detection

    TrackpadTestFunctionality(
        name='palm_presence',
        subname=(('static', 'moving'),
                 ('left', 'right', 'both'),
        ),
        description='No unintended cursor movement, click, scroll due to '
                    'presence of palm',
        prompt='Place {1} on the trackpad {0} for about 5 seconds. '
               'Then lift the palm(s).',
        subprompt={
            'static': ('statically in the way as your are typing',),
            'moving': ('and move continuously in arbitrary directions',),
            'left': ('your left palm',),
            'right': ('your right palm',),
            'both': ('both palms',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         None,
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='hovering_thumb',
        subname=(('left', 'right'),
                 ('contact', 'above',),
        ),
        description='No unintended cursor movement, click, scroll due '
                    'to presence of "hovering thumb" (Hovering thumb '
                    'defined as Thumb above, or in contact with, bottom '
                    '¼ of pad; thumb in any orientation)',
        prompt='Place and move your {0} thumb (in any orientation) {1} '
               'bottom ¼ of pad for about 5 seconds.',
        subprompt={
            'left': ('left',),
            'right': ('right',),
            'contact': ('in contact with',),
            'above': ('hovering above',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         None,
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='hovering_thumb2',
        subname=('click',),
        description='A thumb is used as an additional finger to make an '
                    'unintended gesture. The most basic example is a thumb '
                    'resting on the bottom quarter of a trackpad and a '
                    'pointer finger tracking resulting in an unwanted 2 '
                    'finger scroll. The most common way to force reproduction '
                    'of this case is to put users in the scenario that many '
                    'fall into - thumb clicking followed by a gesture '
                    '(1f tracking or 2f scrolling).',
        prompt='Use thumb to click on the Chrome logo, then use your index '
               'finger to move to the blue square and then move to the '
               'yellow diamond.',
        subprompt=None,
        area=area[4],
        criteria={
            'total_movement': ('Motion', '>=', tracking_distance),
            'button':         ('Button Left', '==', 1),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='palm_pointing',
        subname=(('upper', 'lower'),
                 ('left', 'right',),
        ),
        description='Example: Palm sitting on any part of '
                    'trackpad, primary finger comes in contact with '
                    'and moves on trackpad: Pointing should occur rather '
                    'than scrolling or clicking.',
        prompt='Place your {1} palm on the {0} part of trackpad. Use primary '
              'finger of the other hand to move in arbitrary directions for a '
              'few second. Then lift the finger and palm.',
        subprompt={
            'upper': ('upper',),
            'lower': ('lower',),
            'left': ('left',),
            'right': ('right',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '>=', tracking_distance),
            'button':         None,
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='thumb_pointing',
        subname=('left', 'right',),
        description='Example: thumb sitting on bottom edge of '
                    'trackpad, primary finger comes in contact with '
                    'and moves on trackpad: Pointing should occur rather '
                    'than scrolling or clicking.',
        prompt='Place your {0} thumb on the bottom ¼ of trackpad. Use primary '
               'finger to move in arbitrary directions for a few second. '
               'Then lift both fingers.',
        subprompt={
            'left': ('left',),
            'right': ('right',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '>=', tracking_distance),
            'button':         None,
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='pointing0',
        subname=None,
        description='Example: Palm/thumb sitting on bottom edge of '
                    'trackpad, primary finger comes in contact with '
                    'and moves on trackpad: Pointing should occur rather '
                    'than scrolling',
        prompt='Place any thumb on the bottom edge of trackpad. '
               'Use primary finger to move in arbitrary directions for a few '
               'second. Then lift both fingers.',
        subprompt=None,
        area=area[4],
        criteria={
            'sequence': (('Motion', '<=', palm_movement),
                         ('NOP', '2nd Finger Landed'),
                         ('Motion', '>=', select_drag_distance),
                         ('NOP', '2nd Finger Lifted'),
                         ('Motion', '<=', palm_movement),
            ),
            'button':     None,
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='palm_scroll',
        subname=(('upper', 'lower'),
                 ('left', 'right',),
                 ('up', 'down',),
        ),
        description='Example: Palm/thumb sitting on bottom edge of '
                    'trackpad while two fingers move in parallel on '
                    'trackpad: Scroll should result',
        prompt='Place your {1} palm on the {0} part of trackpad. Use two '
              'fingers to scroll {2}. Then lift both fingers and palm.',
        subprompt={
            'upper': ('upper',),
            'lower': ('lower',),
            'left':  ('left',),
            'right': ('right',),
            'up':    ('up',),
            'down':  ('down',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='thumb_scroll',
        subname=(('left', 'right',),
                 ('up', 'down',),
        ),
        description='Example: Palm/thumb sitting on bottom edge of '
                    'trackpad while two fingers move in parallel on '
                    'trackpad: Scroll should result',
        prompt='Place your {0} thumb on the bottom ¼ of trackpad. Use two '
              'fingers to scroll {1}. Then lift all fingers.',
        subprompt={
            'left':  ('left',),
            'right': ('right',),
            'up':    ('up',),
            'down':  ('down',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='scroll0',
        subname=('vert', 'horiz'),
        description='Example: Palm/thumb sitting on bottom edge of '
                    'trackpad while two fingers move in parallel on '
                    'trackpad: Scroll should result',
        prompt='Place any thumb on the bottom edge of trackpad. '
               'Use two fingers to scroll {0} for a few times. '
               'Then lift all fingers.',
        subprompt={
            'vert':  ('up and down',),
            'horiz': ('left and right',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Wheel', '>=', 10),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='palm_click',
        subname=(('upper', 'lower'),
                 ('left', 'right',),
        ),
        description='Example: Palm/thumb sitting on bottom edge of trackpad '
                    'while primary finger clicks: Primary click results '
                    'rather than alternate click',
        prompt='Place your {1} palm on the {0} part of trackpad. Use primary '
               'finger to make 5 clicks without lifting the palm.',
        subprompt={
            'upper': ('upper',),
            'lower': ('lower',),
            'left': ('left',),
            'right': ('right',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Left', '==', 5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='thumb_click',
        subname=('left', 'right',),
        description='Example: Palm/thumb sitting on bottom edge of trackpad '
                    'while primary finger clicks: Primary click results '
                    'rather than alternate click',
        prompt='Place your {0} thumb on the bottom ¼ of trackpad. Use primary '
               'finger to make 5 clicks without lifting the thumb.',
        subprompt={
            'left':  ('left',),
            'right': ('right',),
        },
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Left', '==', 5),
        },
        weight=1,
        enabled=True,
        files=('*',
        ),
    ),

    TrackpadTestFunctionality(
        name='click0',
        subname=None,
        description='Example: Palm/thumb sitting on bottom edge of trackpad '
                    'while primary finger clicks: Primary click results '
                    'rather than alternate click',
        prompt='Place any thumb on the trackpad. Use primary finger to '
               'make a click. Primary click should result. Repeat 5 times.',
        subprompt=None,
        area=area[4],
        criteria={
            'total_movement': ('Motion', '<=', palm_movement),
            'button':         ('Button Left', '==', 5),
        },
        weight=1,
        enabled=False,
        files=('*',
        ),
    ),

]


''' filename_attr: A test file name is composed of the following attributes

      functionality name and subname: This prefix is generated automatically for
          each functionality. E.g., two_finger_scroll.down

      prefix: the prefix string before the functionality in the file name.
          If you want the area name of each functionality to be used as the
          prefix string in the file name automatically, specify 'DEFAULT' as
          ['prefix', 'DEFAULT'],

          You can give a prefix name here as an area name
          ['prefix', 'click'],

          If you do not want a prefix string to show up before the
          functionality name in the file name, you can assign None.
          ['prefix', None],

      model: the model of the machine.
          To let the system figure out the model automatically,
          specify 'DEFAULT', as in:
          ['model', 'DEFAULT'],
          Note: Currently, the model name is looked up in '/etc/lsb-release'
                as CHROMEOS_RELEASE_BOARD. For systems that do not support it,
                a model name such as 'alex' below or None must be explicitly
                given.

          You can specify a specific model name. E.g.,
          ['model', 'alex'],

          If you do not want the model name to show up in the file name,
          you can just assign None.
          ['model', None],

      firmware_version: the firmware version of the trackpad. This field is
          generally omitted if any updated trackpad firmware does not affect
          the characteristics of the touch data. When the firmware version
          needs to be specified, do it like:
          ['firmware_version', 'v8.5'],

      [other custom attributes come in here]: e.g., 'kernel_driver_version',
      'trackpad_material', etc.

      tester: the tester name is to be shown on the file name. Different testers
          might have different ways of making gestures. If the tester is None,
          trackpad record program will prompt the user to enter the name when
          capturing gesture data files. To specify the name:
          ['tester', 'tom'],

      timestamp: the timestamp when the file is captured. UTC time is employed.
          It is generated automatically. The format is composed of year, month,
          day, hour, minute, and second. E.g., 20110407_185746

      ext: the extension of the data file. E.g.,
          ['ext', 'dat']

    The name of a test file looks as:
          scroll-basic_two_finger.vert-mario-john-20110916_000219.dat
'''

filename_attr = [
    ['prefix', 'DEFAULT'],
    ['model', 'DEFAULT'],
    ['firmware_version', None],
    ['tester', None],
    ['ext', 'dat']
]
