Terminal Gpm_Open()连接,但在鼠标单击时打印到控制台

Terminal Gpm_Open()连接,但在鼠标单击时打印到控制台,terminal,console,mouse,xterm,Terminal,Console,Mouse,Xterm,我正在尝试使用libgpm,看起来程序检测到鼠标点击, 但作为一种副作用,它会向终端打印如下内容: ^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M Y=^[[M#M<^[[M !=^[[M#)= 我仍然看到那些乱七八糟的代码。我想,它们代表了鼠标事件。但是在我的代码中没有直接的指令来打印它们。为什么要打印到我的终端上?如何避免这种情况 我在linux上使用gnome终

我正在尝试使用libgpm,看起来程序检测到鼠标点击, 但作为一种副作用,它会向终端打印如下内容:

^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M <7^[[M#<7^[[M Y=^[[M#M<^[[M !=^[[M#)=
我仍然看到那些乱七八糟的代码。我想,它们代表了鼠标事件。但是在我的代码中没有直接的指令来打印它们。为什么要打印到我的终端上?如何避免这种情况

我在linux上使用gnome终端,而不是真正的控制台,如果这很重要的话。

如果术语环境变量是xterm,GPM将不会尝试打开linux控制台

相反,它只是简单地打开xterm鼠标模式,让终端发送转义序列,结果是,它期望应用程序处理它,而不是将转义序列转换为它的协议


例如,从ncurses的观点来看,这使得它在终端仿真器中的行为不那么有用,而库检查这种情况并忽略GPM,因为。

谢谢你的回答。现在我意识到使用ncurses完全可以解决与鼠标的交互问题。事实上,我甚至不能将ncurses与libgpm一起使用。这取决于-如果ncurses配置了gpm,它将在Linux控制台中使用gpm,但xterm协议除外。某些打包程序可能没有配置gpm。。。
#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;
}