home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / clipper / chkkey.prg < prev    next >
Text File  |  1993-10-14  |  2KB  |  69 lines

  1. /*
  2.  * GT CLIPPER STANDARD HEADER
  3.  *
  4.  * File......: chkkey.prg
  5.  * Author....: Andy M Leighton
  6.  * BBS.......: The Dark Knight Returns
  7.  * Net/Node..: 050/069
  8.  * User Name.: Andy Leighton
  9.  * Date......: $Date$
  10.  * Revision..: $Revision$
  11.  *
  12.  * This is an original work by Andy Leighton and is placed in the
  13.  * public domain.
  14.  *
  15.  * Modification history:
  16.  * ---------------------
  17.  *
  18.  * $Log$
  19.  *
  20.  */
  21.  
  22. /*  $DOC$
  23.  *  $FUNCNAME$
  24.  *       GT_CHECKKEY()
  25.  *  $CATEGORY$
  26.  *       Keyboard
  27.  *  $ONELINER$
  28.  *       Check Key for Upper/Lower case, Control or Alt Letter
  29.  *  $SYNTAX$
  30.  *       GT_checkKey(<nKVal>, <cChkLetter>) --> lRet
  31.  *  $ARGUMENTS$
  32.  *       <nKVal>       - the inkey() value
  33.  *       <cChkLetter>  - the letter to check for
  34.  *  $RETURNS$
  35.  *       lRet          - .T. if cChkLetter is pressed
  36.  *  $DESCRIPTION$
  37.  *       This function checks an inkey value against a letter to see
  38.  *       if that letter has been pressed.
  39.  *       Detects lower and uppercase, CTRL letter and ALT letter.
  40.  *  $EXAMPLES$
  41.  *  $END$
  42.  */
  43.  
  44. #include "gt_LIB.ch"
  45.  
  46. function GT_checkKey(nKVal, cChkLetter)
  47.  
  48.    static altTab := { K_ALT_A, K_ALT_B, K_ALT_C, K_ALT_D, K_ALT_E,      ;
  49.                       K_ALT_F, K_ALT_G, K_ALT_H, K_ALT_I, K_ALT_J,      ;
  50.                       K_ALT_K, K_ALT_L, K_ALT_M, K_ALT_N, K_ALT_O,      ;
  51.                       K_ALT_P, K_ALT_Q, K_ALT_R, K_ALT_S, K_ALT_T,      ;
  52.                       K_ALT_U, K_ALT_V, K_ALT_W, K_ALT_X, K_ALT_Y,      ;
  53.                       K_ALT_Z }
  54.  
  55.    local lRet := FALSE
  56.  
  57.    do case
  58.       case lower(chr(nKVal)) == lower(cChkLetter)
  59.          lRet := TRUE
  60.       case upper(chr(nKVal)) == upper(cChkLetter)
  61.          lRet := TRUE
  62.       case altTab[asc(upper(cChkLetter)) - 64] == nKVal
  63.          lRet := TRUE
  64.       case asc(upper(cChkLetter)) - 64 == nKVal
  65.          lRet := TRUE
  66.    endcase
  67.  
  68. return lRet
  69.