- if(key >= ' ' && key <= '~') {
- pattern[pattern_point++] = key;
- pattern[pattern_point] = '\0';
+ if(key >= ' ' && key <= '~') { // Insert character
+ int c = cursor_position;
+ char t = pattern[c], u;
+ while(t) {
+ c++;
+ u = pattern[c];
+ pattern[c] = t;
+ t = u;
+ }
+ c++;
+ pattern[c] = '\0';
+ pattern[cursor_position++] = key;
+ }
+
+ else if(key == KEY_BACKSPACE || key == '\010' || key == '\177') {
+ if(cursor_position > 0) {
+ if(pattern[cursor_position]) {
+ int c = cursor_position-1;
+ while(pattern[c]) {
+ pattern[c] = pattern[c+1];
+ c++;
+ }
+ } else {
+ pattern[cursor_position - 1] = '\0';
+ }
+ cursor_position--;
+ }