X-Git-Url: https://pd.if.org/git/?p=pd_readline;a=blobdiff_plain;f=keyhandler.c;fp=keyhandler.c;h=6d8ca52d2f4b37c2c3289a362a566078321aa40e;hp=80ad5e5461f310dabafdc539c1d0a517fa638533;hb=7a1a81d517d3e95f6f9f5dba853fe6d9d8c27ab3;hpb=3345932d0ab453d9ca85814fde1fe618bb36570f diff --git a/keyhandler.c b/keyhandler.c index 80ad5e5..6d8ca52 100644 --- a/keyhandler.c +++ b/keyhandler.c @@ -59,16 +59,48 @@ char getche(void) { -void keyhandler(void) +/* Arrow keys are esc [ A to esc [ D */ +/* Alt keys are just esc then key (e.g. Alt-g is esc g ). */ +/* Ctrl (then letter) keys are just Dec 1 to Dec 26 */ + +void keyhandler(buf b) { + int i = getch(); switch(i) { - case (27): puts("1"); /* escape() ; */ - case (33): puts("2"); /* dosomething(); */ - case (42): puts("3"); /* something(); */ - default: puts("4"); /* stuff(); */ + case (1): break; /* Ctrl a */ + case (2): break; /* Ctrl b */ + case (3): break; /* Ctrl c */ + + case (10): enter(); /* Enter */ + + case (27): spec(i); break; /* esc */ + + case (32): printf("%c", i); break; /* Printable chars. */ + case (33): printf("%c", i); break; /* Printable chars. */ + case (34): printf("%c", i); break; /* Printable chars. */ + + case (65): printf("%c", i); break; /* "A" */ + case (66): printf("%c", i); break; /* "B" */ + case (67): printf("%c", i); break; /* "C" */ + case (68): printf("%c", i); break; /* "D" */ + case (69): printf("%c", i); break; /* "E" */ + case (70): printf("%c", i); break; /* "F" */ + + case (97): printf("%c", i); break; /* "a" */ + case (98): printf("%c", i); break; /* "b" */ + case (99): printf("%c", i); break; /* "c" */ + case (100): printf("%c", i); break; /* "d" */ + case (101): printf("%c", i); break; /* "e" */ + case (102): printf("%c", i); break; /* "f" */ + + case (126): printf("%c", i); break; /* "~" */ + + case (127): delch(b); break; + + default: break; /* stuff(); */ } }