在Ubuntu中,ncurses庫可以用來處理鼠標事件。下面是一個簡單的示例代碼,演示了如何在Ubuntu中使用ncurses庫處理鼠標事件:
#include <ncurses.h>
int main() {
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
mousemask(ALL_MOUSE_EVENTS, NULL);
mouseinterval(0);
while (1) {
int ch = getch();
if (ch == KEY_MOUSE) {
MEVENT event;
if (getmouse(&event) == OK) {
if (event.bstate & BUTTON1_CLICKED) {
mvprintw(0, 0, "Left button clicked at (%d, %d)", event.x, event.y);
refresh();
} else if (event.bstate & BUTTON3_CLICKED) {
mvprintw(1, 0, "Right button clicked at (%d, %d)", event.x, event.y);
refresh();
}
}
} else if (ch == 'q') {
break;
}
}
endwin();
return 0;
}
在這個示例中,我們首先初始化ncurses庫,并使用cbreak()
、noecho()
和keypad()
函數來設置輸入模式。然后使用mousemask(ALL_MOUSE_EVENTS, NULL)
函數來啟用鼠標事件處理。接著使用mouseinterval(0)
函數來設置鼠標事件的時間間隔。
在主循環中,我們使用getch()
函數獲取輸入,并檢查是否是鼠標事件。如果是鼠標事件,我們使用getmouse()
函數獲取事件的信息,并根據鼠標按鈕的狀態來處理不同的事件。在這個示例中,我們只處理了左鍵和右鍵的點擊事件,并在屏幕上顯示對應的信息。
最后,我們使用endwin()
函數來關閉ncurses庫,并退出程序。
編譯并運行這個示例代碼,你可以在終端中使用鼠標左鍵和右鍵點擊屏幕,然后在相應的位置顯示對應的信息。當按下鍵盤上的q
鍵時,程序將退出。