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)。