home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / utility / misc / rawinfo.lha / RawInfo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-26  |  3.7 KB  |  93 lines

  1. /**************************************************************************
  2. *  NAME: RawInfo                                               _          *
  3. *  FUNCTION: Display infos about key pressed                _ //   _      *
  4. *  WRITTEN BY: Piero Filippin (omega@sabrina.unipd.dei.it)  \X/ _ //   _  *
  5. *                                                               \X/ _ //  *
  6. *  This program is Public Domain (donation pleased)                 \X/   *
  7. *                                                                         *
  8. **************************************************************************/
  9.  
  10. #define CODETOQUIT 0x10
  11. #define QUALIFIERTOQUIT (0x19|IEQUALIFIER_RELATIVEMOUSE)
  12.  
  13. extern void RawInsert(long code,long qualifier);
  14. extern void RemoveHandler(void);
  15. extern void InstallHandler(void);
  16. extern void Print(char *string,BOOL newline);
  17. extern char *ltoh(char *string,register long val);
  18.  
  19. extern BPTR _Backstdout;         /* standard output when run in background */
  20. long _BackGroundIO = TRUE;       /* Flag to tell it we want to do I/O      */
  21. long _stack = 1000;              /* Amount of stack space our task needs   */
  22. char *_procname = "RawInfo";     /* The name of the task to create         */
  23. long _priority = 1;              /* The priority to run us at              */
  24.  
  25. struct handlerdata {
  26.     struct Task *thistask;
  27.     short sigbit;
  28.     UWORD code;
  29.     UWORD qualifier;
  30. };
  31.  
  32. struct handlerdata data;
  33.  
  34. void main (void) 
  35. {
  36.     char string[11];
  37.     data.sigbit = AllocSignal(-1);
  38.     data.thistask = FindTask(NULL);
  39.     InstallHandler();
  40.  
  41.     Delay(2*50);
  42.  
  43.     Print("\n\nRaw Key Information v1.0 - by Piero Filippin\n",TRUE); 
  44.     while(!( (data.code==CODETOQUIT) && (data.qualifier==QUALIFIERTOQUIT) )) {
  45.         Wait(1<<data.sigbit);
  46.         Print("Key Code        = ",FALSE);
  47.         Print(ltoh(string,(long)data.code),FALSE);
  48.         if (data.code & IECODE_UP_PREFIX) Print("    RELASED",FALSE); else Print("    PRESSED",FALSE);
  49.         Print("\nKey Qualifier = ",FALSE);
  50.         Print(ltoh(string,(long)data.qualifier),FALSE);
  51.         Print(" - ",FALSE);
  52.         if (data.qualifier&IEQUALIFIER_LSHIFT)     Print("LSHIFT ",FALSE);
  53.         if (data.qualifier&IEQUALIFIER_RSHIFT)     Print("RSHIFT ",FALSE);
  54.         if (data.qualifier&IEQUALIFIER_CAPSLOCK)   Print("CAPSLOCK ",FALSE);
  55.         if (data.qualifier&IEQUALIFIER_CONTROL)    Print("CONTROL ",FALSE);
  56.         if (data.qualifier&IEQUALIFIER_LALT)       Print("LALT ",FALSE);
  57.         if (data.qualifier&IEQUALIFIER_RALT)       Print("RALT ",FALSE);
  58.         if (data.qualifier&IEQUALIFIER_LCOMMAND)   Print("LCOMMAND ",FALSE);
  59.         if (data.qualifier&IEQUALIFIER_RCOMMAND)   Print("RCOMMAND ",FALSE);
  60.         if (data.qualifier&IEQUALIFIER_NUMERICPAD) Print("NUMERICPAD ",FALSE);
  61.         if (data.qualifier&IEQUALIFIER_REPEAT)     Print("REPEAT ",FALSE);
  62.         if (data.qualifier&IEQUALIFIER_INTERRUPT)  Print("INTERRUPT ",FALSE);
  63.         if (data.qualifier&IEQUALIFIER_MIDBUTTON)  Print("MIDBUTTON ",FALSE);
  64.         if (data.qualifier&IEQUALIFIER_RBUTTON)    Print("RBUTTON ",FALSE);
  65.         if (data.qualifier&IEQUALIFIER_LEFTBUTTON) Print("LBUTTON ",FALSE);
  66.         if (data.qualifier&IEQUALIFIER_RELATIVEMOUSE)  Print("RELATIVEMOUSE ",FALSE);
  67.         if (data.qualifier&IEQUALIFIER_MULTIBROADCAST) Print("MULTIBROADCAST ",FALSE);
  68.         Print("\n",TRUE);
  69.     }
  70.     Print("QUIT",TRUE);
  71.     RemoveHandler();    
  72.     Close(_Backstdout);
  73. }
  74.  
  75. struct InputEvent *myhandler(struct InputEvent *event,struct handlerdata *data) {
  76.     register struct InputEvent *ep, *lastevent;
  77.     for (ep = event, lastevent = NULL; ep != NULL; ep = ep->ie_NextEvent) {
  78.         if (ep->ie_Class == IECLASS_RAWKEY) {
  79.  
  80.             data->code = ep->ie_Code;
  81.             data->qualifier = ep->ie_Qualifier;
  82.  
  83.             Signal(data->thistask,1<<data->sigbit);
  84. /* Remove handled events
  85.             if (lastevent == NULL) event = ep->ie_NextEvent; 
  86.             else lastevent->ie_NextEvent = ep->ie_NextEvent; 
  87.             lastevent = ep;
  88. */
  89.         }
  90.     }
  91.     return(event);
  92. }
  93.