【问题标题】:Termcaps : Get cursor position [duplicate]Termcaps:获取光标位置
【发布时间】:2016-04-17 05:50:41
【问题描述】:

我需要使用 C 中的 termcaps 获取终端光标的 (Y, X) 位置。

使用ioctl(),我得到了终端屏幕的大小,但我仍然需要得到光标所在的位置。

我发现了这个:

CSI 6 n DSR – 设备状态报告将光标位置报告给 应用程序(就像在键盘上键入一样)ESC[n;mR,其中 n 是 行和 m 是列。 (可能不适用于 MS-DOS。)

但我不知道如何在 C 中使用它...

【问题讨论】:

标签: c shell unix iterm2 termcap


【解决方案1】:

您将命令序列 (<ESC>[6n) 写入终端,使用 stdout 的正常输出。然后您使用来自stdin 的正常输入读取响应。

你需要解析“回复”来挑选位置。

【讨论】:

    【解决方案2】:

    这是一个gotoxy()函数,可以在gcc linux中指定的xy位置打印

    #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
    }
    

    这里是 console input and output 的参考,如果您使用的是 windows 终端(dos 提示符)

    【讨论】:

    • -1 他想获取光标的位置,而不是设置位置,我建议你编辑它,这样它就不会被其他人否决。
    • 或者干脆删除它,因为它与问题完全无关。
    猜你喜欢
    • 2016-02-09
    • 2011-09-19
    • 2018-06-17
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多