将输入从键盘/鼠标重定向到 shell 对话框curses gui

将输入从键盘/鼠标重定向到 shell 对话框curses gui

我一直在尝试使用“对话框”实用程序来构建交互式菜单。如果我在终端上工作,一切正常;显示菜单,我可以使用键盘从这些菜单进行交互。

但现在我希望另一个设备作为输出的目的地,另一个设备(键盘/指针)为对话框提供输入。

从我现有的 TTY (/dev/console) 运行对话框并将输出重定向到 /dev/tty0。菜单显示在 tty0 上;但我现在希望从启动对话脚本的终端驱动输入。这似乎不起作用。

那么我能否确保现有的 TTY 提供对话框的输入,然后如何从非 TTY 设备的设备将事件注入到对话框中。我能否以某种方式将字符序列回显到对话框中,或者问题是它需要一个行为类似于 TTY 的真实设备,包括所有 TTY ioctl?

输入的简单重定向似乎不起作用?

答案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以恢复第一个终端。

相关内容