qt或者x11都可以。获取相对于屏幕的位置。对所有程序都有效。获取光标位置。更新输入法窗口位置
1条回答 默认 最新
关注代码参照如下:
#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; }解决 无用评论 打赏 举报