* Also fix support for SDL again...

This commit is contained in:
iProgramInCpp
2023-08-22 18:23:31 +03:00
parent d3ef629471
commit bf5114e684
11 changed files with 323 additions and 45 deletions

View File

@@ -8,6 +8,24 @@
#pragma once
#ifdef USE_SDL
#include <SDL2/SDL.h>
// because SDL sucks and makes no sense and sets bit 1<<30 for some keycodes for some godamn reason
enum eSDLVirtualKeys
{
#define CODE(x) SDLVK_ ## x,
#include "SDLKeyCodes.h"
#undef CODE
};
#endif
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#endif
#ifdef PLATFORM_ANDROID
enum

244
compat/SDLKeyCodes.h Normal file
View File

@@ -0,0 +1,244 @@
CODE(UNKNOWN)
CODE(RETURN)
CODE(ESCAPE)
CODE(BACKSPACE)
CODE(TAB)
CODE(SPACE)
CODE(EXCLAIM)
CODE(QUOTEDBL)
CODE(HASH)
CODE(PERCENT)
CODE(DOLLAR)
CODE(AMPERSAND)
CODE(QUOTE)
CODE(LEFTPAREN)
CODE(RIGHTPAREN)
CODE(ASTERISK)
CODE(PLUS)
CODE(COMMA)
CODE(MINUS)
CODE(PERIOD)
CODE(SLASH)
CODE(0)
CODE(1)
CODE(2)
CODE(3)
CODE(4)
CODE(5)
CODE(6)
CODE(7)
CODE(8)
CODE(9)
CODE(COLON)
CODE(SEMICOLON)
CODE(LESS)
CODE(EQUALS)
CODE(GREATER)
CODE(QUESTION)
CODE(AT)
CODE(LEFTBRACKET)
CODE(BACKSLASH)
CODE(RIGHTBRACKET)
CODE(CARET)
CODE(UNDERSCORE)
CODE(BACKQUOTE)
CODE(a)
CODE(b)
CODE(c)
CODE(d)
CODE(e)
CODE(f)
CODE(g)
CODE(h)
CODE(i)
CODE(j)
CODE(k)
CODE(l)
CODE(m)
CODE(n)
CODE(o)
CODE(p)
CODE(q)
CODE(r)
CODE(s)
CODE(t)
CODE(u)
CODE(v)
CODE(w)
CODE(x)
CODE(y)
CODE(z)
CODE(CAPSLOCK)
CODE(F1)
CODE(F2)
CODE(F3)
CODE(F4)
CODE(F5)
CODE(F6)
CODE(F7)
CODE(F8)
CODE(F9)
CODE(F10)
CODE(F11)
CODE(F12)
CODE(PRINTSCREEN)
CODE(SCROLLLOCK)
CODE(PAUSE)
CODE(INSERT)
CODE(HOME)
CODE(PAGEUP)
CODE(DELETE)
CODE(END)
CODE(PAGEDOWN)
CODE(RIGHT)
CODE(LEFT)
CODE(DOWN)
CODE(UP)
CODE(NUMLOCKCLEAR)
CODE(KP_DIVIDE)
CODE(KP_MULTIPLY)
CODE(KP_MINUS)
CODE(KP_PLUS)
CODE(KP_ENTER)
CODE(KP_1)
CODE(KP_2)
CODE(KP_3)
CODE(KP_4)
CODE(KP_5)
CODE(KP_6)
CODE(KP_7)
CODE(KP_8)
CODE(KP_9)
CODE(KP_0)
CODE(KP_PERIOD)
CODE(APPLICATION)
CODE(POWER)
CODE(KP_EQUALS)
CODE(F13)
CODE(F14)
CODE(F15)
CODE(F16)
CODE(F17)
CODE(F18)
CODE(F19)
CODE(F20)
CODE(F21)
CODE(F22)
CODE(F23)
CODE(F24)
CODE(EXECUTE)
CODE(HELP)
CODE(MENU)
CODE(SELECT)
CODE(STOP)
CODE(AGAIN)
CODE(UNDO)
CODE(CUT)
CODE(COPY)
CODE(PASTE)
CODE(FIND)
CODE(MUTE)
CODE(VOLUMEUP)
CODE(VOLUMEDOWN)
CODE(KP_COMMA)
CODE(KP_EQUALSAS400)
CODE(ALTERASE)
CODE(SYSREQ)
CODE(CANCEL)
CODE(CLEAR)
CODE(PRIOR)
CODE(RETURN2)
CODE(SEPARATOR)
CODE(OUT)
CODE(OPER)
CODE(CLEARAGAIN)
CODE(CRSEL)
CODE(EXSEL)
CODE(KP_00)
CODE(KP_000)
CODE(THOUSANDSSEPARATOR)
CODE(DECIMALSEPARATOR)
CODE(CURRENCYUNIT)
CODE(CURRENCYSUBUNIT)
CODE(KP_LEFTPAREN)
CODE(KP_RIGHTPAREN)
CODE(KP_LEFTBRACE)
CODE(KP_RIGHTBRACE)
CODE(KP_TAB)
CODE(KP_BACKSPACE)
CODE(KP_A)
CODE(KP_B)
CODE(KP_C)
CODE(KP_D)
CODE(KP_E)
CODE(KP_F)
CODE(KP_XOR)
CODE(KP_POWER)
CODE(KP_PERCENT)
CODE(KP_LESS)
CODE(KP_GREATER)
CODE(KP_AMPERSAND)
CODE(KP_DBLAMPERSAND)
CODE(KP_VERTICALBAR)
CODE(KP_DBLVERTICALBAR)
CODE(KP_COLON)
CODE(KP_HASH)
CODE(KP_SPACE)
CODE(KP_AT)
CODE(KP_EXCLAM)
CODE(KP_MEMSTORE)
CODE(KP_MEMRECALL)
CODE(KP_MEMCLEAR)
CODE(KP_MEMADD)
CODE(KP_MEMSUBTRACT)
CODE(KP_MEMMULTIPLY)
CODE(KP_MEMDIVIDE)
CODE(KP_PLUSMINUS)
CODE(KP_CLEAR)
CODE(KP_CLEARENTRY)
CODE(KP_BINARY)
CODE(KP_OCTAL)
CODE(KP_DECIMAL)
CODE(KP_HEXADECIMAL)
CODE(LCTRL)
CODE(LSHIFT)
CODE(LALT)
CODE(LGUI)
CODE(RCTRL)
CODE(RSHIFT)
CODE(RALT)
CODE(RGUI)
CODE(MODE)
CODE(AUDIONEXT)
CODE(AUDIOPREV)
CODE(AUDIOSTOP)
CODE(AUDIOPLAY)
CODE(AUDIOMUTE)
CODE(MEDIASELECT)
CODE(WWW)
CODE(MAIL)
CODE(CALCULATOR)
CODE(COMPUTER)
CODE(AC_SEARCH)
CODE(AC_HOME)
CODE(AC_BACK)
CODE(AC_FORWARD)
CODE(AC_STOP)
CODE(AC_REFRESH)
CODE(AC_BOOKMARKS)
CODE(BRIGHTNESSDOWN)
CODE(BRIGHTNESSUP)
CODE(DISPLAYSWITCH)
CODE(KBDILLUMTOGGLE)
CODE(KBDILLUMDOWN)
CODE(KBDILLUMUP)
CODE(EJECT)
CODE(SLEEP)
CODE(APP1)
CODE(APP2)
CODE(AUDIOREWIND)
CODE(AUDIOFASTFORWARD)
CODE(SOFTLEFT)
CODE(SOFTRIGHT)
CODE(CALL)
CODE(ENDCALL)

