I’m working on language bindings with SDL.
SDL_GetKeyboardState() is causing me some pain in binding, so I’m just
going to make a wrapper function for my bindings, e.g.
Uint8 SDL_GetKeyStateForScancodeEXT(SDL_Scancode scancode);
So instead of:
Uint8* current_key_states = SDL_GetKeyboardState( nil );
if( current_key_states[ SDL_SCANCODE_UP ] == SDL_PRESSED )
I can do this:
if( SDL_GetKeyStateForScancodeEXT(SDL_SCANCODE_UP) == SDL_PRESSED )
But I wanted to clarify what the API intent of current_key_states[
SDL_SCANCODE_UP ] is supposed to return.
Is this always intended to return a boolean, where SDL_PRESSED is true
and SDL_RELEASED is false? Or is the intent that this is indeed a full
Uint8 and I should be using bit masks instead?
Unlike C, the intent matters for languages like Lua and Ruby because
only nil and false are false values, while 0 (a number) is a true
value. Thus in one of these languages, this won’t work as many people
might expect because it is always true in in non-boolean case:
if( current_key_states[ SDL_SCANCODE_UP ] )
Thanks,
Eric–
Beginning iPhone Games Development
http://playcontrol.net/iphonegamebook/
Docs say: Returns a pointer to an array of key states. A value of 1
means that the key is pressed and a value of 0 means that it is not.On Tue, Apr 15, 2014 at 7:43 PM, Eric Wing wrote:
I’m working on language bindings with SDL.
SDL_GetKeyboardState() is causing me some pain in binding, so I’m just
going to make a wrapper function for my bindings, e.g.
Uint8 SDL_GetKeyStateForScancodeEXT(SDL_Scancode scancode);
So instead of:
Uint8* current_key_states = SDL_GetKeyboardState( nil );
if( current_key_states[ SDL_SCANCODE_UP ] == SDL_PRESSED )
I can do this:
if( SDL_GetKeyStateForScancodeEXT(SDL_SCANCODE_UP) == SDL_PRESSED )
But I wanted to clarify what the API intent of current_key_states[
SDL_SCANCODE_UP ] is supposed to return.
Is this always intended to return a boolean, where SDL_PRESSED is true
and SDL_RELEASED is false? Or is the intent that this is indeed a full
Uint8 and I should be using bit masks instead?
Unlike C, the intent matters for languages like Lua and Ruby because
only nil and false are false values, while 0 (a number) is a true
value. Thus in one of these languages, this won’t work as many people
might expect because it is always true in in non-boolean case:
if( current_key_states[ SDL_SCANCODE_UP ] )
Thanks,
Eric
Beginning iPhone Games Development
http://playcontrol.net/iphonegamebook/
SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
Thank you Andre.
-EricOn 4/15/14, Andre D wrote:
Docs say: Returns a pointer to an array of key states. A value of 1
means that the key is pressed and a value of 0 means that it is not.