Termcaps : 获取光标位置
Termcaps : Get cursor position
我需要用 C 中的 termcaps 获取终端光标的 (Y, X) 位置。
使用 ioctl()
我得到了我的终端屏幕的大小,但我仍然需要找到我的光标所在的位置。
我找到了这个:
CSI 6 n DSR – Device Status Report Reports the cursor position to the
application as (as though typed at the keyboard) ESC[n;mR, where n is
the row and m is the column. (May not work on MS-DOS.)
但我不知道如何在 C 中使用它...
您使用正常输出到 stdout
将命令序列 (<ESC>[6n
) 写入终端。然后您使用来自 stdin
.
的正常输入读取响应
您需要解析 "reply" 来选择位置。
这里有一个gotoxy()
函数,可以在gcc中指定的x和y位置打印linux
#include<stdio.h>
//gotoxy function
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
main ()
{
gotoxy(25,50); //reposition cursor
printf("hello world"); //display text
}
这里是 控制台输入和输出 的参考,如果您使用终端 windows(dos 提示符)
我需要用 C 中的 termcaps 获取终端光标的 (Y, X) 位置。
使用 ioctl()
我得到了我的终端屏幕的大小,但我仍然需要找到我的光标所在的位置。
我找到了这个:
CSI 6 n DSR – Device Status Report Reports the cursor position to the application as (as though typed at the keyboard) ESC[n;mR, where n is the row and m is the column. (May not work on MS-DOS.)
但我不知道如何在 C 中使用它...
您使用正常输出到 stdout
将命令序列 (<ESC>[6n
) 写入终端。然后您使用来自 stdin
.
您需要解析 "reply" 来选择位置。
这里有一个gotoxy()
函数,可以在gcc中指定的x和y位置打印linux
#include<stdio.h>
//gotoxy function
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
main ()
{
gotoxy(25,50); //reposition cursor
printf("hello world"); //display text
}
这里是 控制台输入和输出 的参考,如果您使用终端 windows(dos 提示符)