/*
 * $Id: sinkey.txt 15102 2010-07-14 12:48:39Z vszakats $
 */

/*  $DOC$
 *  $FUNCNAME$
 *     FT_SINKEY()
 *  $CATEGORY$
 *     Keyboard/Mouse
 *  $ONELINER$
 *     Replacement for INKEY() that tests for SET KEY procedures
 *  $SYNTAX$
 *     FT_SINKEY( [ <nWaitTime> ] ) -> nKey
 *  $ARGUMENTS$
 *     <nWaitTime> is the number of seconds to wait.  If zero,
 *     FT_SINKEY() will wait indefinitely for a keypress.  If not
 *     passed, FT_SINKEY() does not wait for a keypress.  If NIL,
 *     it is treated the same as 0.
 *  $RETURNS$
 *     The INKEY() value of the key pressed.
 *  $DESCRIPTION$
 *     FT_SINKEY() is similar to the function provided by Nantucket in
 *     keyboard.prg, with one significant difference: you can pass NIL
 *     to INKEY(), which will be treated as a zero (i.e., wait indefinitely
 *     for keypress).  Therefore, it is necessary to differentiate between
 *     an explicit NIL and one that is a result of a formal parameter NOT
 *     being received.
 * 
 *     FT_SINKEY() differs from the standard INKEY() in that it will
 *     respond to any keys set with SET KEY TO or SetKey().
 *  $EXAMPLES$
 *     SetKey( K_F1, {|n,l,r| Help(n,l,r) } )
 *     nKey := FT_SINKEY(0)       // Help() will be called if F1 pressed
 *  $END$
 */
