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

时间:2018-06-03 08:20:41

标签: linux gcc console

我在C中制作俄罗斯方块游戏。这个游戏必须在Linux上运行。 我需要获取当前光标位置以返回它们。 我不想使用curses和ncurses。

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;

我真的很感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

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

"\e[6n"

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

"\e[12;34R"

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

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