X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=keyhandler.c;h=6d8ca52d2f4b37c2c3289a362a566078321aa40e;hb=7a1a81d517d3e95f6f9f5dba853fe6d9d8c27ab3;hp=0130e9bf5829e9b3ef81db2b3bd4b1ad898912d0;hpb=36403b46c9eec27a672b0cfbfad9a79c7d153dca;p=pd_readline diff --git a/keyhandler.c b/keyhandler.c index 0130e9b..6d8ca52 100644 --- a/keyhandler.c +++ b/keyhandler.c @@ -12,6 +12,7 @@ #include #include #include +#include "pd_readline.h" /* This implementation of getch() is from here - */ @@ -58,16 +59,48 @@ char getche(void) { -int 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); + switch(i) { - case (27): escape() ; - case (33): dosomething(); - case (42): something(); - default: 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(); */ } }