使用 fprintf 发送方向键
Sending an arrow key with fprintf
我正在测试管道,遇到了一些障碍。
我希望能够模拟通过popen打开的文件指针按下右箭头键。文件指针在不同的终端上打开一个显示程序,很像投影仪。我想发送一个信号来推进下一张图片(右箭头键)。
我该如何发送这个信号?我意识到这将特定于我的计算机(BOIS/keyboard 设置),但我不希望它无论如何都可以移植。
从我的试验来看,我通过 fprintf 发送的所有内容都被解释为可读字符而不是特殊代码。
无法更改幻灯片程序,因此这不是一个选项。任何方向将不胜感激。
想到两种可能性:
- expect程序可以用来控制终端应用程序。它的 wiki 显示 An example wherein Expect controls a pager.
- 另一方面,问题Sending Arrow Keys to Popen
声称会带来有用的东西。特别注意接受的答案,指向 How to send UP arrow key to popen child,它通过管道发送箭头键的文字转义序列。
从评论来看,这似乎是所要求的。箭头(光标)键转义序列是标准化的,如
所示
- Bash Prompt HOWTO: Chapter 6. ANSI Escape Sequences: Colours and Cursor Movement
- VT100.net: VT100 User Guide: Chapter 3. Programmer Information,例如,
CUF
(光标向前)。
如果这对您有用,其中一个陷阱是您可能必须经常 fflush
才能使它起作用。
我正在测试管道,遇到了一些障碍。
我希望能够模拟通过popen打开的文件指针按下右箭头键。文件指针在不同的终端上打开一个显示程序,很像投影仪。我想发送一个信号来推进下一张图片(右箭头键)。
我该如何发送这个信号?我意识到这将特定于我的计算机(BOIS/keyboard 设置),但我不希望它无论如何都可以移植。
从我的试验来看,我通过 fprintf 发送的所有内容都被解释为可读字符而不是特殊代码。
无法更改幻灯片程序,因此这不是一个选项。任何方向将不胜感激。
想到两种可能性:
- expect程序可以用来控制终端应用程序。它的 wiki 显示 An example wherein Expect controls a pager.
- 另一方面,问题Sending Arrow Keys to Popen 声称会带来有用的东西。特别注意接受的答案,指向 How to send UP arrow key to popen child,它通过管道发送箭头键的文字转义序列。
从评论来看,这似乎是所要求的。箭头(光标)键转义序列是标准化的,如
所示- Bash Prompt HOWTO: Chapter 6. ANSI Escape Sequences: Colours and Cursor Movement
- VT100.net: VT100 User Guide: Chapter 3. Programmer Information,例如,
CUF
(光标向前)。
如果这对您有用,其中一个陷阱是您可能必须经常 fflush
才能使它起作用。