mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-23 20:09:46 +03:00
Big leap for key rebinding and crossplatform-ness.
This commit is contained in:
@@ -8,188 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(USE_SDL)
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
enum
|
||||
{
|
||||
AKEYCODE_UNKNOWN = 0,
|
||||
AKEYCODE_MENU,
|
||||
AKEYCODE_SEARCH,
|
||||
AKEYCODE_BACK,
|
||||
AKEYCODE_BUTTON_X,
|
||||
AKEYCODE_BUTTON_Y,
|
||||
AKEYCODE_DPAD_UP,
|
||||
AKEYCODE_DPAD_DOWN,
|
||||
AKEYCODE_DPAD_LEFT,
|
||||
AKEYCODE_DPAD_RIGHT,
|
||||
AKEYCODE_DPAD_CENTER,
|
||||
AKEYCODE_BUTTON_L1,
|
||||
AKEYCODE_BUTTON_R1,
|
||||
AKEYCODE_SHIFT_LEFT,
|
||||
AKEYCODE_SHIFT_RIGHT,
|
||||
AKEYCODE_DEL,
|
||||
AKEYCODE_FORWARD_DEL,
|
||||
AKEYCODE_COMMA,
|
||||
AKEYCODE_PERIOD,
|
||||
AKEYCODE_PLUS,
|
||||
AKEYCODE_MINUS,
|
||||
AKEYCODE_SEMICOLON,
|
||||
AKEYCODE_SLASH,
|
||||
AKEYCODE_GRAVE,
|
||||
AKEYCODE_LEFT_BRACKET,
|
||||
AKEYCODE_BACKSLASH,
|
||||
AKEYCODE_RIGHT_BRACKET,
|
||||
AKEYCODE_APOSTROPHE,
|
||||
AKEYCODE_SPACE,
|
||||
AKEYCODE_0,
|
||||
AKEYCODE_1,
|
||||
AKEYCODE_2,
|
||||
AKEYCODE_3,
|
||||
AKEYCODE_4,
|
||||
AKEYCODE_5,
|
||||
AKEYCODE_6,
|
||||
AKEYCODE_7,
|
||||
AKEYCODE_8,
|
||||
AKEYCODE_9,
|
||||
AKEYCODE_A,
|
||||
AKEYCODE_Q,
|
||||
AKEYCODE_T,
|
||||
AKEYCODE_Z,
|
||||
AKEYCODE_F3,
|
||||
AKEYCODE_F4,
|
||||
AKEYCODE_ARROW_LEFT,
|
||||
AKEYCODE_ARROW_RIGHT,
|
||||
AKEYCODE_ENTER,
|
||||
};
|
||||
|
||||
static inline int translate_sdl_key_to_mcpe(int key) {
|
||||
switch (key) {
|
||||
case SDLK_ESCAPE: return AKEYCODE_MENU;
|
||||
case SDLK_F3: return AKEYCODE_F3;
|
||||
case SDLK_F4: return AKEYCODE_F4;
|
||||
case SDLK_F5: return AKEYCODE_SEARCH;
|
||||
case SDLK_y: return AKEYCODE_BACK;
|
||||
case SDLK_u: return AKEYCODE_BUTTON_X;
|
||||
case SDLK_e: return AKEYCODE_BUTTON_Y;
|
||||
case SDLK_w: return AKEYCODE_DPAD_UP;
|
||||
case SDLK_s: return AKEYCODE_DPAD_DOWN;
|
||||
case SDLK_a: return AKEYCODE_DPAD_LEFT;
|
||||
case SDLK_d: return AKEYCODE_DPAD_RIGHT;
|
||||
case SDLK_SPACE: return AKEYCODE_DPAD_CENTER;
|
||||
case SDLK_x: return AKEYCODE_BUTTON_L1;
|
||||
case SDLK_c: return AKEYCODE_BUTTON_R1;
|
||||
case SDLK_LSHIFT: return AKEYCODE_SHIFT_LEFT;
|
||||
case SDLK_RSHIFT: return AKEYCODE_SHIFT_RIGHT;
|
||||
case SDLK_BACKSPACE: return AKEYCODE_DEL;
|
||||
case SDLK_DELETE: return AKEYCODE_FORWARD_DEL;
|
||||
case SDLK_COMMA: return AKEYCODE_COMMA;
|
||||
case SDLK_PERIOD: return AKEYCODE_PERIOD;
|
||||
case SDLK_PLUS: return AKEYCODE_PLUS;
|
||||
case SDLK_MINUS: return AKEYCODE_MINUS;
|
||||
case SDLK_SEMICOLON: return AKEYCODE_SEMICOLON;
|
||||
case SDLK_SLASH: return AKEYCODE_SLASH;
|
||||
case SDLK_BACKQUOTE: return AKEYCODE_GRAVE;
|
||||
case SDLK_LEFTBRACKET: return AKEYCODE_LEFT_BRACKET;
|
||||
case SDLK_BACKSLASH: return AKEYCODE_BACKSLASH;
|
||||
case SDLK_RIGHTBRACKET: return AKEYCODE_RIGHT_BRACKET;
|
||||
case SDLK_QUOTE: return AKEYCODE_APOSTROPHE;
|
||||
case SDLK_1: return AKEYCODE_1;
|
||||
case SDLK_2: return AKEYCODE_2;
|
||||
case SDLK_3: return AKEYCODE_3;
|
||||
case SDLK_4: return AKEYCODE_4;
|
||||
case SDLK_5: return AKEYCODE_5;
|
||||
case SDLK_6: return AKEYCODE_6;
|
||||
case SDLK_7: return AKEYCODE_7;
|
||||
case SDLK_8: return AKEYCODE_8;
|
||||
case SDLK_0: return AKEYCODE_0;
|
||||
case SDLK_9: return AKEYCODE_9;
|
||||
case SDLK_q: return AKEYCODE_Q;
|
||||
case SDLK_t: return AKEYCODE_T;
|
||||
case SDLK_z: return AKEYCODE_Z;
|
||||
case SDLK_LEFT: return AKEYCODE_ARROW_LEFT;
|
||||
case SDLK_RIGHT: return AKEYCODE_ARROW_RIGHT;
|
||||
case SDLK_RETURN: return AKEYCODE_ENTER;
|
||||
default: return AKEYCODE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
||||
#define NOMINMAX
|
||||
#ifdef _XBOX
|
||||
#include <xtl.h>
|
||||
#else
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
//fake keycodes for windows
|
||||
AKEYCODE_UNKNOWN = 0,
|
||||
|
||||
AKEYCODE_MENU = VK_ESCAPE, // pause screen
|
||||
AKEYCODE_SEARCH = VK_F5, // toggle third person mode
|
||||
|
||||
AKEYCODE_BACK = 'Y', // used to go left 1 slot
|
||||
AKEYCODE_BUTTON_X = 'U', // used to go right 1 slot
|
||||
AKEYCODE_BUTTON_Y = 'E', // show inventory
|
||||
|
||||
AKEYCODE_DPAD_UP = 'W',
|
||||
AKEYCODE_DPAD_DOWN = 'S',
|
||||
AKEYCODE_DPAD_LEFT = 'A',
|
||||
AKEYCODE_DPAD_RIGHT = 'D',
|
||||
AKEYCODE_DPAD_CENTER = ' ',
|
||||
|
||||
AKEYCODE_BUTTON_L1 = 'X',
|
||||
AKEYCODE_BUTTON_R1 = 'C',
|
||||
|
||||
AKEYCODE_SHIFT_LEFT = VK_SHIFT,
|
||||
AKEYCODE_SHIFT_RIGHT = VK_SHIFT,
|
||||
|
||||
AKEYCODE_DEL = VK_BACK,
|
||||
AKEYCODE_FORWARD_DEL = VK_DELETE,
|
||||
|
||||
AKEYCODE_COMMA = VK_OEM_COMMA, // ',<'
|
||||
AKEYCODE_PERIOD = VK_OEM_PERIOD,// '.>'
|
||||
AKEYCODE_PLUS = VK_OEM_PLUS, // '=+'
|
||||
AKEYCODE_MINUS = VK_OEM_MINUS, // '-_'
|
||||
AKEYCODE_SEMICOLON = VK_OEM_1, // ';:'
|
||||
AKEYCODE_SLASH = VK_OEM_2, // '/?'
|
||||
AKEYCODE_GRAVE = VK_OEM_3, // '`~'
|
||||
AKEYCODE_LEFT_BRACKET = VK_OEM_4, // '[{'
|
||||
AKEYCODE_BACKSLASH = VK_OEM_5, // '\|'
|
||||
AKEYCODE_RIGHT_BRACKET = VK_OEM_6,// ']}'
|
||||
AKEYCODE_APOSTROPHE = VK_OEM_7, // ''"'
|
||||
AKEYCODE_SPACE = VK_SPACE,
|
||||
|
||||
AKEYCODE_F1 = VK_F1,
|
||||
AKEYCODE_F3 = VK_F3,
|
||||
AKEYCODE_F4 = VK_F4,
|
||||
|
||||
AKEYCODE_0 = '0',
|
||||
AKEYCODE_1 = '1',
|
||||
//...
|
||||
AKEYCODE_9 = '9',
|
||||
|
||||
AKEYCODE_ENTER = VK_RETURN,
|
||||
|
||||
// note: You have to add these here instead of using the
|
||||
// characters themselves, otherwise android won't pick it up
|
||||
AKEYCODE_A = 'A',
|
||||
AKEYCODE_Q = 'Q',
|
||||
AKEYCODE_T = 'T',
|
||||
AKEYCODE_Z = 'Z',
|
||||
|
||||
};
|
||||
|
||||
// this sucks
|
||||
#define AKEYCODE_ARROW_LEFT VK_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT VK_RIGHT
|
||||
|
||||
#elif defined(PLATFORM_ANDROID)
|
||||
#ifdef PLATFORM_ANDROID
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -489,8 +308,4 @@ enum
|
||||
#define AKEYCODE_ARROW_LEFT AKEYCODE_DPAD_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT AKEYCODE_DPAD_RIGHT
|
||||
|
||||
#else
|
||||
|
||||
#error "Provide key codes for your platform!"
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user