Doesn't work. Also noticed when it's asking the name if you press shift it will also type < letter, but that's how low level key routines tend to work. My get key routine in SDL2 takes out modifier keys as normal key presses, so they don't cause confusion.
Btw, when I randomly look at your code I noticed things like this:
Coord * pos = player->getPosition();
Coord new_pos;
new_pos.x = pos->x;
new_pos.y = pos->y;
switch (run_dir)
{
case dNorth: new_pos.y--; break;
case dEast: new_pos.x++; break;
case dSouth: new_pos.y++; break;
case dWest: new_pos.x--; break;
case dNorthEast: new_pos.x++; new_pos.y--; break;
case dSouthEast: new_pos.x++; new_pos.y++; break;
case dSouthWest: new_pos.x--; new_pos.y++; break;
case dNorthWest: new_pos.x--; new_pos.y--; break;
case dWait: return 2;
}
And that stuff is repeating so many times! What you should do is first make a constructor for Coord that takes pos as argument, so you can copy x,y in constructor and don't have to set them manually like that. Then create a function Coord::MoveToDirection(int direction) which will handle those directions to Coord changes. Make it return true if the position was changed so you can check special cases like that dWait. And while I'm at it, change stuff like dWait (hungarian or whatever notation) to namespace. I'm using 'way' as namespace for directions, it's sweet and short.
I think you really should have a keyboard get routine that handles that VK keys array. Maybe one to turn keys into ascii and other to return gameplay command type etc. When I look at StartScreen::GetName I don't know why it changes everything to < (maybe that pName.append, it looks suspicious) but I think the shift key if should be if (shift && i < 65) rather than ||.