2011-10-23 05:32:39 +00:00
|
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
// getSDLKey.cpp
|
|
|
|
// Lukas Sabota - October, 2011
|
|
|
|
//
|
|
|
|
// Prints the corresponding SDL keysym for a key pressed
|
|
|
|
// into a SDL window. Useful for remapping hotkeys in they
|
|
|
|
// ~/.fceux/fceux.cfg config file, but may be useful for other
|
|
|
|
// applications as well.
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
|
2011-10-18 20:49:42 +00:00
|
|
|
#include<SDL/SDL.h>
|
|
|
|
|
|
|
|
void DisplayState(SDL_KeyboardEvent *key)
|
|
|
|
{
|
|
|
|
if (key->type == SDL_KEYUP)
|
|
|
|
printf("RELEASED: ");
|
|
|
|
else
|
|
|
|
printf("PRESSED: ");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayModifiers(SDL_KeyboardEvent *key)
|
|
|
|
{
|
|
|
|
SDLMod modifier = key->keysym.mod;
|
|
|
|
if( modifier & KMOD_NUM ) printf( "NUMLOCK " );
|
|
|
|
if( modifier & KMOD_CAPS ) printf( "CAPSLOCK " );
|
|
|
|
if( modifier & KMOD_MODE ) printf( "MODE " );
|
|
|
|
if( modifier & KMOD_LCTRL ) printf( "LCTRL " );
|
|
|
|
if( modifier & KMOD_RCTRL ) printf( "RCTRL " );
|
|
|
|
if( modifier & KMOD_LSHIFT ) printf( "LSHIFT " );
|
|
|
|
if( modifier & KMOD_RSHIFT ) printf( "RSHIFT " );
|
|
|
|
if( modifier & KMOD_LALT ) printf( "LALT " );
|
|
|
|
if( modifier & KMOD_RALT ) printf( "RALT " );
|
|
|
|
if( modifier & KMOD_LMETA ) printf( "LMETA " );
|
|
|
|
if( modifier & KMOD_RMETA ) printf( "RMETA " );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayKey(SDL_KeyboardEvent *key)
|
|
|
|
{
|
|
|
|
printf( "%s\n", SDL_GetKeyName(key->keysym.sym));
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisplayKeysym(SDL_KeyboardEvent *key)
|
|
|
|
{
|
|
|
|
printf ("%d\n", key->keysym.sym);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char** argv)
|
|
|
|
{
|
|
|
|
SDL_Surface *screen;
|
|
|
|
|
|
|
|
if (SDL_Init(SDL_INIT_VIDEO) != 0)
|
|
|
|
{
|
|
|
|
printf("Unable to initialize SDL: %s\n", SDL_GetError());
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
atexit(SDL_Quit);
|
|
|
|
|
|
|
|
screen = SDL_SetVideoMode(320, 240, 0, SDL_ANYFORMAT);
|
2011-10-23 05:32:39 +00:00
|
|
|
SDL_WM_SetCaption("Get SDL Keysyms! Now 50\% off!", NULL);
|
2011-10-18 20:49:42 +00:00
|
|
|
if (screen == NULL)
|
|
|
|
{
|
|
|
|
printf("Unable to set video mode: %s\n", SDL_GetError());
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
SDL_Event event;
|
|
|
|
int running = 1;
|
|
|
|
|
|
|
|
while(running) {
|
|
|
|
while(SDL_PollEvent(&event)) {
|
|
|
|
switch(event.type){
|
|
|
|
case SDL_KEYDOWN:
|
|
|
|
case SDL_KEYUP:
|
|
|
|
DisplayState(&event.key);
|
|
|
|
DisplayModifiers(&event.key);
|
|
|
|
DisplayKey(&event.key);
|
|
|
|
DisplayKeysym(&event.key);
|
|
|
|
break;
|
|
|
|
case SDL_QUIT:
|
|
|
|
running = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|