문제

Ncurses 'getch ()를 차단하는 데 문제가 있습니다. 기본 조작이 차단되지 않은 것 같습니다 (또는 초기화를 놓친 적이 있습니까?)? Windows에서 getch ()처럼 작동하기를 바랍니다. 나는 다양한 버전을 시도했다

timeout(3000000);
nocbreak();
cbreak();
noraw();
etc...

(모두 동시에). 나는 (명시 적으로) 사용하지 않는 것을 선호합니다. WINDOW, 가능하다면. ㅏ while getch () 주변의 루프, 특정 반환 값을 확인하는 것도 괜찮습니다.

도움이 되었습니까?

해결책

Curses 라이브러리는 패키지 거래입니다. 도서관을 올바르게 초기화하지 않고도 하나의 일상을 꺼내고 최선을 다할 수 없습니다. 다음은 올바르게 차단하는 코드입니다 getch():

#include <curses.h>

int main(void) {
  initscr();
  timeout(-1);
  int c = getch();
  endwin();
  printf ("%d %c\n", c, c);
  return 0;
}

다른 팁

에서 남자 페이지 (강조 추가) :

그만큼 timeout 그리고 wtimeout 일상적인 주어진 창에 대한 차단 또는 비 차단 읽기를 설정합니다. 만약에 delay 음수이며, 차단 판독 값이 사용됩니다 (즉, 입력을 무기한 대기합니다).

전화해야합니다 initscr() 또는 newterm() 저주가 작동하기 전에 초기화합니다. 이것은 나에게 잘 작동합니다.

#include <ncurses.h>

int main() {
    WINDOW *w;
    char c;

    w = initscr();
    timeout(3000);
    c = getch();
    endwin();

    printf("received %c (%d)\n", c, (int) c);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top