/*******************************************************************************
;*******************************************************************************
;**                                                                           **
;**                  COPYRIGHT 2001-2012 NUANCE COMMUNICATIONS                **
;**                                                                           **
;**               NUANCE COMMUNICATIONS PROPRIETARY INFORMATION               **
;**                                                                           **
;**     This software is supplied under the terms of a license agreement      **
;**     or non-disclosure agreement with Nuance Communications and may not    **
;**     be copied or disclosed except in accordance with the terms of that    **
;**     agreement.                                                            **
;**                                                                           **
;*******************************************************************************
;**                                                                           **
;**     FileName: et9auidefaults.h                                            **
;**                                                                           **
;**  Description: Inflection point constants and other defines.               **
;**                                                                           **
;*******************************************************************************
;******************************************************************************/


#ifndef _UIDEFAULTS_H_
#define _UIDEFAULTS_H_          1


#include "et9abuildconfig.h"

/* Word Choice Window (WCW) definitions */
#define WCW_WORDS_PER_PAGE          4       /* 4 words per menu page */
#define WCW_MAX_WORDS              20
#define WCW_EDIT_HISTORY_WORDS      8

/* Language Choice Window (LCW) definitions */
#define LCW_WORDS_PER_PAGE_BITMAP   4       /* when using the bitmap-based WCW */
#define LCW_WORDS_PER_PAGE          8       /* when not using the bitmap-based WCW */
#define LCW_MAX_WORDS               64

/* Case Choice Window (CCW) definitions */
#define CCW_WORDS_PER_PAGE          3

#define MAX_WORDS_PER_NEW_WORDS_SCREEN      10

#define MAX_FREQ_GROUP_SUFFIX       7       /* Max frequency class for suffixes is class 7 */
#define DEFAULT_STAND_ALONE_FREQ_GROUP_SUFFIX_MAX       7       /* Max frequency class for "suffix" of a stand-alone word is class 7 */
#define LONGER_WORD_LENGTH          6       /* words of 6 or more letters are "longer words" */
#define DEFAULT_STAND_ALONE_FREQ_GROUP_SUFFIX           5       /* Default frequency class for "suffix" of a stand-alone word is class 5 for shorter words */
#define MAX_FREQ_GROUP_STEM         7       /* Max frequency class for stems is class 7 */
#define DEFAULT_USER_FREQ_GROUP     5       /* The initial freq. of a single word explicitly added to the UDB. */
#define UDB_GROUP_ADD_FREQ_GROUP    3       /* The initial freq. of a word added to the UDB as part of a group add. */
#define UDB_TAP_FREQ_GROUP          3       /* The initial freq. of a tapped-in word. */
#define UDB_GESTURES_ADD_FREQ_GROUP 3       /* The initial freq. of a shortcut gesture word added. */
#define UDB_CONTACTS_ADD_FREQ_GROUP 2       /* The initial freq. of a word automatically added from contacts or similar lists. */
#define REPEATED_KEY_FREQ_GROUP     2       /* Default frequency class for repeated-key user words is 2 (to avoid collision with single-letter words) */
#define UDB_CONTACTS_LOW_FREQ_GROUP 1       /* The initial freq. of family names automatically imported from contacts. */

#define PASSWORD_AMBIGUITY_OK       350     /* Maximum ambiguity permitted in a password field entry */

#define KEY_ROWS_MAX                 6      /* Maximum number of rows of keys */

#define SHOW_DIACRITICS_INTERVAL_DEFAULT    750     /* Display diacritic menu for an additional 3/4 sec after tap timeout triggers initial display */

#define N_KEYS_MAX                  ET9_KDB_MAX_KEYS

#define Z1_NON_TAP_AREA_MIN_X   20              /* Tap event if pen does not move more than 8 pixels horizontally */
#define Z1_NON_TAP_AREA_MIN_Y   20              /* Tap event if pen does not move more than 8 pixels vertically */

/* Key proportions for active keyboard - always scaled to QVGA proportions: Standard key is 24 width x 40 height */
#define KEYBOARD_UPPER_BOUND         0
#define HOPPING_GESTURE_VERTICAL_MARGIN    (Z1_FIXED_INTERVAL/2)        /* Actual "hop" should arc upward by at least 1/2 Z1_FIXED_INTERVAL after path travels 2 intervals */
#define TOP_ROW_LOWER_BOUND          (pThis->m_backend->sScreenGeometry.keyHeight)        /* Lower limit of top (alphabetic) row at Y == keyHeight */
#define DIACRITIC_GESTURE_MARGIN     5           /* Require gesture to end below lower portion of bottom row */
#define KEYBOARD_UPPER_NEIGHBORHOOD  (-pThis->m_backend->sScreenGeometry.keyHeight)       /* Upper limit of keyboard "neighborhood" (region "close enough" to keyboard) at Y == -keyHeight */

#define DOUBLE_GESTURE_MARGIN       (pThis->m_backend->sScreenGeometry.keyHeight/2)     /* Double-gesture (on top row key) can go 1/2 key-height above top of keyboard */

//#define SHIFT_GESTURE_MARGIN        (-pThis->m_backend->sScreenGeometry.keyHeight / 3)
#define SHIFT_GESTURE_MARGIN        (pThis->m_backend->sScreenGeometry.shiftMargin)
#define ALL_CAP_GESTURE_MARGIN      SHIFT_GESTURE_MARGIN      /* All-Cap gesture accepted if center is above Shift gesture margin (generally at least 20 pixels above top of keyboard) */
#define ALL_CAP_GESTURE_CLOSURE_MARGIN  -4  /* All-Cap gesture should be complete by the time finger is back within 4 pixels from the top of the keyboard */
                                            /*   This prevents a closing Shift gesture from being detected prior to the completion of an All-Caps */
                                            /*   gesture, momentarily causing the keyboard to be displayed in an un-shifted state prior to moving to */
                                            /*   the All-Caps state. */

    #define Z1_TAP_SIGN_CHANGE_LIMIT      3                     /* Tap event if pen does not change direction 3 or more times (for "active" pen) */
    /*#define Z1_TAP_INTERVAL_THRESHOLD   (Z1_TAP_TIMEOUT-1)    // Tap event if pen is not down more than tap-hold threshold */
    /*#define Z1_TAP_INTERVAL_THRESHOLD 400                     // Tap event if pen is not down more than 400 msec. */

    #define CTRL_GESTURE_MARGIN             12                  /* Control gesture must go 12 pixels below bottom of keyboard */
    #define CTRL_GESTURE_SLOPE_THRESHOLD    40                  /* Control gesture must differ from vertical slope by no more than 30 */

