2011-08-16 4 views
0

터미널의 일부 기능을 모방 한 프로그램을 작성하려고하는데 실행 된 명령을 저장해야합니다. il을 배열에 저장하면 사용자가 다시 눌렀을 때 다시 볼 수 있고 다시 타이핑하지 않고 실행할 수 있습니다. ?? 현재 키보드 입력을 얻기 위해프로그래밍에서, 표준 입력에서 위쪽 화살표 또는 아래쪽 화살표를 누를 때 어떻게 감지 할 수 있습니까?

char input = getch(); 

+0

어떤 플랫폼입니까? – cnicutar

답변

1

add_history 함수 (really simple example here)를 통해 제공되는 기능 중 하나이므로 사용하는 것이 좋습니다. 기록을 스크롤하는 것은 기본적으로 위쪽 화살표와 아래쪽 화살표에 바인딩됩니다. 물론 이것은 Linux 기반 시스템을 사용하는 경우에만 옵션입니다. 당신이 kbhit()getch()와 그것을 수동 방법을해야 할 경우

, 그것은 또한 크로스 플랫폼을하고하지 않을 것이다 - 그것은 오랜만이야 있지만 - 당신이 두 번 getch()를 호출 할 수도 있음을 기억 않습니다. 화살표 키에는 ASCII 코드가 없으므로 화살표를 누르면 두 개의 문자가 생성됩니다. 첫 번째 문자 (null 종결 자 '\0'이어야 함)를 버리고 두 번째 문자를 바탕으로 결정해야합니다. 뭔가 따라와 :

if (kbhit()) 
{ 
    ch1 = getch(); 
    if (ch1 != '\0') 
    { 
     // not an arrow 
    } 
    else 
    { 
     ch2 = getch(); 
     switch(ch2) 
     { 
       // might be an arrow key, H - up, P - down, K - left, M - right 
     } 
    } 
} 

제가 말하고자하는 것은 너무 힘들어서 Readline을 사용할 수 있다면 사용하는 것입니다.

0

HY 감사합니다. 키를 눌렀는지 확인하려면 kbhit() 기능으로 확인할 수 있습니다. 화살표 inputnumber은 다음과 같습니다 왼쪽 : 75 오른쪽 : 77 다운 : 80 최대 :

(72)는 그래서 당신은 입력에 스위치와 화살표를 클릭인지 확인할 수 있습니다.