2009-05-22 5 views
2

read() 시스템 호출을 사용하여 표준 입력을 읽었습니다.하지만 저를 괴롭히는 작은 것이 있습니다. 나는 화살표 키를 사용할 수 없다 ... 정말로하고 싶은 것은 화살표 키를 사용하여 입력 된 텍스트 안에서 앞뒤로 이동하는 것이었지만 그렇게 쉽지는 않다라고 생각한다. 그래서, 적어도 내가하고 싶은 것 그것들을 무시하는 것입니다.C에서 stdin을 읽는 중 화살표 키를 무시하는 방법은 무엇입니까?

지금은 화살표 키 중 하나를 누르면 이상한 결과가 나오고 표준 출력에 아무 것도 쓰지 않아서 (결과적으로 read() 시스템 호출의 표준 입력에서 읽음).

쉽게 달성 할 수 있습니까? 그렇지 않습니까?

답변

4

화살표 키를 이상적인 방식 (예 : 앞뒤로 이동하고 입력을 편집)으로 해석하려면 일반적으로 라이브러리를 사용해야합니다. Linux의 경우 표준은 GNU Readline입니다. 바라건대 다른 누군가가 평소 Windows CLI 응용 프로그램에 대해 말할 수 있습니다.

+0

그건 아마도 내가 롤을 필요로하는 유일한 대답은 ... –

0

답변은 궁극적으로 키의 출처에 달려 있습니다. Cygwin에서이 프로그램을 실행했습니다 :

int main(void) 
{ 
    int c=0; 

    while(c != 'X') { 
     c = getchar(); 
     printf("\nc=%d", c); 
    } 
} 

커서 키가 나타날 때마다 나는 대문자 인 escape (27)과 다른 문자를 봅니다. 그런 결과가 나오면 27을 볼 때마다 3 개의 키를 건너 뛸 수 있습니다. 또한 볼 수도 있고 사용할 수도 있습니다!

앞서 언급 한 것처럼 YMMV는 특히 O.S.와 실제 호출하는 키 획득 기능과 관련이 있습니다.