Cheddar
Bekanntes Mitglied
Guten Tag.
Ich habe mir mal als Ziel gesetzt, einen Texteditor in C mit der ncurses.h (unter Linux) zu schreiben. Es klappt alles auch ganz gut, nur bei der Backspace-Taste hänge ich. Wenn ich einen Buchstaben eingebe, wird dieser zwar angezeigt, aber löschen kann ich ihn durch Backspace nicht.
Hier habe ich mal eine gekürzte Version des Codes geschrieben:
Wenn ich Backspace drücke, werden nur Leerzeichen "sichtbar" und der Cursor rückt nach vorne statt nach hinten zu rücken.
Ich denke mal, dass ich den falschen Code für Backspace eingegeben habe.
Mit "KEY_BACKSPACE" habe ich es auch schon versucht, es passiert genau das selbe.
Wie bekomme ich das hin?
Danke im Voraus,
Cheddar.
Ich habe mir mal als Ziel gesetzt, einen Texteditor in C mit der ncurses.h (unter Linux) zu schreiben. Es klappt alles auch ganz gut, nur bei der Backspace-Taste hänge ich. Wenn ich einen Buchstaben eingebe, wird dieser zwar angezeigt, aber löschen kann ich ihn durch Backspace nicht.
Hier habe ich mal eine gekürzte Version des Codes geschrieben:
Code:
#include <curses.h>
#include <stdlib.h>
void quit(void)
{
endwin();
}
void start(void)
{
mvprintw(1,1,"Welcome to a new generation of text based text editing.");
mvprintw(2,1,"Press Esc to exit.");
}
int main(void)
{
initscr();
atexit(quit);
clear();
noecho();
curs_set(0);
cbreak();
keypad(stdscr, TRUE);
int m=4;
int n=2;
refresh();
int i=0;
start();
int col=1;
while(i==0)
{
mvprintw(m,0,"%d",col);
curs_set(0);
switch(getch()){
///Escape:
case 0x1B:
i=1;
break;
///Backspace:
case 0x8:
mvprintw(m,n-1,"");
fprintf(data,"\b");
break;
///(hier stehen case-Marken für alle Buchstaben und Zahlen
}
n++;
if(n>COLS)
{
col++;
if(col<10)
n=2;
if(col>9)
n=3;
if(col>99)
n=4;
m++;
}
///when all lines have been written:
if(m==LINES)
{
clear();
start();
m=4;
n=2;
}
}
return(0);
}
Wenn ich Backspace drücke, werden nur Leerzeichen "sichtbar" und der Cursor rückt nach vorne statt nach hinten zu rücken.
Ich denke mal, dass ich den falschen Code für Backspace eingegeben habe.
Mit "KEY_BACKSPACE" habe ich es auch schon versucht, es passiert genau das selbe.
Wie bekomme ich das hin?
Danke im Voraus,
Cheddar.