我正在为 unix 平台制作控制台应用程序,并且正在使用 curses(或 ncurses)库来处理键盘和鼠标输入。问题是我发现很少有关于如何准确使用它的文档,除了这个页面和这个,它们没有非常详细的示例。我设法捕获了左键单击,但我无法让它在右键单击时工作,因为终端模拟器的选项菜单出现在光标位置,但应用程序未处理该事件。如何避免这种情况并在应用程序中捕获事件?
我有以下用于配置鼠标事件的行:
// Set up mouse event throwing
mousemask(BUTTON1_PRESSED | BUTTON2_PRESSED, NULL);
在处理输入的方法中,我有以下内容:
int c = getch();
MEVENT event;
switch(c)
{
case KEY_UP:
... do stuff
break;
case KEY_DOWN:
... do stuff
break;
case KEY_MOUSE:
if(getmouse(&event) == OK)
{
if(event.bstate & BUTTON1_PRESSED) // This works for left-click
{
... do stuff
}
else if(event.bstate & BUTTON2_PRESSED) // This doesn't capture right-click
{
... do other stuff
}
else
fprintf(stderr, "Event: %i", event.bstate); // Doesn't print anything on right-click
}
break;
default:
return;
}
我也尝试过mousemask()
使用ALL_MOUSE_EVENTS
掩码进行配置,但它仍然没有在最后一个else
子句上打印任何事件,所以我认为事件根本没有触发。对此的任何帮助将不胜感激。