예제 #1
0
/****************************************************************************
REMARKS:
Main program entry point
****************************************************************************/
int main(void)
{
    event_t     evt;
    ibool       done = false;
    PM_HWND     hwndConsole;

    hwndConsole = PM_openConsole(0,0,0,0,0,true);
    EVT_init(&moveMouse);
    EVT_setMouseRange(1024,768);
    CalibrateJoy();
    do {
	EVT_pollJoystick();
	if (EVT_getNext(&evt,EVT_EVERYEVT)) {
	    switch (evt.what) {
		case EVT_KEYDOWN:
		    DisplayKey("EVT_KEYDOWN  ", &evt);
		    if (EVT_scanCode(evt.message) == KB_esc)
			done = true;
		    break;
		case EVT_KEYREPEAT:
		    DisplayKey("EVT_KEYREPEAT", &evt);
		    break;
		case EVT_KEYUP:
		    DisplayKey("EVT_KEYUP    ", &evt);
		    break;
		case EVT_MOUSEDOWN:
		    DisplayMouse("EVT_MOUSEDOWN", &evt);
		    break;
		case EVT_MOUSEAUTO:
		    DisplayMouse("EVT_MOUSEAUTO", &evt);
		    break;
		case EVT_MOUSEUP:
		    DisplayMouse("EVT_MOUSEUP  ", &evt);
		    break;
		case EVT_MOUSEMOVE:
		    DisplayMouse("EVT_MOUSEMOVE", &evt);
		    break;
		case EVT_JOYCLICK:
		    DisplayJoy("EVT_JOYCLICK ", &evt);
		    break;
		case EVT_JOYMOVE:
		    DisplayJoy("EVT_JOYMOVE  ", &evt);
		    break;
		}
	    }
	} while (!done);
    EVT_exit();
    PM_closeConsole(hwndConsole);
    return 0;
}
예제 #2
0
/****************************************************************************
PARAMETERS:
msg - Message to display for type of event
evt - Event to display

REMARKS:
Function to display the status of the keyboard event to the screen.
****************************************************************************/
void DisplayKey(
    char *msg,
    event_t *evt)
{
    KeyEntry    *ascii,*scan;
    char        ch = EVT_asciiCode(evt->message);

    ascii = FindKey(ch,ASCIICodes);
    scan = FindKey(EVT_scanCode(evt->message),ScanCodes);
    printf("%s: 0x%04X -> %s, %s, '%c'",
	msg, (int)evt->message & 0xFFFF, scan->name, ascii->name, isprint(ch) ? ch : ' ');
    DisplayModifiers(evt);
    printf("\n");
}
예제 #3
0
static long wxScanToKeyCode(event_t *event, bool translate)
{
    // VS: make it __WXDEBUG__-only, since we have lots of wxLogTrace calls
    //     here and the arguments would be stored in non-debug executable even
    //     though wxLogTrace would be no-op...
    #ifdef __WXDEBUG__
      #define KEY(mgl_key,wx_key) \
        case mgl_key: \
          wxLogTrace(wxT("keyevents"), \
                     wxT("key " #mgl_key ", mapped to " #wx_key)); \
          key = wx_key; \
          break;
    #else
      #define KEY(mgl_key,wx_key) \
        case mgl_key: key = wx_key; break;
    #endif

    long key = 0;

    if ( translate )
    {
        bool numlock = (event->modifiers & EVT_NUMLOCK) != 0;

        switch ( EVT_scanCode(event->message) )
        {
            KEY (KB_padMinus,       WXK_NUMPAD_SUBTRACT)
            KEY (KB_padPlus,        WXK_NUMPAD_ADD)
            KEY (KB_padTimes,       WXK_NUMPAD_MULTIPLY)
            KEY (KB_padDivide,      WXK_NUMPAD_DIVIDE)
            KEY (KB_padCenter,      numlock ? WXK_NUMPAD5 : WXK_NUMPAD_SEPARATOR) // ?
            KEY (KB_padLeft,        numlock ? WXK_NUMPAD4 : WXK_NUMPAD_LEFT)
            KEY (KB_padRight,       numlock ? WXK_NUMPAD6 : WXK_NUMPAD_RIGHT)
            KEY (KB_padUp,          numlock ? WXK_NUMPAD8 : WXK_NUMPAD_UP)
            KEY (KB_padDown,        numlock ? WXK_NUMPAD2 : WXK_NUMPAD_DOWN)
            KEY (KB_padInsert,      numlock ? WXK_NUMPAD0 : WXK_NUMPAD_INSERT)
            KEY (KB_padDelete,      numlock ? WXK_DECIMAL : WXK_NUMPAD_DELETE)
            KEY (KB_padHome,        numlock ? WXK_NUMPAD7 : WXK_NUMPAD_HOME)
            KEY (KB_padEnd,         numlock ? WXK_NUMPAD1 : WXK_NUMPAD_END)
            KEY (KB_padPageUp,      numlock ? WXK_NUMPAD9 : WXK_NUMPAD_PAGEUP)
            KEY (KB_padPageDown,    numlock ? WXK_NUMPAD3 : WXK_NUMPAD_PAGEDOWN)
            KEY (KB_1,              '1')
            KEY (KB_2,              '2')
            KEY (KB_3,              '3')
            KEY (KB_4,              '4')
            KEY (KB_5,              '5')
            KEY (KB_6,              '6')
            KEY (KB_7,              '7')
            KEY (KB_8,              '8')
            KEY (KB_9,              '9')
            KEY (KB_0,              '0')
            KEY (KB_minus,          WXK_SUBTRACT)
            KEY (KB_equals,         WXK_ADD)
            KEY (KB_backSlash,      '\\')
            KEY (KB_Q,              'Q')
            KEY (KB_W,              'W')
            KEY (KB_E,              'E')
            KEY (KB_R,              'R')
            KEY (KB_T,              'T')
            KEY (KB_Y,              'Y')
            KEY (KB_U,              'U')
            KEY (KB_I,              'I')
            KEY (KB_O,              'O')
            KEY (KB_P,              'P')
            KEY (KB_leftSquareBrace,'[')
            KEY (KB_rightSquareBrace,']')
            KEY (KB_A,              'A')
            KEY (KB_S,              'S')
            KEY (KB_D,              'D')
            KEY (KB_F,              'F')
            KEY (KB_G,              'G')
            KEY (KB_H,              'H')
            KEY (KB_J,              'J')
            KEY (KB_K,              'K')
            KEY (KB_L,              'L')
            KEY (KB_semicolon,      ';')
            KEY (KB_apostrophe,     '\'')
            KEY (KB_Z,              'Z')
            KEY (KB_X,              'X')
            KEY (KB_C,              'C')
            KEY (KB_V,              'V')
            KEY (KB_B,              'B')
            KEY (KB_N,              'N')
            KEY (KB_M,              'M')
            KEY (KB_comma,          ',')
            KEY (KB_period,         '.')
            KEY (KB_divide,         WXK_DIVIDE)
            KEY (KB_space,          WXK_SPACE)
            KEY (KB_tilde,          '~')

            default: break;
        }
    }

    if ( key == 0 )
    {
        switch ( EVT_scanCode(event->message) )
        {
            KEY (KB_padEnter,       WXK_NUMPAD_ENTER)
            KEY (KB_F1,             WXK_F1)
            KEY (KB_F2,             WXK_F2)
            KEY (KB_F3,             WXK_F3)
            KEY (KB_F4,             WXK_F4)
            KEY (KB_F5,             WXK_F5)
            KEY (KB_F6,             WXK_F6)
            KEY (KB_F7,             WXK_F7)
            KEY (KB_F8,             WXK_F8)
            KEY (KB_F9,             WXK_F9)
            KEY (KB_F10,            WXK_F10)
            KEY (KB_F11,            WXK_F11)
            KEY (KB_F12,            WXK_F12)
            KEY (KB_left,           WXK_LEFT)
            KEY (KB_right,          WXK_RIGHT)
            KEY (KB_up,             WXK_UP)
            KEY (KB_down,           WXK_DOWN)
            KEY (KB_insert,         WXK_INSERT)
            KEY (KB_delete,         WXK_DELETE)
            KEY (KB_home,           WXK_HOME)
            KEY (KB_end,            WXK_END)
            KEY (KB_pageUp,         WXK_PAGEUP)
            KEY (KB_pageDown,       WXK_PAGEDOWN)
            KEY (KB_capsLock,       WXK_CAPITAL)
            KEY (KB_numLock,        WXK_NUMLOCK)
            KEY (KB_scrollLock,     WXK_SCROLL)
            KEY (KB_leftShift,      WXK_SHIFT)
            KEY (KB_rightShift,     WXK_SHIFT)
            KEY (KB_leftCtrl,       WXK_CONTROL)
            KEY (KB_rightCtrl,      WXK_CONTROL)
            KEY (KB_leftAlt,        WXK_ALT)
            KEY (KB_rightAlt,       WXK_ALT)
            KEY (KB_leftWindows,    WXK_START)
            KEY (KB_rightWindows,   WXK_START)
            KEY (KB_menu,           WXK_MENU)
            KEY (KB_sysReq,         WXK_SNAPSHOT)
            KEY (KB_esc,            WXK_ESCAPE)
            KEY (KB_backspace,      WXK_BACK)
            KEY (KB_tab,            WXK_TAB)
            KEY (KB_enter,          WXK_RETURN)

            default:
                key = EVT_asciiCode(event->message);
                break;
        }
    }

    #undef KEY

    return key;
}
예제 #4
0
파일: tv.c 프로젝트: BackupTheBerlios/uuu
/****************************************************************************
REMARKS:
Main function to do the interactive tests.
****************************************************************************/
ibool CenterTVMode(
    GC_devCtx *gc,
    N_uint32 mode)
{
    GA_options  opt,defOpt;
    GA_TVParams *tv;
    int         ch;
    event_t     evt;

    /* Obtain the mode information and set the display mode */
    GC_leave(gc);
    dc = gc->dc;
    virtualX = virtualY = bytesPerLine = -1;
    modeInfo.dwSize = sizeof(modeInfo);
    if (init.GetVideoModeInfo(mode,&modeInfo) != 0)
        return false;
    if (init.SetVideoMode(mode,&virtualX,&virtualY,&bytesPerLine,&maxMem,0,NULL) != 0)
        return false;
    cntMode = mode;
    if (!InitSoftwareRasterizer(cntDevice,1,false))
        PM_fatalError("Unable to initialize reference rasteriser!");
    opt.dwSize = sizeof(opt);
    init.GetOptions(&opt);
    defOpt = opt;

    /* Find the appropriate TV parameters block depending on current mode */
    if (modeInfo.XResolution > 640) {
        switch (opt.outputDevice & gaOUTPUT_TVCOLORMASK) {
            case gaOUTPUT_TVPAL:
            case gaOUTPUT_TVPAL_M:
            case gaOUTPUT_TVPAL_60:
            case gaOUTPUT_TVPAL_CN:
            case gaOUTPUT_TVSCART_PAL:
                if (opt.outputDevice & gaOUTPUT_TVOVERSCAN)
                    tv = &opt.TV800PALOver;
                else
                    tv = &opt.TV800PALUnder;
                break;
            case gaOUTPUT_TVNTSC:
            case gaOUTPUT_TVNTSC_J:
            default:
                if (opt.outputDevice & gaOUTPUT_TVOVERSCAN)
                    tv = &opt.TV800NTSCOver;
                else
                    tv = &opt.TV800NTSCUnder;
                break;
            }
        }
    else {
        switch (opt.outputDevice & gaOUTPUT_TVCOLORMASK) {
            case gaOUTPUT_TVPAL:
            case gaOUTPUT_TVPAL_M:
            case gaOUTPUT_TVPAL_60:
            case gaOUTPUT_TVPAL_CN:
            case gaOUTPUT_TVSCART_PAL:
                if (opt.outputDevice & gaOUTPUT_TVOVERSCAN)
                    tv = &opt.TV640PALOver;
                else
                    tv = &opt.TV640PALUnder;
                break;
            case gaOUTPUT_TVNTSC:
            case gaOUTPUT_TVNTSC_J:
            default:
                if (opt.outputDevice & gaOUTPUT_TVOVERSCAN)
                    tv = &opt.TV640NTSCOver;
                else
                    tv = &opt.TV640NTSCUnder;
                break;
            }
        }

    /* Draw the background image */
    drawBackground();

    /* Now process key events */
    for (;;) {
        EVT_halt(&evt,EVT_KEYDOWN | EVT_KEYREPEAT);
        ch = EVT_scanCode(evt.message);
        if (ch == KB_esc || ch == KB_Q) {
            opt = defOpt;
            init.SetOptions(&opt);
            break;
            }
        if (ch == KB_enter) {
            /* Save the timing changes */
            GA_saveOptions(dc,&opt);
            break;
            }

        /* Now handle the key event */
        switch (ch) {
            case KB_R:          /* Reset to initial values */
                opt = defOpt;
                init.SetOptions(&opt);
                break;
            case KB_equals:
            case KB_padPlus:    /* Increase brightness */
                tv->brightness++;
                init.SetOptions(&opt);
                break;
            case KB_minus:
            case KB_padMinus:   /* Decrease brightness */
                tv->brightness--;
                init.SetOptions(&opt);
                break;
            case KB_up:         /* Move the image up */
                tv->vPos--;
                init.SetOptions(&opt);
                break;
            case KB_down:       /* Move the image down */
                tv->vPos++;
                init.SetOptions(&opt);
                break;
            case KB_left:       /* Move the image left */
                tv->hPos--;
                init.SetOptions(&opt);
                break;
            case KB_right:      /* Move the image right */
                tv->hPos++;
                init.SetOptions(&opt);
                break;
            }
        }

    /* Return to text mode, restore the state of the console and exit */
    ExitSoftwareRasterizer();
    GC_restore(gc);
    return true;
}
예제 #5
0
파일: mech.c 프로젝트: kendallb/scitech-mgl
int mechTest(
    GA_HGLRC glrc,
    int width,
    int height)
{
    ibool   done = false;
    int     initPageCount = 5;
    int     fpsRate = 0,key = 0,waitVRT = gaWaitVRT,pageCount = initPageCount;
    ulong   lastCount = 0,newCount;
    event_t evt;

    myinit();
    myReshape(width,height);
    LZTimerOn();
    while (!done) {
        animation();
        display();
        gmoveto(0,0);
        gprintf("%d x %d %d bit %s (%d.%d fps)",(int)maxX+1,(int)maxY+1,
            (int)modeInfo.BitsPerPixel,
            (cntMode & gaLinearBuffer) ? "Linear" : "Banked",
            fpsRate / 10, fpsRate % 10);
        if (softwareOnly)
            gprintf("Rendering to system memory back buffer");
        switch (waitVRT) {
            case gaTripleBuffer:
                gprintf("Triple buffering - should be no flicker");
                gprintf("Frame rate *must* max at refresh rate");
                break;
            case gaWaitVRT:
                gprintf("Double buffering - should be no flicker");
                gprintf("Frame rate *must* lock to multiple of refresh");
                break;
            default:
                gprintf("Page flipping (no wait) - may flicker");
                gprintf("Frame rate *must* max at hardware limit");
                break;
            }
        glFuncs.SwapBuffers(glrc,waitVRT);
        if (EVT_kbhit()) {
            EVT_getNext(&evt,EVT_KEYDOWN | EVT_KEYREPEAT);
            EVT_flush(EVT_KEYREPEAT);
            key = EVT_asciiCode(evt.message);
            if (key == 'v' || key == 'V') {
                waitVRT -= 1;
                if (modeInfo.Attributes & gaHaveTripleBuffer) {
                    if (waitVRT < gaTripleBuffer)
                        waitVRT = gaDontWait;
                    }
                else {
                    if (waitVRT < gaWaitVRT)
                        waitVRT = gaDontWait;
                    }
                }
            else if (key == 0x1B || key == 0x0D || key == ' ') {
                done = true;
                }
            else {
                handleASCIICode(key);
                handleScanCode(EVT_scanCode(evt.message));
                }
            }
        /* Compute the frames per second rate after going through a large
         * number of pages.
         */
        if (--pageCount == 0) {
            newCount = LZTimerLap();
            fpsRate = (int)(10000000L / (newCount - lastCount)) * initPageCount;
            lastCount = newCount;
            pageCount = initPageCount;
            }
        }
    LZTimerOff();
    if (quadObj) {
        gluDeleteQuadric(quadObj);
        quadObj = NULL;
        }
    return key;
}