How do you use unicode

So I’ve been reading through “Focus on SDL” and I’ve noticed that there aren’t example programs for a lot of the terms and commands and stuff. It says that you can use unicode to get the ascii value of a keyboard event, which would be very helpful in this sudoku program I’m writing, but there were no specific examples. I even did a content search for “unicode” in the CD that comes with the book, and I didn’t get a single result.

So I tried to figure it out myself, but I got the error “‘keysym’ was not declared in this scope” for this line:

Code:
usr = keysym.unicode;

But I don’t know how to declare it, and only thing the book said about enabling unicode is that you’re supposed to use the SDL_EnableUNICODE function, which I did. Actually, that originally generated another compile error, when I called it like this:

Code:
SDL_EnableUNICODE(SDL_ENABLE);

But then I changed it to this

Code:
int abc = SDL_EnableUNICODE(SDL_ENABLE);

and that seemed to fix it. Obviously I don’t really know what I’m doing here. Maybe I should have just stuck with the Lazy Foo tutorials. Anyway, if someone could help me, I’d sure appreciate it. Thanks.

Okay I fiddled with my code some more and I realized that I need to use event.key.keysym.unicode. That fixed the compile error but now I’m getting a value of 0 for every keypress.

I’m just trying to get a numerical value from the user’s keyboard input. This is the way my code was before I learned about unicode:

Code:
short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event ) )
{
if(event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_0:
usr = 0;
break;
case SDLK_KP0:
usr = 0;
break;
case SDLK_1:
usr = 1;
break;
case SDLK_KP1:
usr = 1;
break;
case SDLK_2:
usr = 2;
break;
case SDLK_KP2:
usr = 2;
break;
case SDLK_3:
usr = 3;
break;
case SDLK_KP3:
usr = 3;
break;
case SDLK_4:
usr = 4;
break;
case SDLK_KP4:
usr = 4;
break;
case SDLK_5:
usr = 5;
break;
case SDLK_KP5:
usr = 5;
break;
case SDLK_6:
usr = 6;
break;
case SDLK_KP6:
usr = 6;
break;
default:
usr = -1;
}
}
}
}
return usr;
}

And this just seemed like a ridiculously inefficient way of doing it. So it changed it to this to simplify it:

Code:
short int uInput()
{
int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.unicode & 0x7F;
usr -= 48;
if ((usr < 0) || (usr > 6))
{
usr = -1
}
}
}
}
return usr;
}

But I’m not getting an ascii value, so obviously I’m doing something wrong.

Nevermind, I figured it out. I did some more poking around on the SDL site and I determined that I needed to change my code to this:

Code:
short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else
{
usr = -1;
}
}
}
}
return usr;
}

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym ==
SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym ==
SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym ==
SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym ==
SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym ==
SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym ==
SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym ==
SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym ==
SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym ==
SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym ==
SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym ==
SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym ==
SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym ==
SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym ==
SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym ==
SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym ==
SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym ==
SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym ==
SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string = cpp_main_string

  • " “;}
    if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string +
    ” ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The AlanOn Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

I don’t see how this is ever true:
(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny DOn Sun, Dec 8, 2013 at 1:48 AM, R Manard wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string = cpp_main_string

  • " “;}
    if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string +
    ” ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The Alan

On Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Correction if you want specifically that set of flags:
(event.key.keysym.mod == (KMOD_SHIFT | KMOD_CAPS))

Or if you want that set regardless of other modifiers (e.g. ctrl or meta)
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS) == (KMOD_SHIFT | KMOD_CAPS)
)

Jonny DOn Sun, Dec 8, 2013 at 11:46 AM, Jonathan Dearborn <@Jonathan_Dearborn>wrote:

I don’t see how this is ever true:

(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny D

On Sun, Dec 8, 2013 at 1:48 AM, R Manard wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string =
cpp_main_string + " ";}
if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string

  • " ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The Alan

On Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

And again, there’s SDL_GetKeyName(), which is for both SDL1.2 and SDL2.

Jonny DOn Sun, Dec 8, 2013 at 11:49 AM, Jonathan Dearborn <@Jonathan_Dearborn>wrote:

