VT 终端 - 禁用本地编辑和回显

发布于 2024-10-17 01:24:31 字数 244 浏览 8 评论 0原文

我正在编写一个控制台应用程序,该应用程序应该在 VT 兼容的数据收集器中运行。 在尝试了一些模拟器后,我发现它们有不同的标准行为。

我担心的是,大多数模拟器都有本地数据缓冲区,并在我按回车键时将其发送到服务器。它允许我编辑输入文本。

这个功能对我来说不太好,因为用户可能会弄​​乱屏幕布局。

禁用字符本地回显(让服务器将它们发回)以及设置终端立即向服务器发送数据而不等待 RETURN 键的转义码是什么?

谢谢

I am writing a console application that should run in VT compatible data collectors.
After trying some emulators i found they have a different standard behavior.

My concern is that most of the emulators has local buffer of data and sends it to the server when i press return. It allows me to edit the inputing text.

This feature isn't good for me because the user could mess the screen layout.

What are the escape codes to disable local echoing of characters (let the server send them back), and to set terminal to send data imediately to the server without waiting for RETURN key?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

微暖i 2024-10-24 01:24:31

在本地缓冲数据的功能称为规范化。要禁用它(以及 echo),请执行以下操作:

#include <string.h> /* for memcpy() */
#include <termios.h>

struct termios term_stored;
struct termios term_new;
tcgetattr(0,&term_old);
memcpy(&term_new,&term_stored,sizeof(struct termios));
term_new.c_lflag &= ~(ECHO|ICANON); /* disable echo and canonization */
tcsetattr(0,TCSANOW,&term_new);

/* your code */

tcsetattr(0,TCSANOW,&term_stored); /* restore the original state */

或者,考虑使用 libedit, ncurses 或 readline。

The feature of buffering data locally is called canonization. To disable it (as well as echo) do:

#include <string.h> /* for memcpy() */
#include <termios.h>

struct termios term_stored;
struct termios term_new;
tcgetattr(0,&term_old);
memcpy(&term_new,&term_stored,sizeof(struct termios));
term_new.c_lflag &= ~(ECHO|ICANON); /* disable echo and canonization */
tcsetattr(0,TCSANOW,&term_new);

/* your code */

tcsetattr(0,TCSANOW,&term_stored); /* restore the original state */

Or, consider using libedit, ncurses or readline.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文