2011-08-02 1 views
3

즉, 위/아래 화살표 키를 지원하고 검색을 역으로 수행하려면 ctrl-r을 지원해야합니다. 나는 어디에서 시작해야합니까?C에서 ssh 기능을 사용하여 콘솔을 구현하는 방법은 무엇입니까?

+0

모든 SSH 기능을 원하거나 명령 기록 기능 만 원하십니까? – Alan

+2

좋은 라인 편집 기능을 원한다면,이 기능을 많은 프로그램에 제공하는 GNU readline 라이브러리를 조사하십시오. –

+0

이러한 항목은 ssh 기능이 아니며 bash/tcsh/zsh), 아마도 이것을 구현하기 위해 readline을 사용할 것입니다. –

답변

1

답변은 원하는 수준에 달려 있습니다. readline 또는 editline을 사용하는 것은 높은 수준의 대답입니다. 다음 단계는 libncurses을 사용하고 getch()으로 전화를 걸어 키보드 입력을 읽은 다음 기록/검색을 처리하는 것입니다.

최저 레벨 (터미널 용)이 실제 입력 스트림을 처리 중입니다. 화살표 키는 특정 터미널에 따라 특정 문자 시퀀스를 보냅니다. 예를 들어, vt100 에뮬레이터는^[[A] "상향 화살표",^[[B] "아래쪽 화살표"등의. 이들을 읽으려면 입력을 즉시 반환하고 개행을 기다리지 않도록 터미널 속성을 설정해야합니다. 이렇게하려면 termios 함수를 사용하여 정규 입력 모드를 사용하지 않도록 설정하십시오. 그런 다음 한 번에 한 문자 씩 읽어보고 문자 (27, 91, 65)가 있는지 확인하고 위쪽 화살표인지 알 수 있습니다.

이 낮은 수준은 지루하고 취약하고 다른 터미널 에뮬레이터를 사용하는 경우 작동하지 않습니다 (다른 터미널에 해당하는 입력 순서를 얻을 terminfo을 사용할 수 있습니다.)

당신이에 경우 터미널 (직렬 회선, X 윈도우, 비트 맵 디스플레이 등)보다 낮은 레벨이면 응답이 다시 변경됩니다.