home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / clock.zip / CLKKYB.C < prev    next >
Text File  |  1987-01-03  |  4KB  |  151 lines

  1. /********************************************************** CLKKYB.C
  2.  * NAME:    CLKKYB
  3.  *
  4.  * FUNCTION:    Inputs character from keyboard, and deals with
  5.  *        options selected.
  6.  *
  7.  * EXAMPLE:    CLKKYB();
  8.  *
  9.  * INPUTS:    none
  10.  *
  11.  * OUTPUT:    ch = character returned from keyboard. (=0 if none)
  12.  *
  13.  **************************************************************
  14.  * 11/22/86 -RBM- original implementation
  15.  **************************************************************/
  16. #define XTRNALGLOBALS 1        /* globals externally defined    */
  17. #include "E:CLKGBL.H"        /* setup global storage */
  18.  
  19. /**************************************************************
  20.  * BEGIN ROUTINE
  21.  **************************************************************/
  22.  
  23. int CLKKYB()
  24. {
  25. int ch;                /* character input from keyboard */
  26. ch = kbhit();
  27. if (ch != 0) ch=options();    /* see if character is an option */
  28. return(ch);
  29. }                /***** end of routine ******/
  30.  
  31.  
  32. /****************************************************************
  33. * OPTIONS - checks to see if character is one of many that can
  34. *        alter the setup of the clock display
  35. *****************************************************************/
  36. int options()
  37.  
  38. {
  39. int    chr;            /* character actually input    */
  40. int    pozzible;        /* possibly useful character    */
  41. int     repaint;        /* requests re-painting of clock*/
  42.  
  43. chr = getch();            /* get character from kybd     */
  44.  
  45. pozzible = 1;            /* show evaluating character    */
  46. repaint = 0;
  47. while (pozzible != 0)
  48.     {
  49.     if ((chr == (int)'h') ||
  50.         (chr == (int)'H') ||
  51.         (chr == (int)'?')    )
  52.         {/*-------------- help screen ------------------*/
  53.         repaint = 1;    /* show have to re-paint screen    */
  54.         sreg.ax=0x0003;    /* clear screen            */
  55.         sreg.bx = sreg.cx = sreg.dx = 0;
  56.         csysint(VIDEO, &sreg, &rreg);
  57.  
  58.         printf ("======= CLOCK HELP SCREEN ========\n");
  59.         printf ("\n");
  60.         printf ("H or ? displays this screen\n");
  61.         printf ("0 - 9 sets size (1=10%%, 2=20%%, 0=100%%)\n");
  62.         printf ("C = center clock in display\n");
  63.         printf ("R = move clock to right side\n");
  64.         printf ("L = move clock to left side\n");
  65.         printf ("T = move clock to top half\n");
  66.         printf ("B = move clock to bottom half\n");
  67.         printf ("D = toggle digital clock on/off\n");
  68.         printf ("<spacebar> to continue with no changes\n");
  69.         printf ("\n");
  70.         printf ("----- current values ------\n");
  71.         printf ("row=%3d, col=%3d, size=%3d%%, digclock=%1d\n",
  72.                  cntrow,  cntcol,  clocksize,  digclock);
  73.  
  74.         chr = getch();        /* get next character from kybd */
  75.  
  76.         }
  77.  
  78.     else if ((chr >= (int)'0') && (chr <= (int)'9'))
  79.         {/*----------- adjust clock size --------------------*/
  80.         if (chr == (int)'0') clocksize = 100;
  81.         else               clocksize = (chr-(int)'0')*10;
  82.         chr = (int)'H';
  83.         }
  84.  
  85.     else if ((chr == (int)'c') ||
  86.          (chr == (int)'C')   )
  87.         {/*----------- center clock in display --------------*/
  88.         cntcol = CENTC;
  89.         cntrow = CENTR;
  90.         chr = (int)'H';
  91.         }
  92.  
  93.     else if ((chr == (int)'r') ||
  94.          (chr == (int)'R')   )
  95.         {/*----------- move clock to right hand side ---------*/
  96.         cntcol = CENTC + 80;
  97.         chr = (int)'H';
  98.         }
  99.  
  100.     else if ((chr == (int)'l') ||
  101.          (chr == (int)'L')   )
  102.         {/*----------- move clock to left hand side ----------*/
  103.         cntcol = CENTC - 80;
  104.         chr = (int)'H';
  105.         }
  106.  
  107.     else if ((chr == (int)'t') ||
  108.          (chr == (int)'T')   )
  109.         {/*----------- move clock to top half ----------------*/
  110.         cntrow = CENTR - 50;
  111.         chr = (int)'H';
  112.         }
  113.  
  114.     else if ((chr == (int)'b') ||
  115.          (chr == (int)'B')   )
  116.         {/*----------- move clock to bottom half -------------*/
  117.         cntrow = CENTR + 50;
  118.         chr = (int)'H';
  119.         }
  120.  
  121.     else if ((chr == (int)'d') ||
  122.          (chr == (int)'D')   )
  123.         {/*----------- toggle digital clock display ----*/
  124.         if (digclock == 0) digclock=1;
  125.         else            digclock=0;
  126.         chr = 0;
  127.         pozzible = 0;
  128.         }
  129.     else if (chr == (int)' ')
  130.         {/*------------ spacebar out -------------------*/
  131.         chr = 0;
  132.         pozzible = 0;
  133.         }
  134.     else
  135.         {/*------- input key not supported -------------*/
  136.         chr = chr;        /* pass character thru    */
  137.         pozzible = 0;
  138.         };
  139.     };
  140.  
  141. if (repaint != 0)
  142.     {    /*------- re-paint clock -----------------------*/
  143.     clksiz();    /* determine size, colors, etc    */
  144.     clkizn();    /* initialization        */
  145.     clkclr();    /* clear screen            */
  146.     clkfac();    /* paint clock's face        */
  147.     clktim();    /* get time            */
  148.     };
  149.  
  150. return(chr);
  151. } /*------------ end subroutine --------------------------------*/