mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[hal,wpilib,cmd] Update POVs to use enums (#7978)
This commit is contained in:
@@ -142,14 +142,14 @@ class KeyboardJoystick : public SystemJoystick {
|
||||
struct PovConfig {
|
||||
explicit PovConfig(glass::Storage& storage);
|
||||
|
||||
int& key0;
|
||||
int& key45;
|
||||
int& key90;
|
||||
int& key135;
|
||||
int& key180;
|
||||
int& key225;
|
||||
int& key270;
|
||||
int& key315;
|
||||
int& keyUp;
|
||||
int& keyUpRight;
|
||||
int& keyRight;
|
||||
int& keyDownRight;
|
||||
int& keyDown;
|
||||
int& keyDownLeft;
|
||||
int& keyLeft;
|
||||
int& keyUpLeft;
|
||||
};
|
||||
|
||||
std::vector<std::unique_ptr<glass::Storage>>& m_povStorage;
|
||||
@@ -459,7 +459,9 @@ void GlfwSystemJoystick::GetData(HALJoystickData* data, bool mapGamepad) const {
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wstringop-overflow="
|
||||
#endif // __GNUC__ >= 12
|
||||
data->povs.povs[j] = m_hats[j];
|
||||
// From https://www.glfw.org/docs/latest/group__hat__state.html, GLFW hat
|
||||
// states use the same format
|
||||
data->povs.povs[j] = static_cast<HAL_JoystickPOV>(m_hats[j]);
|
||||
#if __GNUC__ >= 12
|
||||
#pragma GCC diagnostic pop
|
||||
#endif // __GNUC__ >= 12
|
||||
@@ -482,38 +484,38 @@ KeyboardJoystick::AxisConfig::AxisConfig(glass::Storage& storage)
|
||||
}
|
||||
|
||||
KeyboardJoystick::PovConfig::PovConfig(glass::Storage& storage)
|
||||
: key0{storage.GetInt("key0", -1)},
|
||||
key45{storage.GetInt("key45", -1)},
|
||||
key90{storage.GetInt("key90", -1)},
|
||||
key135{storage.GetInt("key135", -1)},
|
||||
key180{storage.GetInt("key180", -1)},
|
||||
key225{storage.GetInt("key225", -1)},
|
||||
key270{storage.GetInt("key270", -1)},
|
||||
key315{storage.GetInt("key315", -1)} {
|
||||
: keyUp{storage.GetInt("keyUp", -1)},
|
||||
keyUpRight{storage.GetInt("keyUpRight", -1)},
|
||||
keyRight{storage.GetInt("keyRight", -1)},
|
||||
keyDownRight{storage.GetInt("keyDownRight", -1)},
|
||||
keyDown{storage.GetInt("keyDown", -1)},
|
||||
keyDownLeft{storage.GetInt("keyDownLeft", -1)},
|
||||
keyLeft{storage.GetInt("keyLeft", -1)},
|
||||
keyUpLeft{storage.GetInt("keyUpLeft", -1)} {
|
||||
// sanity check the key ranges
|
||||
if (key0 < -1 || key0 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key0 = -1;
|
||||
if (keyUp < -1 || keyUp >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyUp = -1;
|
||||
}
|
||||
if (key45 < -1 || key45 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key45 = -1;
|
||||
if (keyUpRight < -1 || keyUpRight >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyUpRight = -1;
|
||||
}
|
||||
if (key90 < -1 || key90 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key90 = -1;
|
||||
if (keyRight < -1 || keyRight >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyRight = -1;
|
||||
}
|
||||
if (key135 < -1 || key135 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key135 = -1;
|
||||
if (keyDownRight < -1 || keyDownRight >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyDownRight = -1;
|
||||
}
|
||||
if (key180 < -1 || key180 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key180 = -1;
|
||||
if (keyDown < -1 || keyDown >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyDown = -1;
|
||||
}
|
||||
if (key225 < -1 || key225 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key225 = -1;
|
||||
if (keyDownLeft < -1 || keyDownLeft >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyDownLeft = -1;
|
||||
}
|
||||
if (key270 < -1 || key270 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key270 = -1;
|
||||
if (keyLeft < -1 || keyLeft >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyLeft = -1;
|
||||
}
|
||||
if (key315 < -1 || key315 >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
key315 = -1;
|
||||
if (keyUpLeft < -1 || keyUpLeft >= IM_ARRAYSIZE(ImGuiIO::KeysDown)) {
|
||||
keyUpLeft = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -670,14 +672,14 @@ void KeyboardJoystick::SettingsDisplay() {
|
||||
wpi::format_to_n_c_str(label, sizeof(label), "POV {}", i);
|
||||
|
||||
if (ImGui::TreeNodeEx(label, ImGuiTreeNodeFlags_DefaultOpen)) {
|
||||
EditKey(" 0 deg", &m_povConfig[i].key0);
|
||||
EditKey(" 45 deg", &m_povConfig[i].key45);
|
||||
EditKey(" 90 deg", &m_povConfig[i].key90);
|
||||
EditKey("135 deg", &m_povConfig[i].key135);
|
||||
EditKey("180 deg", &m_povConfig[i].key180);
|
||||
EditKey("225 deg", &m_povConfig[i].key225);
|
||||
EditKey("270 deg", &m_povConfig[i].key270);
|
||||
EditKey("315 deg", &m_povConfig[i].key315);
|
||||
EditKey(" Up", &m_povConfig[i].keyUp);
|
||||
EditKey(" Up Right", &m_povConfig[i].keyUpRight);
|
||||
EditKey(" Right", &m_povConfig[i].keyRight);
|
||||
EditKey("Down Right", &m_povConfig[i].keyDownRight);
|
||||
EditKey(" Down", &m_povConfig[i].keyDown);
|
||||
EditKey(" Down Left", &m_povConfig[i].keyDownLeft);
|
||||
EditKey(" Left", &m_povConfig[i].keyLeft);
|
||||
EditKey(" Up Left", &m_povConfig[i].keyUpLeft);
|
||||
ImGui::TreePop();
|
||||
}
|
||||
}
|
||||
@@ -758,37 +760,27 @@ void KeyboardJoystick::Update() {
|
||||
}
|
||||
}
|
||||
|
||||
#define SDL_HAT_CENTERED 0x00u
|
||||
#define SDL_HAT_UP 0x01u
|
||||
#define SDL_HAT_RIGHT 0x02u
|
||||
#define SDL_HAT_DOWN 0x04u
|
||||
#define SDL_HAT_LEFT 0x08u
|
||||
#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT | SDL_HAT_UP)
|
||||
#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT | SDL_HAT_DOWN)
|
||||
#define SDL_HAT_LEFTUP (SDL_HAT_LEFT | SDL_HAT_UP)
|
||||
#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT | SDL_HAT_DOWN)
|
||||
|
||||
// povs
|
||||
for (int i = 0; i < m_data.povs.count; ++i) {
|
||||
auto& config = m_povConfig[i];
|
||||
auto& povValue = m_data.povs.povs[i];
|
||||
povValue = 0;
|
||||
if (IsKeyDown(io, config.key0)) {
|
||||
povValue = SDL_HAT_UP;
|
||||
} else if (IsKeyDown(io, config.key45)) {
|
||||
povValue = SDL_HAT_RIGHTUP;
|
||||
} else if (IsKeyDown(io, config.key90)) {
|
||||
povValue = SDL_HAT_RIGHT;
|
||||
} else if (IsKeyDown(io, config.key135)) {
|
||||
povValue = SDL_HAT_RIGHTDOWN;
|
||||
} else if (IsKeyDown(io, config.key180)) {
|
||||
povValue = SDL_HAT_DOWN;
|
||||
} else if (IsKeyDown(io, config.key225)) {
|
||||
povValue = SDL_HAT_LEFTDOWN;
|
||||
} else if (IsKeyDown(io, config.key270)) {
|
||||
povValue = SDL_HAT_LEFT;
|
||||
} else if (IsKeyDown(io, config.key315)) {
|
||||
povValue = SDL_HAT_LEFTUP;
|
||||
povValue = HAL_JoystickPOV_kCentered;
|
||||
if (IsKeyDown(io, config.keyUp)) {
|
||||
povValue = HAL_JoystickPOV_kUp;
|
||||
} else if (IsKeyDown(io, config.keyUpRight)) {
|
||||
povValue = HAL_JoystickPOV_kRightUp;
|
||||
} else if (IsKeyDown(io, config.keyRight)) {
|
||||
povValue = HAL_JoystickPOV_kRight;
|
||||
} else if (IsKeyDown(io, config.keyDownRight)) {
|
||||
povValue = HAL_JoystickPOV_kRightDown;
|
||||
} else if (IsKeyDown(io, config.keyDown)) {
|
||||
povValue = HAL_JoystickPOV_kDown;
|
||||
} else if (IsKeyDown(io, config.keyDownLeft)) {
|
||||
povValue = HAL_JoystickPOV_kLeftDown;
|
||||
} else if (IsKeyDown(io, config.keyLeft)) {
|
||||
povValue = HAL_JoystickPOV_kLeft;
|
||||
} else if (IsKeyDown(io, config.keyUpLeft)) {
|
||||
povValue = HAL_JoystickPOV_kLeftUp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -821,29 +813,29 @@ void KeyboardJoystick::ClearKey(int key) {
|
||||
}
|
||||
}
|
||||
for (auto&& config : m_povConfig) {
|
||||
if (config.key0 == key) {
|
||||
config.key0 = -1;
|
||||
if (config.keyUp == key) {
|
||||
config.keyUp = -1;
|
||||
}
|
||||
if (config.key45 == key) {
|
||||
config.key45 = -1;
|
||||
if (config.keyUpRight == key) {
|
||||
config.keyUpRight = -1;
|
||||
}
|
||||
if (config.key90 == key) {
|
||||
config.key90 = -1;
|
||||
if (config.keyRight == key) {
|
||||
config.keyRight = -1;
|
||||
}
|
||||
if (config.key135 == key) {
|
||||
config.key135 = -1;
|
||||
if (config.keyDownRight == key) {
|
||||
config.keyDownRight = -1;
|
||||
}
|
||||
if (config.key180 == key) {
|
||||
config.key180 = -1;
|
||||
if (config.keyDown == key) {
|
||||
config.keyDown = -1;
|
||||
}
|
||||
if (config.key225 == key) {
|
||||
config.key225 = -1;
|
||||
if (config.keyDownLeft == key) {
|
||||
config.keyDownLeft = -1;
|
||||
}
|
||||
if (config.key270 == key) {
|
||||
config.key270 = -1;
|
||||
if (config.keyLeft == key) {
|
||||
config.keyLeft = -1;
|
||||
}
|
||||
if (config.key315 == key) {
|
||||
config.key315 = -1;
|
||||
if (config.keyUpLeft == key) {
|
||||
config.keyUpLeft = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -879,14 +871,14 @@ GlfwKeyboardJoystick::GlfwKeyboardJoystick(glass::Storage& storage, int index)
|
||||
m_povCount = 1;
|
||||
m_povStorage.emplace_back(std::make_unique<glass::Storage>());
|
||||
m_povConfig.emplace_back(*m_povStorage.back());
|
||||
m_povConfig[0].key0 = GLFW_KEY_KP_8;
|
||||
m_povConfig[0].key45 = GLFW_KEY_KP_9;
|
||||
m_povConfig[0].key90 = GLFW_KEY_KP_6;
|
||||
m_povConfig[0].key135 = GLFW_KEY_KP_3;
|
||||
m_povConfig[0].key180 = GLFW_KEY_KP_2;
|
||||
m_povConfig[0].key225 = GLFW_KEY_KP_1;
|
||||
m_povConfig[0].key270 = GLFW_KEY_KP_4;
|
||||
m_povConfig[0].key315 = GLFW_KEY_KP_7;
|
||||
m_povConfig[0].keyUp = GLFW_KEY_KP_8;
|
||||
m_povConfig[0].keyUpRight = GLFW_KEY_KP_9;
|
||||
m_povConfig[0].keyRight = GLFW_KEY_KP_6;
|
||||
m_povConfig[0].keyDownRight = GLFW_KEY_KP_3;
|
||||
m_povConfig[0].keyDown = GLFW_KEY_KP_2;
|
||||
m_povConfig[0].keyDownLeft = GLFW_KEY_KP_1;
|
||||
m_povConfig[0].keyLeft = GLFW_KEY_KP_4;
|
||||
m_povConfig[0].keyUpLeft = GLFW_KEY_KP_7;
|
||||
}
|
||||
} else if (index == 1) {
|
||||
if (m_axisCount == -1 && m_axisStorage.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user