Terminal Gpm_Open()连接,但在鼠标单击时打印到控制台
我正在尝试使用libgpm,看起来程序检测到鼠标点击, 但作为一种副作用,它会向终端打印如下内容: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终
^[[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;
}