Пример #1
0
/*
 * getOverrideKey - get next key from the override buffer
 */
static vi_key getOverrideKey( void )
{
    int         c;
    bool        mouse = FALSE;
    int         mcnt = 0;

    for( ;; ) {
        c = overrideKeyBuff[overrideKeyPos];
        if( overrideKeyPos == MAX_OVERRIDE_KEY_BUFF - 1 ) {
            overrideKeyPos = 0;
        } else {
            overrideKeyPos++;
        }
        if( overrideKeyPos == overrideKeyEnd ) {
            EditFlags.KeyOverride = FALSE;
        }
        if( c == VI_KEY( MOUSEEVENT ) && !mouse ) {
            mouse = TRUE;
            mcnt = 0;
        } else {
            if( mouse ) {
                switch( mcnt ) {
                case 0:
                    LastMouseEvent = c;
                    break;
                case 1:
                    MouseRow = c;
                    break;
                case 2:
                    MouseCol = c;
                    break;
                case 3:
                    MouseStatus = c;
                    mouse = FALSE;
                    c = VI_KEY( MOUSEEVENT );
                    RedrawMouse( MouseRow, MouseCol );
                    DisplayMouse( TRUE );
                    break;
                }
                mcnt++;
            }
            if( !mouse ) {
#ifndef __WIN__
                if( c == 3 ) {
//                  ExitWithVerify();
                }
#endif
                break;
            }
        }
    }
    return( c );

} /* getOverrideKey */
Пример #2
0
/*
 * getOverrideKey - get next key from the override buffer
 */
static vi_key getOverrideKey( void )
{
    vi_key      key;
    bool        mouse = false;
    int         mcnt = 0;

    for( ;; ) {
        key = overrideKeyBuff[overrideKeyPos];
        if( overrideKeyPos == MAX_OVERRIDE_KEY_BUFF - 1 ) {
            overrideKeyPos = 0;
        } else {
            overrideKeyPos++;
        }
        if( overrideKeyPos == overrideKeyEnd ) {
            EditFlags.KeyOverride = false;
        }
        if( mouse ) {
            if( mcnt == 3 ) {
                MouseStatus = key;
                mouse = false;
                key = VI_KEY( MOUSEEVENT );
                RedrawMouse( MouseRow, MouseCol );
                DisplayMouse( true );
                break;
            }
            if( mcnt == 0 ) {
                LastMouseEvent = key;
            } else if( mcnt == 1 ) {
                MouseRow = key;
            } else if( mcnt == 2 ) {
                MouseCol = key;
            }
            mcnt++;
        } else if( key == VI_KEY( MOUSEEVENT ) ) {
            mouse = true;
            mcnt = 0;
        } else {
#ifndef __WIN__
            if( key == VI_KEY( CTRL_C ) ) {
//                ExitWithVerify();
            }
#endif
            break;
        }
    }
    return( key );

} /* getOverrideKey */
Пример #3
0
/*
 * GetKey - read a key from the keyboard
 */
vi_key GetKey( bool usemouse )
{
    bool        hit;
    vi_key      key;

    clearSpin();
    for( ;; ) {
        if( EditFlags.NoCapsLock ) {
            TurnOffCapsLock();
        }
        LastMouseEvent = GetMouseEvent();
        if( LastMouseEvent != VI_MOUSE_NONE ) {
            RedrawMouse( MouseRow, MouseCol );
            DisplayMouse( true );
            if( TestMouseEvent( usemouse ) ) {
                return( VI_KEY( MOUSEEVENT ) );
            }
        }
        /*
         * could get set by mouse handler or IDEGetKeys
         */
        if( EditFlags.KeyOverride ) {
            key = getOverrideKey();
#ifndef __WIN__
            if( key == VI_KEY( CTRL_C ) ) {
                ExitWithVerify();
                clearSpin();
                continue;
            }
#endif
            return( key );
        }
        hit = KeyboardHit();
        if( !hit ) {
            DoAutoSave();
#ifdef __IDE__
            IDEGetKeys();
#endif
#ifdef __QNX__
            WaitForProxy();
            if( !KeyboardHit() ) {
                continue;
            }
#endif
        }
#if defined( BUSYWAIT )
        else {
#endif
            key = GetKeyboard();
#if defined( __NT__ )
            if( key == VI_KEY( MOUSEEVENT ) ) {
                continue;
            }
#endif
            DisplayMouse( false );
#ifndef __WIN__
            if( EditFlags.EscapedInsertChar )
                break;
#endif
            if( key == VI_KEY( NULL ) ) {
                GetKeyboard();
                ExitWithVerify();
                clearSpin();
                continue;
            }
#ifndef __WIN__
            if( key == VI_KEY( CTRL_C ) ) {
                ExitWithVerify();
                clearSpin();
                continue;
            }
#endif
            break;
#if defined( BUSYWAIT )
        }
#endif
#if defined( __DOS__ )
        DosIdleCall();
#elif defined( __OS2__ )
        DosSleep( 1 );
#endif
    }

    if( EditFlags.Spinning ) {
        EditFlags.SpinningOurWheels = true;
    }
    return( key );

} /* GetKey */