home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / KBDSET.ZIP / KEYBOARD.C next >
C/C++ Source or Header  |  1991-10-26  |  4KB  |  86 lines

  1. /****************************************************************************
  2.  ****************************************************************************
  3.  **                                                                        **
  4.  **  Keyboard.C                                                            **
  5.  **             A program to change keyboard status.                       **
  6.  **                                                                        **
  7.  **  Syntax/Usage:                                                         **
  8.  **     KEYBOARD [Cc[+-]] [Nn[+-]] [Ss[+-]] [Ii[+-]]                       **
  9.  **                                                                        **
  10.  **         C or c = Caps Lock                                             **
  11.  **         N or n = Number Lock                                           **
  12.  **         S or s = Scroll Lock                                           **
  13.  **         I or i = Insert Mode BIOS Flag                                 **
  14.  **                                                                        **
  15.  **         + = Turn parameter on unconditionally.                         **
  16.  **         - = Turn parameter off unconditionally.                        **
  17.  **         No Switch = Toggle parameter (off-->on or on-->off)            **
  18.  **                                                                        **
  19.  **                                                                        **
  20.  **  Technical Information:                                                **
  21.  **                                                                        **
  22.  **     MicroSoft C Compiler, version 6.00A.                               **
  23.  **                                                                        **
  24.  **     Compiler Options - 80286, Small Model, Optimize for Time,          **
  25.  **                        No Stack Checking                               **
  26.  **     Linker Options   - /Batch                                          **
  27.  **                                                                        **
  28.  ** 10/27/91                    Version 1.0               D. J. Pagliughi  **
  29.  ****************************************************************************
  30.  ****************************************************************************/
  31.  
  32.  
  33. #include <DOS.H>                        /* FP_SEG and FP_OFF Macros */
  34.  
  35.  
  36. unsigned char _far *kbd_status;
  37.  
  38.  
  39. void set_status (char *parameter, unsigned char value);
  40.  
  41.  
  42. void main (int number_parameters, char *parameter[])
  43. {
  44.   int i;
  45.  
  46.     FP_SEG(kbd_status) = 0x0000;
  47.     FP_OFF(kbd_status) = 0x0417;
  48.     if (number_parameters > 1)
  49.       for (i = 1; i < number_parameters; i++)
  50.         switch ((int) *parameter[i])
  51.           {
  52.             case 's':
  53.             case 'S':   set_status (parameter[i], 16);
  54.                         break;
  55.             case 'n':
  56.             case 'N':   set_status (parameter[i], 32);
  57.                         break;
  58.             case 'c':
  59.             case 'C':   set_status (parameter[i], 64);
  60.                         break;
  61.             case 'i':
  62.             case 'I':   set_status (parameter[i], 128);
  63.                         break;
  64.           }
  65.  
  66. }
  67.  
  68.  
  69. void set_status (char *parameter, unsigned char value)
  70. {
  71.     parameter++;
  72.     switch ((int) *parameter)
  73.       {
  74.         case '+':   if (*kbd_status ^ value)
  75.                         *kbd_status += value;
  76.                     break;
  77.         case '-':   if (*kbd_status & value)
  78.                         *kbd_status -= value;
  79.                     break;
  80.         default :   if (*kbd_status & value)
  81.                         *kbd_status -= value;
  82.                     else
  83.                         *kbd_status += value;
  84.       }
  85. }
  86.