#define NEAR_PEN_DOWN_MARGIN_X                  32              /* 4/3 key width */
#define NEAR_PEN_DOWN_MARGIN_Y                  40              /* 1 key height */

#if FINGER_KEYBOARD
    #define SCREEN_EDGE_PENUP_MARGIN                    20          /* PenUp should be close to edge if we slide off */
    #define SCREEN_EDGE_PENDOWN_MARGIN                  35          /* PenDown should be close to edge if we slide back on */
    #define MAX_TAP_PATH_RAW_MOUSE_COUNT            30          /* Tap contact (with finger) should generally have no more than 35 raw data points */
    #define MAX_TAP_PATH_RAW_MOUSE_COUNT1           18          /* Tap contact (with finger) should generally have no more than 18 raw data points */
                                                                /*   if arranged in a more or less straight line */
    #define PROBABLE_TAP_PATH_RAW_MOUSE_COUNT       14          /* Contact highly likely to be intended as tap if no more than 14 raw data points */
    #define MAX_TAP_PATH_RAW_MOUSE_COUNT2           35          /* Tap contact (with finger) may have as many as 35 raw data points (if significantly curved) */
    #define PROBABLE_SWYPE_PATH_MOUSE_COUNT         25          /* Contact with 25 mouse points very likely to be a Swype path */
    #define PROBABLE_FALSE_PENUP_MOUSE_COUNT         2          /* Contact with 2 or fewer mouse points likely to be an artifact */
    #define PROBABLE_FALSE_PENDOWN_INTERVAL         10          /* Contact with lasting no more than 10 msec. likely to be an artifact */
    #define MIN_RUBBING_SIGN_CHANGES                 3          /* Not a rubbing event if finger does not change direction 3 or more times */
    #define MIN_RUBBING_SIGN_CHANGES_AT_TIMEOUT      4          /* Require stromger evidence of rubbing gesture when competing timeout is pending */
    #define MIN_RUBBING_FIXED_COUNT                  6          /* Not a rubbing event if fewer than 6 fixed data points generated (?) */
#else
    #define SCREEN_EDGE_PENUP_MARGIN                    20          /* PenUp should be close to edge if we slide off */
    #define SCREEN_EDGE_PENDOWN_MARGIN                  35          /* PenDown should be close to edge if we slide back on */
    #define MAX_TAP_PATH_RAW_MOUSE_COUNT                 8          /* Tap contact (with stylus) should generally have no more than 8 raw data points */
    #define PROBABLE_TAP_PATH_RAW_MOUSE_COUNT            6          /* Contact likely to be intended as tap if no more than 6 raw data points */
    #define PROBABLE_SWYPE_PATH_MOUSE_COUNT             12          /* Contact with 12 mouse points very likely to be a Swype path */
    #define PROBABLE_FALSE_PENUP_MOUSE_COUNT             1          /* Contact with 1 or fewer mouse points likely to be an artifact */
    #define PROBABLE_FALSE_PENDOWN_INTERVAL             10          /* Contact with lasting no more than 10 msec. likely to be an artifact */
    #define MIN_RUBBING_SIGN_CHANGES                 4          /* Not a rubbing event if pen does not change direction 4 or more times */
    #define MIN_RUBBING_SIGN_CHANGES_AT_TIMEOUT      4          /* Require stromger evidence of rubbing gesture when competing timeout is pending */
    #define MIN_RUBBING_FIXED_COUNT                  6          /* Not a rubbing event if fewer than 6 fixed data points generated (?) */
#endif


#if REPAIR_AT_SCREEN_EDGE_SPECIAL_CASE
    #define MAX_PENUP_PENDOWN_SCREENEDGE_DISTANCE       60          /* Limit to ~ 1 and 1/2 key-heights */
#else
    #define MAX_PENUP_PENDOWN_SCREENEDGE_DISTANCE       -1
#endif

#define LONG_PENUP_INTERVAL             300             /* Allow interval of up to 300 msec. to repair false PenUp detected at edge of screen */

#if REPAIR_LOST_SCREEN_CONTACT
   /*#define SCREEN_EDGE_PENUP_INTERVAL 500             // Allow interval of up to 500 msec. to repair false PenUp detected at edge of screen */
    /*#define SHORT_PENUP_INTERVAL      160             // Allow interval of up to 160 msec. to repair false PenUp detected anywhere on screen */
    /*#define VERY_SHORT_PENUP_INTERVAL  75             // Interval less than 75 msec. is highly unlikely to be intentional */
    /*#define SCREEN_EDGE_PENUP_INTERVAL    400             // Allow interval of up to 500 msec. to repair false PenUp detected at edge of screen */
    /*#define SHORT_PENUP_INTERVAL      120             // Allow interval of up to 160 msec. to repair false PenUp detected anywhere on screen */
    /*#define VERY_SHORT_PENUP_INTERVAL  75 */

    /*#define SCREEN_EDGE_PENUP_INTERVAL    250             // Allow interval of up to 250 msec. to repair false PenUp detected at edge of screen */
    /*#define SHORT_PENUP_INTERVAL       80             // Allow interval of up to 80 msec. to repair false PenUp detected anywhere on screen */
    /*#define VERY_SHORT_PENUP_INTERVAL  50             // Interval less than 50 msec. is highly unlikely to be intentional */

/* Note: tapping as quickly as possible, and without bothering to target a specific key, CK was able to tap 75 times in 10 seconds, for 133 msec.  */
/*   per tap cycle (PenDown to PenDown).  These limits are slightly longer than the theoretical limit based on assuming that the time is split evenly  */
/*   between time in contact with the screen and time off the screen.  This is a guess, that the longer window (during which a subsequent tap event is merged)  */
/*   will not cause too many intended taps to be unrecognized, and will help catch more false PenUp events.  */
    #define SCREEN_EDGE_PENUP_INTERVAL  250             /* Allow interval of up to 250 msec. to repair false PenUp detected at edge of screen */
    #define SHORT_PENUP_INTERVAL         90             /* Allow interval of up to 90 msec. to repair false PenUp detected anywhere on screen */
    #define VERY_SHORT_PENUP_INTERVAL    70
