키보드/마우스에서 쉘 대화 상자 저주 GUI로 입력 리디렉션

키보드/마우스에서 쉘 대화 상자 저주 GUI로 입력 리디렉션

나는 대화형 메뉴를 만들기 위해 "대화상자" 유틸리티를 사용하려고 노력해 왔습니다. 터미널에서 작업하면 모든 것이 잘 작동합니다. 메뉴가 표시되고 키보드를 사용하여 이러한 메뉴와 상호 작용할 수 있습니다.

하지만 이제는 다른 장치가 출력 대상이 되고 다른 장치(키보드/포인터)가 대화 상자에 입력을 제공하기를 원합니다.

기존 TTY(/dev/console)에서 대화 상자를 실행하고 출력을 /dev/tty0으로 리디렉션합니다. 메뉴는 tty0에 표시되지만 이제 대화 스크립트를 시작하는 터미널에서 입력을 유도하고 싶습니다. 이것은 작동하지 않는 것 같습니다.

따라서 기존 TTY가 대화 상자에 입력을 제공하는지 확인한 다음 TTY 장치가 아닌 장치에서 대화 상자에 이벤트를 삽입하는 방법은 무엇입니까? 어떻게든 일련의 문자를 대화 상자에 표시할 수 있습니까? 아니면 모든 TTY ioctl을 포함하여 TTY처럼 작동하는 실제 장치가 필요한가요?

간단한 입력 리디렉션이 작동하지 않는 것 같나요?

답변1

dialog명령에는 --input-fd읽을 위치를 알려주는 옵션이 필요합니다. 예를 들어, 하나의 터미널 유형에서 tty사용 중인 항목을 찾은 /dev/pts/4다음 읽지 않도록 설정합니다.

stty -icanon && sleep 1000

다른 터미널에서 시작

dialog --yesno 'shall we answer yes?' 0 0 --input-fd 3 3</dev/pts/4

그러면 첫 번째 터미널에 입력된 내용이 대화 상자에 영향을 줍니다.
절전 모드를 중단하고 stty icanon첫 번째 터미널을 다시 시작하려면 입력하세요.

관련 정보