즉, 위/아래 화살표 키를 지원하고 검색을 역으로 수행하려면 ctrl-r
을 지원해야합니다. 나는 어디에서 시작해야합니까?C에서 ssh 기능을 사용하여 콘솔을 구현하는 방법은 무엇입니까?
3
A
답변
1
답변은 원하는 수준에 달려 있습니다. readline
또는 editline
을 사용하는 것은 높은 수준의 대답입니다. 다음 단계는 libncurses
을 사용하고 getch()
으로 전화를 걸어 키보드 입력을 읽은 다음 기록/검색을 처리하는 것입니다.
최저 레벨 (터미널 용)이 실제 입력 스트림을 처리 중입니다. 화살표 키는 특정 터미널에 따라 특정 문자 시퀀스를 보냅니다. 예를 들어, vt100 에뮬레이터는^[[A] "상향 화살표",^[[B] "아래쪽 화살표"등의. 이들을 읽으려면 입력을 즉시 반환하고 개행을 기다리지 않도록 터미널 속성을 설정해야합니다. 이렇게하려면 termios
함수를 사용하여 정규 입력 모드를 사용하지 않도록 설정하십시오. 그런 다음 한 번에 한 문자 씩 읽어보고 문자 (27, 91, 65)가 있는지 확인하고 위쪽 화살표인지 알 수 있습니다.
이 낮은 수준은 지루하고 취약하고 다른 터미널 에뮬레이터를 사용하는 경우 작동하지 않습니다 (다른 터미널에 해당하는 입력 순서를 얻을 terminfo
을 사용할 수 있습니다.)
당신이에 경우 터미널 (직렬 회선, X 윈도우, 비트 맵 디스플레이 등)보다 낮은 레벨이면 응답이 다시 변경됩니다.
모든 SSH 기능을 원하거나 명령 기록 기능 만 원하십니까? – Alan
좋은 라인 편집 기능을 원한다면,이 기능을 많은 프로그램에 제공하는 GNU readline 라이브러리를 조사하십시오. –
이러한 항목은 ssh 기능이 아니며 bash/tcsh/zsh), 아마도 이것을 구현하기 위해 readline을 사용할 것입니다. –