home *** CD-ROM | disk | FTP | other *** search
- /*--------------------------------------*/
- /* */
- /* 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);
- }