+ case 13: // CARRIAGE RETURN
+ break;
+ case 10: // LINE FEED
+ break;
+ case 262: // HOME key
+ curpos = 0;
+ curx = 0;
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ break;
+ case 360: // END key
+ curpos = strlen(inplin);
+ if (strlen(inplin) > mx -1) {
+ curx = strlen(inplin) - mx +1;
+ }
+ else
+ {
+ curx = 0;
+ }
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ break;
+ case 330: // DELETE key
+ if (strlen(inplin) > 0) {
+ if (curpos == strlen(inplin)) {
+ inplin[strlen(inplin)-1]='\0';
+ curpos--;
+ }
+ else
+ {
+ strncpy(&inplin[curpos],&inplin[curpos+1],strlen(inplin)-curpos+1);
+ }
+
+
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ }
+ break;
+ case 263: // }
+ case 8: // > Various BACKSPACE codes
+ case 127: // }
+ if (curpos > 0) {
+ if (curpos == strlen(inplin)) {
+ inplin[strlen(inplin)-1]='\0';
+ }
+ else
+ {
+ strncpy(&inplin[curpos-1],&inplin[curpos],strlen(inplin)-curpos);
+ inplin[strlen(inplin)-1]='\0';
+ }
+ if (curpos > 0) curpos--;
+ if (curx > 0) curx--;
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ }
+ break;
+ case 260: // LEFT ARROW
+ if (curpos > 0) {
+ curpos--;
+ if (curx > curpos) curx = curpos;
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ }
+ break;
+ case 261: // RIGHT ARROW
+ if (curpos < strlen(inplin)) {
+ curpos++;
+ if (curpos - curx > mx-1) curx++;
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);
+ }
+ break;
+ default: // ALL OTHER KEYS
+ if (curpos == strlen(inplin)) {
+ sprintf (inplin,"%s%c",inplin,(int) c);
+ }
+ else
+ {
+
+ strncpy(tlin,&inplin[curpos],strlen(inplin)-curpos);
+ tlin[strlen(inplin)-curpos]='\0';
+ strcpy(&inplin[curpos+1],tlin);
+ inplin[curpos] = (int) c;
+ }
+ curpos++;
+ if (curpos - curx > mx-1) curx++;
+ inpprint(inpwin,inplin,curpos,curx);
+ wrefresh (inpwin);