我正在尝试使用以下代码在VT100终端中检索光标的坐标:
void getCursor(int* x, int* y) {
printf("\033[6n");
scanf("\033[%d;%dR", x, y);
}
我正在使用以下 ANSI 转义序列:
设备状态报告 - ESC[6n
报告光标位置到应用程序,就像在键盘上键入 ESC[n;mR 一样,其中 n 是行数,m 是列数。
代码编译成功并发送了 ANSI 序列,但是在接收到它之后,终端将 ^[[x;yR
字符串打印到了 stdout
而非 stdin
,使我无法从程序中检索它:
显然,该字符串是指定给程序的,所以我肯定做错了什么。有人知道吗?
^[[x;yR
?我想在不影响终端屏幕的情况下静默地获取坐标。但是这会向终端写入内容(在创建文本 GUI 时不希望出现),从而更改光标的坐标(使其变得完全无用)。 - Witiko