[SDL] SDL with Vista Keyboard issue

necronology at cox.net necronology at cox.net
Tue Oct 2 22:41:27 PDT 2007


Team-
This is my first try with this email system so I hope it works. In any case I am codeing in C/C++ with VC++6. My program is going to be an awesone file share and chat program btw. On XP it works fine but in Vista the shift key does not work. I updated to 1.2.12 but it did not resolve the issue. I will post some code so you know what I'm doing>

string Details::proc_key(SDL_Event &event, string cpp_main_string)
	{
	//duhmod = SDL_GetModState();
	//if (duhmod == KMOD_CAPS && duhmod == KMOD_LSHIFT)
	//	{cpp_main_string = cpp_main_string + "OO";}

	if( event.key.keysym.mod & KMOD_NUM ) printf( "NUMLOCK \n" );
        if( event.key.keysym.mod & KMOD_CAPS ) printf( "CAPSLOCK " );
        if( event.key.keysym.mod & KMOD_LCTRL ) printf( "LCTRL " );
        if( event.key.keysym.mod & KMOD_RCTRL ) printf( "RCTRL " );
        if( event.key.keysym.mod & KMOD_RSHIFT ) printf( "RSHIFT " );
        if( event.key.keysym.mod & KMOD_LSHIFT ) printf( "LSHIFT " );
        if( event.key.keysym.mod & KMOD_RALT ) printf( "RALT " );
        if( event.key.keysym.mod & KMOD_LALT ) printf( "LALT " );
        if( event.key.keysym.mod & KMOD_CTRL ) printf( "CTRL " );
        if( event.key.keysym.mod & KMOD_SHIFT ) printf( "SHIFT " );
        if( event.key.keysym.mod & KMOD_ALT ) printf( "ALT " );
        printf( "\n" );

	if (event.key.keysym.mod == KMOD_LSHIFT || event.key.keysym.mod == KMOD_RSHIFT)
		{
		if(event.key.keysym.sym == SDLK_a) {cpp_main_string = cpp_main_string + "A";} 
		if(event.key.keysym.sym == SDLK_b) {cpp_main_string = cpp_main_string + "B";}
		if(event.key.keysym.sym == SDLK_c) {cpp_main_string = cpp_main_string + "C";} 
		if(event.key.keysym.sym == SDLK_d) {cpp_main_string = cpp_main_string + "D";}
		if(event.key.keysym.sym == SDLK_e) {cpp_main_string = cpp_main_string + "E";} 
		if(event.key.keysym.sym == SDLK_f) {cpp_main_string = cpp_main_string + "F";}
		if(event.key.keysym.sym == SDLK_g) {cpp_main_string = cpp_main_string + "G";} 
		if(event.key.keysym.sym == SDLK_h) {cpp_main_string = cpp_main_string + "H";}
		if(event.key.keysym.sym == SDLK_i) {cpp_main_string = cpp_main_string + "I";} 
		if(event.key.keysym.sym == SDLK_j) {cpp_main_string = cpp_main_string + "J";}
		if(event.key.keysym.sym == SDLK_k) {cpp_main_string = cpp_main_string + "K";} 
		if(event.key.keysym.sym == SDLK_l) {cpp_main_string = cpp_main_string + "L";}
		if(event.key.keysym.sym == SDLK_m) {cpp_main_string = cpp_main_string + "M";} 
		if(event.key.keysym.sym == SDLK_n) {cpp_main_string = cpp_main_string + "N";}
		if(event.key.keysym.sym == SDLK_o) {cpp_main_string = cpp_main_string + "O";} 
		if(event.key.keysym.sym == SDLK_p) {cpp_main_string = cpp_main_string + "P";}
		if(event.key.keysym.sym == SDLK_q) {cpp_main_string = cpp_main_string + "Q";} 
		if(event.key.keysym.sym == SDLK_r) {cpp_main_string = cpp_main_string + "R";}
		if(event.key.keysym.sym == SDLK_s) {cpp_main_string = cpp_main_string + "S";} 
		if(event.key.keysym.sym == SDLK_t) {cpp_main_string = cpp_main_string + "T";}
		if(event.key.keysym.sym == SDLK_u) {cpp_main_string = cpp_main_string + "U";} 
		if(event.key.keysym.sym == SDLK_v) {cpp_main_string = cpp_main_string + "V";}
		if(event.key.keysym.sym == SDLK_w) {cpp_main_string = cpp_main_string + "W";} 
		if(event.key.keysym.sym == SDLK_x) {cpp_main_string = cpp_main_string + "X";}
		if(event.key.keysym.sym == SDLK_y) {cpp_main_string = cpp_main_string + "Y";} 
		if(event.key.keysym.sym == SDLK_z) {cpp_main_string = cpp_main_string + "Z";}
		if(event.key.keysym.sym == SDLK_BACKQUOTE) {cpp_main_string = cpp_main_string + "~";}
		if(event.key.keysym.sym == SDLK_1) {cpp_main_string = cpp_main_string + "!";}
		if(event.key.keysym.sym == SDLK_2) {cpp_main_string = cpp_main_string + "@";}
		if(event.key.keysym.sym == SDLK_3) {cpp_main_string = cpp_main_string + "#";}
		if(event.key.keysym.sym == SDLK_4) {cpp_main_string = cpp_main_string + "$";}
		if(event.key.keysym.sym == SDLK_5) {cpp_main_string = cpp_main_string + "%";}
		if(event.key.keysym.sym == SDLK_6) {cpp_main_string = cpp_main_string + "^";}
		if(event.key.keysym.sym == SDLK_7) {cpp_main_string = cpp_main_string + "&";}
		if(event.key.keysym.sym == SDLK_8) {cpp_main_string = cpp_main_string + "*";}
		if(event.key.keysym.sym == SDLK_9) {cpp_main_string = cpp_main_string + "(";}
		if(event.key.keysym.sym == SDLK_0) {cpp_main_string = cpp_main_string + ")";}
		if(event.key.keysym.sym == SDLK_MINUS) {cpp_main_string = cpp_main_string + "_";}
		if(event.key.keysym.sym == SDLK_EQUALS) {cpp_main_string = cpp_main_string + "+";}
		if(event.key.keysym.sym == SDLK_LEFTBRACKET) {cpp_main_string = cpp_main_string + "{";}
		if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {cpp_main_string = cpp_main_string + "}";}
		if(event.key.keysym.sym == SDLK_BACKSLASH) {cpp_main_string = cpp_main_string + "|";}
		if(event.key.keysym.sym == SDLK_SEMICOLON) {cpp_main_string = cpp_main_string + ":";}
		if(event.key.keysym.sym == SDLK_QUOTE) {cpp_main_string = cpp_main_string + '"';}
		if(event.key.keysym.sym == SDLK_COMMA) {cpp_main_string = cpp_main_string + "<";}
		if(event.key.keysym.sym == SDLK_PERIOD) {cpp_main_string = cpp_main_string + ">";}
		if(event.key.keysym.sym == SDLK_SLASH) {cpp_main_string = cpp_main_string + "?";}
		}
		/*
	else if (event.key.keysym.mod == KMOD_CAPS)
		{
		if(event.key.keysym.sym == SDLK_a) {cpp_main_string = cpp_main_string + "A";} 
		if(event.key.keysym.sym == SDLK_b) {cpp_main_string = cpp_main_string + "B";}
		if(event.key.keysym.sym == SDLK_c) {cpp_main_string = cpp_main_string + "C";} 
		if(event.key.keysym.sym == SDLK_d) {cpp_main_string = cpp_main_string + "D";}
		if(event.key.keysym.sym == SDLK_e) {cpp_main_string = cpp_main_string + "E";} 
		if(event.key.keysym.sym == SDLK_f) {cpp_main_string = cpp_main_string + "F";}
		if(event.key.keysym.sym == SDLK_g) {cpp_main_string = cpp_main_string + "G";} 
		if(event.key.keysym.sym == SDLK_h) {cpp_main_string = cpp_main_string + "H";}
		if(event.key.keysym.sym == SDLK_i) {cpp_main_string = cpp_main_string + "I";} 
		if(event.key.keysym.sym == SDLK_j) {cpp_main_string = cpp_main_string + "J";}
		if(event.key.keysym.sym == SDLK_k) {cpp_main_string = cpp_main_string + "K";} 
		if(event.key.keysym.sym == SDLK_l) {cpp_main_string = cpp_main_string + "L";}
		if(event.key.keysym.sym == SDLK_m) {cpp_main_string = cpp_main_string + "M";} 
		if(event.key.keysym.sym == SDLK_n) {cpp_main_string = cpp_main_string + "N";}
		if(event.key.keysym.sym == SDLK_o) {cpp_main_string = cpp_main_string + "O";} 
		if(event.key.keysym.sym == SDLK_p) {cpp_main_string = cpp_main_string + "P";}
		if(event.key.keysym.sym == SDLK_q) {cpp_main_string = cpp_main_string + "Q";} 
		if(event.key.keysym.sym == SDLK_r) {cpp_main_string = cpp_main_string + "R";}
		if(event.key.keysym.sym == SDLK_s) {cpp_main_string = cpp_main_string + "S";} 
		if(event.key.keysym.sym == SDLK_t) {cpp_main_string = cpp_main_string + "T";}
		if(event.key.keysym.sym == SDLK_u) {cpp_main_string = cpp_main_string + "U";} 
		if(event.key.keysym.sym == SDLK_v) {cpp_main_string = cpp_main_string + "V";}
		if(event.key.keysym.sym == SDLK_w) {cpp_main_string = cpp_main_string + "W";} 
		if(event.key.keysym.sym == SDLK_x) {cpp_main_string = cpp_main_string + "X";}
		if(event.key.keysym.sym == SDLK_y) {cpp_main_string = cpp_main_string + "Y";} 
		if(event.key.keysym.sym == SDLK_z) {cpp_main_string = cpp_main_string + "Z";}
		if(event.key.keysym.sym == SDLK_BACKQUOTE) {cpp_main_string = cpp_main_string + "`";}
		if(event.key.keysym.sym == SDLK_1) {cpp_main_string = cpp_main_string + "1";}
		if(event.key.keysym.sym == SDLK_2) {cpp_main_string = cpp_main_string + "2";}
		if(event.key.keysym.sym == SDLK_3) {cpp_main_string = cpp_main_string + "3";}
		if(event.key.keysym.sym == SDLK_4) {cpp_main_string = cpp_main_string + "4";}
		if(event.key.keysym.sym == SDLK_5) {cpp_main_string = cpp_main_string + "5";}
		if(event.key.keysym.sym == SDLK_6) {cpp_main_string = cpp_main_string + "6";}
		if(event.key.keysym.sym == SDLK_7) {cpp_main_string = cpp_main_string + "7";}
		if(event.key.keysym.sym == SDLK_8) {cpp_main_string = cpp_main_string + "8";}
		if(event.key.keysym.sym == SDLK_9) {cpp_main_string = cpp_main_string + "9";}
		if(event.key.keysym.sym == SDLK_0) {cpp_main_string = cpp_main_string + "0";}
		if(event.key.keysym.sym == SDLK_MINUS) {cpp_main_string = cpp_main_string + "-";}
		if(event.key.keysym.sym == SDLK_EQUALS) {cpp_main_string = cpp_main_string + "=";}
		if(event.key.keysym.sym == SDLK_LEFTBRACKET) {cpp_main_string = cpp_main_string + "[";}
		if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {cpp_main_string = cpp_main_string + "]";}
		if(event.key.keysym.sym == SDLK_BACKSLASH) {cpp_main_string = cpp_main_string + "\\";}
		if(event.key.keysym.sym == SDLK_SEMICOLON) {cpp_main_string = cpp_main_string + ";";}
		if(event.key.keysym.sym == SDLK_QUOTE) {cpp_main_string = cpp_main_string + "'";}
		if(event.key.keysym.sym == SDLK_COMMA) {cpp_main_string = cpp_main_string + ",";}
		if(event.key.keysym.sym == SDLK_PERIOD) {cpp_main_string = cpp_main_string + ".";}
		if(event.key.keysym.sym == SDLK_SLASH) {cpp_main_string = cpp_main_string + "/";}
		}
		*/
	else
		{
		if(event.key.keysym.sym == SDLK_a) {cpp_main_string = cpp_main_string + "a";} 
		if(event.key.keysym.sym == SDLK_b) {cpp_main_string = cpp_main_string + "b";}
		if(event.key.keysym.sym == SDLK_c) {cpp_main_string = cpp_main_string + "c";} 
		if(event.key.keysym.sym == SDLK_d) {cpp_main_string = cpp_main_string + "d";}
		if(event.key.keysym.sym == SDLK_e) {cpp_main_string = cpp_main_string + "e";} 
		if(event.key.keysym.sym == SDLK_f) {cpp_main_string = cpp_main_string + "f";}
		if(event.key.keysym.sym == SDLK_g) {cpp_main_string = cpp_main_string + "g";} 
		if(event.key.keysym.sym == SDLK_h) {cpp_main_string = cpp_main_string + "h";}
		if(event.key.keysym.sym == SDLK_i) {cpp_main_string = cpp_main_string + "i";} 
		if(event.key.keysym.sym == SDLK_j) {cpp_main_string = cpp_main_string + "j";}
		if(event.key.keysym.sym == SDLK_k) {cpp_main_string = cpp_main_string + "k";} 
		if(event.key.keysym.sym == SDLK_l) {cpp_main_string = cpp_main_string + "l";}
		if(event.key.keysym.sym == SDLK_m) {cpp_main_string = cpp_main_string + "m";} 
		if(event.key.keysym.sym == SDLK_n) {cpp_main_string = cpp_main_string + "n";}
		if(event.key.keysym.sym == SDLK_o) {cpp_main_string = cpp_main_string + "o";} 
		if(event.key.keysym.sym == SDLK_p) {cpp_main_string = cpp_main_string + "p";}
		if(event.key.keysym.sym == SDLK_q) {cpp_main_string = cpp_main_string + "q";} 
		if(event.key.keysym.sym == SDLK_r) {cpp_main_string = cpp_main_string + "r";}
		if(event.key.keysym.sym == SDLK_s) {cpp_main_string = cpp_main_string + "s";} 
		if(event.key.keysym.sym == SDLK_t) {cpp_main_string = cpp_main_string + "t";}
		if(event.key.keysym.sym == SDLK_u) {cpp_main_string = cpp_main_string + "u";} 
		if(event.key.keysym.sym == SDLK_v) {cpp_main_string = cpp_main_string + "v";}
		if(event.key.keysym.sym == SDLK_w) {cpp_main_string = cpp_main_string + "w";} 
		if(event.key.keysym.sym == SDLK_x) {cpp_main_string = cpp_main_string + "x";}
		if(event.key.keysym.sym == SDLK_y) {cpp_main_string = cpp_main_string + "y";} 
		if(event.key.keysym.sym == SDLK_z) {cpp_main_string = cpp_main_string + "z";}
		if(event.key.keysym.sym == SDLK_BACKQUOTE) {cpp_main_string = cpp_main_string + "`";}
		if(event.key.keysym.sym == SDLK_1) {cpp_main_string = cpp_main_string + "1";}
		if(event.key.keysym.sym == SDLK_2) {cpp_main_string = cpp_main_string + "2";}
		if(event.key.keysym.sym == SDLK_3) {cpp_main_string = cpp_main_string + "3";}
		if(event.key.keysym.sym == SDLK_4) {cpp_main_string = cpp_main_string + "4";}
		if(event.key.keysym.sym == SDLK_5) {cpp_main_string = cpp_main_string + "5";}
		if(event.key.keysym.sym == SDLK_6) {cpp_main_string = cpp_main_string + "6";}
		if(event.key.keysym.sym == SDLK_7) {cpp_main_string = cpp_main_string + "7";}
		if(event.key.keysym.sym == SDLK_8) {cpp_main_string = cpp_main_string + "8";}
		if(event.key.keysym.sym == SDLK_9) {cpp_main_string = cpp_main_string + "9";}
		if(event.key.keysym.sym == SDLK_0) {cpp_main_string = cpp_main_string + "0";}
		if(event.key.keysym.sym == SDLK_MINUS) {cpp_main_string = cpp_main_string + "-";}
		if(event.key.keysym.sym == SDLK_EQUALS) {cpp_main_string = cpp_main_string + "=";}
		if(event.key.keysym.sym == SDLK_LEFTBRACKET) {cpp_main_string = cpp_main_string + "[";}
		if(event.key.keysym.sym == SDLK_RIGHTBRACKET) {cpp_main_string = cpp_main_string + "]";}
		if(event.key.keysym.sym == SDLK_BACKSLASH) {cpp_main_string = cpp_main_string + "\\";}
		if(event.key.keysym.sym == SDLK_SEMICOLON) {cpp_main_string = cpp_main_string + ";";}
		if(event.key.keysym.sym == SDLK_QUOTE) {cpp_main_string = cpp_main_string + "'";}
		if(event.key.keysym.sym == SDLK_COMMA) {cpp_main_string = cpp_main_string + ",";}
		if(event.key.keysym.sym == SDLK_PERIOD) {cpp_main_string = cpp_main_string + ".";}
		if(event.key.keysym.sym == SDLK_SLASH) {cpp_main_string = cpp_main_string + "/";}
		}
	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) 
		{
		i = strlen(((char*)cpp_main_string.c_str()));
		i--;
		cpp_main_string = cpp_main_string.substr(0,i);
		}

	return cpp_main_string;
	}


More information about the SDL mailing list