Gpm_Open() 连接,但在鼠标单击时打印到控制台
Gpm_Open() connects, but prints to the console on mouse click
我正在尝试使用 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-terminal,而不是真正的控制台。
如果 TERM
环境变量是 xterm
,GPM 将不会尝试打开 Linux 控制台。
相反,它只是打开 xterm 鼠标模式(使终端发送转义序列),结果是,期望 application来处理这个问题,而不是将转义序列转换成它的协议。
例如,从 ncurses 的角度来看,这使得它在终端仿真器中的行为不太有用,库会检查这种情况并忽略 GPM(因为 2010)。
我正在尝试使用 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-terminal,而不是真正的控制台。
如果 TERM
环境变量是 xterm
,GPM 将不会尝试打开 Linux 控制台。
相反,它只是打开 xterm 鼠标模式(使终端发送转义序列),结果是,期望 application来处理这个问题,而不是将转义序列转换成它的协议。
例如,从 ncurses 的角度来看,这使得它在终端仿真器中的行为不太有用,库会检查这种情况并忽略 GPM(因为 2010)。