| version 1.7, 2003/10/23 18:14:30 |
version 1.8, 2003/10/27 09:50:16 |
|
|
| * |
* |
| */ |
*/ |
| |
|
| /* $Platon: games/_shared/dos2linux.c,v 1.6 2003/10/07 12:21:33 nepto Exp $ */ |
/* $Platon: games/_shared/dos2linux.c,v 1.7 2003/10/23 18:14:30 nepto Exp $ */ |
| |
|
| #include <string.h> |
#include <string.h> |
| #include <stdlib.h> |
#include <stdlib.h> |
| Line 42 int kbhit(void) /* {{{ */ |
|
| Line 42 int kbhit(void) /* {{{ */ |
|
| int getch(void) /* {{{ */ |
int getch(void) /* {{{ */ |
| { |
{ |
| register int ret; |
register int ret; |
| |
#if 0 /* debug mode */ |
| |
ret = vga_getch(); |
| |
fprintf(stderr, "getch(): ret = %d\n", ret); |
| |
#else |
| if (getch_next_ret != 0) { |
if (getch_next_ret != 0) { |
| ret = getch_next_ret; |
ret = getch_next_ret; |
| getch_next_ret = 0; |
getch_next_ret = 0; |
| } else { |
} else { |
| ret = vga_getch(); |
ret = vga_getch(); |
| if (ret == 27 && kbhit() && (ret = vga_getch()) == 91 && kbhit()) { |
if (ret == 27 && kbhit() && (ret = vga_getch()) == 91 && kbhit()) { |
| switch (ret = vga_getch()) { |
ret = vga_getch(); |
| case 65: getch_next_ret = SUP; break; |
if (ret == 91) { |
| case 66: getch_next_ret = SDOWN; break; |
switch (ret = vga_getch()) { |
| case 67: getch_next_ret = SRIGHT; break; |
case 65: getch_next_ret = F1; break; |
| case 68: getch_next_ret = SLEFT; break; |
case 66: getch_next_ret = F2; break; |
| case 49: getch_next_ret = HOME; break; |
case 67: getch_next_ret = F3; break; |
| case 50: getch_next_ret = INSERT; break; |
case 68: getch_next_ret = F4; break; |
| case 51: getch_next_ret = DELETE; break; |
case 69: getch_next_ret = F5; break; |
| case 52: getch_next_ret = END; break; |
case 70: getch_next_ret = F6; break; |
| case 53: getch_next_ret = PGUP; break; |
case 71: getch_next_ret = F7; break; |
| case 54: getch_next_ret = PGDOWN; break; |
case 72: getch_next_ret = F8; break; |
| |
case 73: getch_next_ret = F9; break; |
| |
case 74: getch_next_ret = F10; break; |
| |
} |
| |
} else { |
| |
switch (ret) { |
| |
case 65: getch_next_ret = SUP; break; |
| |
case 66: getch_next_ret = SDOWN; break; |
| |
case 67: getch_next_ret = SRIGHT; break; |
| |
case 68: getch_next_ret = SLEFT; break; |
| |
case 49: getch_next_ret = HOME; break; |
| |
case 50: getch_next_ret = INSERT; break; |
| |
case 51: getch_next_ret = DELETE; break; |
| |
case 52: getch_next_ret = END; break; |
| |
case 53: getch_next_ret = PGUP; break; |
| |
case 54: getch_next_ret = PGDOWN; break; |
| |
} |
| |
if (ret >= 49 && ret <= 54 && kbhit()) |
| |
ret = vga_getch(); /* == 126 */ |
| } |
} |
| if (ret >= 49 && ret <= 54 && kbhit()) |
|
| ret = vga_getch(); /* == 126 */ |
|
| if (getch_next_ret != 0) |
if (getch_next_ret != 0) |
| ret = NUL; |
ret = NUL; |
| } else if (ret == LF) { |
} else if (ret == LF) { |
| Line 70 int getch(void) /* {{{ */ |
|
| Line 90 int getch(void) /* {{{ */ |
|
| ret = BS; |
ret = BS; |
| } |
} |
| } |
} |
| #if 0 |
|
| fprintf(stderr, "getch(): ret = %d\n", ret); |
|
| #endif |
#endif |
| return ret; |
return ret; |
| } /* }}} */ |
} /* }}} */ |