#else
    #define SCREEN_EDGE_PENUP_INTERVAL    0             /* Set to 0 msec. to disable repair of false PenUp detected at edge of screen */
    #define SHORT_PENUP_INTERVAL          0             /* Set to 0 msec. to disable repair of false PenUp detected anywhere on screen */
    #define VERY_SHORT_PENUP_INTERVAL     0             /* Set to 0 msec. to disable repair of false PenUp detected anywhere on screen */
#endif
/* Constants for path analysis */
#define SLOPE_THRESHOLD             20                          /* Vectors are "similar" if slopes differ by no more */
                                                                /*   than 20/2 = 10 degrees */
#define MIN_INTERSECTING_SLOPE_CHANGE           163             /* Require path slope change of at least 90 degrees to define PathDivision IP */
#define PATH_DIVISION_CURVATURE_RATIO           (float)2.0      /* Force creation of PathDivision IP if curvature ratio exceeds threshold */
#define MIN_PATH_DIVISION_FIXED_INTERVALS       (96 / Z1_FIXED_INTERVAL)        /* 4 key-widths worth of path intervals */

#define MAX_MOUSE_DISPLACEMENT_INIT 16      /* Should not have more than 16 pixels (QVGA scale) between successive mouse points */

#define DIF2_MAX_VALUE             900      /* the maximum possible D2Sum value */
#define DIF2_ANGLE_THRESHOLD       225      /* Set to value corresponding to ~60 degree vector change */
#define DIF2_ANGLE_THRESHOLD_MAX   225      /* Set to value corresponding to ~60 degree vector change */
#define DIF2_LOWER_THRESHOLD        60      /* Set to value corresponding to ~30 degree vector change */
#define DIF2_ANGLE_THRESHOLD_MIN    20      /* Set to value corresponding to ~17 degree vector change */
#define STRAIGHT_PATH_D2_THRESHOLD1  5
#define STRAIGHT_PATH_D2_THRESHOLD   4
#define MIN_STRAIGHT_PATH_COUNT      5
#define MAX_STRAIGHT_PATH_COUNT     11
#define MAX_CURVED_COUNT             4

#if Z1_ANY_EMULATOR

    #define PAUSE_MIN_THRESHOLD                 2500    /* Default minimum pause threshold is 2.5 seconds (on emulator!) */
    #define LONG_SEARCH_NOTIFICATION_THRESHOLD  2000    /* Notify user if search will likely take lomger than 2.0 seconds (on emulator!) */

#else

    #define PAUSE_MIN_THRESHOLD                 250     /* Default minimum pause threshold is 1/4 second (on device) */
    #define LONG_SEARCH_NOTIFICATION_THRESHOLD  900     /* Notify user if search will likely take lomger than 0.90 seconds */

#endif

/*#define Z1_FIXED_INTERVAL         6       // Create fixed-interval points every 6 pixels */
/*#define Z1_FIXED_INTERVAL         5       // Create fixed-interval points every 5 pixels */
/*                                          //   along path */
/*#define Z1_FIXED_INTERVAL           3       // Create fixed-interval points every 3 pixels */
/*                                            //   along path */
/* NOTE: If Z1_FIXED_INTERVAL is changed to a value other than 5, it may be necessary to adjust the definition of the  */
/* path second difference and/or related thresholds */
#define Z1_FIXED_INTERVAL           5       /* Create fixed-interval points every 5 pixels */
#define Z1_DIFFERENCE_OFFSET        3       /* Calculate first difference offset by 3 Fixed samples */
#define Z1_SEGMENT_MATCH_D2SUM_LIMIT    ((int)(16/Z1_FIXED_INTERVAL))   /* Search for D2Sum maximum no more than 3 FIXED_INTERVALs (15 pixels) along path from matching location */

#define Z1_CANCEL_GESTURE_IPCOUNT   3       /* Cancel gesture requires 3 IPs within time window */
#define Z1_CANCEL_GESTURE_TIME      200     /* Cancel gesture time window is 0.20 seconds */
#define Z1_CANCEL_GESTURE_LENGTH    (100/Z1_FIXED_INTERVAL)     /* Each IP in Cancel gesture path must be at least 100 pixels apart */

#define MAX_KEY_RUBBING_INTERVAL    1750    /* Treat as Swype path if key is rubbed for more than 1.75 second */
#define MINIMUM_RUBBING_INTERVAL    250     /* Treat as ordinary Tap if not rubbed for at least 500 msec. */
#define MIN_RUBBED_PATH_RATIO       (float)1.8  /* "Rubbed" path must be at least 1.8 times the max dimension of path bounding box */
#define MIN_RUBBED_PATH_BOX_SIZE    6       /* 1/4 of a key-width */
#define Z1_TAP_TIMEOUT              600     /* Pop up Blue Layer char/diacritics after 0.6 second */
#define Z1_KEY_REPEAT_INTERVAL1      750     /* First auto-repeat happens after 0.75 second */
#define Z1_KEY_REPEAT_INTERVAL2      600     /* Then auto-repeat key every 0.6 second */
#define Z1_KEY_REPEAT_INTERVAL_ADJUST 75     /* Reduce auto-repeat interval by 0.075 second after each repeat */
#define Z1_KEY_REPEAT_INTERVAL_FINAL 150     /* Auto-repeat key every 0.15 second after 8 repeats */
#define SHOW_POPUP_INTERVAL_DEFAULT 750     /* Display diacritic menu 3/4 second after popping up BLue Layer char */

#define MAX_PEN_SPEED               200     /* Pen Speeds >= MAX_PEN_SPEED have maximum effect */
#define MIN_PEN_SPEED                 5     /* Pen Speeds <  MIN_PEN_SPEED have minimum effect */
                                            /* Speed factor ~= (actual pen speed) / (average pen speed) */
#define MAX_SPEED_FACTOR            175     /* Max (175%) and min (50%) coefficient values for Speed Factor */
#define MIN_SPEED_FACTOR             50
#define AV_SPEED_FACTOR             100     /* Speed factor = (Actual speed factor) / AV_SPEED_FACTOR */

#define APP_DOUBLE_TAP_MAX_TIME                 667     /* 2nd tap of double tap must occur within 2/3 second */
#define APP_DOUBLE_TAP_LOWER_TIME_THRESHOLD     100     /* If 2nd tap of double tap occurs within less than 0.1 second, this is a FAST double tap */
#define APP_DOUBLE_TAP_UPPER_TIME_THRESHOLD     500     /* If 2nd tap of double tap occurs after 0.5 second, this is a SLOW double tap */

