Ignore:
Timestamp:
Mar 8, 2006, 10:28:41 AM (15 years ago)
Author:
Sam Hocevar
Message:
  • Split event.c into the appropriate driver_*.c files.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver_ncurses.c

    r540 r548  
    209209}
    210210
     211static unsigned int ncurses_get_event(caca_t *kk)
     212{
     213    unsigned int event;
     214    int intkey;
     215
     216    if(kk->resize_event)
     217    {
     218        kk->resize_event = 0;
     219        kk->resize = 1;
     220        return CACA_EVENT_RESIZE;
     221    }
     222
     223    intkey = getch();
     224    if(intkey == ERR)
     225        return CACA_EVENT_NONE;
     226
     227    if(intkey < 0x100)
     228    {
     229        return CACA_EVENT_KEY_PRESS | intkey;
     230    }
     231
     232    if(intkey == KEY_MOUSE)
     233    {
     234        MEVENT mevent;
     235        getmouse(&mevent);
     236
     237        switch(mevent.bstate)
     238        {
     239            case BUTTON1_PRESSED:
     240                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     241                break;
     242            case BUTTON1_RELEASED:
     243                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     244                break;
     245            case BUTTON1_CLICKED:
     246                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     247                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     248                break;
     249            case BUTTON1_DOUBLE_CLICKED:
     250                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     251                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     252                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     253                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     254                break;
     255            case BUTTON1_TRIPLE_CLICKED:
     256                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     257                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     258                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     259                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     260                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 1);
     261                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 1);
     262                break;
     263            case BUTTON1_RESERVED_EVENT:
     264                break;
     265
     266            case BUTTON2_PRESSED:
     267                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     268                break;
     269            case BUTTON2_RELEASED:
     270                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     271                break;
     272            case BUTTON2_CLICKED:
     273                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     274                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     275                break;
     276            case BUTTON2_DOUBLE_CLICKED:
     277                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     278                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     279                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     280                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     281                break;
     282            case BUTTON2_TRIPLE_CLICKED:
     283                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     284                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     285                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     286                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     287                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 2);
     288                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 2);
     289                break;
     290            case BUTTON2_RESERVED_EVENT:
     291                break;
     292
     293            case BUTTON3_PRESSED:
     294                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     295                break;
     296            case BUTTON3_RELEASED:
     297                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     298                break;
     299            case BUTTON3_CLICKED:
     300                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     301                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     302                break;
     303            case BUTTON3_DOUBLE_CLICKED:
     304                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     305                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     306                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     307                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     308                break;
     309            case BUTTON3_TRIPLE_CLICKED:
     310                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     311                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     312                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     313                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     314                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 3);
     315                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 3);
     316                break;
     317            case BUTTON3_RESERVED_EVENT:
     318                break;
     319
     320            case BUTTON4_PRESSED:
     321                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     322                break;
     323            case BUTTON4_RELEASED:
     324                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     325                break;
     326            case BUTTON4_CLICKED:
     327                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     328                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     329                break;
     330            case BUTTON4_DOUBLE_CLICKED:
     331                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     332                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     333                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     334                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     335                break;
     336            case BUTTON4_TRIPLE_CLICKED:
     337                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     338                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     339                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     340                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     341                _push_event(kk, CACA_EVENT_MOUSE_PRESS | 4);
     342                _push_event(kk, CACA_EVENT_MOUSE_RELEASE | 4);
     343                break;
     344            case BUTTON4_RESERVED_EVENT:
     345                break;
     346
     347            default:
     348                break;
     349        }
     350
     351        if(kk->mouse_x == (unsigned int)mevent.x &&
     352           kk->mouse_y == (unsigned int)mevent.y)
     353            return _pop_event(kk);
     354
     355        kk->mouse_x = mevent.x;
     356        kk->mouse_y = mevent.y;
     357
     358        return CACA_EVENT_MOUSE_MOTION | (kk->mouse_x << 12) | kk->mouse_y;
     359    }
     360
     361    event = CACA_EVENT_KEY_PRESS;
     362
     363    switch(intkey)
     364    {
     365        case KEY_UP: return event | CACA_KEY_UP;
     366        case KEY_DOWN: return event | CACA_KEY_DOWN;
     367        case KEY_LEFT: return event | CACA_KEY_LEFT;
     368        case KEY_RIGHT: return event | CACA_KEY_RIGHT;
     369
     370        case KEY_IC: return event | CACA_KEY_INSERT;
     371        case KEY_DC: return event | CACA_KEY_DELETE;
     372        case KEY_HOME: return event | CACA_KEY_HOME;
     373        case KEY_END: return event | CACA_KEY_END;
     374        case KEY_PPAGE: return event | CACA_KEY_PAGEUP;
     375        case KEY_NPAGE: return event | CACA_KEY_PAGEDOWN;
     376
     377        case KEY_F(1): return event | CACA_KEY_F1;
     378        case KEY_F(2): return event | CACA_KEY_F2;
     379        case KEY_F(3): return event | CACA_KEY_F3;
     380        case KEY_F(4): return event | CACA_KEY_F4;
     381        case KEY_F(5): return event | CACA_KEY_F5;
     382        case KEY_F(6): return event | CACA_KEY_F6;
     383        case KEY_F(7): return event | CACA_KEY_F7;
     384        case KEY_F(8): return event | CACA_KEY_F8;
     385        case KEY_F(9): return event | CACA_KEY_F9;
     386        case KEY_F(10): return event | CACA_KEY_F10;
     387        case KEY_F(11): return event | CACA_KEY_F11;
     388        case KEY_F(12): return event | CACA_KEY_F12;
     389    }
     390
     391    return CACA_EVENT_NONE;
     392}
     393
    211394/*
    212395 * XXX: following functions are local
     
    237420    kk->driver.display = ncurses_display;
    238421    kk->driver.handle_resize = ncurses_handle_resize;
     422    kk->driver.get_event = ncurses_get_event;
    239423}
    240424
Note: See TracChangeset for help on using the changeset viewer.