我正在尝试使用libgpm,看起来该程序可以检测到鼠标的点击,但作为副作用,它会将类似的内容打印到终端上:
^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M Y=^[[M#M<^[[M !=^[[M#)=即使我删除了对Gpm_Getc()的任何调用,代码也是如此简单:
#include <gpm.h>
int main(int argc, char *argv[])
{
Gpm_Connect conn;
int c;
conn.eventMask = 0;
conn.defaultMask = ~0;
conn.minMod = 0;
conn.maxMod = ~0;
if (Gpm_Open(&conn, 0) == -1)
printf("Cannot connect to mouse server\n");
while (1);
Gpm_Close();
return 0;
}我还看到那些胡言乱语的密码。我想,它们代表了鼠标事件。但是在我的代码中没有直接的指令来打印它们。为什么印在我的终端上?如何才能避免这种情况?
我在linux上使用gnome终端,而不是真正的控制台,如果这很重要的话。
发布于 2018-05-22 22:03:12
如果TERM环境变量是xterm,GPM将不会尝试打开Linux。
相反,它只是打开xterm鼠标模式(它使终端发送转义序列),结果是希望应用程序来处理这个问题,而不是将转义序列转换成它的协议。
例如,从ncurses的角度来看,这使得它在终端仿真器中的行为不太有用,库检查这种情况并忽略GPM (自2010年起)。
https://stackoverflow.com/questions/50476904
复制相似问题