SSH를 통해 기능 키 보내기 (F1-F12) 키보드와 안드로이드

SSH를 사용할 수있는 Fedora 시스템이 있습니다. 사용하고 싶은 프로그램 중 하나가 때때로 기능 키를 사용합니다. 문제는 내가 실제 키보드와 안드로이드 태블릿 (ASUS 변압기 무한대)에서 SSH’ing,하지만 더있어 점이다 F1F12키. 따라서 사용중인 터미널 응용 프로그램 (VX ConnectBot)이 기능으로 기능을 추가하기로 결정할 때까지 나머지 키보드를 사용하여 전송할 수있는 방법을 찾고 있습니다.

나는 모든 인쇄 가능한 ASCII 문자를 사용할 수 있습니다, Esc, Ctrl, Shift, Enter,와 Tab.



답변

터미널은 키가 아닌 문자 만 이해합니다. 따라서 기능 키는 제어 문자를 사용하여 문자 시퀀스로 인코딩됩니다. 연관된 제어 문자 ( Tabis Ctrl+I, Enteris Ctrl+M, Escis Ctrl+[) 가 있는 몇 가지 일반적인 것 외에도 기능 키는 Ctrl+[ [또는로 시작하는 이스케이프 시퀀스를 보냅니다 Ctrl+[ O. tput명령을 사용 하여 터미널의 각 기능 키에 대해 이스케이프 시퀀스 응용 프로그램이 예상하는 것을 볼 수 있습니다 . 이 시퀀스는 terminfo데이터베이스에 저장 됩니다. 예를 들어, 아래의 쉘 스 니펫은 각 기능 키에 해당하는 이스케이프 시퀀스를 보여줍니다.

$ for x in {1..12}; do echo -n "F$x "; tput kf$x | cat -A; echo; done
F1 ^[OP
F2 ^[OQ
F3 ^[OR
F4 ^[OS
F5 ^[[15~
F6 ^[[17~
F7 ^[[18~
F8 ^[[19~
F9 ^[[20~
F10 ^[[21~
F11 ^[[23~
F12 ^[[24~

기능 키에 대한 제어 시퀀스를 참조하는 또 다른 방법은 프레스이다 Ctrl+ V리바 않는 단말 프로그램에 Ctrl+에 V(예 쉘로) 키. Ctrl+ V다음 문자 (이스케이프 문자가 됨)를 문자 그대로 삽입하면 일반 문자로 구성된 나머지 시퀀스를 볼 수 있습니다.

시퀀스는 입력하기 어려울 수 있으므로 응용 프로그램에서 키 바인딩을 변경하거나 다른 터미널 에뮬레이터를 사용하여 조사하십시오. 또한 시간 제한이있을 수 있습니다. 일부 응용 프로그램은 이스케이프 시퀀스가 ​​충분히 빠르면 인식하므로 Esc키에만 의미를 줄 수 있습니다 .


답변

Jack Palevich의 Android Terminal Emulator는 볼륨 키와 키 조합을 사용하여 기능 키를 포함한 다양한 키를 보냅니다. 실제 키보드가 가질 수있는 모든 키가있는 해커 키보드도 있습니다.