Times春雪 2021-07-14 06:05 采纳率: 0%
浏览 71

Linux下怎么获取光标位置

qt或者x11都可以。获取相对于屏幕的位置。对所有程序都有效。获取光标位置。更新输入法窗口位置

  • 写回答

1条回答 默认 最新

  • bluetata 领域专家: 云计算技术领域 2022-11-02 15:48
    关注

    代码参照如下:

    
    #include <termios.h>
    #include <unistd.h>
    int console_try_to_get_cursor_position(int* x, int *y)
    {
        fd_set readset;
        int success = 0;
        struct timeval time;
        struct termios term, initial_term;
    #define STDIN_FILENO 0
    
        tcgetattr(STDIN_FILENO, &initial_term);
        term = initial_term;
        term.c_lflag &=~ICANON;
        term.c_lflag &=~ECHO;
        tcsetattr(STDIN_FILENO, TCSANOW, &term);
    
        //request position 获取光标命令
        printf("\33[6n");
        fflush(stdout);
    
        //wait 100ms for a terminal answer 等待100ms
        FD_ZERO(&readset);
        FD_SET(STDIN_FILENO, &readset);
        time.tv_sec = 0;
        time.tv_usec = 100000;
    
        if (select(STDIN_FILENO + 1, &readset, NULL, NULL, &time) == 1)
        if (scanf("\033[%d;%dR", x, y) == 2) //读取结果
            success = 1;
    
        //We set back the properties of the terminal
        tcsetattr(STDIN_FILENO, TCSADRAIN, &initial_term);
    
        return success;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月14日