/* The code can now distinguish between a printable key */ \r
/* and a key that should not be printed. */ \r
\r
+/* Backspace key, and left and right arrow keys now work. */ \r
+\r
/* It will still be some time before this is a REAL */ \r
/* readline, but we are "on the way"...... */ \r
/* This code is released to the public domain. */ \r
/* F2 is 27, 79, 81. */ \r
/* F3 is 27, 79, 82. */ \r
/* F4 is 27, 79, 83. */ \r
- \r
- \r
+ \r
+ /* Backspace */ \r
+ else if(key == 127) \r
+ { \r
+ buffer[bufpnt].key = key; \r
+ /* Move 1 char to left */ \r
+ printf("\033[1D");\r
+ printf("\040"); \r
+ printf("\033[1D"); \r
+ bufpnt += 1; \r
+ } \r
+ \r
else if(key == 27) \r
- { \r
- \r
+ { \r
buffer[bufpnt].esc = 1; \r
key = getch(); \r
if(key == 91) \r
buffer[bufpnt].lbr = 1; \r
key = getch(); \r
- if( (key >= 65) && (key <= 68) ) \r
+ if(key == 65) /* Up arrow */ \r
+ { \r
+ buffer[bufpnt].key = key; \r
+ } \r
+ if(key == 66) /* Down arrow */ \r
+ { \r
+ buffer[bufpnt].key = key; \r
+ } \r
+ if(key == 67) /* Left arrow */ \r
+ { \r
+ buffer[bufpnt].key = key; \r
+ printf("\033[1C"); \r
+ }\r
+ if(key == 68) /* Right arrow */ \r
{ \r
- buffer[bufpnt].key = key; \r
- } \r
+ buffer[bufpnt].key = key; \r
+ printf("\033[1D"); \r
+ }\r
+ \r
bufpnt += 1; \r
} \r
\r
puts("\n"); \r
int j ; \r
/* Print the array of structs. */ \r
- for (j=0; j<20; j++) \r
+ for (j=0; j<bufpnt; j++) \r
{ \r
printf("Fnkey: %d ", buffer[j].fnkey ) ; \r
printf("Ctrl: %d ", buffer[j].ctrl ) ; \r