我正在编写一个终端聊天软件,并希望在异步接收到其他用户的新消息时重新显示用户输入的内容。如果有新消息到达,我会将 "\x1B[2K" 打印到标准输出中(ANSI 清除当前行的转义代码),以清除当前行,然后将 "\r" 打印到最左边的位置,最后使用换行符打印接收到的消息。
现在我想重新显示用户已经输入的字符 - 我发现有一个特殊的字符 VREPRINT (http://www.gnu.org/software/libc/manual/html_node/Editing-Characters.html) 可以使用,在按下 CTRL-R 时它确实有效...但是,如果使用 termios 结构体中 c_cc[VREPRINT] 中的字符将其打印到标准输出中,它就不起作用了 - 是否可能以这种方式实现?
我不想使用其他库,如 readline 或 ncurses,因为这会显得过于臃肿...如果可能的话,我只想使用 ICANON 终端模式来使我的解决方案生效。
感谢您的支持!
现在我想重新显示用户已经输入的字符 - 我发现有一个特殊的字符 VREPRINT (http://www.gnu.org/software/libc/manual/html_node/Editing-Characters.html) 可以使用,在按下 CTRL-R 时它确实有效...但是,如果使用 termios 结构体中 c_cc[VREPRINT] 中的字符将其打印到标准输出中,它就不起作用了 - 是否可能以这种方式实现?
我不想使用其他库,如 readline 或 ncurses,因为这会显得过于臃肿...如果可能的话,我只想使用 ICANON 终端模式来使我的解决方案生效。
感谢您的支持!