[英]How do I implement a console with ssh features in C?
也就是说,它应该支持向上/向下箭头键和ctrl-r
来反向搜索。 我应该开始吗?
答案取决于你想要的低级别。 使用readline
或editline
是高级答案。 下一级将是使用libncurses
并调用getch()
来读取键盘输入,然后自己处理历史记录/搜索。
最低级别(对于终端)正在处理实际的输入字节流。 箭头键根据您的特定终端发送特定的字符序列。 例如,vt100模拟器将发送^ [[A表示“向上箭头”,^ [[B表示“向下箭头”,依此类推。 要阅读这些内容,您需要设置终端属性以立即返回输入,而不是等待换行; 为此,请使用termios
函数禁用规范输入模式。 然后只需一次读取输入一个字符,看看你是否得到了字符(27,91,65),你知道这是一个向上箭头并做出相应的响应。
如果您使用不同的终端仿真器,这个低级别是繁琐且脆弱的,并且无法工作(尽管您可以使用terminfo
为其他终端获取适当的输入序列。)
如果您的位置低于终端(串行线,X窗口,位图显示等),则答案会再次更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.