projects
/
oftp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added watt32 headers and brought the DOS version up to parity with UNIX
[oftp]
/
src
/
dos
/
input.c
diff --git
a/src/dos/input.c
b/src/dos/input.c
index
4b36e4a
..
34632b6
100644
(file)
--- a/
src/dos/input.c
+++ b/
src/dos/input.c
@@
-10,11
+10,61
@@
void cleanup_input(void)
{
}
{
}
+static int conv_special(int key)
+{
+ switch(key) {
+ case 72:
+ return KB_UP;
+ case 80:
+ return KB_DOWN;
+ case 75:
+ return KB_LEFT;
+ case 77:
+ return KB_RIGHT;
+ case 71:
+ return KB_HOME;
+ case 79:
+ return KB_END;
+ case 82:
+ return KB_INS;
+ case 83:
+ return KB_DEL;
+ case 73:
+ return KB_PGUP;
+ case 81:
+ return KB_PGDN;
+ default:
+ break;
+ }
+
+ if(key >= 58 && key <= 70) {
+ return KB_F1 + (key - 59);
+ }
+
+ return -1;
+}
+
int poll_input(union event *ev)
{
int poll_input(union event *ev)
{
+ static int special;
+
if(have_input()) {
ev->type = EV_KEY;
if(have_input()) {
ev->type = EV_KEY;
- ev->key.key = getch();
+ if((ev->key.key = getch()) == 0) {
+ special = 1;
+ return 0;
+ }
+
+ if(special) {
+ special = 0;
+ if((ev->key.key = conv_special(ev->key.key)) == -1) {
+ return 0;
+ }
+ } else {
+ if(ev->key.key == '\r') {
+ ev->key.key = '\n';
+ }
+ }
return 1;
}
return 0;
return 1;
}
return 0;