Enforce parity with Linux api.

This commit is contained in:
2025-05-27 10:54:07 -05:00
parent bbaf07e76e
commit ce5dbc98de
2 changed files with 22 additions and 20 deletions

View File

@@ -18,6 +18,8 @@ int main() {
return -1; return -1;
} }
int hwid = jstick::Connect(0);
while (jstick::JoystickDetected()) { while (jstick::JoystickDetected()) {
jstick::ReadEventLoop(); jstick::ReadEventLoop();

View File

@@ -1,15 +1,8 @@
#include <jstick.hpp> #include <jstick.hpp>
#ifdef UNIX
#include <linux/joystick.h> #include <linux/joystick.h>
#include <unistd.h> #include <unistd.h>
#include <bits/fs_fwd.h> #include <bits/fs_fwd.h>
#endif
#ifdef WIN32
//#include <joystickapi.h>
#endif
#include <cstddef> #include <cstddef>
#include <cstdio> #include <cstdio>
#include <fcntl.h> #include <fcntl.h>
@@ -55,6 +48,9 @@ std::string js_device_file(int hwid) {
return std::format("/dev/input/js{}", hwid); return std::format("/dev/input/js{}", hwid);
} }
bool jstick::Initialize() { return true;}
bool jstick::JoystickDetected(int jsHandle) { bool jstick::JoystickDetected(int jsHandle) {
return std::filesystem::exists(js_device_file(jsHandle)); return std::filesystem::exists(js_device_file(jsHandle));
} }
@@ -215,37 +211,37 @@ void jstick::ReadEventLoop() {
} }
} }
bool jstick::IsButtonDown(const XBoxButton &btn) { bool jstick::IsButtonDown(const XBoxButton &btn, int hwid) {
return btn_state[(uint8_t)btn]; return btn_state[(uint8_t)btn];
} }
Vector2 jstick::GetLeftThumbstickAxis(float deadzone) { return l_thumb;} Vector2 jstick::GetLeftThumbstickAxis(float deadzone, int hwid) { return l_thumb;}
Vector2 jstick::GetRightThumbstickAxis(float deadzone) { return r_thumb; } Vector2 jstick::GetRightThumbstickAxis(float deadzone, int hwid) { return r_thumb; }
Vector2 jstick::GetDPadAxis(float deadzone) { return dpad; } Vector2 jstick::GetDPadAxis(float deadzone, int hwid) { return dpad; }
short jstick::GetRightTrigger() { return r_trigger;} short jstick::GetRightTrigger(int hwid) { return r_trigger;}
short jstick::GetLeftTrigger() { return l_trigger; } short jstick::GetLeftTrigger(int hwid) { return l_trigger; }
constexpr float short_range = 32768.f; constexpr float short_range = 32768.f;
Vector2 jstick::GetLeftThumbstickAxisNormalized(float deadzone) { Vector2 jstick::GetLeftThumbstickAxisNormalized(float deadzone, int hwid) {
return l_thumb / short_range; return GetLeftThumbstickAxis(deadzone, hwid) / short_range;
} }
Vector2 jstick::GetRightThumbstickAxisNormalized(float deadzone) { Vector2 jstick::GetRightThumbstickAxisNormalized(float deadzone, int hwid) {
return r_thumb / short_range; return GetRightThumbstickAxis(deadzone, hwid) / short_range;
} }
Vector2 jstick::GetDPadAxisNormalized(float deadzone) { Vector2 jstick::GetDPadAxisNormalized(float deadzone, int hwid) {
return dpad / short_range; return dpad / short_range;
} }
float jstick::GetLeftTriggerNormalized() { float jstick::GetLeftTriggerNormalized(int hwid) {
return l_trigger / short_range; return l_trigger / short_range;
} }
float jstick::GetRightTriggerNormalized() { float jstick::GetRightTriggerNormalized(int hwid) {
return r_trigger / short_range; return r_trigger / short_range;
} }
@@ -256,3 +252,7 @@ jstick::ControllerType jstick::GetDeviceTypeFromName(const std::string &name) {
return ControllerType::Unknown; return ControllerType::Unknown;
} }
void jstick::Vibrate(int LV, int RV, int hwid) {
}