추가 읽기

추가 읽기

외부 버튼에서 활성화할 수 있는 스크립트를 사용하여 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_ACTIVATEFreeBSD에서).

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.스낵 가이드. 소프트웨어.

관련 정보