#if      FINGER_KEYBOARD
    #define APP_DOUBLE_TAP_MIN_DISTANCE         15      /* Slow double tap must be within 10 pixels */
    #define APP_DOUBLE_TAP_MAX_DISTANCE         35      /* Fast double tap must be within 25 pixels */
    #define APP_DOUBLE_TAP_MAX_Y_DISTANCE       18      /* Limit vertical spread between 1st and 2nd tap */
#else
    #define APP_DOUBLE_TAP_MIN_DISTANCE         10      /* Slow double tap must be within 10 pixels */
    #define APP_DOUBLE_TAP_MAX_DISTANCE         25      /* Fast double tap must be within 25 pixels */
    #define APP_DOUBLE_TAP_MAX_Y_DISTANCE       12      /* Limit vertical spread between 1st and 2nd tap */
#endif


/* If there is a reason to require that a DoubleLetter "Scribble" gesture is more-or-less horizontal, */
/*   then un-comment the following #define: */
/* #define SCRIBBLE_IS_HORIZONTAL       1 */
/* TODO: Review FINGER_KEYBOARD vs. !FINGER_KEYBOARD definitions (FILTER_ERRATIC_MOUSE_DATA vs. !FILTER_ERRATIC_MOUSE_DATA, etc.),  */
/*       and consolidate to a single consistent set of defines where possible/appropriate */

#if !FINGER_KEYBOARD
    #define Z1_TAP_DISTANCE_THRESHOLD   12      /* Tap event if pen does not move more than 12 pixels from PenDown */
    #define Z1_TAP_FIXED_INTERVAL_LIMIT   ((int)(Z1_TAP_DISTANCE_THRESHOLD/Z1_FIXED_INTERVAL))      /* Tap event if pen does not move more than Z1_TAP_DISTANCE_THRESHOLD along path from PenDown */
    /* Double gesture thresholds for stylus use */

    #define DOUBLE_GESTURE_TURNS         4      /* Double Letter gesture requires 4 sign change events ??? */
    #define GESTURE_TURNS_FOR_SIZE_MEASUREMENT       3      /* Double Letter gesture requires 3 sign change events to start to estimate size ??? */
    #define DOUBLE_GESTURE_MAX_DIAM     48                  /* Double Letter gesture not much larger than 2 key-widths ??? */
    #define DOUBLE_GESTURE_MIN_DIAM     12                  /* Double Letter gesture at least 1/2 key-width ??? */

    #define SCRIBBLE_GESTURE_SAME_ROW_MARGIN         7      /* Allow scribble to go ~1/6 key-height up/down into neighboring row */

    #define DOUBLE_GESTURE_MAX_RADIUS               26       /* Double Letter gesture not much larger than 2 key-widths ??? */
    #define GESTURE_RADIUS_THRESHOLD_FACTOR1      ((float)2.35)
    #define GESTURE_RADIUS_THRESHOLD_FACTOR2      ((float)2.1)
    #define MIN_SHAPE_FACTOR                      ((float)0.15)
    #define MIN_SHAPE_FACTOR2                     ((float)0.5)
    #define DOUBLE_GESTURE_MIN_INTERVALS    ((int)(30/Z1_FIXED_INTERVAL))   /* Gesture must be at least 6 fixed intervals in length */
    #define DOUBLE_GESTURE_CLOSURE_DISTANCE          8                      /* Gesture must "circle back" to within 1/3 key-width of starting point */

    #define DOUBLE_GESTURE_TIME       1500      /* Double Letter gesture time window is 1.5 seconds ??? */
    #define DOUBLE_GESTURE_FIXED_LIMIT   ((int)(30/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path wanders away by */
                                                                            /*   six or more Fixed Intervals without a sign change ??? */
    #define BAD_SIGN_CHANGE_FIXED_LIMIT  ((int)(16/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path continues for */
                                                                            /*   three or more Fixed Intervals after a non-qualifying sign change */
    #define MAX_DOUBLE_GESTURE_IP_COUNT  3      /* No more than 4 (3 + final) IPs generated from a single DoubleLetter gesture */
    #define MERGE_DOUBLE_IP_DISTANCE    12      /* Allow single Double key to match two successive Double IPs in same row and no more than ~2/3 key width apart */

    #define DOUBLE_ANGLE_MIN_DISTANCE   20      /* Filter Angle IPs detected within 2/3 of the diameter of gesture ??? */
    #define DOUBLE_ANGLE_MIN_INTERVALS   ((int)(16/Z1_FIXED_INTERVAL))      /* Do not filter Angle IPs unless detected within 3 fixed intervals of the exit location of gesture ??? */

    #define DOUBLE_ANGLE_INCLUDE_MARGIN1     ((int)(10/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 2 fixed intervals of the entry location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_MARGIN2     ((int)(16/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 3 fixed intervals of the exit location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_DISTANCE           24                              /* Include Angle IPs if detected within ~1 key width from gesture cente */

    #define DOUBLE_PENUP_INCLUDE_MARGIN     ((int)(16/Z1_FIXED_INTERVAL))           /* Include PenUp IP if detected within 5 fixed intervals of the exit location of gesture, AND... */
    #define DOUBLE_PENUP_INCLUDE_DISTANCE           24                              /*   ... if located within ~1 key width from gesture center */
    #define DOUBLE_PENDOWN_INCLUDE_MARGIN    ((int)(16/Z1_FIXED_INTERVAL))          /* Include PenDown IP if detected within 3 fixed intervals of the entry location of gesture, AND... */
    #define DOUBLE_PENDOWN_INCLUDE_DISTANCE         24                              /*   ... if located within ~1 key width from gesture center */

    #define DOUBLE_DOUBLE_MIN_DISTANCE  20      /* Filter DoubleLetter IPs detected within 2/3 of the diameter of gesture ??? */
    #define DOUBLE_DOUBLE_MIN_INTERVALS  ((int)(24/Z1_FIXED_INTERVAL))      /* Do not filter DoubleLetter IPs unless detected within 8 fixed intervals of the exit location of gesture ??? */
    #define PENDOWN_PAUSE_MIN_DISTANCE  12      /* Filter Pause IPs detected within 2/3 key-width of PenDown location */
    #define PENDOWN_PAUSE_MIN_INTERVALS  ((int)(15/Z1_FIXED_INTERVAL))      /* Filter Pause IPs detected only if no more than 3 fixed intervals from PenDown location */
    #define PENDOWN_ANGLE_MIN_DISTANCE  16      /* Filter Angle IPs detected within ~2/3 key-width of PenDown location */
    #define PENDOWN_ANGLE_MIN_INTERVALS  ((int)(16/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 3 fixed intervals from PenDown location */
    #define PENUP_PAUSE_MIN_DISTANCE    16      /* Filter Pause IPs detected within 2/3 key-width of PenUp location */
    #define PENUP_PAUSE_MIN_INTERVALS    ((int)(16/Z1_FIXED_INTERVAL))      /* Filter Pause IPs detected only if no more than 3 fixed intervals from PenUp location */
    /*#define PENUP_ANGLE_MIN_DISTANCE  10        // Filter Angle IPs detected within ~1/2 key-width of PenUp location */
    /*#define PENUP_ANGLE_MIN_DISTANCE  18        // Filter Angle IPs detected within ~3/4 key-width of PenUp location */
    #define PENUP_ANGLE_MIN_DISTANCE    18      /* Filter Angle IPs detected within ~3/4 key-width of PenUp location */
    #define PENUP_ANGLE_MIN_DISTANCE8   (PENUP_ANGLE_MIN_DISTANCE * 8)
    #define PENUP_ANGLE_MIN_INTERVALS    ((int)(18/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 3 fixed intervals from PenUp location */
    #define MAX_DOUBLE_BACK_PATH_DIVERGENCE 5   /* Don't filter if doubled-back path segment (max length 14) diverges from incoming segment by more than 5 */

    #define SOFTUP_ANGLE_MIN_DISTANCE   20      /* Soften PenUp IPs detected within ~1.1 key-width of previous Angle location */
    #define SOFTUP_ANGLE_MIN_DISTANCE8  (SOFTUP_ANGLE_MIN_DISTANCE * 8)
    #define SOFTUP_ANGLE_MIN_INTERVALS   ((int)(21/Z1_FIXED_INTERVAL))      /* Soften PenUp IPs detected only if no more than 4 fixed intervals from previous Angle location */

    /*#define DOUBLE_PENUP_MIN_DISTANCE 27      // PenUp IPs detected within 1 1/2 key-widths of DoubleLetter location */
    /*                                          //   should be treated as "Soft" PenUp IPs */
    #define DOUBLE_PENUP_MIN_DISTANCE   18      /* PenUp IPs detected within less than ~1 key-width of DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs */
    #define DOUBLE_PENUP_MIN_INTERVALS   ((int)(21/Z1_FIXED_INTERVAL))      /* PenUp IPs detected near DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs only if no more than 4 fixed intervals from DoubleLetter exit location */
    /*X #define DOUBLE_FIXED_IN_MAX_DISTANCE  11    // FixedIn location for DoubleLetter IP should be within ~2/3 key-width or less */
    /*X #define DOUBLE_FIXED_OUT_MAX_DISTANCE 11    // FixedOut location for DoubleLetter IP should be within ~2/3 key-width or less */
    /*#define ANGLE_ANGLE_MIN_DISTANCE  15      // Filter Angle IPs detected within 3 fixed intervals of preceding Angle IP */
    #define ANGLE_ANGLE_MIN_DISTANCE     7      /* Filter Angle IPs detected within ~1/2 key width of preceding Angle IP */
    #define ANGLE_ANGLE_MIN_INTERVALS    ((int)(7/Z1_FIXED_INTERVAL))       /* Filter Angle IPs detected only if no more than 1(?) fixed intervals from preceding Angle IP */
    #define ENTRY_IP_MIN_Y_INTERVAL     12      /* Filter IPs with 1/2 key-width of top of keyboard after re-entering from shift gesture */
    #define SOFTENING_DISTANCE          16      /* Convert IPs detected within 2/3 key-width of Pause location to PauseAngle */

    #define ANGLE_PATHCHANGE_MIN_DISTANCE    20     /* Filter PathChange IPs detected within ~1 key width of preceding/following Angle IP */
    #define ANGLE_PATHCHANGE_MIN_INTERVALS    ((int)(21/Z1_FIXED_INTERVAL))     /* Filter PathChange IPs detected within 3 - 4 fixed intervals of preceding/following Angle IP */

