home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d6xx
/
d658
/
view.lha
/
View
/
Source
/
Event.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-15
|
12KB
|
400 lines
/*-- AutoRev header do NOT edit!
*
* Program : event.c
* Copyright : Copyright © 1991-92 Jaba Development
* Author : Jan van den Baard
* Creation Date : 04-Apr-1992
* Current version : 2.0
* Translator : Dice v2.06.40
*
* REVISION HISTORY
*
* Date Version Comment
* --------- ------- ------------------------------------------
* 04-Apr-92 2.0 View keyboard event-handler. (rewrite)
*
*-- REV_END --*/
#include "view.h"
/*
* All kinds of qualifier-key combinations.
*/
#define MOUSE IEQUALIFIER_RELATIVEMOUSE
#define REPEAT IEQUALIFIER_REPEAT
#define LOCK IEQUALIFIER_CAPSLOCK
#define NUMPAD IEQUALIFIER_NUMERICPAD
#define LSHIFT IEQUALIFIER_LSHIFT
#define RSHIFT IEQUALIFIER_RSHIFT
#define CONTROL IEQUALIFIER_CONTROL
#define ALT IEQUALIFIER_LALT
#define NORM1 MOUSE
#define NORM2 NORM1+REPEAT
#define NORM3 NORM1+LOCK
#define NORM4 NORM2+LOCK
#define LALT1 MOUSE+ALT
#define LALT2 LALT1+REPEAT
#define LALT3 LALT1+LOCK
#define LALT4 LALT2+LOCK
#define NUMP1 MOUSE+NUMPAD
#define NUMP2 NUMP1+REPEAT
#define NUMP3 NUMP1+LOCK
#define NUMP4 NUMP2+LOCK
#define CTRL1 MOUSE+CONTROL
#define CTRL2 CTRL1+REPEAT
#define CTRL3 CTRL1+LOCK
#define CTRL4 CTRL2+LOCK
#define PRIN1 CTRL1+LSHIFT
#define PRIN2 CTRL3+LSHIFT
#define SHIF1 MOUSE+LSHIFT
#define SHIF2 MOUSE+RSHIFT
#define SHIF3 SHIF1+REPEAT
#define SHIF4 SHIF2+REPEAT
#define SHIF5 SHIF1+LOCK
#define SHIF6 SHIF2+LOCK
#define SHIF7 SHIF3+LOCK
#define SHIF8 SHIF4+LOCK
/*
* hot-keys to be pressed together with LALT+LAMIGA
* when view is taking a nap.
*/
#define VIEW 0x34
#define QUIT 0x10
#define FLUSH 0x23
/*
* some external referenced globals.
*/
#ifndef __DETACH
extern ULONG vwArgs[];
#else
extern ULONG *vwArgs;
#endif
extern UWORD vwPMark;
extern UWORD vwMode, vwPMode;
extern UBYTE vwPrinting, vwErr;
extern UBYTE ClearStr[];
extern struct Screen *vwScreen;
extern UBYTE vwFound;
extern struct AsciiText *vwText;
extern UBYTE KeyTable[];
extern UBYTE SKeyTable[];
extern __far struct Custom custom;
Prototype void HandleKeyboard( UWORD, UWORD );
/*
* Handle all incoming RAWKEY messages.
*/
void HandleKeyboard( code, qualifier )
UWORD code, qualifier;
{
if(( code & IECODE_UP_PREFIX) != IECODE_UP_PREFIX ) {
if ( vwErr ) InfoLine();
switch( qualifier ) {
case NORM1:
case NORM2:
case NORM3:
case NORM4:
if ( code < 64 ) {
switch( KeyTable[ code ] ) {
case 'm':
if ( vwArgs[ 11 ] ) {
vwArgs[ 11 ] = NULL;
ON_SPRITE;
} else {
vwArgs[ 11 ] = ~0;
OFF_SPRITE;
}
break;
case 'c':
if ( vwArgs[ 12 ] )
vwArgs[ 12 ] = NULL;
else
vwArgs[ 12 ] = ~0;
break;
case 'h':
Help();
break;
case 'q':
if ( ! vwPrinting ) Quit( RETURN_OK );
break;
case '/':
case 'f':
vwMode = TRUE;
Find();
break;
case '.':
case 's':
vwMode = FALSE;
Find();
break;
case 'n':
vwMode = TRUE;
FindNP( SR_FORWARD );
break;
case 'p':
vwMode = TRUE;
FindNP( SR_BACKWARD );
break;
case 'r':
Inform( ClearStr );
DisplayText();
break;
#ifndef __DETACH
case 'e':
EditFile();
break;
#endif
case 'l':
if ( ! vwPrinting ) LoadFile( TRUE );
break;
case 'j':
if ( vwFound )
DoFound();
break;
case 'b':
if ( ! vwPrinting ) {
if ( vwText ) FreeAscii( vwText );
vwText = NULL;
CloseDisplay();
}
break;
case '<':
Top();
break;
default:
break;
}
} else if ( code >= 0x50 && code <= 0x59 ) {
SetMark(( UWORD )( code - 0x50 ));
break;
} else {
switch( code ) {
case 0x40:
PageDown();
break;
case 0x41:
PageUp();
break;
case 0x4d:
case 0x44:
LineDown();
break;
case 0x4c:
LineUp();
break;
case 0x5f:
Help();
break;
case 0x45:
if ( ! vwPrinting) Quit( RETURN_OK );
break;
default:
break;
}
}
break;
case NUMP1:
case NUMP2:
case NUMP3:
case NUMP4:
if ( code < 64 ) {
switch( KeyTable[ code ] ) {
case '7':
case '4':
Top();
break;
case '1':
case '6':
Bottom();
break;
case '8':
LineUp();
break;
case '2':
LineDown();
break;
case '9':
PageUp();
break;
case '3':
PageDown();
break;
case '5':
if ( ! vwPrinting ) Quit( RETURN_OK );
break;
default:
break;
}
} else if ( code == 0x43 ) {
LineUp();
break;
}
break;
case CTRL1:
case CTRL2:
case CTRL3:
case CTRL4:
if ( code < 64 ) {
switch( KeyTable[ code ] ) {
case 'c':
if ( ! vwPrinting ) Quit( RETURN_OK );
break;
case 'n':
vwMode = FALSE;
FindNP( SR_FORWARD );
break;
case 'p':
vwMode = FALSE;
FindNP( SR_BACKWARD );
break;
case 'l':
Inform( ClearStr );
DisplayText();
break;
case 'b':
if ( ! vwPrinting )
CloseDisplay();
break;
case 's':
SaveBlock( -1 );
break;
default:
break;
}
} else if ( code >= 0x50 && code <= 0x59 ) {
JumpMark(( UWORD )( code - 0x50 ));
break;
}
break;
case PRIN1:
case PRIN2:
if ( code < 64 ) {
switch( KeyTable[ code ] ) {
case 'd':
if ( ! vwPrinting ) {
vwPMode = PRT_PAGE;
PrintFile();
}
break;
case 'p':
if ( ! vwPrinting ) {
vwPMode = PRT_FILE;
PrintFile();
}
break;
default:
break;
}
} else if ( code >= 0x50 && code <= 0x59 ) {
vwPMode = PRT_BLOCK;
vwPMark = ( UWORD )( code - 0x50 );
PrintFile();
break;
}
break;
case SHIF1:
case SHIF2:
case SHIF3:
case SHIF4:
case SHIF5:
case SHIF6:
case SHIF7:
case SHIF8:
if ( code < 64 ) {
switch( SKeyTable[ code ] ) {
case '<':
Top();
break;
case '>':
Bottom();
break;
case '%':
Goto( GT_PERC );
break;
case 'N':
Goto( GT_LINE );
break;
default:
break;
}
} else if ( code >= 0x50 && code <= 0x59 ) {
UnSetMark(( UWORD )( code - 0x50 ));
break;
}
break;
case LALT1:
case LALT2:
case LALT3:
case LALT4:
if ( code >= 0x50 && code <= 0x59 ) {
SaveBlock(( WORD )( code - 0x50 ));
break;
}
break;
default:
break;
}
}
}