curses 向后移动占前几行
curses move backwards accounting for previous lines
有没有办法在考虑到前几行的同时向后移动光标,即当光标从行首返回时,它会转到上一行的最后一个非空字符?
您可以在 curses(全屏)应用程序中轻松做到这一点(通过使用 winch
or win_wch
从虚拟屏幕读取字符),但在 termcap/terminfo 低级应用程序,因为没有直接从终端屏幕读取的便携式方法。
所以没有内置的方法,所以我不得不自己写
void backspace(){
int x,y;
getyx(stdscr,y,x);
if(x == 0) {
if( y == 0 ) {
return;
}
x = getmaxx(stdscr) - 1;
move(--y,x);
char ch = ' ';
while(ch == ' ' && x != 0){
move(y,--x);
ch=inch();
}
} else {
move(y,x-1);
}
delch();
}
请注意,我已经删除了此方法中一些不相关的文件 I/O 相关代码。
有没有办法在考虑到前几行的同时向后移动光标,即当光标从行首返回时,它会转到上一行的最后一个非空字符?
您可以在 curses(全屏)应用程序中轻松做到这一点(通过使用 winch
or win_wch
从虚拟屏幕读取字符),但在 termcap/terminfo 低级应用程序,因为没有直接从终端屏幕读取的便携式方法。
所以没有内置的方法,所以我不得不自己写
void backspace(){
int x,y;
getyx(stdscr,y,x);
if(x == 0) {
if( y == 0 ) {
return;
}
x = getmaxx(stdscr) - 1;
move(--y,x);
char ch = ' ';
while(ch == ' ' && x != 0){
move(y,--x);
ch=inch();
}
} else {
move(y,x-1);
}
delch();
}
请注意,我已经删除了此方法中一些不相关的文件 I/O 相关代码。