проклятия движутся назад с учетом предыдущих строк - PullRequest
0 голосов
/ 10 марта 2019

Есть ли способ переместить курсор назад при учете предыдущих строк, т.е. когда курсор возвращается назад от начала строки, он переходит к последнему непустому символу предыдущей строки?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Так что для этого нет встроенного метода, поэтому мне пришлось написать собственный

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();
}

Обратите внимание, что я удалил некоторый нерелевантный код, связанный с файловым вводом / выводом, который был в этом методе.

0 голосов
/ 11 марта 2019

Вы можете легко сделать это в приложении curses (полноэкранном режиме) (считывая символы с виртуального экрана, используя winch или win_wch), но было бы намного сложнее в низкоуровневом приложении termcap / terminfo, поскольку не существует переносимого метода для чтения непосредственно с экрана терминала.

...