home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / util / mayflower.lha / MayFlower / CapsLock / docs / CapsWarn.post < prev   
Text File  |  1993-07-14  |  2KB  |  86 lines

  1. [From    ] Rj Schack                        [REC'D] [SENT] [MSG 4827 OF 4990]
  2. [To      ] Jeff Johansen                    [Reply To 4823]  [Has Reply 4843]
  3. [Date    ] 19 Jun 92  05:06:10
  4. [Subject ] Caps Lock Question
  5.  
  6.  -> The other day I was thinking of a neat programming idea and was
  7.  -> wondering if any one here has seen such a beast or might wish to
  8.  -> write one.   Here goes...  I turn my Amiga on (or reboot it) and
  9.  -> press my CapsLock key so the red light comes on.  Somewhere in
  10.  -> or after Statup-Sequence a program senses I have done this and
  11.  -> executes a pre-determined program or script.
  12.  
  13.  ---------- [cut here] ----------
  14.  
  15.  /* CapsWarn.c - by Rj Schack - placed in the public domain.
  16.  
  17.  SAS/C 5.10b: lc -O capswarn.c
  18.  
  19.  Blink 5.10b: blink lib:c.o capswarn.o lib lib:lc.lib lib:amiga.lib
  20.                    define __main=__tinymain sc sd nd
  21.  */
  22.  
  23.  #include <exec/memory.h>
  24.  #include <devices/keyboard.h>
  25.  
  26.  int CXBRK(void) { return(0); }
  27.  int chkabort(void) { return(0); }
  28.  
  29.  main()
  30.  {
  31.    struct IOStdReq *KeyIO;
  32.    struct MsgPort *KeyMP;
  33.    char *KeyMatrix;
  34.    char ReturnCode = 0;
  35.  
  36.    if (KeyMP = CreatePort(NULL, NULL))
  37.    {
  38.      if (KeyIO = CreateExtIO(KeyMP, sizeof(struct IOStdReq)))
  39.      {
  40.        if (!(OpenDevice("keyboard.device", NULL, KeyIO, NULL)))
  41.        {
  42.          if (KeyMatrix = AllocMem(20, MEMF_PUBLIC|MEMF_CLEAR))
  43.          {
  44.            KeyIO->io_Command = KBD_READMATRIX;
  45.            KeyIO->io_Data = KeyMatrix;
  46.            KeyIO->io_Length = 20;
  47.            DoIO(KeyIO);
  48.  
  49.            if (KeyMatrix[12] & (1 << 2))
  50.              ReturnCode = 5;
  51.  
  52.            FreeMem(KeyMatrix, 20);
  53.          }
  54.          CloseDevice(KeyIO);
  55.        }
  56.        DeleteExtIO(KeyIO);
  57.      }
  58.      DeletePort(KeyMP);
  59.    }
  60.    exit(ReturnCode);
  61.  }
  62.  
  63.  ---------- [end here] ----------
  64.  
  65.    Example script usage:
  66.  
  67.  ---------- [cut here] ----------
  68.  
  69.  dev:path/CapsWarn
  70.  if warn
  71.   echo "CapsLock key is active."
  72.  endif
  73.  
  74.  ---------- [end here] ----------
  75.  
  76.    Source is sparse with no casting for brevity over nets.  You'll
  77. get warnings, but it should compile okay.  I would've uuencoded it
  78. (as an executable), but I prefer to deal with source code.  If you
  79. can't compile it, I can put the source/executable up on 42.  BTW,
  80. it's only tested under v37.
  81.  
  82.    - RjS
  83.  
  84. --- Star-Net v1.0
  85.  * Origin: Phila Amiga Users Group 215-551-1485/6113  (1:273/50.0)
  86.