#else   /* Thresholds for when FINGER_KEYBOARD *is* #define'd true */

    #define Z1_TAP_DISTANCE_THRESHOLD1  15      /* Tap event if pen does not move more than 14 pixels (even if in a */
                                                /*   relatively straight line) from PenDown */
    #define Z1_TAP_DISTANCE_THRESHOLD2  21      /* Tap event if pen does not move more than 21 pixels from PenDown, */
                                                /*   as long as path is *not* stretched out in a more or less straight path */
    /* Tap event if pen does not move more than Z1_TAP_DISTANCE_THRESHOLD along path from PenDown */
    #define Z1_TAP_FIXED_INTERVAL_LIMIT   ((int)(Z1_TAP_DISTANCE_THRESHOLD1/Z1_FIXED_INTERVAL))

    /* Double gesture thresholds for fingertip use */
#if FILTER_ERRATIC_MOUSE_DATA
    #define DOUBLE_GESTURE_TURNS                     4      /* Double Letter gesture requires 4 sign change events ??? */
    #define GESTURE_TURNS_FOR_SIZE_MEASUREMENT       3      /* Double Letter gesture requires 3 sign change events to start to estimate size ??? */
    #define DOUBLE_GESTURE_MAX_DIAM                 60      /* Double Letter gesture not larger than 2 1/2 key-widths ??? */

    #define DOUBLE_GESTURE_MIN_DIAM                 12      /* Double Letter gesture at least 1/2 key-width ??? */

    #define SCRIBBLE_GESTURE_SAME_ROW_MARGIN        10      /* Allow scribble to go 1/4 up/down into neighboring row */

    #define DOUBLE_GESTURE_MAX_RADIUS               30      /* Double Letter gesture not much larger than 2 1/2 key-widths ??? */
    #define GESTURE_RADIUS_THRESHOLD_FACTOR1      ((float)2.5)
    #define GESTURE_RADIUS_THRESHOLD_FACTOR2      ((float)2.25)
    #define MIN_SHAPE_FACTOR                      ((float)0.15)
    #define MIN_SHAPE_FACTOR2                     ((float)0.5)
    #define DOUBLE_GESTURE_MIN_INTERVALS    ((int)(30/Z1_FIXED_INTERVAL))    /* Gesture must be at least 5 fixed intervals in length */
    #define DOUBLE_GESTURE_CLOSURE_DISTANCE        12                        /* Gesture must "circle back" to within 1/2 key-width of starting point */

    #define DOUBLE_GESTURE_TIME       1500      /* Double Letter gesture time window is 1.5 seconds ??? */
    #define DOUBLE_GESTURE_FIXED_LIMIT   ((int)(36/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path wanders away by */
                                                                            /*   7 or more Fixed Intervals without a sign change ??? */
    #define BAD_SIGN_CHANGE_FIXED_LIMIT  ((int)(21/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path continues for */
                                                                            /*   4 or more Fixed Intervals after a non-qualifying sign change */
    #define MAX_DOUBLE_GESTURE_IP_COUNT  3      /* No more than 4 (3 + final) IPs generated from a single DoubleLetter gesture */
    #define MERGE_DOUBLE_IP_DISTANCE    12      /* Allow single Double key to match two successive Double IPs in same row and no more than ~2/3 key width apart */

    #define DOUBLE_ANGLE_MIN_DISTANCE   20      /* Filter Angle IPs detected within 2/3 of the diameter of gesture ??? */
    #define DOUBLE_ANGLE_MIN_INTERVALS   ((int)(21/Z1_FIXED_INTERVAL))      /* Do not filter Angle IPs unless detected within 4 fixed intervals of the exit location of gesture ??? */
    #define DOUBLE_ANGLE_INCLUDE_MARGIN1     ((int)(15/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 3 fixed intervals of the entry location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_MARGIN2     ((int)(18/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 3 fixed intervals of the exit location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_DISTANCE     36                            /* Include Angle IPs if detected within ~3/2 key width from gesture center */

    #define DOUBLE_PENUP_INCLUDE_MARGIN     ((int)(24/Z1_FIXED_INTERVAL))           /* Include PenUp IP if detected within 8 fixed intervals of the exit location of gesture, AND... */
    #define DOUBLE_PENUP_INCLUDE_DISTANCE     36                                    /*   ... if located within ~3/2 key width from gesture center */
    #define DOUBLE_PENDOWN_INCLUDE_MARGIN    ((int)(24/Z1_FIXED_INTERVAL))          /* Include PenDown IP if detected within 8 fixed intervals of the entry location of gesture, AND... */
    #define DOUBLE_PENDOWN_INCLUDE_DISTANCE   36                                    /*   ... if located within ~1 and 1/2 key width from gesture center */

    #define DOUBLE_DOUBLE_MIN_DISTANCE  30      /* Filter DoubleLetter IPs detected within ~2/3 of the diameter of gesture ??? */
    #define DOUBLE_DOUBLE_MIN_INTERVALS  ((int)(24/Z1_FIXED_INTERVAL))      /* Do not filter DoubleLetter IPs unless detected within 8 fixed intervals of the exit location of gesture ??? */

    #define PENDOWN_PAUSE_MIN_DISTANCE  24      /* Filter Pause IPs detected within ~1 key-width of PenDown location */
    #define PENDOWN_PAUSE_MIN_INTERVALS  ((int)(24/Z1_FIXED_INTERVAL))      /* Filter Pause IPs detected only if no more than 8 fixed intervals from PenDown location */

    #define PENDOWN_ANGLE_MIN_DISTANCE  36      /* Filter Angle IPs detected within ~1 1/2 key-width of PenDown location */
    #define PENDOWN_ANGLE_MIN_INTERVALS  ((int)(36/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 6 fixed intervals from PenDown location */

    #define PENUP_PAUSE_MIN_DISTANCE    30      /* Filter Pause IPs detected within ~1 1/4 key-width of PenUp location */
    #define PENUP_PAUSE_MIN_INTERVALS    ((int)(30/Z1_FIXED_INTERVAL))      /* Filter Pause IPs detected only if no more than 10 fixed intervals from PenUp location */

    #define PENUP_ANGLE_MIN_DISTANCE    30      /* Filter Angle IPs detected within ~1 1/4 key-width of PenUp location */
    #define PENUP_ANGLE_MIN_DISTANCE8   (PENUP_ANGLE_MIN_DISTANCE * 8)
    #define PENUP_ANGLE_MIN_INTERVALS    ((int)(30/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 10 fixed intervals from PenUp location */

    #define PENUP_ANGLE_MIN_DISTANCE_2  36      /* Convert Angle IPs detected within ~1 1/2 key-width of PenUp location to PauseAngle */
    #define PENUP_ANGLE_MIN_INTERVALS_2  ((int)(36/Z1_FIXED_INTERVAL))      /* Convert Angle IPs detected only if no more than 8 fixed intervals from PenUp location */


    #define MAX_DOUBLE_BACK_PATH_DIVERGENCE 5   /* Don't filter if doubled-back path segment (max length 14) diverges from incoming segment by more than 5 */

    #define SOFTUP_ANGLE_MIN_DISTANCE   30      /* Soften PenUp IPs detected within ~1 1/4 key-width of previous Angle location */
    #define SOFTUP_ANGLE_MIN_DISTANCE8  (SOFTUP_ANGLE_MIN_DISTANCE * 8)
    #define SOFTUP_ANGLE_MIN_INTERVALS   ((int)(30/Z1_FIXED_INTERVAL))      /* Soften PenUp IPs detected only if no more than 10 fixed intervals from previous Angle location */

    #define DOUBLE_PENUP_MIN_DISTANCE   30      /* PenUp IPs detected within less than ~1 1/4 key-width of DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs */
    #define DOUBLE_PENUP_MIN_INTERVALS   ((int)(30/Z1_FIXED_INTERVAL))      /* PenUp IPs detected near DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs only if no more than 10 fixed intervals from DoubleLetter exit location */
    #define ANGLE_ANGLE_MIN_DISTANCE    15      /* Filter Angle IPs detected within ~1/2 key width of preceding Angle IP */
    #define ANGLE_ANGLE_MIN_INTERVALS    ((int)(15/Z1_FIXED_INTERVAL))       /* Filter Angle IPs detected only if no more than 5 fixed intervals from preceding Angle IP */
    #define ENTRY_IP_MIN_Y_INTERVAL     24      /* Filter IPs within ~2/3 key-height of top of keyboard after re-entering from shift gesture */
    #define SOFTENING_DISTANCE          24      /* Convert IPs detected within 1 key-width of Pause location to PauseAngle */

    #define ANGLE_PATHCHANGE_MIN_DISTANCE    24     /* Filter PathChange IPs detected within ~1 key width of preceding/following Angle IP */
    #define ANGLE_PATHCHANGE_MIN_INTERVALS    ((int)(24/Z1_FIXED_INTERVAL))     /* Filter PathChange IPs detected within 8 fixed intervals of preceding/following Angle IP */
