diff --git a/keyboards/handwired/replicazeron/.vscode/settings.json b/keyboards/handwired/replicazeron/.vscode/settings.json new file mode 100644 index 00000000000..6a2a4f23c09 --- /dev/null +++ b/keyboards/handwired/replicazeron/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "files.associations": { + "stdint.h": "c", + "stdint-gcc.h": "c", + "leds.h": "c", + "stdbool.h": "c", + "*.tcc": "c", + "math.h": "c", + "state.h": "c" + } +} diff --git a/keyboards/handwired/replicazeron/common/leds.c b/keyboards/handwired/replicazeron/common/leds.c index ab9e2ff8b5e..2e2f31f8007 100644 --- a/keyboards/handwired/replicazeron/common/leds.c +++ b/keyboards/handwired/replicazeron/common/leds.c @@ -18,30 +18,24 @@ //////////// Status LEDs ////////////// void init_leds(void) { - setPinOutput(STATUS_LED_A_PIN) ; - setPinOutput(STATUS_LED_B_PIN) ; - writePinHigh(STATUS_LED_A_PIN) ; //Led0 off - writePinHigh(STATUS_LED_B_PIN) ; //Led1 off + // Both LEDs off, they have inverted logic + setPinOutput(STATUS_LED_A_PIN); + setPinOutput(STATUS_LED_B_PIN); + writePinHigh(STATUS_LED_A_PIN); + writePinHigh(STATUS_LED_B_PIN); } -void set_leds(int active_layer) { - //display active layer in binary - switch (active_layer) { - case 1: - writePinLow(STATUS_LED_A_PIN); //Led0 on - writePinHigh(STATUS_LED_B_PIN); //Led1 off - break; - case 2: - writePinHigh(STATUS_LED_A_PIN); //Led0 off - writePinLow(STATUS_LED_B_PIN); //Led1 on - break; - case 3: - writePinLow(STATUS_LED_A_PIN); //Led0 on - writePinLow(STATUS_LED_B_PIN); //Led1 on - break; - default: - writePinHigh(STATUS_LED_A_PIN); //Led0 off - writePinHigh(STATUS_LED_B_PIN); //Led1 off - break; - } +void set_leds(uint8_t highest_active_layer) { + // any layer other than 0-3, quit and LEDs off + if (highest_active_layer > 3) { + writePinHigh(STATUS_LED_A_PIN); + writePinHigh(STATUS_LED_B_PIN); + return; + } + + // use bitwise operations to display active layer in binary + bool bit1 = !(highest_active_layer & 1); + bool bit2 = !(highest_active_layer & 2); + writePin(STATUS_LED_A_PIN, bit1); + writePin(STATUS_LED_A_PIN, bit2); } diff --git a/keyboards/handwired/replicazeron/common/leds.h b/keyboards/handwired/replicazeron/common/leds.h index fa6c66fc11e..ddf3b95a50d 100644 --- a/keyboards/handwired/replicazeron/common/leds.h +++ b/keyboards/handwired/replicazeron/common/leds.h @@ -14,8 +14,11 @@ * along with this program. If not, see . */ -#include QMK_KEYBOARD_H +#pragma once -void init_leds(void) ; +#include "gpio.h" +#include "stdbool.h" -void set_leds(int active_layer) ; +void init_leds(void); + +void set_leds(uint8_t active_layer); diff --git a/keyboards/handwired/replicazeron/common/oled.c b/keyboards/handwired/replicazeron/common/oled.c index ef01fe10f2d..5046b0ccf17 100644 --- a/keyboards/handwired/replicazeron/common/oled.c +++ b/keyboards/handwired/replicazeron/common/oled.c @@ -20,78 +20,72 @@ uint8_t shiftbits =32 ; //////////// OLED output helpers ////////////// void draw_mode(controller_state_t controller_state) { - //draw oled row showing thumbstick mode - oled_write_P(PSTR("Mode: "), false); - if (controller_state.wasdShiftMode) { - oled_write_ln_P(PSTR("WASD + Shift"), false); - } else if (controller_state.wasdMode) { - oled_write_ln_P(PSTR("WASD"), false); - } else { - oled_write_ln_P(PSTR("JoyStick"), false); - } + //draw oled row showing thumbstick mode + oled_write_P(PSTR("Mode: "), false); + if (controller_state.wasdShiftMode) { + oled_write_ln_P(PSTR("WASD + Shift"), false); + } else if (controller_state.wasdMode) { + oled_write_ln_P(PSTR("WASD"), false); + } else { + oled_write_ln_P(PSTR("JoyStick"), false); + } } void draw_wasd_key(wasd_state_t wasd_state) { - //draw oled row showing active keypresses emulated from thumbstick - const char* keys = "wasd" ; - bool keystates [] = {wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d } ; - // iterate over keystates - for ( int i = 0 ; i < 4 ; i++ ){ - if ( keystates[i]) { - char k = keys[i] ; - //bitshift char to upper case - if (wasd_state.shift) { - k &= ~shiftbits; - } - sprintf (stringbuffer , "%c", k); - oled_write(stringbuffer , false); - } - else { - oled_write_P(PSTR(" "), false); + //draw oled row showing active keypresses emulated from thumbstick + const char* keys = "wasd"; + bool keystates [] = { wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d }; + // iterate over keystates + for (uint8_t i = 0 ; i < ARRAY_SIZE(keystates); ++i) { + if (keystates[i]) { + char k = keys[i] ; + //bitshift char to upper case + if (wasd_state.shift) { + k &= ~shiftbits; + } + sprintf(stringbuffer, "%c", k); + oled_write(stringbuffer, false); + } else { + oled_write_P(PSTR(" "), false); + } } - } } void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position) { - //draw oled row showing thumbstick direction and distance from center - oled_write_P(PSTR("Dir: "), false); - sprintf (stringbuffer , "%d", thumbstick_polar_position.angle); - oled_write(stringbuffer , false); - oled_write_P(PSTR(" Dist: "), false); - sprintf (stringbuffer , "%d", thumbstick_polar_position.distance); - oled_write_ln(stringbuffer , false); - //print registered key codes - oled_write_P(PSTR("Keycodes: "), false); - draw_wasd_key( wasd_state ); + //draw oled row showing thumbstick direction and distance from center + oled_write_P(PSTR("Dir: "), false); + sprintf (stringbuffer , "%d", thumbstick_polar_position.angle); + oled_write(stringbuffer , false); + oled_write_P(PSTR(" Dist: "), false); + sprintf (stringbuffer , "%d", thumbstick_polar_position.distance); + oled_write_ln(stringbuffer , false); + //print registered key codes + oled_write_P(PSTR("Keycodes: "), false); + draw_wasd_key( wasd_state ); } //////////// draw OLED output ////////////// void draw_oled(controller_state_t controller_state) { - oled_write_P(PSTR("Layer: "), false); + oled_write_P(PSTR("Layer: "), false); + + switch (controller_state.highestActiveLayer) { + case _SHOOTER: + oled_write_ln_P(PSTR("Shooter"), false); + break; + + case _MISC: + oled_write_ln_P(PSTR("Misc"), false); + break; + + case _SETTINGS: + oled_write_ln_P(PSTR("Settings"), false); + break; + + default: + oled_write_ln_P(PSTR("Default"), false); + } - switch (controller_state.activeLayer) { - case LAYER_SHOOTER: - oled_write_ln_P(PSTR("Shooter"), false); - draw_mode(controller_state); - oled_write_ln_P(PSTR(" "), false); - oled_write_ln_P(PSTR(" "), false); - break; - case LAYER_MISC: - oled_write_ln_P(PSTR("Misc"), false); - draw_mode(controller_state); - oled_write_ln_P(PSTR(" "), false); - oled_write_ln_P(PSTR(" "), false); - break; - case LAYER_SETTINGS: - oled_write_ln_P(PSTR("Settings"), false); - draw_mode(controller_state); - draw_thumb_debug(thumbstick_polar_position); - oled_write_ln_P(PSTR(" "), false); - break; - default: - oled_write_ln_P(PSTR("Default"), false); - draw_mode(controller_state); - oled_write_ln_P(PSTR(" "), false); - oled_write_ln_P(PSTR(" "), false); - } + draw_mode(controller_state); + oled_write_ln_P(PSTR(" "), false); + oled_write_ln_P(PSTR(" "), false); } diff --git a/keyboards/handwired/replicazeron/common/oled.h b/keyboards/handwired/replicazeron/common/oled.h index ccf5182abbc..78adedc4467 100644 --- a/keyboards/handwired/replicazeron/common/oled.h +++ b/keyboards/handwired/replicazeron/common/oled.h @@ -15,30 +15,22 @@ */ #pragma once -#include "print.h" #include QMK_KEYBOARD_H -#include +#include "oled_driver.h" +#include "print.h" #include "state.h" +#include "stdio.h" #include "thumbstick.h" -uint8_t shiftbits ; - -char stringbuffer[8] ; - -enum keymap_layers { - LAYER_BASE = 0, - LAYER_SHOOTER, - LAYER_MISC, - LAYER_SETTINGS, -}; +uint8_t shiftbits; -void draw_oled(controller_state_t controller_state) ; +char stringbuffer[8]; -void draw_mode(controller_state_t controller_state) ; +void draw_oled(controller_state_t controller_state); -void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position) ; +void draw_mode(controller_state_t controller_state); -void draw_wasd_key(wasd_state_t wasd_state) ; +void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position); -void draw_settings(void) ; +void draw_wasd_key(wasd_state_t wasd_state); diff --git a/keyboards/handwired/replicazeron/common/state.c b/keyboards/handwired/replicazeron/common/state.c index a3ff8c60f89..b80fcb5c3b3 100644 --- a/keyboards/handwired/replicazeron/common/state.c +++ b/keyboards/handwired/replicazeron/common/state.c @@ -17,12 +17,12 @@ #include "state.h" controller_state_t init_state (void) { - controller_state_t controller_state = { - .wasdMode = true , - .wasdShiftMode = false , - .autoRun = false , - .activeLayer = 0, - } ; + controller_state_t controller_state = { + .wasdMode = true, + .wasdShiftMode = false, + .autoRun = false, + .highestActiveLayer = 0, + }; - return controller_state; + return controller_state; } diff --git a/keyboards/handwired/replicazeron/common/state.h b/keyboards/handwired/replicazeron/common/state.h index 8cbe2306c07..d9611d85071 100644 --- a/keyboards/handwired/replicazeron/common/state.h +++ b/keyboards/handwired/replicazeron/common/state.h @@ -14,13 +14,15 @@ * along with this program. If not, see . */ #pragma once -#include "quantum.h" + +#include "stdbool.h" +#include "stdint.h" typedef struct { - bool wasdMode; - bool wasdShiftMode; - bool autoRun; - int activeLayer; -}controller_state_t ; + bool wasdMode; + bool wasdShiftMode; + bool autoRun; + uint8_t highestActiveLayer; +} controller_state_t; -controller_state_t init_state (void) ; +controller_state_t init_state(void); diff --git a/keyboards/handwired/replicazeron/common/thumbstick.c b/keyboards/handwired/replicazeron/common/thumbstick.c index c90af61b050..c983b659ba4 100644 --- a/keyboards/handwired/replicazeron/common/thumbstick.c +++ b/keyboards/handwired/replicazeron/common/thumbstick.c @@ -17,117 +17,92 @@ #include "thumbstick.h" void init_wasd_state (void) { -wasd_state.w = wasd_state.a = wasd_state.s = wasd_state.d = false ; -last_wasd_state = wasd_state ; -wasd_state.shift = false ; + wasd_state.w = wasd_state.a = wasd_state.s = wasd_state.d = false; + wasd_state.shift = false; } -thumbstick_polar_position_t get_thumbstick_polar_position (int x, int y ) { - thumbstick_polar_position_t position ; - int x_centered = x - 512; - int y_centered = y - 512; +thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y) { + static thumbstick_polar_position_t position; + + int16_t x_centered = x - 512; + int16_t y_centered = y - 512; #ifdef THUMBSTICK_DEBUG - print("xN: "); - uprintf("%4d", x_centered); - print(" yN: "); - uprintf("%4d", y_centered); + dprintf("xN: %4d yN: %4d\n", x_centered, y_centered); #endif - //transform to carthesian coordinates to polar coordinates - //get distance from center as int in range [0-600] - position.distance = (double)sqrt( (double)x_centered * (double)x_centered + (double)y_centered * (double)y_centered ); - //get direction as int in range [0 to 359] - position.angle = (double) atan2( y_centered, x_centered ) * (180 /M_PI)+180; + //transform to carthesian coordinates to polar coordinates + //get distance from center as int in range [0-600] + position.distance = (double)sqrt((double)x_centered * (double)x_centered + (double)y_centered * (double)y_centered); + //get direction as int in range [0 to 359] + position.angle = (double)atan2(y_centered, x_centered) * (180 /M_PI) + 180; - //apply thumbstick rotation const to modify forward direction - position.angle = ( position.angle + _THUMBSTICK_ROTATION )%360 ; + //apply thumbstick rotation const to modify forward direction + position.angle = (position.angle + _THUMBSTICK_ROTATION) % 360; - return position; + return position; } -bool update_keystate( bool keystate, int angle_from, int angle_to, int angle ){ - if (angle_from < angle && angle <= angle_to ) { - keystate = true ; - } - if (angle <= angle_from || angle_to < angle ) { - keystate = false ; - } - return keystate ; +bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle) { + return (angle_from < angle && angle <= angle_to); } -void update_keycode(uint16_t keycode, bool keystate, bool last_keystate) { - if (keystate && keystate != last_keystate ) { - register_code(keycode); - } - else if (!keystate) { - unregister_code (keycode) ; - } +void update_keycode(uint16_t keycode, bool keystate) { + if (keystate) { + register_code16(keycode); + } else { + unregister_code16(keycode); + } } void thumbstick(controller_state_t controller_state) { + // FIXME: Can't you use the builtin/default joytstick configuration for scanning it? + yPos = analogReadPin(B1); + xPos = analogReadPin(B0); - yPos = analogReadPin(B1); - xPos = analogReadPin(B0); - - thumbstick_polar_position = get_thumbstick_polar_position (xPos, yPos); + thumbstick_polar_position = get_thumbstick_polar_position(xPos, yPos); #ifdef THUMBSTICK_DEBUG - print(" distance: "); - uprintf("%5d", thumbstick_polar_position.angle); - print(" angle: "); - uprintf("%5d", thumbstick_polar_position.distance); - print("\n"); + dprintf("distance: %5d angle: %5d\n", thumbstick_polar_position.distance, thumbstick_polar_position.angle); #endif - // Update WASD state depending on thumbstick position - // if thumbstick out of of deadzone - if ( thumbstick_polar_position.distance >= _DEADZONE ) { - wasd_state.w = update_keystate (wasd_state.w, 0, 90, thumbstick_polar_position.angle); - if ( !wasd_state.w ) { - wasd_state.w = update_keystate (wasd_state.w, 315, 360, thumbstick_polar_position.angle); + // Update WASD state depending on thumbstick position + // if thumbstick out of of deadzone + if (thumbstick_polar_position.distance >= _DEADZONE) { + wasd_state.w = update_keystate( 0, 90, thumbstick_polar_position.angle); + // A angle: 45 - 180 + wasd_state.a = update_keystate( 45, 181, thumbstick_polar_position.angle); + // S angle: 135 - 270 + wasd_state.s = update_keystate(135, 270, thumbstick_polar_position.angle); + // D angle: 225 - 359 + wasd_state.d = update_keystate(225, 359, thumbstick_polar_position.angle); + + if (!wasd_state.w ) { + wasd_state.w = update_keystate(315, 360, thumbstick_polar_position.angle); + } + } else { + //reset WASD state when in _DEADZONE + init_wasd_state(); } - // A angle: 45 - 180 - wasd_state.a = update_keystate (wasd_state.a, 45, 181, thumbstick_polar_position.angle); - // S angle: 135 - 270 - wasd_state.s = update_keystate (wasd_state.s, 135, 270, thumbstick_polar_position.angle); - // D angle: 225 - 359 - wasd_state.d = update_keystate (wasd_state.d, 225, 359, thumbstick_polar_position.angle); - } - //reset WASD state when in _DEADZONE - else { - init_wasd_state () ; - } #ifdef THUMBSTICK_DEBUG - print(" w: "); - uprintf("%2d", wasd_state.w); - print(" a: "); - uprintf("%2d", wasd_state.a); - print(" s: "); - uprintf("%2d", wasd_state.s); - print(" d: "); - uprintf("%2d", wasd_state.d); - print("\n"); + dprintf("w: %2d a: %2d s: %2d d: %2d\n", wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d); #endif -update_keycode (KC_W, wasd_state.w, last_wasd_state.w) ; -update_keycode (KC_A, wasd_state.a, last_wasd_state.a) ; -update_keycode (KC_S, wasd_state.s, last_wasd_state.s) ; -update_keycode (KC_D, wasd_state.d, last_wasd_state.d) ; - -last_wasd_state = wasd_state ; - - // handle WASD-Shift mode - if (controller_state.wasdShiftMode) { - bool Shifted = thumbstick_polar_position.distance > _SHIFTZONE; - if (!wasd_state.shift && Shifted) { - register_code(KC_LSFT); - wasd_state.shift = true; - } - else if (wasd_state.shift && !Shifted) { - unregister_code(KC_LSFT); - wasd_state.shift = false; + update_keycode(KC_W, wasd_state.w); + update_keycode(KC_A, wasd_state.a); + update_keycode(KC_S, wasd_state.s); + update_keycode(KC_D, wasd_state.d); + + // handle WASD-Shift mode + if (controller_state.wasdShiftMode) { + bool Shifted = thumbstick_polar_position.distance > _SHIFTZONE; + if (!wasd_state.shift && Shifted) { + register_code(KC_LSFT); + wasd_state.shift = true; + } else if (wasd_state.shift && !Shifted) { + unregister_code(KC_LSFT); + wasd_state.shift = false; + } } - } } diff --git a/keyboards/handwired/replicazeron/common/thumbstick.h b/keyboards/handwired/replicazeron/common/thumbstick.h index f0b5b6bdaa4..175d1df4fb9 100644 --- a/keyboards/handwired/replicazeron/common/thumbstick.h +++ b/keyboards/handwired/replicazeron/common/thumbstick.h @@ -15,43 +15,38 @@ */ #pragma once -#define _DEADZONE 100 // 0 to _SHIFTZONE-1 -#define _SHIFTZONE 350 // _DEADZONE+1 to 600 -#define _THUMBSTICK_ROTATION 100 //degrees, adjusts forward direction - -#include QMK_KEYBOARD_H #include "analog.h" -#include - +#include "debug.h" +#include "math.h" +#include "quantum.h" #include "state.h" -int xPos; -int yPos; +int16_t xPos; +int16_t yPos; typedef struct { - int angle; - int distance; + uint16_t angle; + uint16_t distance; } thumbstick_polar_position_t; typedef struct { - bool w; - bool a; - bool s; - bool d; - bool shift; + bool w; + bool a; + bool s; + bool d; + bool shift; } wasd_state_t; thumbstick_polar_position_t thumbstick_polar_position ; wasd_state_t wasd_state; -wasd_state_t last_wasd_state; -void init_wasd_state (void) ; +void init_wasd_state(void); -thumbstick_polar_position_t get_thumbstick_polar_position (int x, int y ) ; +thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y); -bool update_keystate(bool keyheld , int angle_from, int angle_to, int angle ) ; +bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle); -void update_keycode(uint16_t keycode, bool keystate, bool last_keystate) ; +void update_keycode(uint16_t keycode, bool keystate); -void thumbstick(controller_state_t controller_state) ; +void thumbstick(controller_state_t controller_state); diff --git a/keyboards/handwired/replicazeron/promicro/promicro.c b/keyboards/handwired/replicazeron/config.h similarity index 50% rename from keyboards/handwired/replicazeron/promicro/promicro.c rename to keyboards/handwired/replicazeron/config.h index 429ea3a80a2..c3f560ceef9 100644 --- a/keyboards/handwired/replicazeron/promicro/promicro.c +++ b/keyboards/handwired/replicazeron/config.h @@ -14,12 +14,28 @@ * along with this program. If not, see . */ -#include "promicro.h" +#pragma once -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - debug_enable=true; - debug_matrix=true; - //debug_keyboard=true; - //debug_mouse=true; -} +#define THUMBSTICK_DEBUG + +/* joystick configuration */ +#define JOYSTICK_BUTTON_COUNT 0 +#define JOYSTICK_AXIS_COUNT 2 +#define JOYSTICK_AXIS_RESOLUTION 10 + +#define _DEADZONE 100 // 0 to _SHIFTZONE-1 +#define _SHIFTZONE 350 // _DEADZONE+1 to 600 +#define _THUMBSTICK_ROTATION 100 //degrees, adjusts forward direction + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* RGB Config */ +#define RGB_DI_PIN B14 +#define RGBLED_NUM 6 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_TWINKLE diff --git a/keyboards/handwired/replicazeron/info.json b/keyboards/handwired/replicazeron/info.json index f40e6595382..63abcc8e330 100644 --- a/keyboards/handwired/replicazeron/info.json +++ b/keyboards/handwired/replicazeron/info.json @@ -1,51 +1,51 @@ { "keyboard_name": "Replicazeron", "manufacturer": "9R", - "url": "", + "url": "https://github.com/9R/replicazeron", "maintainer": "9R", "usb": { "vid": "0x4142", "pid": "0x2305", - "device_version": "0.0.1" }, + "diode_direction": "COL2ROW", "layouts": { "LAYOUT": { "layout": [ - {"label":"K04", "x":1.75, "y":1, "w":1.25, "matrix": [0,0]}, - {"label":"K10", "x":3, "y":1, "w":1.25, "matrix": [0,1]}, - {"label":"K16", "x":4.25, "y":1, "w":1.25, "matrix": [0,2]}, - {"label":"K22", "x":5.5, "y":1, "w":1.25, "matrix": [0,3]}, - {"label":"dwn", "x":9.5, "y":2.75, "w":1.25, "matrix": [0,4]}, + {"label":"K04", "x":1.75, "y":0.25, "w":1.25, "matrix": [0,0]}, + {"label":"K10", "x":3, "y":0.25, "w":1.25, "matrix": [0,1]}, + {"label":"K16", "x":4.25, "y":0.25, "w":1.25, "matrix": [0,2]}, + {"label":"K22", "x":5.5, "y":0.25, "w":1.25, "matrix": [0,3]}, + {"label":"dwn", "x":9.5, "y":2, "w":1.25, "matrix": [0,4]}, - {"label":"K03", "x":1.75, "y":1.7, "h":1.25, "w":1.25, "matrix": [1,0]}, - {"label":"K09", "x":3, "y":1.7, "h":1.25, "w":1.25, "matrix": [1,1]}, - {"label":"K15", "x":4.25, "y":1.7, "h":1.25, "w":1.25, "matrix": [1,2]}, - {"label":"K21", "x":5.5, "y":1.7, "h":1.25, "w":1.25, "matrix": [1,3]}, - {"label":"lft", "x":8.25, "y":1.75, "w":1.25, "matrix": [1,4]}, + {"label":"K03", "x":1.75, "y":1, "h":1.25, "w":1.25, "matrix": [1,0]}, + {"label":"K09", "x":3, "y":1, "h":1.25, "w":1.25, "matrix": [1,1]}, + {"label":"K15", "x":4.25, "y":1, "h":1.25, "w":1.25, "matrix": [1,2]}, + {"label":"K21", "x":5.5, "y":1, "h":1.25, "w":1.25, "matrix": [1,3]}, + {"label":"lft", "x":8.25, "y":1, "w":1.25, "matrix": [1,4]}, - {"label":"K02", "x":1.75, "y":3.25, "h":1.25, "w":1.25, "matrix": [2,0]}, - {"label":"K08", "x":3, "y":3.25, "h":1.25, "w":1.25, "matrix": [2,1]}, - {"label":"K14", "x":4.25, "y":3.25, "h":1.25, "w":1.25, "matrix": [2,2]}, - {"label":"K20", "x":5.5, "y":3.25, "h":1.25, "w":1.25, "matrix": [2,3]}, - {"label":"ent", "x":9.5, "y":1.75, "w":1.25, "matrix": [2,4]}, + {"label":"K02", "x":1.75, "y":2.5, "h":1.25, "w":1.25, "matrix": [2,0]}, + {"label":"K08", "x":3, "y":2.5, "h":1.25, "w":1.25, "matrix": [2,1]}, + {"label":"K14", "x":4.25, "y":2.5, "h":1.25, "w":1.25, "matrix": [2,2]}, + {"label":"K20", "x":5.5, "y":2.5, "h":1.25, "w":1.25, "matrix": [2,3]}, + {"label":"ent", "x":9.5, "y":1, "w":1.25, "matrix": [2,4]}, - {"label":"K01", "x":1.75, "y":4.5, "w":1.25, "matrix": [3,0]}, - {"label":"K07", "x":3, "y":4.5, "w":1.25, "matrix": [3,1]}, - {"label":"K13", "x":4.25, "y":4.5, "w":1.25, "matrix": [3,2]}, - {"label":"K19", "x":5.5, "y":4.5, "w":1.25, "matrix": [3,3]}, - {"label":"rgt", "x":10.75, "y":1.75, "w":1.25, "matrix": [3,4]}, + {"label":"K01", "x":1.75, "y":3.75, "w":1.25, "matrix": [3,0]}, + {"label":"K07", "x":3, "y":3.75, "w":1.25, "matrix": [3,1]}, + {"label":"K13", "x":4.25, "y":3.75, "w":1.25, "matrix": [3,2]}, + {"label":"K19", "x":5.5, "y":3.75, "w":1.25, "matrix": [3,3]}, + {"label":"rgt", "x":10.75, "y":1, "w":1.25, "matrix": [3,4]}, - {"label":"K00", "x":1.75, "y":5.5, "w":1.25, "matrix": [4,0]}, - {"label":"K06", "x":3, "y":5.5, "w":1.25, "matrix": [4,1]}, - {"label":"K12", "x":4.25, "y":5.5, "w":1.25, "matrix": [4,2]}, - {"label":"K18", "x":5.5, "y":5.5, "w":1.25, "matrix": [4,3]}, - {"label":"up ", "x":9.5, "y":0.75, "w":1.25, "matrix": [4,4]}, + {"label":"K00", "x":1.75, "y":4.75, "w":1.25, "matrix": [4,0]}, + {"label":"K06", "x":3, "y":4.75, "w":1.25, "matrix": [4,1]}, + {"label":"K12", "x":4.25, "y":4.75, "w":1.25, "matrix": [4,2]}, + {"label":"K18", "x":5.5, "y":4.75, "w":1.25, "matrix": [4,3]}, + {"label":"up ", "x":9.5, "y":0, "w":1.25, "matrix": [4,4]}, - {"label":"K05", "x":0, "y":3.25, "w":1.75, "matrix": [5,0]}, - {"label":"lyr", "x":7.5, "y":5, "w":1.5, "matrix": [5,1]}, - {"label":"K17", "x":10.75, "y":4.75, "w":1.5, "matrix": [5,2]}, - {"label":"K23", "x":6.75, "y":3.25, "w":1.5, "matrix": [5,3]}, - {"label":"spc", "x":10.75, "y":3.75, "w":1.25, "matrix": [5,4]} + {"label":"K05", "x":0, "y":2.5, "w":1.75, "matrix": [5,0]}, + {"label":"lyr", "x":7.5, "y":4.25, "w":1.5, "matrix": [5,1]}, + {"label":"K17", "x":10.75, "y":4, "w":1.5, "matrix": [5,2]}, + {"label":"K23", "x":6.75, "y":2.5, "w":1.5, "matrix": [5,3]}, + {"label":"spc", "x":10.75, "y":3, "w":1.25, "matrix": [5,4]} ] } } diff --git a/keyboards/handwired/replicazeron/keymaps/default/keymap.c b/keyboards/handwired/replicazeron/keymaps/default/keymap.c index 5a5389c82f1..feb027271d9 100644 --- a/keyboards/handwired/replicazeron/keymaps/default/keymap.c +++ b/keyboards/handwired/replicazeron/keymaps/default/keymap.c @@ -14,155 +14,44 @@ * along with this program. If not, see . */ -#ifdef LEDS_ENABLE -# include "../common/leds.h" -#endif +#include QMK_KEYBOARD_H -#ifdef OLED_ENABLE -# include "../common/oled.h" -#endif - -#ifdef THUMBSTICK_ENABLE -# include "../common/thumbstick.h" -#endif - -#include "../common/state.h" - -controller_state_t controller_state ; - -#ifndef OLED_ENABLE -enum keymap_layers { - LAYER_BASE = 0, - LAYER_SHOOTER, - LAYER_MISC, - LAYER_SETTINGS, -}; -#endif - -enum custom_keycodes { - JOYMODE = SAFE_RANGE, - AUTORUN, - M_UP, - M_DWN, - M_L, - M_R, - M_SEL -}; - -//////////// Status LEDs ////////////// -#ifdef LEDS_ENABLE -void keyboard_pre_init_user(void) { - init_leds() ; -} -#endif - -//////////// WASD THUMBSTICK ////////////// -#ifdef THUMBSTICK_ENABLE -void matrix_init_user(void) { - init_wasd_state() ; - controller_state = init_state(); -} - -void matrix_scan_user(void) { - if (controller_state.wasdMode) { - thumbstick (controller_state); - } -} -#endif - -#ifdef JOYSTICK_ENABLE -//joystick config -joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = { - JOYSTICK_AXIS_IN(B0, 0, 512, 1023), - JOYSTICK_AXIS_IN(B1, 0, 512, 1023) -}; -#endif - -//////////// KEYMAPS ////////////// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up - KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward - KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down - KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 - KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 - KC_TAB, TG(1), KC_I, KC_B, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - - [LAYER_SHOOTER] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, // up - KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, // forward - KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, // down - KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, // back 2 - KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, // back 1 - KC_NO, TG(2), KC_NO, KC_NO, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - [LAYER_MISC] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, // up - KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, // forward - KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, // down - KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, // back 2 - KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, // back 1 - KC_NO, TG(3), KC_NO, KC_NO, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - [LAYER_SETTINGS] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, // up - KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, // forward - RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, // down - EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, // back 2 - QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, // back 1 - RGB_MOD, TO(0), KC_NO, RGB_RMOD, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ) -}; - -//////////// Change modes on keypress ////////////// -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode == JOYMODE && record->event.pressed) { - if (!controller_state.wasdMode) { - controller_state.wasdMode = true; - } else if (controller_state.wasdMode && !controller_state.wasdShiftMode) { - controller_state.wasdShiftMode = true; - } else { - controller_state.wasdMode = false; - controller_state.wasdShiftMode = false; - } - } else if (keycode == AUTORUN && record->event.pressed) { - if (!controller_state.autoRun) { - controller_state.autoRun = true; - register_code(KC_W); - } else { - controller_state.autoRun = false; - unregister_code(KC_W); - } - } - return true; + [_BASE] = LAYOUT( + // little | ring | middle | index | 5way-dpad | -finger + KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up + KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward + KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down + KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 + KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 + KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special + // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping + ), + + [_SHOOTER] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P + ), + + [_MISC] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P + ), + + [_SETTINGS] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, + KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, + RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, + EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, + QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, + RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P + ) }; - -//////////// Draw OLED menu ////////////// -#ifdef OLED_ENABLE -bool oled_task_user(void) { - draw_oled(controller_state); - - return false; -} -#endif - -//////////// Handle layer changes ////////////// -layer_state_t layer_state_set_user(layer_state_t state) { - controller_state.activeLayer = get_highest_layer(state) ; - - #ifdef LEDS_ENABLE - set_leds(controller_state.activeLayer) ; - #endif - - return state ; -} diff --git a/keyboards/handwired/replicazeron/keymaps/default/readme.md b/keyboards/handwired/replicazeron/keymaps/default/readme.md deleted file mode 100644 index 29f6a29a3ac..00000000000 --- a/keyboards/handwired/replicazeron/keymaps/default/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# Replicazeron Gamepad -Default layout with 2 axies thumbstick diff --git a/keyboards/handwired/replicazeron/keymaps/default/rules.mk b/keyboards/handwired/replicazeron/keymaps/default/rules.mk deleted file mode 100644 index e781238a379..00000000000 --- a/keyboards/handwired/replicazeron/keymaps/default/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -ifeq ($(strip $(LEDS_ENABLE)), yes) - OPT_DEFS += -DLEDS_ENABLE - SRC += ../common/leds.c -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += ../common/oled.c -endif - -ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) -# POINTING_DEVICE_ENABLE = yes - OPT_DEFS += -DTHUMBSTICK_ENABLE - SRC += analog.c - SRC += ../common/thumbstick.c -endif diff --git a/keyboards/handwired/replicazeron/keymaps/via/keymap.c b/keyboards/handwired/replicazeron/keymaps/via/keymap.c index 5a5389c82f1..c162a076336 100644 --- a/keyboards/handwired/replicazeron/keymaps/via/keymap.c +++ b/keyboards/handwired/replicazeron/keymaps/via/keymap.c @@ -14,155 +14,44 @@ * along with this program. If not, see . */ -#ifdef LEDS_ENABLE -# include "../common/leds.h" -#endif +#include QMK_KEYBOARD_H -#ifdef OLED_ENABLE -# include "../common/oled.h" -#endif - -#ifdef THUMBSTICK_ENABLE -# include "../common/thumbstick.h" -#endif - -#include "../common/state.h" - -controller_state_t controller_state ; - -#ifndef OLED_ENABLE -enum keymap_layers { - LAYER_BASE = 0, - LAYER_SHOOTER, - LAYER_MISC, - LAYER_SETTINGS, -}; -#endif - -enum custom_keycodes { - JOYMODE = SAFE_RANGE, - AUTORUN, - M_UP, - M_DWN, - M_L, - M_R, - M_SEL -}; - -//////////// Status LEDs ////////////// -#ifdef LEDS_ENABLE -void keyboard_pre_init_user(void) { - init_leds() ; -} -#endif - -//////////// WASD THUMBSTICK ////////////// -#ifdef THUMBSTICK_ENABLE -void matrix_init_user(void) { - init_wasd_state() ; - controller_state = init_state(); -} - -void matrix_scan_user(void) { - if (controller_state.wasdMode) { - thumbstick (controller_state); - } -} -#endif - -#ifdef JOYSTICK_ENABLE -//joystick config -joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = { - JOYSTICK_AXIS_IN(B0, 0, 512, 1023), - JOYSTICK_AXIS_IN(B1, 0, 512, 1023) -}; -#endif - -//////////// KEYMAPS ////////////// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up - KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward - KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down - KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 - KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 - KC_TAB, TG(1), KC_I, KC_B, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - - [LAYER_SHOOTER] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, // up - KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, // forward - KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, // down - KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, // back 2 - KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, // back 1 - KC_NO, TG(2), KC_NO, KC_NO, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - [LAYER_MISC] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, // up - KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, // forward - KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, // down - KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, // back 2 - KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, // back 1 - KC_NO, TG(3), KC_NO, KC_NO, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ), - [LAYER_SETTINGS] = LAYOUT( - // | little | ring | middle | index | 5way-dpad | -finger - RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, // up - KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, // forward - RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, // down - EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, // back 2 - QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, // back 1 - RGB_MOD, TO(0), KC_NO, RGB_RMOD, KC_P // special - // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping - ) -}; - -//////////// Change modes on keypress ////////////// -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode == JOYMODE && record->event.pressed) { - if (!controller_state.wasdMode) { - controller_state.wasdMode = true; - } else if (controller_state.wasdMode && !controller_state.wasdShiftMode) { - controller_state.wasdShiftMode = true; - } else { - controller_state.wasdMode = false; - controller_state.wasdShiftMode = false; - } - } else if (keycode == AUTORUN && record->event.pressed) { - if (!controller_state.autoRun) { - controller_state.autoRun = true; - register_code(KC_W); - } else { - controller_state.autoRun = false; - unregister_code(KC_W); - } - } - return true; + [_BASE] = LAYOUT( + // | little | ring | middle | index | 5way-dpad | -finger + KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up + KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward + KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down + KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 + KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 + KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special + // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping + ), + + [_SHOOTER] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P + ), + + [_MISC] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P + ), + + [_SETTINGS] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, + KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, + RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, + EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, + QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, + RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P + ) }; - -//////////// Draw OLED menu ////////////// -#ifdef OLED_ENABLE -bool oled_task_user(void) { - draw_oled(controller_state); - - return false; -} -#endif - -//////////// Handle layer changes ////////////// -layer_state_t layer_state_set_user(layer_state_t state) { - controller_state.activeLayer = get_highest_layer(state) ; - - #ifdef LEDS_ENABLE - set_leds(controller_state.activeLayer) ; - #endif - - return state ; -} diff --git a/keyboards/handwired/replicazeron/keymaps/via/readme.md b/keyboards/handwired/replicazeron/keymaps/via/readme.md deleted file mode 100644 index fe720791ee3..00000000000 --- a/keyboards/handwired/replicazeron/keymaps/via/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# Replicazeron Gamepad - via layout -VIA layout with 2 axies thumbstick diff --git a/keyboards/handwired/replicazeron/keymaps/via/rules.mk b/keyboards/handwired/replicazeron/keymaps/via/rules.mk index a7dae39d5c9..1e5b99807cb 100644 --- a/keyboards/handwired/replicazeron/keymaps/via/rules.mk +++ b/keyboards/handwired/replicazeron/keymaps/via/rules.mk @@ -1,16 +1 @@ VIA_ENABLE = yes -ifeq ($(strip $(LEDS_ENABLE)), yes) - OPT_DEFS += -DLEDS_ENABLE - SRC += ../common/leds.c -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += ../common/oled.c -endif - -ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) -# POINTING_DEVICE_ENABLE = yes - OPT_DEFS += -DTHUMBSTICK_ENABLE - SRC += analog.c - SRC += ../common/thumbstick.c -endif diff --git a/keyboards/handwired/replicazeron/promicro/config.h b/keyboards/handwired/replicazeron/promicro/config.h index 5d343fe8d93..9f53e5c9e9f 100644 --- a/keyboards/handwired/replicazeron/promicro/config.h +++ b/keyboards/handwired/replicazeron/promicro/config.h @@ -16,40 +16,5 @@ #pragma once -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 5 - -/* joystick configuration */ -#define JOYSTICK_BUTTON_COUNT 0 -#define JOYSTICK_AXIS_COUNT 2 -#define JOYSTICK_AXIS_RESOLUTION 10 - - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -////////////////////////////// - -#define DYNAMIC_KEYMAP_LAYER_COUNT 4 - #define STATUS_LED_A_PIN D2 #define STATUS_LED_B_PIN D3 - - -#ifdef RGBLIGHT_ENABLE -#define RGB_DI_PIN B14 -#define RGBLED_NUM 6 -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_TWINKLE -#endif - -#define THUMBSTICK_DEBUG diff --git a/keyboards/handwired/replicazeron/promicro/info.json b/keyboards/handwired/replicazeron/promicro/info.json index d01cc06ae11..7db80be022d 100644 --- a/keyboards/handwired/replicazeron/promicro/info.json +++ b/keyboards/handwired/replicazeron/promicro/info.json @@ -1,9 +1,11 @@ { + "usb": { + "device_version": "0.0.1" + }, "matrix_pins": { - "cols": [ "C6", "D4", "D7", "E6", "F7" ], - "rows": [ "B1", "B3", "B2", "B6", "B5", "B4" ] + "cols": ["C6", "D4", "D7", "E6", "F7"], + "rows": ["B1", "B3", "B2", "B6", "B5", "B4"] }, - "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "qmk-dfu" } diff --git a/keyboards/handwired/replicazeron/promicro/promicro.h b/keyboards/handwired/replicazeron/promicro/promicro.h deleted file mode 100644 index dbcefe90a4b..00000000000 --- a/keyboards/handwired/replicazeron/promicro/promicro.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2023 9R - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "quantum.h" diff --git a/keyboards/handwired/replicazeron/promicro/rules.mk b/keyboards/handwired/replicazeron/promicro/rules.mk index 0cefe1db78f..5f243f0ebbb 100644 --- a/keyboards/handwired/replicazeron/promicro/rules.mk +++ b/keyboards/handwired/replicazeron/promicro/rules.mk @@ -1,29 +1,6 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -TAP_DANCE_ENABLE = no # Tap Dance - -JOYSTICK_ENABLE = yes -JOYSTICK_DRIVER = analog - -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -LTO_ENABLE = yes - -########## - -QMK_SETTINGS = yes - -LEDS_ENABLE = yes -THUMBSTICK_ENABLE = yes - -SRC += ../common/state.c +BOOTMAGIC_ENABLE = no +CONSOLE_ENABLE = no +EXTRAKEY_ENABLE = no +MOUSEKEY_ENABLE = no +NKRO_ENABLE = no +RGBLIGHT_ENABLE = no diff --git a/keyboards/handwired/replicazeron/replicazeron.c b/keyboards/handwired/replicazeron/replicazeron.c new file mode 100644 index 00000000000..e3c5eab536a --- /dev/null +++ b/keyboards/handwired/replicazeron/replicazeron.c @@ -0,0 +1,104 @@ +/* Copyright 2023 9R + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +controller_state_t controller_state; + +#ifdef JOYSTICK_ENABLE +// FIXME: Can't you use the builtin/default joytstick configuration for scanning it? +joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = { + JOYSTICK_AXIS_IN(B0, 0, 512, 1023), + JOYSTICK_AXIS_IN(B1, 0, 512, 1023) +}; +#endif + +#ifdef THUMBSTICK_ENABLE +void housekeeping_tak_user(void) { + if (controller_state.wasdMode) { + thumbstick(controller_state); + } +} +#endif + +void keyboard_post_init_kb(void) { + // Customise these values to desired behaviour + debug_enable = true; + debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; + +#ifdef LEDS_ENABLE + init_leds(); +#endif // LEDS_ENABLE + +#ifdef THUMBSTICK_ENABLE + init_wasd_state(); +#endif // THUMBSTICK_ENABLE + + // FIXME: This was inside the thumbstick's ifdef, moved it out assuming it was a typo + controller_state = init_state(); + + keyboard_post_init_user(); +} + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + draw_oled(controller_state); + return false; +} +#endif + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + + + if (keycode == JOYMODE && record->event.pressed) { + if (!controller_state.wasdMode) { + controller_state.wasdMode = true; + } else if (controller_state.wasdMode && !controller_state.wasdShiftMode) { + controller_state.wasdShiftMode = true; + } else { + controller_state.wasdMode = false; + controller_state.wasdShiftMode = false; + } + } else if (keycode == AUTORUN && record->event.pressed) { + if (!controller_state.autoRun) { + controller_state.autoRun = true; + register_code(KC_W); + } else { + controller_state.autoRun = false; + unregister_code(KC_W); + } + } + return true; +}; + +layer_state_t layer_state_set_kb(layer_state_t state) { + controller_state.highestActiveLayer = get_highest_layer(state) ; + +#ifdef LEDS_ENABLE + set_leds(controller_state.highestActiveLayer) ; +#endif // LEDS_ENABLE + + return state; +} diff --git a/keyboards/handwired/replicazeron/stm32f103/stm32f103.c b/keyboards/handwired/replicazeron/replicazeron.h similarity index 57% rename from keyboards/handwired/replicazeron/stm32f103/stm32f103.c rename to keyboards/handwired/replicazeron/replicazeron.h index 2939706a353..b76107d9853 100644 --- a/keyboards/handwired/replicazeron/stm32f103/stm32f103.c +++ b/keyboards/handwired/replicazeron/replicazeron.h @@ -14,12 +14,37 @@ * along with this program. If not, see . */ -#include "stm32f103.h" - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - debug_enable=true; - debug_matrix=true; - //debug_keyboard=true; - //debug_mouse=true; -} +#pragma once + +// FIXME: The "common/" prefixes can probably be removed using VPATH or whatever on the mk file + +#include "common/state.h" + +#ifdef LEDS_ENABLE +# include "common/leds.h" +#endif + +#ifdef OLED_ENABLE +# include "common/oled.h" +#endif + +#ifdef THUMBSTICK_ENABLE +# include "common/thumbstick.h" +#endif + +enum kb_layers { + _BASE, + _SHOOTER, + _MISC, + _SETTINGS, +}; + +enum kb_keycodes { + JOYMODE = QK_KB, + AUTORUN, + M_UP, + M_DWN, + M_L, + M_R, + M_SEL +}; diff --git a/keyboards/handwired/replicazeron/rules.mk b/keyboards/handwired/replicazeron/rules.mk new file mode 100644 index 00000000000..c8f677cb287 --- /dev/null +++ b/keyboards/handwired/replicazeron/rules.mk @@ -0,0 +1,31 @@ +AUDIO_ENABLE = no +BACKLIGHT_ENABLE = no +COMMAND_ENABLE = no +JOYSTICK_ENABLE = yes +JOYSTICK_DRIVER = analog +LTO_ENABLE = yes # FIXME: If im not mistaken, this can cause issues on ARM (ie STM32) +OLED_ENABLE = yes +TAP_DANCE_ENABLE = no + +LEDS_ENABLE = yes +THUMBSTICK_ENABLE = yes + +SRC += common/state.c + +# redirect compilation against "handwired/replicazeron" to the stm32 variant +DEFAULT_FOLDER = handwired/replicazeron/stm32f103 + +ifeq ($(strip $(LEDS_ENABLE)), yes) + OPT_DEFS += -DLEDS_ENABLE + SRC += common/leds.c +endif + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += common/oled.c +endif + +ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) + OPT_DEFS += -DTHUMBSTICK_ENABLE + SRC += analog.c \ + common/thumbstick.c +endif diff --git a/keyboards/handwired/replicazeron/stm32f103/config.h b/keyboards/handwired/replicazeron/stm32f103/config.h index 2756b6bc107..22d532e5999 100644 --- a/keyboards/handwired/replicazeron/stm32f103/config.h +++ b/keyboards/handwired/replicazeron/stm32f103/config.h @@ -16,42 +16,10 @@ #pragma once -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 5 - -/* joystick configuration */ -#define JOYSTICK_BUTTON_COUNT 0 -#define JOYSTICK_AXIS_COUNT 2 -#define JOYSTICK_AXIS_RESOLUTION 10 - - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* Use I2C2 */ +/* I2C Config */ #define I2C_DRIVER I2CD2 - #define I2C1_SDA_PIN B11 #define I2C1_SCL_PIN B10 -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -////////////////////////////// - -#define DYNAMIC_KEYMAP_LAYER_COUNT 4 - #define STATUS_LED_A_PIN B13 #define STATUS_LED_B_PIN B12 - -#define RGB_DI_PIN B14 -#define RGBLED_NUM 6 -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_TWINKLE - -#define THUMBSTICK_DEBUG diff --git a/keyboards/handwired/replicazeron/stm32f103/info.json b/keyboards/handwired/replicazeron/stm32f103/info.json index 66cb6d14b2f..b0e73df7951 100644 --- a/keyboards/handwired/replicazeron/stm32f103/info.json +++ b/keyboards/handwired/replicazeron/stm32f103/info.json @@ -1,9 +1,11 @@ { + "usb": { + "device_version": "0.0.2" + }, "matrix_pins": { "cols": ["A7", "A6", "A5", "A4", "B4"], - "rows": [ "B15", "A8", "A9", "A10", "A15", "B3" ] + "rows": ["B15", "A8", "A9", "A10", "A15", "B3"] }, - "diode_direction": "COL2ROW", "processor": "STM32F103", "bootloader": "stm32duino" } diff --git a/keyboards/handwired/replicazeron/stm32f103/rules.mk b/keyboards/handwired/replicazeron/stm32f103/rules.mk index 988e0669f22..425581498f5 100644 --- a/keyboards/handwired/replicazeron/stm32f103/rules.mk +++ b/keyboards/handwired/replicazeron/stm32f103/rules.mk @@ -1,33 +1,9 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -TAP_DANCE_ENABLE = no # Tap Dance - -JOYSTICK_ENABLE = yes -JOYSTICK_DRIVER = analog - -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -OLED_BRIGHTNESS = 32 -LTO_ENABLE = yes +BOOTMAGIC_ENABLE = yes +CONSOLE_ENABLE = yes +EXTRAKEY_ENABLE = yes +MOUSEKEY_ENABLE = yes +NKRO_ENABLE = yes +RGBLIGHT_ENABLE = yes # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE - -########## - -QMK_SETTINGS = yes - -LEDS_ENABLE = yes -THUMBSTICK_ENABLE = yes - -SRC += ../common/state.c diff --git a/keyboards/handwired/replicazeron/stm32f103/stm32f103.h b/keyboards/handwired/replicazeron/stm32f103/stm32f103.h deleted file mode 100644 index dbcefe90a4b..00000000000 --- a/keyboards/handwired/replicazeron/stm32f103/stm32f103.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2023 9R - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "quantum.h"