View File

@@ -63,6 +63,16 @@ static void teardown()
}
}
static int TranslateSDLKeyCodeToVirtual(int sdlCode)
{
switch (sdlCode) {
#define CODE(x) case SDLK_ ## x: return SDLVK_ ## x;
#include "compat/SDLKeyCodes.h"
#undef CODE
}
return SDLVK_UNKNOWN;
}
// Resize From JS
#ifdef __EMSCRIPTEN__
extern "C" void resize_from_js(int new_width, int new_height)
@@ -84,6 +94,9 @@ static void handle_events()
case SDL_KEYUP:
{
// TODO: Shouldn't we be handling this in Keyboard?
// We really should. We didn't add the f2 key anywhere -iProgramInCpp
/*
if (event.key.keysym.sym == SDLK_F2)
{
if (event.key.state == SDL_PRESSED && g_pAppPlatform != nullptr)
@@ -92,7 +105,9 @@ static void handle_events()
}
break;
}
Keyboard::feed(AppPlatform_sdlbase::GetKeyState(event), translate_sdl_key_to_mcpe(event.key.keysym.sym));
*/
Keyboard::feed(AppPlatform_sdlbase::GetKeyState(event), TranslateSDLKeyCodeToVirtual(event.key.keysym.sym));
if (event.key.keysym.sym == SDLK_LSHIFT || event.key.keysym.sym == SDLK_RSHIFT)
{
g_pAppPlatform->setShiftPressed(event.key.state == SDL_PRESSED, event.key.keysym.sym == SDLK_LSHIFT);

View File

@@ -10,7 +10,7 @@
#include <WindowsX.h>
#include "compat/GL.hpp"
#include "compat/AKeyCodes.hpp"
#include "compat/KeyCodes.hpp"
#include "App.hpp"
#include "AppPlatform_windows.hpp"

View File

@@ -27,7 +27,6 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(MC_ROOT)\compat\AKeyCodes.hpp" />
<ClInclude Include="$(MC_ROOT)\GameMods.hpp" />
<ClInclude Include="$(MC_ROOT)\platforms\openal\SoundSystemAL.hpp" />
<ClInclude Include="$(MC_ROOT)\platforms\PlatformDefinitions.hpp" />
@@ -382,6 +381,7 @@
<ClInclude Include="$(MC_ROOT)\thirdparty\zlib\zconf.h" />
<ClInclude Include="$(MC_ROOT)\thirdparty\zlib\zlib.h" />
<ClInclude Include="$(MC_ROOT)\thirdparty\zlib\zutil.h" />
<ClInclude Include="..\..\..\compat\KeyCodes.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(MC_ROOT)\compat\GLExt.cpp" />

View File

@@ -1167,7 +1167,7 @@
<ClInclude Include="$(MC_ROOT)\platforms\windows\AppPlatform_windows.hpp">
<Filter>source\platforms\windows</Filter>
</ClInclude>
<ClInclude Include="$(MC_ROOT)\compat\AKeyCodes.hpp">
<ClInclude Include="..\..\..\compat\KeyCodes.hpp">
<Filter>thirdparty</Filter>
</ClInclude>
</ItemGroup>

View File

@@ -417,7 +417,7 @@ void Gui::handleKeyPressed(int keyCode)
#elif defined(_WIN32)
#define AKEYCODE_SLASH VK_OEM_2
#elif defined(USE_SDL)
#define AKEYCODE_SLASH SDLK_SLASH
#define AKEYCODE_SLASH SDLVK_SLASH
#else
#error "Define the slash key here!"
#endif

View File

@@ -117,10 +117,10 @@ void TextInputBox::keyPressed(Minecraft* minecraft, int key)
#define AKEYCODE_ARROW_RIGHT VK_RIGHT
#define AKEYCODE_DEL VK_BACK
#elif defined(USE_SDL)
#define AKEYCODE_FORWARD_DEL SDLK_DELETE
#define AKEYCODE_ARROW_LEFT SDLK_LEFT
#define AKEYCODE_ARROW_RIGHT SDLK_RIGHT
#define AKEYCODE_DEL SDLK_BACKSPACE
#define AKEYCODE_FORWARD_DEL SDLVK_DELETE
#define AKEYCODE_ARROW_LEFT SDLVK_LEFT
#define AKEYCODE_ARROW_RIGHT SDLVK_RIGHT
#define AKEYCODE_DEL SDLVK_BACKSPACE
#endif
switch (key)

View File

@@ -14,7 +14,7 @@
#include <vector>
#include <cstdint>
#define KEYBOARD_STATES_SIZE 256
#define KEYBOARD_STATES_SIZE (256)
struct KeyboardAction;

View File

@@ -8,7 +8,7 @@
#include "Options.hpp"
#include "Util.hpp"
#include "compat/AKeyCodes.hpp"
#include "compat/KeyCodes.hpp"
#include "Minecraft.hpp"
Options::Option
@@ -102,39 +102,40 @@ void Options::initDefaultValues()
#define KM(idx,code) m_keyMappings[idx].value = code
#ifdef USE_SDL
KM(KM_FORWARD, SDLK_w);
KM(KM_LEFT, SDLK_a);
KM(KM_BACKWARD, SDLK_s);
KM(KM_RIGHT, SDLK_d);
KM(KM_JUMP, SDLK_SPACE);
KM(KM_DESTROY, SDLK_x);
KM(KM_PLACE, SDLK_c);
KM(KM_MENU_NEXT, SDLK_DPAD_DOWN);
KM(KM_MENU_PREVIOUS, SDLK_DPAD_UP);
KM(KM_MENU_OK, SDLK_ENTER);
KM(KM_MENU_CANCEL, SDLK_ESCAPE);
KM(KM_DROP, SDLK_q);
KM(KM_CHAT, SDLK_t);
KM(KM_FOG, SDLK_f);
KM(KM_SNEAK, SDLK_SHIFT_LEFT);
KM(KM_SLOT_1, SDLK_1);
KM(KM_SLOT_2, SDLK_2);
KM(KM_SLOT_3, SDLK_3);
KM(KM_SLOT_4, SDLK_4);
KM(KM_SLOT_5, SDLK_5);
KM(KM_SLOT_6, SDLK_6);
KM(KM_SLOT_7, SDLK_7);
KM(KM_SLOT_8, SDLK_8);
KM(KM_SLOT_9, SDLK_9);
KM(KM_TOGGLEGUI, SDLK_F1);
KM(KM_SCREENSHOT, SDLK_F2);
KM(KM_TOGGLEDEBUG, SDLK_F3);
KM(KM_TOGGLEAO, SDLK_F4);
KM(KM_TOGGLE3RD, SDLK_F5);
KM(KM_SLOT_L, SDLK_y);
KM(KM_SLOT_R, SDLK_u);
KM(KM_FLY_UP, SDLK_c);
KM(KM_FLY_DOWN, SDLK_x);
KM(KM_FORWARD, SDLVK_w);
KM(KM_LEFT, SDLVK_a);
KM(KM_BACKWARD, SDLVK_s);
KM(KM_RIGHT, SDLVK_d);
KM(KM_JUMP, SDLVK_SPACE);
KM(KM_DESTROY, SDLVK_x);
KM(KM_PLACE, SDLVK_c);
KM(KM_MENU_NEXT, SDLVK_DOWN);
KM(KM_MENU_PREVIOUS, SDLVK_UP);
KM(KM_MENU_OK, SDLVK_RETURN);
KM(KM_MENU_CANCEL, SDLVK_ESCAPE);
KM(KM_DROP, SDLVK_q);
KM(KM_CHAT, SDLVK_t);
KM(KM_FOG, SDLVK_f);
KM(KM_INVENTORY, SDLVK_e);
KM(KM_SNEAK, SDLVK_LSHIFT);
KM(KM_SLOT_1, SDLVK_1);
KM(KM_SLOT_2, SDLVK_2);
KM(KM_SLOT_3, SDLVK_3);
KM(KM_SLOT_4, SDLVK_4);
KM(KM_SLOT_5, SDLVK_5);
KM(KM_SLOT_6, SDLVK_6);
KM(KM_SLOT_7, SDLVK_7);
KM(KM_SLOT_8, SDLVK_8);
KM(KM_SLOT_9, SDLVK_9);
KM(KM_TOGGLEGUI, SDLVK_F1);
KM(KM_SCREENSHOT, SDLVK_F2);
KM(KM_TOGGLEDEBUG, SDLVK_F3);
KM(KM_TOGGLEAO, SDLVK_F4);
KM(KM_TOGGLE3RD, SDLVK_F5);
KM(KM_SLOT_L, SDLVK_y);
KM(KM_SLOT_R, SDLVK_u);
KM(KM_FLY_UP, SDLVK_c);
KM(KM_FLY_DOWN, SDLVK_x);
#endif
#ifdef PLATFORM_ANDROID
// -- Original xperia play controls

View File

@@ -80,7 +80,7 @@ void closedir(DIR* dir);
#endif
#include "compat/AKeyCodes.hpp"
#include "compat/KeyCodes.hpp"
// options:
#include "GameMods.hpp"