#else   /* Else if NOT filtering erratic data */
    #define DOUBLE_GESTURE_TURNS         4      /* Double Letter gesture requires 4 sign change events ??? */
    #define GESTURE_TURNS_FOR_SIZE_MEASUREMENT       3      /* Double Letter gesture requires 3 sign change events to start to estimate size ??? */
    #define DOUBLE_GESTURE_MAX_DIAM     60       /* Double Letter gesture not much larger than 2 1/2 key-widths ??? */

    #define DOUBLE_GESTURE_MIN_DIAM     12       /* Double Letter gesture at least 1/2 key-width ??? */

    #define SCRIBBLE_GESTURE_SAME_ROW_MARGIN    10      /* Allow scribble to go 1/4 key height up/down into neighboring row */

    #define DOUBLE_GESTURE_MAX_RADIUS           30      /* Double Letter gesture not much larger than 2 1/2 key-widths ??? */
    #define GESTURE_RADIUS_THRESHOLD_FACTOR1      ((float)2.5)
    #define GESTURE_RADIUS_THRESHOLD_FACTOR2      ((float)2.25)
    #define MIN_SHAPE_FACTOR                      ((float)0.15)
    #define MIN_SHAPE_FACTOR2                     ((float)0.5)
    #define DOUBLE_GESTURE_MIN_INTERVALS    ((int)(30/Z1_FIXED_INTERVAL))    /* Gesture must be at least 5 fixed intervals in length */
    #define DOUBLE_GESTURE_CLOSURE_DISTANCE        12                        /* Gesture must "circle back" to within 1/2 key-width of starting point */

    #define DOUBLE_GESTURE_TIME       1500      /* Double Letter gesture time window is 1.5 seconds ??? */
    #define DOUBLE_GESTURE_FIXED_LIMIT   ((int)(36/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path wanders away by */
                                                                            /*   7 or more Fixed Intervals without a sign change ??? */
    #define BAD_SIGN_CHANGE_FIXED_LIMIT  ((int)(21/Z1_FIXED_INTERVAL))      /* Double Letter gesture sequence terminates if path continues for */
                                                                            /*   4 or more Fixed Intervals after a non-qualifying sign change */
    #define MAX_DOUBLE_GESTURE_IP_COUNT  3      /* No more than 4 (3 + final) IPs generated from a single DoubleLetter gesture */
    #define MERGE_DOUBLE_IP_DISTANCE    12      /* Allow single Double key to match two successive Double IPs in same row and no more than ~2/3 key width apart */

    #define DOUBLE_ANGLE_MIN_DISTANCE   20      /* Filter Angle IPs detected within 2/3 of the diameter of gesture ??? */
    #define DOUBLE_ANGLE_MIN_INTERVALS   ((int)(16/Z1_FIXED_INTERVAL))      /* Do not filter Angle IPs unless detected within 3 fixed intervals of the exit location of gesture ??? */
    #define DOUBLE_ANGLE_INCLUDE_MARGIN1     ((int)(12/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 2 fixed intervals of the entry location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_MARGIN2     ((int)(18/Z1_FIXED_INTERVAL))          /* Include Angle IPs if detected within 3 fixed intervals of the exit location of gesture */
    #define DOUBLE_ANGLE_INCLUDE_DISTANCE           32                              /* Include Angle IPs if detected within ~4/3 key width from gesture center */

    #define DOUBLE_PENUP_INCLUDE_MARGIN     ((int)(18/Z1_FIXED_INTERVAL))           /* Include PenUp IP if detected within 3 fixed intervals of the exit location of gesture, AND... */
    #define DOUBLE_PENUP_INCLUDE_DISTANCE   32                                      /*   ... if located within ~4/3 key width from gesture center */
    #define DOUBLE_PENDOWN_INCLUDE_MARGIN    ((int)(18/Z1_FIXED_INTERVAL))          /* Include PenDown IP if detected within 3 fixed intervals of the entry location of gesture, AND... */
    #define DOUBLE_PENDOWN_INCLUDE_DISTANCE 36                                      /*   ... if located within ~1 and 1/2 key width from gesture center */

    #define DOUBLE_DOUBLE_MIN_DISTANCE  30      /* Filter DoubleLetter IPs detected within ~1/2 of the diameter of gesture ??? */
    #define DOUBLE_DOUBLE_MIN_INTERVALS  ((int)(24/Z1_FIXED_INTERVAL))      /* Do not filter DoubleLetter IPs unless detected within 4 fixed intervals of the exit location of gesture ??? */

    #define PENDOWN_PAUSE_MIN_DISTANCE  18      /* Filter Pause IPs detected within ~3/4 key-width of PenDown location */
    #define PENDOWN_PAUSE_MIN_INTERVALS  ((int)(18/Z1_FIXED_INTERVAL))      /* Filter Pause IPs detected only if no more than 3 fixed intervals from PenDown location */

    #define PENDOWN_ANGLE_MIN_DISTANCE  18      /* Filter Angle IPs detected within ~3/4 key-width of PenDown location */
    #define PENDOWN_ANGLE_MIN_INTERVALS  ((int)(18/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 3 fixed intervals from PenDown location */

    /*#define PENUP_PAUSE_MIN_DISTANCE    18      // Filter Pause IPs detected within ~3/4 key-width of PenUp location */
    /*#define PENUP_PAUSE_MIN_INTERVALS    ((int)(18/Z1_FIXED_INTERVAL))      // Filter Pause IPs detected only if no more than 3 fixed intervals from PenUp location */
    /*//#define PENUP_ANGLE_MIN_DISTANCE  10      // Filter Angle IPs detected within ~1/2 key-width of PenUp location */
    /*#define PENUP_ANGLE_MIN_DISTANCE    18      // Filter Angle IPs detected within ~3/4 key-width of PenUp location */
    /*#define PENUP_ANGLE_MIN_DISTANCE8   (PENUP_ANGLE_MIN_DISTANCE * 8) */
    /*#define PENUP_ANGLE_MIN_INTERVALS    ((int)(18/Z1_FIXED_INTERVAL))      // Filter Angle IPs detected only if no more than 3 fixed intervals from PenUp location */

    #define PENUP_PAUSE_OR_ANGLE_MIN_DISTANCE    18      /* Filter Angle IPs detected within ~3/4 key-width of PenUp location */
    #define PENUP_PAUSE_OR_ANGLE_MIN_DISTANCE8   (PENUP_ANGLE_MIN_DISTANCE * 8)
    #define PENUP_PAUSE_OR_ANGLE_MIN_INTERVALS    ((int)(18/Z1_FIXED_INTERVAL))      /* Filter Angle IPs detected only if no more than 3 fixed intervals from PenUp location */

    #define PENUP_ANGLE_MIN_DISTANCE_2  24      /* Convert Angle IPs detected within ~1 key-width of PenUp location to PauseAngle */
    #define PENUP_ANGLE_MIN_INTERVALS_2  ((int)(24/Z1_FIXED_INTERVAL))      /* Convert Angle IPs detected only if no more than 4 fixed intervals from PenUp location */


    #define MAX_DOUBLE_BACK_PATH_DIVERGENCE 5   /* Don't filter if doubled-back path segment (max length 14) diverges from incoming segment by more than 5 */

    #define SOFTUP_ANGLE_MIN_DISTANCE   20      /* Soften PenUp IPs detected within ~1 key-width of previous Angle location */
    #define SOFTUP_ANGLE_MIN_DISTANCE8  (SOFTUP_ANGLE_MIN_DISTANCE * 8)
    #define SOFTUP_ANGLE_MIN_INTERVALS   ((int)(SOFTUP_ANGLE_MIN_DISTANCE/Z1_FIXED_INTERVAL))      /* Soften PenUp IPs detected only if no more than 4 fixed intervals from previous Angle location */

    #define DOUBLE_PENUP_MIN_DISTANCE   18      /* PenUp IPs detected within less than ~3/4 key-width of DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs */
    #define DOUBLE_PENUP_MIN_INTERVALS   ((int)(21/Z1_FIXED_INTERVAL))      /* PenUp IPs detected near DoubleLetter location */
                                                /*   should be treated as "Soft" PenUp IPs only if no more than 4 fixed intervals from DoubleLetter exit location */
    #define ANGLE_ANGLE_MIN_DISTANCE     7      /* Filter Angle IPs detected within less than 1/3 key width of preceding Angle IP */
    #define ANGLE_ANGLE_MIN_INTERVALS    ((int)(7/Z1_FIXED_INTERVAL))       /* Filter Angle IPs detected only if no more than 1(?) fixed interval from preceding Angle IP */
    #define ENTRY_IP_MIN_Y_INTERVAL     12      /* Filter IPs with 1/2 key-width of top of keyboard after re-entering from shift gesture */
    #define SOFTENING_DISTANCE          16      /* Convert IPs detected within 2/3 key-width of Pause location to PauseAngle */

    #define ANGLE_PATHCHANGE_MIN_DISTANCE    20     /* Filter PathChange IPs detected within ~1 key width of preceding/following Angle IP */
    #define ANGLE_PATHCHANGE_MIN_INTERVALS    ((int)(21/Z1_FIXED_INTERVAL))     /* Filter PathChange IPs detected within 3 - 4 fixed intervals of preceding/following Angle IP */
