我们一直在努力了解 Linux 中的键盘扫描码行为。
当我们打开一个普通的 bash shell 时,箭头键按预期工作:UP显示历史记录中的前一项等。但是,当您生成一个进程时,箭头不再按预期工作。例如,UP打印^[[A而不是前面的命令。
为了证明这一点,请执行以下操作:
bash$ ping www.google.com
现在,按UP或DOWN等,您将在进程运行时看到错误映射的键码。但是,当您终止进程时,箭头键将再次起作用。
我们已经在 CentO、Ubuntu、Mac 甚至不同的 shell(bash、sh、zsh)上对其进行了测试,并且到处都发生了同样的情况。我还使用kbd_mode尝试了不同的键盘模式,我们使用 RAW 和 XLATE 模式进行了测试。
在搜索答案时我能看到的最接近的事情是,当IPython 不是针对 readline 构建时,IPython 用户经历了相同的行为。但是,据我所知,这与我们的案例无关。
我们正在开发一个基于 C++ Tcl 的控制台应用程序,它使用 cin 和 cout 与用户进行通信,并从用户那里获取输入。当我们尝试访问以前输入的命令的历史记录时,我们遇到了箭头键的问题。这对我们来说是一个主要问题,因为 99% 的人都希望箭头字符能够正常工作。
任何关于我们如何克服这个问题的想法都将不胜感激。