this dates from DOS c class. there are now more keys on KB and keys on
mice.
would someone like to help me update and convert to *nix.
its time I tried some coding.
CWSIV
/*
-------------------------------------------------------------------------
*/
/* responce.c extended key responce and detection later incorporated in
menu */
/* created by Carl William Spitzer
*/
/*
-------------------------------------------------------------------------
*/
/* -------------------------- structures and types
------------------------- */
/* ----------------------- function prototype section
---------------------- */
void main( void );
int Handle_0_Key(void);
/* ------------------------ preprocessor statements
------------------------ */
#include
#include
#define ESC 27
/* ----------------------- main and other functions
------------------------ */
void main ( void )
{
Handle_0_Key();
}
/*
-------------------------------------------------------------------------
*/
/* handle extended character codes
*/
/*
-------------------------------------------------------------------------
*/
int Handle_0_Key(void)
{
int f = -1, k = -1, c=0;
while (c != ESC)
{
c = getch();
if (c == 0)
{
c = getch();
switch(c)
{
case 59: /* plain F1
*/
case 60: /* plain F2
*/
case 61: /* plain F3
*/
case 62: /* plain F4
*/
case 63: /* plain F5
*/
case 64: /* plain F6
*/
case 65: /* plain F7
*/
case 66: /* plain F8
*/
case 67: /* plain F9
*/
case 68: /* plain F10
*/
case 69: /* plain F11
*/
case 70: f=0; break; /* plain F12
*/
case 71: /* HOME
*/
case 72: /* up arrow
*/
case 73: /* PAGE UP
*/
case 74: /* ?????????????????
*/
case 75: /* right arrow
*/
case 76: /* ?????????????????
*/
case 77: /* left arrow
*/
case 78: /* ?????????????????
*/
case 79: /* END
*/
case 80: /* down arrow
*/
case 81: /* PAGE DOWN
*/
case 82: /* INSERT
*/
case 83: k=0; break; /* DELETE
*/
case 84: /* SHIFT F1
*/
case 85: /* SHIFT F2
*/
case 86: /* SHIFT F3
*/
case 87: /* SHIFT F4
*/
case 88: /* SHIFT F5
*/
case 89: /* SHIFT F6
*/
case 90: /* SHIFT F7
*/
case 91: /* SHIFT F8
*/
case 92: /* SHIFT F9
*/
case 93: f=1; break; /* SHIFT F10
*/
case 94: /* CONTROL F1
*/
case 95: /* CONTROL F2
*/
case 96: /* CONTROL F3
*/
case 97: /* CONTROL F4
*/
case 98: /* CONTROL F5
*/
case 99: /* CONTROL F6
*/
case 100: /* CONTROL F7
*/
case 101: /* CONTROL F8
*/
case 102: /* CONTROL F9
*/
case 103: f=2; break; /* CONTROL F10
*/
case 104: /* ALT F1
*/
case 105: /* ALT F2
*/
case 106: /* ALT F3
*/
case 107: /* ALT F4
*/
case 108: /* ALT F5
*/
case 109: /* ALT F6
*/
case 110: /* ALT F7
*/
case 111: /* ALT F8
*/
case 112: /* ALT F9
*/
case 113: f=3; break; /* ALT F10
*/
}
}
else /* not extended key code */
{
switch (c)
{
case 1: /* CONTROL A,a */
case 2: /* CONTROL B,b */
case 3: /* CONTROL C,c */
case 4: /* CONTROL D,d */
case 5: /* CONTROL E,e */
case 6: /* CONTROL F,f */
case 7: /* CONTROL G,g */
case 8: /* CONTROL H,h */
case 9: /* CONTROL I,i */
case 10: /* CONTROL J,j */
case 11: /* CONTROL K,k */
case 12: /* CONTROL L,l */
case 13: /* CONTROL M,m */
case 14: /* CONTROL N,n */
case 15: /* CONTROL O,o */
case 16: /* CONTROL P,p */
case 17: /* CONTROL Q,q */
case 18: /* CONTROL R,r */
case 19: /* CONTROL S,s */
case 20: /* CONTROL T,t */
case 21: /* CONTROL U,u */
case 22: /* CONTROL V,v */
case 23: /* CONTROL W,w */
case 24: /* CONTROL X,x */
case 25: /* CONTROL Y,y */
case 26: f=4; break; /* CONTROL Z,z */
case 46: /* SHIFT DELETE */
case 47: /* ?????????????? */
case 48: /* SHIFT INSERT */
case 49: /* SHIFT END */
case 50: /* SHIFT DOWN ARROW */
case 51: /* SHIFT PAGE DOWN */
case 52: /* SHIFT LEFT ARROW */
case 53: /* SHIFT 5 KEYPAD */
case 54: /* SHIFT RIGHT ARROW */
case 55: /* SHIFT HOME */
case 56: /* SHIFT UP ARROW */
case 57: k=1; break; /* SHIFT PAGE UP */
}
}
switch(k)
{
case 0: printf("numeric keypad responce %2d\n",c); break;
case 1: printf("<shift> numeric keypad responce %2d\n",c);
break;
default: printf("not keypad "); break;
}
switch(f)
{
case 0: printf("plain function key F%d\n",c-58); break;
case 1: printf("<shift> F%d\n",c-83); break;
case 2: printf("<control> F%d\n",c-93); break;
case 3: printf("<alt> F%d\n",c-103); break;
case 4: printf("<control> %c or %c",c+64,c+96); break;
default: printf("not function or key\n"); break;
}
k=-1; f=-1;
} /* while */
return c;
} /* Handle_0_Key */
________________________________________________________________
The best thing to hit the Internet in years - Juno SpeedBand!
Surf the Web up to FIVE TIMES FASTER!
Only $14.95/ month - visit www.juno.com to sign up today!