如何在Linux中获取终端的当前当前光标位置?



我正在用C语言制作俄罗斯方块游戏。这个游戏必须在Linux上运行。 我需要获取当前光标位置才能返回它们。 我不想使用诅咒和诅咒。

point GetCurrentCursorPos(void)
{
point curPoint;
CONSOLE_SCREEN_BUFFER_INFO curInfo;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &curInfo);
curPoint.x=curInfo.dwCursorPosition.X;
curPoint.y=curInfo.dwCursorPosition.Y;
return curPoint;
}

这是我想要更改的代码。

点结构看起来像这样。

typedef struct __point 
{
int x;
int y; 
} point;

我非常感谢您的帮助!

如果你真的不想使用(n(curses,你就只能直接与终端接口。您可以使用 VT100 DSR 序列请求光标位置报告 -- 写入字符

"e[6n"

到终端,它将回复类似于以下内容的序列:

"e[12;34R"

指示光标位于第 12 行第 34 列(例如(。该序列与用户输入内联发送,因此您可能需要采取特殊的预防措施,以避免在尝试获取光标位置时消耗用户输入...

不用说,这是一个笨拙的界面,你最好首先避免需要它。在代码中跟踪光标的位置,您无需询问终端它在哪里。

最新更新