ctk-curses: Add mouse support to the ncurses CTK backend.

This commit is contained in:
François Revol 2011-04-14 20:26:13 +02:00
parent 25e3f828aa
commit db982f7b82
1 changed files with 18 additions and 0 deletions

View File

@ -76,6 +76,7 @@ ctrlhandler(int sig)
void
console_init(void)
{
mmask_t oldmask;
static unsigned char done;
if(done) {
return;
@ -96,6 +97,9 @@ console_init(void)
intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);
/* done here because ctk_mouse_init() is called before anyway */
mousemask(ALL_MOUSE_EVENTS, &oldmask);
screensize(&width, &height);
/* curses color handling is weird... */
@ -325,6 +329,20 @@ console_readkey(int k)
key = (ctk_arch_key_t)k;
/*fprintf(stderr, "key: %d\n", k);*/
switch (k) {
case KEY_MOUSE:
{
MEVENT event;
if (getmouse(&event) == OK) {
xpos = event.x;
ypos = event.y;
button = event.bstate & BUTTON1_PRESSED
|| event.bstate & BUTTON1_CLICKED
|| event.bstate & BUTTON1_DOUBLE_CLICKED;
/*fprintf(stderr, "mevent: %d: %d, %d, %d, %x ; %d\n",
event.id, event.x, event.y, event.z, (int)event.bstate, button);*/
}
return;
}
case KEY_LEFT:
key = CH_CURS_LEFT;
break;