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