gpt4 book ai didi

c++ - 使用 C 或 C++ 从控制台获取原始输入

转载 作者:IT王子 更新时间:2023-10-29 00:53:33 29 4
gpt4 key购买 nike

/* Initialize new terminal i/o settings */
static struct termios old, new1;
void initTermios(int echo) {
tcgetattr(0, &old); /* grab old terminal i/o settings */
new1 = old; /* make new settings same as old settings */
new1.c_lflag &= ~ICANON; /* disable buffered i/o */
new1.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new1); /* use these new terminal i/o settings now */
}

/* Restore old terminal i/o settings */
void resetTermios(void) {
tcsetattr(0, TCSANOW, &old);
}

我怎样才能将箭头键作为输入(可能作为单个字符),当前代码适用于我需要的所有其他东西...请不要使用 ncurses

解决方案

最佳答案

有一个关于为 Unix 终端编写文本编辑器的很棒的教程,包括原始输入、语法着色等,它仅使用标准 C 库和类 Unix 系统上可用的标准头文件:

https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html

本教程的这一章解释了如何将终端输入切换到原始模式并使用 C 中的标准 IO 函数(read() 等)对其进行处理。然后,您可以通过使用 VT100 终端的某些转义序列写入输出来处理光标移动、滚动、颜色等。您可以在本教程中找到更多信息,包括指向所有所需文档的链接和示例源代码。还有一个 GitHub 存储库,其中包含教程中的所有示例,以及基于 Kilo editor 的最终产品。由 antirez 撰写.

至于读取特殊键,如箭头键、Home、End、PgUp、PgDown 等,请尝试输出从输入中获得的原始字符,然后只需按下您想要查看它们映射到什么代码的键。例如,对于箭头键,它们通常映射到转义序列 <ESC>[A通过<ESC>[D , 其中<ESC>是ASCII码的特殊控制字符27十进制或 0x1B十六进制。这些是 VT100 终端转义码,指示终端将光标移动一个字符到这四个方向之一。在上述教程的下一章中有更多关于处理这些击键的信息:

https://viewsourcecode.org/snaptoken/kilo/03.rawInputAndOutput.html

关于c++ - 使用 C 或 C++ 从控制台获取原始输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6698161/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com