Correction if you want specifically that set of flags:
(event.key.keysym.mod == (KMOD_SHIFT | KMOD_CAPS))

Or if you want that set regardless of other modifiers (e.g. ctrl or meta)
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS) == (KMOD_SHIFT |
KMOD_CAPS))

Jonny D

On Sun, Dec 8, 2013 at 11:46 AM, Jonathan Dearborn <@Jonathan_Dearborn>wrote:

I don’t see how this is ever true:

(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny D

On Sun, Dec 8, 2013 at 1:48 AM, R Manard wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string =
cpp_main_string + " ";}
if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string

  • " ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The Alan

On Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Well thanks for the input guys. I am planning to make the move to SDL2 at some point. I just couldn’t find an SDL2 book that I liked, and I prefer real ink & paper books, so I went with Focus on SDL. I think once I’m done reading FOSDL, I’ll check to see if the SDL2 tutorials on Lazy Foo are done.

Anyway, your suggestions were very helpful. I don’t think I would have ever been able to figure out all this stuff on my own without the forums.

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code

Don’t want to be dismissive about anyone’s code either, but that thing
you posted is an array lookup one-liner turned into hundreds of if statements.

but if you want to think forward,

I too am dissapointed SDLK_* defines in SDL2 are not sequential and
can’t be used as array indexes. Was really useful for simple things,
not related to TextInput.On Sun, 8 Dec 2013 00:48:05 -0600 R Manard wrote:


driedfruit

From the documentation:
The ‘unicode’ translated character is only available when character
translation is enabled by the SDL_EnableUNICODE() API.

Try SDL_EnableUNICODE(1) when you’re ready to accept text in your program.On Thu, Dec 5, 2013 at 5:15 PM, Explodey wrote:

So I’ve been reading through “Focus on SDL” and I’ve noticed that there
aren’t example programs for a lot of the terms and commands and stuff. It
says that you can use unicode to get the ascii value of a keyboard event,
which would be very helpful in this sudoku program I’m writing, but there
were no specific examples. I even did a content search for “unicode” in the
CD that comes with the book, and I didn’t get a single result.

So I tried to figure it out myself, but I got the error “‘keysym’ was not
declared in this scope” for this line:

Code:

usr = keysym.unicode;

But I don’t know how to declare it, and only thing the book said about
enabling unicode is that you’re supposed to use the SDL_EnableUNICODE
function, which I did. Actually, that originally generated another compile
error, when I called it like this:

Code:

SDL_EnableUNICODE(SDL_ENABLE);

But then I changed it to this

Code:

int abc = SDL_EnableUNICODE(SDL_ENABLE);

and that seemed to fix it. Obviously I don’t really know what I’m doing
here. Maybe I should have just stuck with the Lazy Foo tutorials. Anyway,
if someone could help me, I’d sure appreciate it. Thanks.


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Driedfruit, if you want to do something based on keyboard position you
probably want to use scancodes instead, which are sequential.On Sun, Dec 8, 2013 at 8:29 PM, Driedfruit wrote:

On Sun, 8 Dec 2013 00:48:05 -0600 R Manard wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code

Don’t want to be dismissive about anyone’s code either, but that thing
you posted is an array lookup one-liner turned into hundreds of if
statements.

but if you want to think forward,

I too am dissapointed SDLK_* defines in SDL2 are not sequential and
can’t be used as array indexes. Was really useful for simple things,
not related to TextInput.


driedfruit


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Since you were confused i would like to help you understand. In order to
emulate the correct behavior of windows I needed to do that. I took that
code from a functioning program. I appreciate the way you woulda done
things and I don’t think that your way is wrong or more right. Once again
the program did everything I wanted it to do. Where I learned code that
means it’s correct.On Dec 8, 2013 10:47 AM, “Jonathan Dearborn” wrote:

I don’t see how this is ever true:
(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny D

On Sun, Dec 8, 2013 at 1:48 AM, R Manard <@R_Manard> wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string =
cpp_main_string + " ";}
if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string

  • " ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The Alan

On Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

I can suggest some reasons the way you did it is more wrong if you like.On Mon, Dec 9, 2013 at 4:53 AM, R Manard wrote:

