From 85e15a0955f831e1fd5af2b814bd147888e87eb6 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 12 Jun 2025 21:04:43 +0200 Subject: [PATCH] =?UTF-8?q?switch=20support:=20it=20somewhat=20works=20?= =?UTF-8?q?=E2=84=A2=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ESP32-S3/ESP32-S3.ino | 45 ++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/ESP32-S3/ESP32-S3.ino b/ESP32-S3/ESP32-S3.ino index 60d9c40..b127cdb 100644 --- a/ESP32-S3/ESP32-S3.ino +++ b/ESP32-S3/ESP32-S3.ino @@ -6,8 +6,8 @@ // The thresholds are also dependent on SAMPLE_CACHE_LENGTH, if you // changed SAMPLE_CACHE_LENGTH, you should also adjust thresholds -#define HIT_THRES 300 -#define RESET_THRES 70 +#define HIT_THRES 400 +#define RESET_THRES 80 // Sampling period in μs, e.g., 500μs = 0.5ms = 2000Hz #define SAMPLING_PERIOD 500 @@ -37,9 +37,10 @@ #define R_KAT_KEY 'k' // Switch controller output for each channel -#define L_DON_KEY_NS NSGAMEPAD_DPAD_RIGHT +// this default config should work for all the 3 game settings +#define L_DON_KEY_NS NSGAMEPAD_DPAD_DOWN #define L_KAT_KEY_NS NSButton_LeftTrigger -#define R_DON_KEY_NS NSButton_A +#define R_DON_KEY_NS NSButton_B #define R_KAT_KEY_NS NSButton_RightTrigger // Enable debug mode to view analog input values from the Serial @@ -87,20 +88,23 @@ void setup() { maxIndex = -1; maxPower = 0; lastTime = micros(); -#if !DEBUG - if (controller_mode) { - Gamepad.begin(); - } else { - Keyboard.begin(); - } - USB.begin(); -#endif + #if !DEBUG + if (controller_mode) { + Gamepad.begin(); + } else { + Keyboard.begin(); + } + USB.begin(); + #endif } void loop() { if (maxIndex != -1 && lastPower[maxIndex] < RESET_THRES) { triggered = false; digitalWrite(outPins[maxIndex], LOW); + if (controller_mode) { + Gamepad.releaseAll(); + } maxIndex = -1; maxPower = 0; } @@ -115,10 +119,10 @@ void loop() { maxIndex = i; } lastPower[i] = power[i]; -#if DEBUG + #if DEBUG Serial.print(power[i]); Serial.print(" "); -#endif + #endif } if (!triggered && maxPower >= HIT_THRES) { @@ -126,16 +130,21 @@ void loop() { digitalWrite(outPins[maxIndex], HIGH); #if !DEBUG if (controller_mode) { - Gamepad.press(outKeysNS[maxIndex]); + // special case for the DPAD + if (maxIndex == 0) { + Gamepad.dPad(outKeysNS[maxIndex]); + } else { + Gamepad.press(outKeysNS[maxIndex]); + } Gamepad.loop(); } else { Keyboard.write(outKeys[maxIndex]); } #endif } -#if DEBUG - Serial.print("\n"); -#endif + #if DEBUG + Serial.print("\n"); + #endif unsigned int frameTime = micros() - lastTime; if (frameTime < SAMPLING_PERIOD) {