문제

Read () 시스템 호출을 사용하여 표준 입력을 읽고 있지만 나를 귀찮게하는 작은 것이 있습니다. 나는 화살표 키를 사용할 수 없다 ... 내가 정말로하고 싶었던 것은 화살표 키를 사용하여 타이핑 된 텍스트 내에서 앞뒤로 이동하는 것이었지만 그다지 쉽지 않다고 생각한다. , 그들을 무시하는 것입니다.

현재 화살표 키를 누르면 이상한 출력이 생성되며 표준 출력에 쓰여지지 않도록합니다 (결과적으로 내 read () 시스템 호출의 표준 입력에서 읽음).

이것이 쉽게 달성 할 수 있습니까? 아니면 그렇게 쉽지 않습니까?

도움이 되었습니까?

해결책

화살표 키를 이상적으로 원하는 방식으로 해석하려면 (예 : 앞뒤로 이동하고 입력을 편집하기 위해) 일반적으로 라이브러리를 사용해야합니다. Linux의 경우 표준은입니다 gnu readline. 바라건대 다른 사람이 Windows CLI 앱에 일반적으로 사용하는 것을 말할 수 있기를 바랍니다.

다른 팁

대답은 궁극적으로 키가 어디에서 왔는지에 달려 있습니다. Cygwin 에서이 프로그램을 실행했습니다.

int main(void)
{
    int c=0;

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

커서 키가 올 때마다 탈출 (27), 브래킷, 다른 캐릭터가 보입니다. 따라서 그런 결과를 얻으면 27 개를 볼 때마다 3 개의 키를 건너 뛸 수 있습니다.

언급 한 바와 같이, ymmv, 특히 OS 및 실제 키 게이트 기능이 호출됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top