Since you were confused i would like to help you understand. In order to
emulate the correct behavior of windows I needed to do that. I took that
code from a functioning program. I appreciate the way you woulda done
things and I don’t think that your way is wrong or more right. Once again
the program did everything I wanted it to do. Where I learned code that
means it’s correct.
On Dec 8, 2013 10:47 AM, “Jonathan Dearborn” wrote:

I don’t see how this is ever true:
(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny D

On Sun, Dec 8, 2013 at 1:48 AM, R Manard wrote:

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;} if(event.key.keysym.sym
== SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;} if(event.key.keysym.sym
== SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;} if(event.key.keysym.sym
== SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;} if(event.key.keysym.sym
== SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;} if(event.key.keysym.sym
== SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;} if(event.key.keysym.sym
== SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;} if(event.key.keysym.sym
== SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;} if(event.key.keysym.sym
== SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;} if(event.key.keysym.sym
== SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;} if(event.key.keysym.sym
== SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;} if(event.key.keysym.sym
== SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;} if(event.key.keysym.sym
== SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;} if(event.key.keysym.sym
== SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;} if(event.key.keysym.sym
== SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;} if(event.key.keysym.sym
== SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;} if(event.key.keysym.sym
== SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;} if(event.key.keysym.sym
== SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;} if(event.key.keysym.sym
== SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “B”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “C”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “D”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “E”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “F”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “G”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “H”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “I”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “J”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “K”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “L”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “M”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “N”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “O”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “P”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “Q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “R”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “S”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “T”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “U”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “V”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “W”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “X”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “Y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “Z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “~”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “!”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “@”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “#”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “$”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “%”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “^”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “&”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “*”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “(”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “)”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “_”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “+”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “{”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “}”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “|”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “:”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = ‘"’;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “<”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “>”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;}
if(event.key.keysym.sym == SDLK_b) {sp1 = “b”;}
if(event.key.keysym.sym == SDLK_c) {sp1 = “c”;}
if(event.key.keysym.sym == SDLK_d) {sp1 = “d”;}
if(event.key.keysym.sym == SDLK_e) {sp1 = “e”;}
if(event.key.keysym.sym == SDLK_f) {sp1 = “f”;}
if(event.key.keysym.sym == SDLK_g) {sp1 = “g”;}
if(event.key.keysym.sym == SDLK_h) {sp1 = “h”;}
if(event.key.keysym.sym == SDLK_i) {sp1 = “i”;}
if(event.key.keysym.sym == SDLK_j) {sp1 = “j”;}
if(event.key.keysym.sym == SDLK_k) {sp1 = “k”;}
if(event.key.keysym.sym == SDLK_l) {sp1 = “l”;}
if(event.key.keysym.sym == SDLK_m) {sp1 = “m”;}
if(event.key.keysym.sym == SDLK_n) {sp1 = “n”;}
if(event.key.keysym.sym == SDLK_o) {sp1 = “o”;}
if(event.key.keysym.sym == SDLK_p) {sp1 = “p”;}
if(event.key.keysym.sym == SDLK_q) {sp1 = “q”;}
if(event.key.keysym.sym == SDLK_r) {sp1 = “r”;}
if(event.key.keysym.sym == SDLK_s) {sp1 = “s”;}
if(event.key.keysym.sym == SDLK_t) {sp1 = “t”;}
if(event.key.keysym.sym == SDLK_u) {sp1 = “u”;}
if(event.key.keysym.sym == SDLK_v) {sp1 = “v”;}
if(event.key.keysym.sym == SDLK_w) {sp1 = “w”;}
if(event.key.keysym.sym == SDLK_x) {sp1 = “x”;}
if(event.key.keysym.sym == SDLK_y) {sp1 = “y”;}
if(event.key.keysym.sym == SDLK_z) {sp1 = “z”;}
if(event.key.keysym.sym == SDLK_BACKQUOTE) {sp1 = “`”;}
if(event.key.keysym.sym == SDLK_1) {sp1 = “1”;}
if(event.key.keysym.sym == SDLK_2) {sp1 = “2”;}
if(event.key.keysym.sym == SDLK_3) {sp1 = “3”;}
if(event.key.keysym.sym == SDLK_4) {sp1 = “4”;}
if(event.key.keysym.sym == SDLK_5) {sp1 = “5”;}
if(event.key.keysym.sym == SDLK_6) {sp1 = “6”;}
if(event.key.keysym.sym == SDLK_7) {sp1 = “7”;}
if(event.key.keysym.sym == SDLK_8) {sp1 = “8”;}
if(event.key.keysym.sym == SDLK_9) {sp1 = “9”;}
if(event.key.keysym.sym == SDLK_0) {sp1 = “0”;}
if(event.key.keysym.sym == SDLK_MINUS) {sp1 = “-”;}
if(event.key.keysym.sym == SDLK_EQUALS) {sp1 = “=”;}
if(event.key.keysym.sym == SDLK_LEFTBRACKET) {sp1 = “[”;}
if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {sp1 = “]”;}
if(event.key.keysym.sym == SDLK_BACKSLASH) {sp1 = “\”;}
if(event.key.keysym.sym == SDLK_SEMICOLON) {sp1 = “;”;}
if(event.key.keysym.sym == SDLK_QUOTE) {sp1 = “’”;}
if(event.key.keysym.sym == SDLK_COMMA) {sp1 = “,”;}
if(event.key.keysym.sym == SDLK_PERIOD) {sp1 = “.”;}
if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string =
cpp_main_string + " ";}
if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string

  • " ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

The coders friend necronology / Alan / The Alan

On Fri, Dec 6, 2013 at 1:04 AM, Explodey wrote:

Nevermind, I figured it out. I did some more poking around on the SDL
site and I determined that I needed to change my code to this:

Code:

short int uInput()
{
short int usr = -1;
while (usr == -1)
{
if(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
usr = event.key.keysym.sym;
if ((usr > 255) && (usr < 263))
{
usr -= 256;
}
else if ((usr > 47) && (usr < 55))
{
usr -= 48;
}
else

        {
           usr = -1;
        }
     }
       }

}
return usr;
}


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Driedfruit, if you want to do something based on keyboard position you
probably want to use scancodes instead, which are sequential.

Didn’t think about it and didn’t know that! That makes perfect sense,
thanks.On Sun, 8 Dec 2013 22:25:42 -0800 Sam Lantinga wrote:


driedfruit

Message-ID:
<CAKCUQMZqO-dQ_SK4b7N6JxurBg5Dw-ijfJ3gYJSKucvj-9fijg at mail.gmail.com>
Content-Type: text/plain; charset=“iso-8859-1”

Since you were confused i would like to help you understand. In order to
emulate the correct behavior of windows I needed to do that. I took that
code from a functioning program. I appreciate the way you woulda done
things and I don’t think that your way is wrong or more right. Once again
the program did everything I wanted it to do. Where I learned code that
means it’s correct.

I don’t see how this is ever true:
(event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod == KMOD_CAPS)

‘mod’ is a bit field, so use this instead?
(event.key.keysym.mod & (KMOD_SHIFT | KMOD_CAPS))

Also, a lot of those keysyms are sequential, so I presume you could do
stuff like this to replace some of that code:
char sp1 = ‘a’ + (event.key.keysym.sym - SDLK_a);

Of course with SDL2, just use the text input API.

Jonny D

SDL 1 keyboard code <<for google spider
Hiiya,
not going to poo poo ur code but if you want to think forward, since
Unicode is not an sdl2 thing I’d like to put this out there for you. It
should work with sdl1 out of the box the way they say. I spoke to you
before so I think you know code well enough to utilize this easy. I think
I
should give a couple of games with code to the sdl site, convert to sdl2
and give those as well. Has anyone done that yet? I wonder… Anyway:

string Xfiles::proc_key(SDL_Event &event, string cpp_main_string)
{
string sp1; sp1 = “”;
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;}

<snip: big sequence of if tests>

if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}

if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod ==
KMOD_RSHIFT)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}

<snip: then another>

if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “A”;}

<snip: and another>

if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “?”;}
}

if (event.key.keysym.mod == KMOD_SHIFT && event.key.keysym.mod ==
KMOD_CAPS)
{
if(event.key.keysym.sym == SDLK_a) {sp1 = “a”;}

<snip: and another>

if(event.key.keysym.sym == SDLK_SLASH) {sp1 = “/”;}
}

if(event.key.keysym.sym == SDLK_SPACE) {cpp_main_string =
cpp_main_string + " ";}
if(event.key.keysym.sym == SDLK_TAB) {cpp_main_string = cpp_main_string

  • " ";}
    if(event.key.keysym.sym == SDLK_BACKSPACE)
    {
    int i = strlen(((char*)cpp_main_string.c_str()));
    i–;
    cpp_main_string = cpp_main_string.substr(0,i);
    return cpp_main_string;
    }
    cpp_main_string = cpp_main_string + sp1;
    return cpp_main_string;
    }

To be frank, I think I would have used switch() statements for all
four of those. PREFERABLY I would have used a preprocessor looping
conditional to write a generator, but tragically such a conditional
doesn’t currently exist within the language standard (they were
worried about infinite loops, which I suppose just demonstrates that
they hadn’t been introduced to for-each yet).

Regardless, I would have used a switch. The code would be much cleaner
that way, and you have a better chance of the compiler optimizing it
as some sort of jump table.> Date: Mon, 9 Dec 2013 03:53:37 -0600

From: R Manard
To: SDL Development List
Subject: Re: [SDL] How do you use unicode
On Dec 8, 2013 10:47 AM, “Jonathan Dearborn” wrote:

On Sun, Dec 8, 2013 at 1:48 AM, R Manard wrote:

I had used for years a solution that is close to what Manard presented. On SDL 1.x.y the solution was perfect for me.
With SDL 2.0.1 I have problems decoding the virtual keys : ^ & $ , etc. For an English keyboard layout it is OK, but I need to treat Spanish and Portuguese layout also.
Any idea of treating this, not using the SDL2 text input ?
Thanks.------------------------
Armando Alaminos Bouza

Of course, there is the Windows GetKeyboardLayout(), but I would like to solve the issue using only SDL API.------------------------
Armando Alaminos Bouza

There’s no good way around using the new text input API. That’s why the
API exists now, because the old way (one unicode character per key press)
does not actually work for many languages and input methods. The text
input API also hooks into the soft keyboard on Android (and iOS presumably)
so you can input text on those systems. It’s unfortunate that the solution
is not as simple as it was before, but it really is still simple (and
necessary).

Jonny DOn Fri, Dec 13, 2013 at 8:01 AM, alabouza wrote:

Of course, there is the Windows GetKeyboardLayout(), but I would like to
solve the issue using only SDL API.


Armando Alaminos Bouza


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

To be honest I would agree that the text input api seems like a step
backwards from the old sdl solution. Well I’m sure some platforms are much
easier this way or indeed even possible its just more restrictive and not
as simple for me. Why not just let people do it the old way if they want to
since its pretty much written already it would be easy to add in? There
must be more solutions out there that could be brought to the people?On Dec 13, 2013 8:13 AM, “Jonathan Dearborn” wrote:

There’s no good way around using the new text input API. That’s why the
API exists now, because the old way (one unicode character per key press)
does not actually work for many languages and input methods. The text
input API also hooks into the soft keyboard on Android (and iOS presumably)
so you can input text on those systems. It’s unfortunate that the solution
is not as simple as it was before, but it really is still simple (and
necessary).

Jonny D

On Fri, Dec 13, 2013 at 8:01 AM, alabouza wrote:

Of course, there is the Windows GetKeyboardLayout(), but I would like
to solve the issue using only SDL API.


Armando Alaminos Bouza


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Well, by all means if you don’t feel like you want unicode support, try
converting the keysyms as discussed above or just stick to SDL 1.2. The
drawbacks will surface as you go and you can figure out your own migration
path if it becomes a problem.

Again, all it takes is something like this:
// When a text field is clicked or text is expected
SDL_StartTextInput();

// In your event loop
if(event.type == SDL_TEXTINPUT)
strcat(current_input_string, event.text.text);

// When you click out of the text field, press return or whatever
SDL_StopTextInput();

That gets you most of the way there.

Jonny D