Source Code File 14-04_bclick
14-04_bclick.c
#include <ncurses.h>
int main()
{
MEVENT mort;
int ch;
initscr();
noecho();
keypad(stdscr,TRUE);
mousemask(ALL_MOUSE_EVENTS,NULL);
while(1)
{
ch = getch();
if( ch == KEY_MOUSE )
{
clear();
getmouse(&mort);
switch(mort.bstate)
{
case BUTTON1_PRESSED:
mvaddstr(0,0,"B1 Press");
break;
case BUTTON1_RELEASED:
mvaddstr(1,0,"B1 Release");
break;
case BUTTON1_CLICKED:
mvaddstr(2,0,"B1 Click");
break;
case BUTTON1_DOUBLE_CLICKED:
mvaddstr(3,0,"B1 2xClick");
break;
case BUTTON2_PRESSED:
mvaddstr(0,20,"B2 Press");
break;
case BUTTON2_RELEASED:
mvaddstr(1,20,"B2 Release");
break;
case BUTTON2_CLICKED:
mvaddstr(2,20,"B2 Click");
break;
case BUTTON2_DOUBLE_CLICKED:
mvaddstr(3,40,"B2 2xClick");
break;
case BUTTON3_PRESSED:
mvaddstr(0,40,"B3 Press");
break;
case BUTTON3_RELEASED:
mvaddstr(1,40,"B3 Release");
break;
case BUTTON3_CLICKED:
mvaddstr(2,40,"B3 Click");
break;
case BUTTON3_DOUBLE_CLICKED:
mvaddstr(3,40,"B3 2xClick");
break;
default:
break;
}
refresh();
continue;
}
if( ch == '\n' )
break;
}
endwin();
return 0;
}
Output Screenshot

Notes
* Output depends on what you click.
* As opposed to clicking, press the mouse button, then release. You see output similar to the screenshot animation shown above.
* Click here to view Table 14-1 from the book, which lists the mouse button and click defined constants.
Copyright © 1997-2025 by QPBC.
All rights reserved
