외부 버튼에서 활성화할 수 있는 스크립트를 사용하여 TTY 간에 전환할 수 있는 방법이 있습니까? 저는 LCD 화면이 있는 작은 홈 컨트롤러 Raspberry를 가지고 있고, 키보드나 마우스가 연결되어 있지 않으며, LCD 옆에는 재부팅과 같은 명령을 수행하기 위해 매핑된 몇 개의 버튼이 있습니다. 버튼 중 하나를 프로그래밍하여 키를 누르면 다른 (다음) tty로 전환되고 "루프"가 끝나면 tty1로 돌아갑니다. chvt
키보드 조합을 알고 있지만 Alt F1, F2...
그 중 어느 것도 내가 원하는 대로 작동하지 않습니다. 가능합니까? ? 단서는 내 "랙"에 액세스할 때 확인할 수 있도록 서로 다른 tty에 세 개 이상의 프로그램(예: 진단)이 있다는 것입니다. :)
답변1
루프 KVT와 같은 프로그램 을 작성 chvt
하고 다른 프로그램을 다른 버튼에 연결한 것처럼 연결하면 됩니다.
FreeBSD에서:
- 현재 활성화된 KVT 번호를 출력으로 사용할 수 있습니다
vidcontrol -i active
. - "다음" 작업은
vidcontrol -s $NEXT
증분 및 일부 모듈로 작업 이후입니다.
NetBSD에서:
- 현재 활성화된 KVT 번호를 출력으로 사용할 수 있습니다
wsconscfg -g
. - "다음" 작업은
wsconscfg -s $NEXT
증분 및 일부 모듈로 작업 이후입니다.
리눅스의 경우:
- 현재 활성화된 KVT 번호는 아래 의사 파일에서 찾을 수 있습니다
/sys/class/tty
. - "다음" 작업은
chvt $NEXT
증분 및 일부 모듈로 작업 이후입니다. - 가능한 최대 KVT 수는 고정되어 있습니다(원하는 경우 언제든지 더 낮은 최대값을 직접 연결할 수 있습니다).
세 가지 모두에 대해 위의 모든 작업은 몇 가지 간단한 쉘 스크립팅 알고리즘을 사용하여 수행할 수 있습니다. 아니면 다른 언어로 프로그램을 작성하고 직접 저수준 ioctl()
호출을 할 수도 있습니다( VT_GETACTIVE
예: VT_ACTIVATE
FreeBSD에서).
OpenBSD에서는 이를 달성하기 위한 편리한 유틸리티가 없기 때문에 wsdisplay
(4)를 직접 호출하는 프로그래밍이 필요합니다 .ioctl()
프레임 버퍼에 직접 렌더링되는 사용자 공간 가상 터미널은 유사한 메커니즘을 가질 수 있지만 소프트웨어에 따라 다릅니다. 예를 들어, 내 장치는 "소비자 장치 응용 프로그램이 시작되었습니다"라는 실제 USB HID 코드로 응답합니다.다음/이전 작업열쇠.
추가 읽기
- 조나단 데보인 폴라드(2018). "리눅스 vt". 장비. Nosh 툴셋.
- Søren Schmidtet al. (2016-01-19).
vidcontrol
. FreeBSD 공통 명령 매뉴얼. wsconscfg
.NetBSD 시스템 관리자 매뉴얼. 2006년 6월 24일.- 조나단 데보인 폴라드(2018).
console-multiplexor
.스낵 가이드. 소프트웨어. - 조나단 데보인 폴라드(2018).
console-multiplexor-control
.스낵 가이드. 소프트웨어.