Map (most) SDL1 keys -> SDL2.
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Tao.Sdl;
|
using Tao.Sdl;
|
||||||
|
|
||||||
@@ -16,6 +17,142 @@ namespace OpenRA.Renderer.SdlCommon
|
|||||||
{
|
{
|
||||||
public class SdlInput
|
public class SdlInput
|
||||||
{
|
{
|
||||||
|
static readonly Dictionary<int, Keycode> KeyRemap = new Dictionary<int, Keycode>
|
||||||
|
{
|
||||||
|
{ Sdl.SDLK_BACKSPACE, Keycode.BACKSPACE },
|
||||||
|
{ Sdl.SDLK_TAB, Keycode.TAB },
|
||||||
|
{ Sdl.SDLK_CLEAR, Keycode.CLEAR },
|
||||||
|
{ Sdl.SDLK_RETURN, Keycode.RETURN },
|
||||||
|
{ Sdl.SDLK_PAUSE, Keycode.PAUSE },
|
||||||
|
{ Sdl.SDLK_ESCAPE, Keycode.ESCAPE },
|
||||||
|
{ Sdl.SDLK_SPACE, Keycode.SPACE },
|
||||||
|
{ Sdl.SDLK_EXCLAIM, Keycode.EXCLAIM },
|
||||||
|
{ Sdl.SDLK_QUOTEDBL, Keycode.QUOTEDBL },
|
||||||
|
{ Sdl.SDLK_HASH, Keycode.HASH },
|
||||||
|
{ Sdl.SDLK_DOLLAR, Keycode.DOLLAR },
|
||||||
|
{ Sdl.SDLK_AMPERSAND, Keycode.AMPERSAND },
|
||||||
|
{ Sdl.SDLK_QUOTE, Keycode.QUOTE },
|
||||||
|
{ Sdl.SDLK_LEFTPAREN, Keycode.LEFTPAREN },
|
||||||
|
{ Sdl.SDLK_RIGHTPAREN, Keycode.RIGHTPAREN },
|
||||||
|
{ Sdl.SDLK_ASTERISK, Keycode.ASTERISK },
|
||||||
|
{ Sdl.SDLK_PLUS, Keycode.PLUS },
|
||||||
|
{ Sdl.SDLK_COMMA, Keycode.COMMA },
|
||||||
|
{ Sdl.SDLK_MINUS, Keycode.MINUS },
|
||||||
|
{ Sdl.SDLK_PERIOD, Keycode.PERIOD },
|
||||||
|
{ Sdl.SDLK_SLASH, Keycode.SLASH },
|
||||||
|
{ Sdl.SDLK_0, Keycode.NUMBER_0 },
|
||||||
|
{ Sdl.SDLK_1, Keycode.NUMBER_1 },
|
||||||
|
{ Sdl.SDLK_2, Keycode.NUMBER_2 },
|
||||||
|
{ Sdl.SDLK_3, Keycode.NUMBER_3 },
|
||||||
|
{ Sdl.SDLK_4, Keycode.NUMBER_4 },
|
||||||
|
{ Sdl.SDLK_5, Keycode.NUMBER_5 },
|
||||||
|
{ Sdl.SDLK_6, Keycode.NUMBER_6 },
|
||||||
|
{ Sdl.SDLK_7, Keycode.NUMBER_7 },
|
||||||
|
{ Sdl.SDLK_8, Keycode.NUMBER_8 },
|
||||||
|
{ Sdl.SDLK_9, Keycode.NUMBER_9 },
|
||||||
|
{ Sdl.SDLK_COLON, Keycode.COLON },
|
||||||
|
{ Sdl.SDLK_SEMICOLON, Keycode.SEMICOLON },
|
||||||
|
{ Sdl.SDLK_LESS, Keycode.LESS },
|
||||||
|
{ Sdl.SDLK_EQUALS, Keycode.EQUALS },
|
||||||
|
{ Sdl.SDLK_GREATER, Keycode.GREATER },
|
||||||
|
{ Sdl.SDLK_QUESTION, Keycode.QUESTION },
|
||||||
|
{ Sdl.SDLK_AT, Keycode.AT },
|
||||||
|
{ Sdl.SDLK_LEFTBRACKET, Keycode.LEFTBRACKET },
|
||||||
|
{ Sdl.SDLK_BACKSLASH, Keycode.BACKSLASH },
|
||||||
|
{ Sdl.SDLK_RIGHTBRACKET, Keycode.RIGHTBRACKET },
|
||||||
|
{ Sdl.SDLK_CARET, Keycode.CARET },
|
||||||
|
{ Sdl.SDLK_UNDERSCORE, Keycode.UNDERSCORE },
|
||||||
|
{ Sdl.SDLK_BACKQUOTE, Keycode.BACKQUOTE },
|
||||||
|
{ Sdl.SDLK_a, Keycode.A },
|
||||||
|
{ Sdl.SDLK_b, Keycode.B },
|
||||||
|
{ Sdl.SDLK_c, Keycode.C },
|
||||||
|
{ Sdl.SDLK_d, Keycode.D },
|
||||||
|
{ Sdl.SDLK_e, Keycode.E },
|
||||||
|
{ Sdl.SDLK_f, Keycode.F },
|
||||||
|
{ Sdl.SDLK_g, Keycode.G },
|
||||||
|
{ Sdl.SDLK_h, Keycode.H },
|
||||||
|
{ Sdl.SDLK_i, Keycode.I },
|
||||||
|
{ Sdl.SDLK_j, Keycode.J },
|
||||||
|
{ Sdl.SDLK_k, Keycode.K },
|
||||||
|
{ Sdl.SDLK_l, Keycode.L },
|
||||||
|
{ Sdl.SDLK_m, Keycode.M },
|
||||||
|
{ Sdl.SDLK_n, Keycode.N },
|
||||||
|
{ Sdl.SDLK_o, Keycode.O },
|
||||||
|
{ Sdl.SDLK_p, Keycode.P },
|
||||||
|
{ Sdl.SDLK_q, Keycode.Q },
|
||||||
|
{ Sdl.SDLK_r, Keycode.R },
|
||||||
|
{ Sdl.SDLK_s, Keycode.S },
|
||||||
|
{ Sdl.SDLK_t, Keycode.T },
|
||||||
|
{ Sdl.SDLK_u, Keycode.U },
|
||||||
|
{ Sdl.SDLK_v, Keycode.V },
|
||||||
|
{ Sdl.SDLK_w, Keycode.W },
|
||||||
|
{ Sdl.SDLK_x, Keycode.X },
|
||||||
|
{ Sdl.SDLK_y, Keycode.Y },
|
||||||
|
{ Sdl.SDLK_z, Keycode.Z },
|
||||||
|
{ Sdl.SDLK_DELETE, Keycode.DELETE },
|
||||||
|
{ Sdl.SDLK_KP0, Keycode.KP_0 },
|
||||||
|
{ Sdl.SDLK_KP1, Keycode.KP_1 },
|
||||||
|
{ Sdl.SDLK_KP2, Keycode.KP_2 },
|
||||||
|
{ Sdl.SDLK_KP3, Keycode.KP_3 },
|
||||||
|
{ Sdl.SDLK_KP4, Keycode.KP_4 },
|
||||||
|
{ Sdl.SDLK_KP5, Keycode.KP_5 },
|
||||||
|
{ Sdl.SDLK_KP6, Keycode.KP_6 },
|
||||||
|
{ Sdl.SDLK_KP7, Keycode.KP_7 },
|
||||||
|
{ Sdl.SDLK_KP8, Keycode.KP_8 },
|
||||||
|
{ Sdl.SDLK_KP9, Keycode.KP_9 },
|
||||||
|
{ Sdl.SDLK_KP_PERIOD, Keycode.KP_PERIOD },
|
||||||
|
{ Sdl.SDLK_KP_DIVIDE, Keycode.KP_DIVIDE },
|
||||||
|
{ Sdl.SDLK_KP_MULTIPLY, Keycode.KP_MULTIPLY },
|
||||||
|
{ Sdl.SDLK_KP_MINUS, Keycode.KP_MINUS },
|
||||||
|
{ Sdl.SDLK_KP_PLUS, Keycode.KP_PLUS },
|
||||||
|
{ Sdl.SDLK_KP_ENTER, Keycode.KP_ENTER },
|
||||||
|
{ Sdl.SDLK_KP_EQUALS, Keycode.KP_EQUALS },
|
||||||
|
{ Sdl.SDLK_UP, Keycode.UP },
|
||||||
|
{ Sdl.SDLK_DOWN, Keycode.DOWN },
|
||||||
|
{ Sdl.SDLK_RIGHT, Keycode.RIGHT },
|
||||||
|
{ Sdl.SDLK_LEFT, Keycode.LEFT },
|
||||||
|
{ Sdl.SDLK_INSERT, Keycode.INSERT },
|
||||||
|
{ Sdl.SDLK_HOME, Keycode.HOME },
|
||||||
|
{ Sdl.SDLK_END, Keycode.END },
|
||||||
|
{ Sdl.SDLK_PAGEUP, Keycode.PAGEUP },
|
||||||
|
{ Sdl.SDLK_PAGEDOWN, Keycode.PAGEDOWN },
|
||||||
|
{ Sdl.SDLK_F1, Keycode.F1 },
|
||||||
|
{ Sdl.SDLK_F2, Keycode.F2 },
|
||||||
|
{ Sdl.SDLK_F3, Keycode.F3 },
|
||||||
|
{ Sdl.SDLK_F4, Keycode.F4 },
|
||||||
|
{ Sdl.SDLK_F5, Keycode.F5 },
|
||||||
|
{ Sdl.SDLK_F6, Keycode.F6 },
|
||||||
|
{ Sdl.SDLK_F7, Keycode.F7 },
|
||||||
|
{ Sdl.SDLK_F8, Keycode.F8 },
|
||||||
|
{ Sdl.SDLK_F9, Keycode.F9 },
|
||||||
|
{ Sdl.SDLK_F10, Keycode.F10 },
|
||||||
|
{ Sdl.SDLK_F11, Keycode.F11 },
|
||||||
|
{ Sdl.SDLK_F12, Keycode.F12 },
|
||||||
|
{ Sdl.SDLK_F13, Keycode.F13 },
|
||||||
|
{ Sdl.SDLK_F14, Keycode.F14 },
|
||||||
|
{ Sdl.SDLK_F15, Keycode.F15 },
|
||||||
|
{ Sdl.SDLK_NUMLOCK, Keycode.NUMLOCKCLEAR },
|
||||||
|
{ Sdl.SDLK_CAPSLOCK, Keycode.CAPSLOCK },
|
||||||
|
{ Sdl.SDLK_SCROLLOCK, Keycode.SCROLLLOCK },
|
||||||
|
{ Sdl.SDLK_RSHIFT, Keycode.RSHIFT },
|
||||||
|
{ Sdl.SDLK_LSHIFT, Keycode.LSHIFT },
|
||||||
|
{ Sdl.SDLK_RCTRL, Keycode.RCTRL },
|
||||||
|
{ Sdl.SDLK_LCTRL, Keycode.LCTRL },
|
||||||
|
{ Sdl.SDLK_RALT, Keycode.RALT },
|
||||||
|
{ Sdl.SDLK_LALT, Keycode.LALT },
|
||||||
|
{ Sdl.SDLK_RMETA, Keycode.RGUI },
|
||||||
|
{ Sdl.SDLK_LMETA, Keycode.LGUI },
|
||||||
|
{ Sdl.SDLK_LSUPER, Keycode.LGUI },
|
||||||
|
{ Sdl.SDLK_RSUPER, Keycode.RGUI },
|
||||||
|
{ Sdl.SDLK_MODE, Keycode.MODE },
|
||||||
|
{ Sdl.SDLK_HELP, Keycode.HELP },
|
||||||
|
{ Sdl.SDLK_PRINT, Keycode.PRINTSCREEN },
|
||||||
|
{ Sdl.SDLK_SYSREQ, Keycode.SYSREQ },
|
||||||
|
{ Sdl.SDLK_MENU, Keycode.MENU },
|
||||||
|
{ Sdl.SDLK_POWER, Keycode.POWER },
|
||||||
|
{ Sdl.SDLK_UNDO, Keycode.UNDO },
|
||||||
|
};
|
||||||
|
|
||||||
MouseButton lastButtonBits = (MouseButton)0;
|
MouseButton lastButtonBits = (MouseButton)0;
|
||||||
|
|
||||||
MouseButton MakeButton(byte b)
|
MouseButton MakeButton(byte b)
|
||||||
@@ -104,7 +241,11 @@ namespace OpenRA.Renderer.SdlCommon
|
|||||||
case Sdl.SDL_KEYDOWN:
|
case Sdl.SDL_KEYDOWN:
|
||||||
case Sdl.SDL_KEYUP:
|
case Sdl.SDL_KEYUP:
|
||||||
{
|
{
|
||||||
var keyCode = (Keycode)e.key.keysym.sym;
|
// Drop unknown keys
|
||||||
|
Keycode keyCode;
|
||||||
|
if (!KeyRemap.TryGetValue(e.key.keysym.sym, out keyCode))
|
||||||
|
break;
|
||||||
|
|
||||||
var type = e.type == Sdl.SDL_KEYDOWN ?
|
var type = e.type == Sdl.SDL_KEYDOWN ?
|
||||||
KeyInputEvent.Down : KeyInputEvent.Up;
|
KeyInputEvent.Down : KeyInputEvent.Up;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user