#endif
#endif  /* End of #define's for when FINGER_KEYBOARD *is* #define'd true */


#define SHORT_PATH_SEGMENT_LENGTH_THRESHOLD 12   /* Don't calculate slope difference factors if path points */
                                                 /*   are separated by 2/3 key-width or less (use default value) */
#define OUTGOING_VECTOR_OFFSET1     ((int)(10/Z1_FIXED_INTERVAL))       /* Number of Fixed points to move away from IP to locate */
                                                                        /*   initial point of outgoing vector */
#define OUTGOING_VECTOR_OFFSET2     ((int)(20/Z1_FIXED_INTERVAL))       /* Number of Fixed points to move away from IP to locate */
                                                                        /*   terminal point of outgoing vector */
#define OUTGOING_VECTOR_OFFSET_MIN  ((int)(6/Z1_FIXED_INTERVAL))        /* Min number of Fixed points to move away from IP to locate */
                                                                        /*   initial point of outgoing vector */

/* User Settings */
#ifndef     DEFAULT_SHOWWCW_LEVEL
    #define DEFAULT_SHOWWCW_LEVEL       600         /* word score level at which to show WCW */
#endif

#ifndef     DEFAULT_Z1_OPERATION_LEVEL
    #define DEFAULT_Z1_OPERATION_LEVEL  333         /* the default level to set Z1 operation */
