sdl_EnumerateKeys

Anyone else interested in this being in loki_utils or SDL?

typedef void (SdlKeyEnumFunc)( SDLKey, char, void* );

#define SDL_KEY_ENUM_ALL 0x00
#define SDL_KEY_ENUM_FORMAT 0x01
#define SDL_KEY_ENUM_ASCII 0x02
#define SDL_KEY_ENUM_WORLD 0x04
#define SDL_KEY_ENUM_KEYPAD 0x08
#define SDL_KEY_ENUM_ARROWS 0x10
#define SDL_KEY_ENUM_FUNCTION 0x20
#define SDL_KEY_ENUM_STATE 0x40
#define SDL_KEY_ENUM_MISC 0x80

/*

  • Le Abstraction Violation.
    /
    void sdl_EnumerateKeys( SdlKeyEnumFunc func, int mask, void
    data )
    {

    if( !( mask & SDL_KEY_ENUM_FORMAT ) ) {
    /* Goofy scattered keys. */
    func( SDLK_BACKSPACE, SDL_GetKeyName( SDLK_BACKSPACE ), data );
    func( SDLK_TAB, SDL_GetKeyName( SDLK_TAB ), data );
    func( SDLK_CLEAR, SDL_GetKeyName( SDLK_CLEAR ), data );
    func( SDLK_RETURN, SDL_GetKeyName( SDLK_RETURN ), data );
    func( SDLK_PAUSE, SDL_GetKeyName( SDLK_PAUSE ), data );
    func( SDLK_ESCAPE, SDL_GetKeyName( SDLK_ESCAPE ), data );
    }

    if( !( mask & SDL_KEY_ENUM_ASCII ) ) {

    for( SDLKey index = SDLK_SPACE; index <= SDLK_AT; ( (int) index
    )++ ) {

     if( (int) index != 37 ) {
     func( index, SDL_GetKeyName( index ), data );
         }
    
     }
    
     for( SDLKey index = SDLK_LEFTBRACKET; index <= SDLK_z;
    

( (int) index )++ ) {
func( index, SDL_GetKeyName( index ), data );
}

  func( SDLK_DELETE, SDL_GetKeyName( SDLK_DELETE ), data );
}

if( !( mask & SDL_KEY_ENUM_WORLD ) ) {

for( SDLKey index = SDLK_WORLD_0; index <= SDLK_WORLD_95; ( (int)

index )++ ) {
func( index, SDL_GetKeyName( index ), data );
}

}

if( !( mask & SDL_KEY_ENUM_KEYPAD ) ) {

for( SDLKey index = SDLK_KP0; index <= SDLK_KP_EQUALS; ( (int)

index )++ ) {
func( index, SDL_GetKeyName( index ), data );
}

}

if( !( mask & SDL_KEY_ENUM_ARROWS ) ) {

for( SDLKey index = SDLK_F1; index <= SDLK_F15; ( (int) index )++

) {
func( index, SDL_GetKeyName( index ), data );
}

}

if( !( mask & SDL_KEY_ENUM_STATE ) ) {

for( SDLKey index = SDLK_NUMLOCK; index <= SDLK_MODE; ( (int)

index )++ ) {
func( index, SDL_GetKeyName( index ), data );
}

}

if( !( mask & SDL_KEY_ENUM_MISC ) ) {

for( SDLKey index = SDLK_HELP; index <= SDLK_EURO; ( (int) index

)++ ) {
func( index, SDL_GetKeyName( index ), data );
}

}

}

m.–
Programmer "I wrote a song about dental floss,
Loki Entertainment Software but did anyone’s teeth get cleaner?"
http://lokigames.com/~briareos/ - Frank Zappa, re: the PMRC