add side mouse buttons definitions

This commit is contained in:
@clasher113 2025-02-04 10:34:28 +02:00
parent 93e9fbbe84
commit 2105d56b3b
2 changed files with 27 additions and 10 deletions

View File

@ -40,21 +40,22 @@ static std::unordered_map<std::string, int> mousecodes {
{"left", GLFW_MOUSE_BUTTON_1}, {"left", GLFW_MOUSE_BUTTON_1},
{"right", GLFW_MOUSE_BUTTON_2}, {"right", GLFW_MOUSE_BUTTON_2},
{"middle", GLFW_MOUSE_BUTTON_3}, {"middle", GLFW_MOUSE_BUTTON_3},
{"side1", GLFW_MOUSE_BUTTON_4},
{"side2", GLFW_MOUSE_BUTTON_5},
{"side3", GLFW_MOUSE_BUTTON_6},
{"side4", GLFW_MOUSE_BUTTON_7},
{"side5", GLFW_MOUSE_BUTTON_8},
}; };
static std::unordered_map<int, std::string> keynames {}; static std::unordered_map<int, std::string> keynames {};
static std::unordered_map<int, std::string> buttonsnames{};
std::string input_util::get_name(mousecode code) { std::string input_util::get_name(mousecode code) {
switch (code) { auto found = buttonsnames.find(static_cast<int>(code));
case mousecode::BUTTON_1: if (found == buttonsnames.end()) {
return "left"; return "unknown";
case mousecode::BUTTON_2:
return "right";
case mousecode::BUTTON_3:
return "middle";
default:
return "unknown";
} }
return found->second;
} }
std::string input_util::get_name(keycode code) { std::string input_util::get_name(keycode code) {
@ -91,6 +92,9 @@ void input_util::initialize() {
for (const auto& entry : keycodes) { for (const auto& entry : keycodes) {
keynames[entry.second] = entry.first; keynames[entry.second] = entry.first;
} }
for (const auto& entry : mousecodes) {
buttonsnames[entry.second] = entry.first;
}
} }
keycode input_util::keycode_from(const std::string& name) { keycode input_util::keycode_from(const std::string& name) {
@ -210,6 +214,13 @@ std::string input_util::to_string(mousecode code) {
return "RMB"; return "RMB";
case mousecode::BUTTON_3: case mousecode::BUTTON_3:
return "MMB"; return "MMB";
case mousecode::BUTTON_4:
case mousecode::BUTTON_5:
case mousecode::BUTTON_6:
case mousecode::BUTTON_7:
case mousecode::BUTTON_8:
return "XButton " + std::to_string(static_cast<int>(code) -
static_cast<int>(mousecode::BUTTON_3));
default: default:
return "unknown button"; return "unknown button";
} }

View File

@ -102,11 +102,17 @@ enum class mousecode : int {
BUTTON_1 = 0, // Left mouse button BUTTON_1 = 0, // Left mouse button
BUTTON_2 = 1, // Right mouse button BUTTON_2 = 1, // Right mouse button
BUTTON_3 = 2, // Middle mouse button BUTTON_3 = 2, // Middle mouse button
BUTTON_4 = 3, // Side mouse button 1
BUTTON_5 = 4, // Side mouse button 2
BUTTON_6 = 5, // Side mouse button 3
BUTTON_7 = 6, // Side mouse button 4
BUTTON_8 = 7, // Side mouse button 5
UNKNOWN = -1, UNKNOWN = -1,
}; };
inline mousecode MOUSECODES_ALL[] { inline mousecode MOUSECODES_ALL[] {
mousecode::BUTTON_1, mousecode::BUTTON_2, mousecode::BUTTON_3}; mousecode::BUTTON_1, mousecode::BUTTON_2, mousecode::BUTTON_3, mousecode::BUTTON_4,
mousecode::BUTTON_5, mousecode::BUTTON_6, mousecode::BUTTON_7, mousecode::BUTTON_8 };
namespace input_util { namespace input_util {
void initialize(); void initialize();