home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 1
/
FishNMoreVol1.bin
/
more
/
code_examples
/
librar
/
key.c
< prev
next >
Wrap
Text File
|
1989-02-08
|
6KB
|
253 lines
/*--------------------------------------*/
/* */
/* KEY(X,X) */
/* */
/* Functionality: */
/* Inputs characters from the */
/* keyboard. */
/* Arguments: */
/* 0: If -1: Any key accepted. */
/* If 0: Upper case forced. */
/* If 1: 'Y' or 'N' input. */
/* 1: Any value > 1, accepts only */
/* these keys. */
/* Examples: */
/* */
/* Any key: key(-1,0); */
/* Upper case: key(0,0); */
/* 'Y' or 'N': key(1,0); */
/* <CR> or Spc-bar: key(13,32); */
/* Returns: The key value hit. */
/* Functions used: */
/* GETCH(),TOUPPER() */
/* Author: John Callicotte */
/* Date created/modified: 09/01/88 */
/* */
/*--------------------------------------*/
# include "ctype.h"
# include "dos.h"
key(a,b)
int a,b;
{
int d,flag;
flag=0;
KY1: d=getch(); /* Get a key */
if (!d){ /* Check for extended i/o. */
flag=1;
goto KY1;
}
if (d==3) /* Check for ^C. */
exit(0);
if (flag){
switch(d){
case 15: d=222; /* Shift Tab */
break;
case 16: d=190; /* Alt-Q */
break;
case 17: d=196; /* Alt-W */
break;
case 18: d=178; /* Alt-E */
break;
case 19: d=191; /* Alt-R */
break;
case 20: d=193; /* Alt-T */
break;
case 21: d=198; /* Alt-Y */
break;
case 22: d=194; /* Alt-U */
break;
case 23: d=182; /* Alt-I */
break;
case 24: d=188; /* Alt-O */
break;
case 25: d=189; /* Alt-P */
break;
case 30: d=174; /* Alt-A */
break;
case 31: d=192; /* Alt-S */
break;
case 32: d=177; /* Alt-D */
break;
case 33: d=179; /* Alt-F */
break;
case 34: d=180; /* Alt-G */
break;
case 35: d=181; /* Alt-H */
break;
case 36: d=183; /* Alt-J */
break;
case 37: d=184; /* Alt-K */
break;
case 38: d=185; /* Alt-L */
break;
case 44: d=199; /* Alt-Z */
break;
case 45: d=197; /* Alt-X */
break;
case 46: d=176; /* Alt-C */
break;
case 47: d=195; /* Alt-V */
break;
case 48: d=175; /* Alt-B */
break;
case 49: d=187; /* Alt-N */
break;
case 50: d=186; /* Alt-M */
break;
case 59: d=128; /* F1 */
break;
case 60: d=129; /* F2 */
break;
case 61: d=130; /* F3 */
break;
case 62: d=131; /* F4 */
break;
case 63: d=132; /* F5 */
break;
case 64: d=133; /* F6 */
break;
case 65: d=134; /* F7 */
break;
case 66: d=135; /* F8 */
break;
case 67: d=136; /* F9 */
break;
case 68: d=137; /* F10 */
break;
case 71: d=138; /* Home */
break;
case 72: d=139; /* Up arrow */
break;
case 73: d=140; /* PgUp */
break;
case 75: d=145; /* Left arrow */
break;
case 77: d=141; /* Right arrow */
break;
case 79: d=144; /* End */
break;
case 80: d=143; /* Down arrow */
break;
case 81: d=142; /* PgDn */
break;
case 82: d=146; /* Ins */
break;
case 83: d=147; /* Del */
break;
case 94: d=158; /* Cntl-F1 */
break;
case 95: d=159; /* Cntl-F2 */
break;
case 96: d=160; /* Cntl-F3 */
break;
case 97: d=161; /* Cntl-F4 */
break;
case 98: d=162; /* Cntl-F5 */
break;
case 99: d=163; /* Cntl-F6 */
break;
case 100: d=164; /* Cntl-F7 */
break;
case 101: d=165; /* Cntl-F8 */
break;
case 102: d=166; /* Cntl-F9 */
break;
case 103: d=167; /* Cntl-F10 */
break;
case 104: d=148; /* Alt-F1 */
break;
case 105: d=149; /* Alt-F2 */
break;
case 106: d=150; /* Alt-F3 */
break;
case 107: d=151; /* Alt-F4 */
break;
case 108: d=152; /* Alt-F5 */
break;
case 109: d=153; /* Alt-F6 */
break;
case 110: d=154; /* Alt-F7 */
break;
case 111: d=155; /* Alt-F8 */
break;
case 112: d=156; /* Alt-F9 */
break;
case 113: d=157; /* Alt-F10 */
break;
case 115: d=173; /* Cntl-Left arrow */
break;
case 116: d=170; /* Cntl-Right arrow */
break;
case 117: d=172; /* Cntl-End */
break;
case 118: d=171; /* Cntl-PgDn */
break;
case 119: d=168; /* Cntl-Home */
break;
case 120: d=210; /* Alt-1 */
break;
case 121: d=211; /* Alt-2 */
break;
case 122: d=212; /* Alt-3 */
break;
case 123: d=213; /* Alt-4 */
break;
case 124: d=214; /* Alt-5 */
break;
case 125: d=215; /* Alt-6 */
break;
case 126: d=216; /* Alt-7 */
break;
case 127: d=217; /* Alt-8 */
break;
case 128: d=218; /* Alt-9 */
break;
case 129: d=219; /* Alt-0 */
break;
case 130: d=220; /* Alt--*/
break;
case 131: d=221; /* Alt-+*/
break;
case 132: d=169; /* Alt-PgUp */
break;
case 184: d=200; /* Shift-F1 */
break;
case 185: d=201; /* Shift-F2 */
break;
case 186: d=202; /* Shift-F3 */
break;
case 187: d=203; /* Shift-F4 */
break;
case 188: d=204; /* Shift-F5 */
break;
case 189: d=205; /* Shift-F6 */
break;
case 190: d=206; /* Shift-F7 */
break;
case 191: d=207; /* Shift-F8 */
break;
case 192: d=208; /* Shift-F9 */
break;
case 193: d=209; /* Shift-F10 */
}
return(d);
}
if (a>=0)
d=toupper(d);
if (a>1){
if (d==a)
goto END;
}
if (b>1 && b!=d)
goto KY1;
if (a>=0){
if (a==1 && d!='Y' && d!='N')
goto KY1;
}
END: return(d);
}