X-Git-Url: https://pd.if.org/git/?p=pd_readline;a=blobdiff_plain;f=pd_readline2.c;fp=pd_readline2.c;h=63a31e797e7c527c372eef46128a416ce429a782;hp=02b943d6f87be14760eeaf1be7c64570b4bf68d7;hb=3f771e17236364ded86e96ee64f99344337991f8;hpb=dba2080a407b920ad54432c484e0044b92cd34c7 diff --git a/pd_readline2.c b/pd_readline2.c index 02b943d..63a31e7 100644 --- a/pd_readline2.c +++ b/pd_readline2.c @@ -9,6 +9,8 @@ /* The code can now distinguish between a printable key */ /* and a key that should not be printed. */ +/* Backspace key, and left and right arrow keys now work. */ + /* It will still be some time before this is a REAL */ /* readline, but we are "on the way"...... */ /* This code is released to the public domain. */ @@ -138,20 +140,44 @@ int main(void) /* F2 is 27, 79, 81. */ /* F3 is 27, 79, 82. */ /* F4 is 27, 79, 83. */ - - + + /* Backspace */ + else if(key == 127) + { + buffer[bufpnt].key = key; + /* Move 1 char to left */ + printf("\033[1D"); + printf("\040"); + printf("\033[1D"); + bufpnt += 1; + } + else if(key == 27) - { - + { buffer[bufpnt].esc = 1; key = getch(); if(key == 91) buffer[bufpnt].lbr = 1; key = getch(); - if( (key >= 65) && (key <= 68) ) + if(key == 65) /* Up arrow */ + { + buffer[bufpnt].key = key; + } + if(key == 66) /* Down arrow */ + { + buffer[bufpnt].key = key; + } + if(key == 67) /* Left arrow */ + { + buffer[bufpnt].key = key; + printf("\033[1C"); + } + if(key == 68) /* Right arrow */ { - buffer[bufpnt].key = key; - } + buffer[bufpnt].key = key; + printf("\033[1D"); + } + bufpnt += 1; } @@ -163,7 +189,7 @@ int main(void) puts("\n"); int j ; /* Print the array of structs. */ - for (j=0; j<20; j++) + for (j=0; j