private void ProcessBufferedKeyboard() { int count = Sdl.SDL_PeepEvents( events, BufferSize, Sdl.SDL_GETEVENT, (Sdl.SDL_KEYDOWNMASK | Sdl.SDL_KEYUPMASK)); // no events to process if (count == 0) { return; } // fire an event for each key event for (int i = 0; i < count; i++) { bool down = (events[i].type == Sdl.SDL_KEYDOWN); Axiom.Input.KeyCodes keyCode = ConvertKeyEnum(events[i].key.keysym.sym); KeyChanged(keyCode, down); } }
/// <summary> /// Used to convert a Sdl enum val to a Axiom.Input.KeyCodes enum val. /// </summary> /// <param name="key">Sdl code to query.</param> /// <returns>The equivalent enum value in the Axiom.KeyCodes enum.</returns> private Axiom.Input.KeyCodes ConvertKeyEnum(int key) { // TODO: Quotes Axiom.Input.KeyCodes axiomKey = 0; switch (key) { case Sdl.SDLK_a: axiomKey = Axiom.Input.KeyCodes.A; break; case Sdl.SDLK_b: axiomKey = Axiom.Input.KeyCodes.B; break; case Sdl.SDLK_c: axiomKey = Axiom.Input.KeyCodes.C; break; case Sdl.SDLK_d: axiomKey = Axiom.Input.KeyCodes.D; break; case Sdl.SDLK_e: axiomKey = Axiom.Input.KeyCodes.E; break; case Sdl.SDLK_f: axiomKey = Axiom.Input.KeyCodes.F; break; case Sdl.SDLK_g: axiomKey = Axiom.Input.KeyCodes.G; break; case Sdl.SDLK_h: axiomKey = Axiom.Input.KeyCodes.H; break; case Sdl.SDLK_i: axiomKey = Axiom.Input.KeyCodes.I; break; case Sdl.SDLK_j: axiomKey = Axiom.Input.KeyCodes.J; break; case Sdl.SDLK_k: axiomKey = Axiom.Input.KeyCodes.K; break; case Sdl.SDLK_l: axiomKey = Axiom.Input.KeyCodes.L; break; case Sdl.SDLK_m: axiomKey = Axiom.Input.KeyCodes.M; break; case Sdl.SDLK_n: axiomKey = Axiom.Input.KeyCodes.N; break; case Sdl.SDLK_o: axiomKey = Axiom.Input.KeyCodes.O; break; case Sdl.SDLK_p: axiomKey = Axiom.Input.KeyCodes.P; break; case Sdl.SDLK_q: axiomKey = Axiom.Input.KeyCodes.Q; break; case Sdl.SDLK_r: axiomKey = Axiom.Input.KeyCodes.R; break; case Sdl.SDLK_s: axiomKey = Axiom.Input.KeyCodes.S; break; case Sdl.SDLK_t: axiomKey = Axiom.Input.KeyCodes.T; break; case Sdl.SDLK_u: axiomKey = Axiom.Input.KeyCodes.U; break; case Sdl.SDLK_v: axiomKey = Axiom.Input.KeyCodes.V; break; case Sdl.SDLK_w: axiomKey = Axiom.Input.KeyCodes.W; break; case Sdl.SDLK_x: axiomKey = Axiom.Input.KeyCodes.X; break; case Sdl.SDLK_y: axiomKey = Axiom.Input.KeyCodes.Y; break; case Sdl.SDLK_z: axiomKey = Axiom.Input.KeyCodes.Z; break; case Sdl.SDLK_LEFT: axiomKey = Axiom.Input.KeyCodes.Left; break; case Sdl.SDLK_RIGHT: axiomKey = Axiom.Input.KeyCodes.Right; break; case Sdl.SDLK_UP: axiomKey = Axiom.Input.KeyCodes.Up; break; case Sdl.SDLK_DOWN: axiomKey = Axiom.Input.KeyCodes.Down; break; case Sdl.SDLK_ESCAPE: axiomKey = Axiom.Input.KeyCodes.Escape; break; case Sdl.SDLK_F1: axiomKey = Axiom.Input.KeyCodes.F1; break; case Sdl.SDLK_F2: axiomKey = Axiom.Input.KeyCodes.F2; break; case Sdl.SDLK_F3: axiomKey = Axiom.Input.KeyCodes.F3; break; case Sdl.SDLK_F4: axiomKey = Axiom.Input.KeyCodes.F4; break; case Sdl.SDLK_F5: axiomKey = Axiom.Input.KeyCodes.F5; break; case Sdl.SDLK_F6: axiomKey = Axiom.Input.KeyCodes.F6; break; case Sdl.SDLK_F7: axiomKey = Axiom.Input.KeyCodes.F7; break; case Sdl.SDLK_F8: axiomKey = Axiom.Input.KeyCodes.F8; break; case Sdl.SDLK_F9: axiomKey = Axiom.Input.KeyCodes.F9; break; case Sdl.SDLK_F10: axiomKey = Axiom.Input.KeyCodes.F10; break; case Sdl.SDLK_0: axiomKey = Axiom.Input.KeyCodes.D0; break; case Sdl.SDLK_1: axiomKey = Axiom.Input.KeyCodes.D1; break; case Sdl.SDLK_2: axiomKey = Axiom.Input.KeyCodes.D2; break; case Sdl.SDLK_3: axiomKey = Axiom.Input.KeyCodes.D3; break; case Sdl.SDLK_4: axiomKey = Axiom.Input.KeyCodes.D4; break; case Sdl.SDLK_5: axiomKey = Axiom.Input.KeyCodes.D5; break; case Sdl.SDLK_6: axiomKey = Axiom.Input.KeyCodes.D6; break; case Sdl.SDLK_7: axiomKey = Axiom.Input.KeyCodes.D7; break; case Sdl.SDLK_8: axiomKey = Axiom.Input.KeyCodes.D8; break; case Sdl.SDLK_9: axiomKey = Axiom.Input.KeyCodes.D9; break; case Sdl.SDLK_F11: axiomKey = Axiom.Input.KeyCodes.F11; break; case Sdl.SDLK_F12: axiomKey = Axiom.Input.KeyCodes.F12; break; case Sdl.SDLK_RETURN: axiomKey = Axiom.Input.KeyCodes.Enter; break; case Sdl.SDLK_TAB: axiomKey = Axiom.Input.KeyCodes.Tab; break; case Sdl.SDLK_LSHIFT: axiomKey = Axiom.Input.KeyCodes.LeftShift; break; case Sdl.SDLK_RSHIFT: axiomKey = Axiom.Input.KeyCodes.RightShift; break; case Sdl.SDLK_LCTRL: axiomKey = Axiom.Input.KeyCodes.LeftControl; break; case Sdl.SDLK_RCTRL: axiomKey = Axiom.Input.KeyCodes.RightControl; break; case Sdl.SDLK_PERIOD: axiomKey = Axiom.Input.KeyCodes.Period; break; case Sdl.SDLK_COMMA: axiomKey = Axiom.Input.KeyCodes.Comma; break; case Sdl.SDLK_HOME: axiomKey = Axiom.Input.KeyCodes.Home; break; case Sdl.SDLK_PAGEUP: axiomKey = Axiom.Input.KeyCodes.PageUp; break; case Sdl.SDLK_PAGEDOWN: axiomKey = Axiom.Input.KeyCodes.PageDown; break; case Sdl.SDLK_END: axiomKey = Axiom.Input.KeyCodes.End; break; case Sdl.SDLK_SEMICOLON: axiomKey = Axiom.Input.KeyCodes.Semicolon; break; case Sdl.SDLK_MINUS: axiomKey = Axiom.Input.KeyCodes.Subtract; break; case Sdl.SDLK_PLUS: axiomKey = Axiom.Input.KeyCodes.Add; break; case Sdl.SDLK_BACKSPACE: axiomKey = Axiom.Input.KeyCodes.Backspace; break; case Sdl.SDLK_DELETE: axiomKey = Axiom.Input.KeyCodes.Delete; break; case Sdl.SDLK_INSERT: axiomKey = Axiom.Input.KeyCodes.Insert; break; case Sdl.SDLK_LALT: axiomKey = Axiom.Input.KeyCodes.LeftAlt; break; case Sdl.SDLK_RALT: axiomKey = Axiom.Input.KeyCodes.RightAlt; break; case Sdl.SDLK_SPACE: axiomKey = Axiom.Input.KeyCodes.Space; break; case Sdl.SDLK_BACKQUOTE: axiomKey = Axiom.Input.KeyCodes.Tilde; break; case Sdl.SDLK_LEFTBRACKET: axiomKey = Axiom.Input.KeyCodes.OpenBracket; break; case Sdl.SDLK_RIGHTBRACKET: axiomKey = Axiom.Input.KeyCodes.CloseBracket; break; case Sdl.SDLK_EQUALS: axiomKey = KeyCodes.Plus; break; case Sdl.SDLK_SLASH: axiomKey = KeyCodes.QuestionMark; break; case Sdl.SDLK_QUOTE: axiomKey = KeyCodes.Quotes; break; case Sdl.SDLK_BACKSLASH: axiomKey = KeyCodes.Backslash; break; } return(axiomKey); }