clean up low-level keyboard input

This commit is contained in:
Chris Forbes
2010-07-15 20:06:00 +12:00
parent bf50a2961e
commit 071c790097
8 changed files with 67 additions and 59 deletions

View File

@@ -157,6 +157,29 @@ namespace OpenRA.GlRenderer
| ((raw & Sdl.KMOD_SHIFT) != 0 ? Modifiers.Shift : 0);
}
bool HandleSpecialKey(KeyInput k)
{
switch (k.VirtKey)
{
case Sdl.SDLK_F13:
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
+ Path.DirectorySeparatorChar + DateTime.UtcNow.ToString("OpenRA-yyyy-MM-ddThhmmssZ") + ".bmp";
Sdl.SDL_SaveBMP(surf, path);
return true;
case Sdl.SDLK_F4:
if (k.Modifiers.HasModifier(Modifiers.Alt))
{
OpenRA.Game.Exit();
return true;
}
return false;
default:
return false;
}
}
public void Present()
{
Sdl.SDL_GL_SwapBuffers();
@@ -202,34 +225,17 @@ namespace OpenRA.GlRenderer
case Sdl.SDL_KEYDOWN:
{
bool handled = true;
switch (e.key.keysym.sym)
bool handled = true;
var keyEvent = new KeyInput
{
case Sdl.SDLK_UP: Game.HandleArrowKeyScroll("up", true); break;
case Sdl.SDLK_LEFT: Game.HandleArrowKeyScroll("left", true); break;
case Sdl.SDLK_DOWN: Game.HandleArrowKeyScroll("down", true); break;
case Sdl.SDLK_RIGHT: Game.HandleArrowKeyScroll("right", true); break;
case Sdl.SDLK_F13:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + Path.DirectorySeparatorChar + DateTime.UtcNow.ToString("OpenRA-yyyy-MM-ddThhmmssZ")+".bmp";
Sdl.SDL_SaveBMP(surf,path);
break;
default:
handled = false;
break;
}
Modifiers = mods,
KeyChar = (char) e.key.keysym.unicode,
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym )
};
if (e.key.keysym.unicode != 0 && !handled)
Game.HandleKeyPress(new KeyPressEventArgs((char)e.key.keysym.unicode), mods);
else if (mods != 0)
{
var keyName = Sdl.SDL_GetKeyName(e.key.keysym.sym);
if (keyName.Length == 1)
Game.HandleKeyPress(new KeyPressEventArgs(keyName[0]), mods);
else if (keyName == "f4" && ((mods & Modifiers.Alt) != 0))
OpenRA.Game.Exit();
}
if (!HandleSpecialKey(keyEvent))
Game.HandleKeyPress(keyEvent);
} break;
case Sdl.SDL_KEYUP: