【问题标题】:Sending an arrow key with fprintf使用 fprintf 发送箭头键
【发布时间】:2023-06-09 23:13:02
【问题描述】:

我正在测试管道,但遇到了一个小障碍。

我希望能够通过 popen 打开的文件指针模拟按下右箭头键。文件指针在不同的终端上打开一个显示程序,很像投影仪。我想发送一个信号来推进下一张图片(右箭头键)。

我该如何发送这个信号?我意识到这将特定于我的计算机(BOIS/键盘设置),但无论如何我并不希望它具有便携性。

从我的试验看来,我通过 fprintf 发送的所有内容都被解释为可读字符而不是特殊代码。

幻灯片程序无法更改,因此无法更改。任何方向将不胜感激。

【问题讨论】:

  • 您可以尝试使用fwrite() 而不是fprintf(),但我不确定它是否会起作用。
  • 管道可能无法到达您想去的地方 - 接收程序必须接受这种类型的输入。
  • @ThomasDickey 还有其他选择吗?在这一点上,我对任何事情都持开放态度。
  • 可能是expect 程序。
  • This link 声称会带来一些有用的东西。如果是这样,其中一个陷阱是您可能必须经常执行 fflush 才能使其正常工作。

标签: c linux special-characters ipc popen


【解决方案1】:

想到两种可能性:

从 cmets 看来,这似乎是所要求的。箭头(光标)键转义序列非常标准化,如

所示

如果这对您有用,那么其中一个陷阱是您可能必须经常发送fflush 才能使其发挥作用。

【讨论】:

  • 我说的太早了,这个解决方案在最终的环境中不起作用,只是在我最初的测试环境中。