home *** CD-ROM | disk | FTP | other *** search
- /**************************************************************************
- * NAME: RawInfo _ *
- * FUNCTION: Display infos about key pressed _ // _ *
- * WRITTEN BY: Piero Filippin (omega@sabrina.unipd.dei.it) \X/ _ // _ *
- * \X/ _ // *
- * This program is Public Domain (donation pleased) \X/ *
- * *
- **************************************************************************/
-
- #define CODETOQUIT 0x10
- #define QUALIFIERTOQUIT (0x19|IEQUALIFIER_RELATIVEMOUSE)
-
- extern void RawInsert(long code,long qualifier);
- extern void RemoveHandler(void);
- extern void InstallHandler(void);
- extern void Print(char *string,BOOL newline);
- extern char *ltoh(char *string,register long val);
-
- extern BPTR _Backstdout; /* standard output when run in background */
- long _BackGroundIO = TRUE; /* Flag to tell it we want to do I/O */
- long _stack = 1000; /* Amount of stack space our task needs */
- char *_procname = "RawInfo"; /* The name of the task to create */
- long _priority = 1; /* The priority to run us at */
-
- struct handlerdata {
- struct Task *thistask;
- short sigbit;
- UWORD code;
- UWORD qualifier;
- };
-
- struct handlerdata data;
-
- void main (void)
- {
- char string[11];
- data.sigbit = AllocSignal(-1);
- data.thistask = FindTask(NULL);
- InstallHandler();
-
- Delay(2*50);
-
- Print("\n\nRaw Key Information v1.0 - by Piero Filippin\n",TRUE);
- while(!( (data.code==CODETOQUIT) && (data.qualifier==QUALIFIERTOQUIT) )) {
- Wait(1<<data.sigbit);
- Print("Key Code = ",FALSE);
- Print(ltoh(string,(long)data.code),FALSE);
- if (data.code & IECODE_UP_PREFIX) Print(" RELASED",FALSE); else Print(" PRESSED",FALSE);
- Print("\nKey Qualifier = ",FALSE);
- Print(ltoh(string,(long)data.qualifier),FALSE);
- Print(" - ",FALSE);
- if (data.qualifier&IEQUALIFIER_LSHIFT) Print("LSHIFT ",FALSE);
- if (data.qualifier&IEQUALIFIER_RSHIFT) Print("RSHIFT ",FALSE);
- if (data.qualifier&IEQUALIFIER_CAPSLOCK) Print("CAPSLOCK ",FALSE);
- if (data.qualifier&IEQUALIFIER_CONTROL) Print("CONTROL ",FALSE);
- if (data.qualifier&IEQUALIFIER_LALT) Print("LALT ",FALSE);
- if (data.qualifier&IEQUALIFIER_RALT) Print("RALT ",FALSE);
- if (data.qualifier&IEQUALIFIER_LCOMMAND) Print("LCOMMAND ",FALSE);
- if (data.qualifier&IEQUALIFIER_RCOMMAND) Print("RCOMMAND ",FALSE);
- if (data.qualifier&IEQUALIFIER_NUMERICPAD) Print("NUMERICPAD ",FALSE);
- if (data.qualifier&IEQUALIFIER_REPEAT) Print("REPEAT ",FALSE);
- if (data.qualifier&IEQUALIFIER_INTERRUPT) Print("INTERRUPT ",FALSE);
- if (data.qualifier&IEQUALIFIER_MIDBUTTON) Print("MIDBUTTON ",FALSE);
- if (data.qualifier&IEQUALIFIER_RBUTTON) Print("RBUTTON ",FALSE);
- if (data.qualifier&IEQUALIFIER_LEFTBUTTON) Print("LBUTTON ",FALSE);
- if (data.qualifier&IEQUALIFIER_RELATIVEMOUSE) Print("RELATIVEMOUSE ",FALSE);
- if (data.qualifier&IEQUALIFIER_MULTIBROADCAST) Print("MULTIBROADCAST ",FALSE);
- Print("\n",TRUE);
- }
- Print("QUIT",TRUE);
- RemoveHandler();
- Close(_Backstdout);
- }
-
- struct InputEvent *myhandler(struct InputEvent *event,struct handlerdata *data) {
- register struct InputEvent *ep, *lastevent;
- for (ep = event, lastevent = NULL; ep != NULL; ep = ep->ie_NextEvent) {
- if (ep->ie_Class == IECLASS_RAWKEY) {
-
- data->code = ep->ie_Code;
- data->qualifier = ep->ie_Qualifier;
-
- Signal(data->thistask,1<<data->sigbit);
- /* Remove handled events
- if (lastevent == NULL) event = ep->ie_NextEvent;
- else lastevent->ie_NextEvent = ep->ie_NextEvent;
- lastevent = ep;
- */
- }
- }
- return(event);
- }
-