#endif

#ifndef     WCW_TIMEOUT_DEFAULT
    #define WCW_TIMEOUT_DEFAULT         10          /* how long should be WCW timeout be */
#endif

#ifndef     DEFAULT_CURRENT_ACTIVE_DISPLAY
#define     DEFAULT_CURRENT_ACTIVE_DISPLAY 0            /* default to small keyboard */
#endif

#ifndef     DEFAULT_KEYBOARD_HORZ_POSITION
/* when the keyboard is movable, where should it be initially, @see KeyboardHorizonalPosition */
#define     DEFAULT_KEYBOARD_HORZ_POSITION  -1
#endif

#ifndef     DEFAULT_KEYBOARD_VERT_POSITION
#define     DEFAULT_KEYBOARD_VERT_POSITION  -1
#endif

#define DEFAULT_SLIDER_MIN              0           /* minimum value for typical slider */
#define DEFAULT_SLIDER_MAX              1000        /* maximum value for typical slider */
#define WCW_TIMEOUT_MINIMUM             3           /* the min # secs for WCW timeout */
#define WCW_TIMEOUT_MAXIMUM             20          /* the max # secs for WCW timeout */

#ifndef     HAS_NAVIGATION_BAR_DEFAULT
#define     HAS_NAVIGATION_BAR_DEFAULT false
#endif /*   HAS_NAVIGATION_BAR_DEFAULT */

#endif  /* _UIDEFAULTS_H_ */



/* eof */
