如何使终端编程对鼠标点击做出反应

时间:2011-12-21 10:19:35

标签: terminal c

我正在编写一个 c程序来做一些计算。如果我能够通过点击鼠标获得响应,那将对我有所帮助。

我怎么能这样做如果不可能那么只使用 C 的哪些功能或库我能够做到。

1 个答案:

答案 0 :(得分:5)

<强> Ncurses has support for GPM (mouse library)

摘录自Ncurses interfacing with the mouse how-to

一旦启用了一类鼠标事件,每次发生某些鼠标事件时,getch()类函数都会返回KEY_MOUSE。然后可以使用getmouse()检索鼠标事件。

代码大致如下:

MEVENT event;

ch = getch();
if(ch == KEY_MOUSE)
    if(getmouse(&event) == OK)
        .    /* Do some thing with the event */
        .
        .

getmouse()将事件返回给它的指针。这是一个包含

的结构
typedef struct
{
    short id;         /* ID to distinguish multiple devices */
    int x, y, z;      /* event coordinates */
    mmask_t bstate;   /* button state bits */
}    

bstate是我们感兴趣的主要变量。它告诉鼠标的按钮状态。

然后使用如下代码片段,我们可以找出发生了什么。

if(event.bstate & BUTTON1_PRESSED)
    printw("Left Button Pressed");