diff --git a/bin/fp_build.sh b/bin/fp_build.sh index 85f7bf47b5..77900d1902 100755 --- a/bin/fp_build.sh +++ b/bin/fp_build.sh @@ -43,7 +43,15 @@ get_valid_keyboards() { if [[ -e "${line}/v${i}/fp_build.json" ]]; then echo -n "${line}/v${i} " fi - + + # handle format with subversions, like v3_1 + for j in {0..9} + do + if [[ -e "${line}/v${i}_${j}/fp_build.json" ]]; then + echo -n "${line}/v${i}_${j} " + fi + done + # special case for pinkies out v2 extended if [[ -e "${line}/v${i}_ext/fp_build.json" ]]; then echo -n "${line}/v${i}_ext " diff --git a/keyboards/fingerpunch/pinkiesout/pinkiesout.h b/keyboards/fingerpunch/pinkiesout/pinkiesout.h index d648e29363..57ecaa47c2 100644 --- a/keyboards/fingerpunch/pinkiesout/pinkiesout.h +++ b/keyboards/fingerpunch/pinkiesout/pinkiesout.h @@ -25,6 +25,8 @@ # include "v2_ext.h" #elif defined(KEYBOARD_fingerpunch_pinkiesout_v3) # include "v3.h" +#elif defined(KEYBOARD_fingerpunch_pinkiesout_v3_1) +# include "v3_1.h" #endif #include "keyboards/fingerpunch/src/fp.h" diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/config.h b/keyboards/fingerpunch/pinkiesout/v3_1/config.h new file mode 100644 index 0000000000..c617c4abba --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/config.h @@ -0,0 +1,156 @@ +/* +Copyright 2021 Sadek Baroudi + +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 . +*/ + +#pragma once + +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 8 + +// SHIFT REGISTER +// Only needed for matrix_74hc595_spi.c +#define SHIFTREG_MATRIX_COL_CS GP21 +#define SHIFTREG_DIVISOR 8 +#define MATRIX_ROW_PINS_SR { GP4, GP5, GP6, GP8, GP24, GP11, GP0, GP10, GP7 } + +// SPI config for shift register +#define SPI_DRIVER SPID0 +#define SPI_SCK_PIN GP22 +#define SPI_MOSI_PIN GP23 +#define SPI_MISO_PIN GP20 + +// VIK pin config +#define VIK_SPI_DRIVER SPID0 +#define VIK_SPI_SCK_PIN GP22 +#define VIK_SPI_MOSI_PIN GP23 +#define VIK_SPI_MISO_PIN GP20 +#define VIK_SPI_CS GP9 +#define VIK_I2C_DRIVER I2CD1 +#define VIK_I2C_SDA_PIN GP2 +#define VIK_I2C_SCL_PIN GP3 +#define VIK_GPIO_1 GP26 +#define VIK_GPIO_2 GP27 +#define VIK_WS2812_DI_PIN GP25 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* encoder config */ +#define ENCODERS_PAD_A {GP1, GP13} +#define ENCODERS_PAD_B {GP14, GP12} +#define ENCODER_RESOLUTION 2 + +#define WS2812_DI_PIN GP25 +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_LED_COUNT 66 + #define RGBLIGHT_HUE_STEP 16 + #define RGBLIGHT_SAT_STEP 16 + #define RGBLIGHT_VAL_STEP 16 + #define RGBLIGHT_LIMIT_VAL 100 /* The maximum brightness level for RGBLIGHT_ENABLE */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #define RGBLIGHT_EFFECT_ALTERNATING + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_KNIGHT + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_TWINKLE +#endif + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_LED_COUNT 66 + #define RGB_MATRIX_CENTER {100, 32} + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 /* The maximum brightness level for RGB_MATRIX */ + #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set + #define RGB_MATRIX_KEYPRESSES + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS + #define RGB_MATRIX_KEYREACTIVE_ENABLED + #define ENABLE_RGB_MATRIX_ALPHAS_MODS + #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT + #define ENABLE_RGB_MATRIX_BREATHING + #define ENABLE_RGB_MATRIX_BAND_SAT + #define ENABLE_RGB_MATRIX_BAND_VAL + #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT + #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL + #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT + #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL + #define ENABLE_RGB_MATRIX_CYCLE_ALL + #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT + #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #define ENABLE_RGB_MATRIX_DUAL_BEACON + #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL + #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL + #define ENABLE_RGB_MATRIX_RAINBOW_BEACON + #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + #define ENABLE_RGB_MATRIX_RAINDROPS + #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + #define ENABLE_RGB_MATRIX_DIGITAL_RAIN + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + #define ENABLE_RGB_MATRIX_SPLASH + #define ENABLE_RGB_MATRIX_MULTISPLASH + #define ENABLE_RGB_MATRIX_SOLID_SPLASH + #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +#ifdef AUDIO_ENABLE + #define AUDIO_VOICES + #define AUDIO_PIN GP18 + #define AUDIO_PWM_DRIVER PWMD1 + #define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A + // #define AUDIO_PWM_PAL_MODE 42 // only if using AUDIO_DRIVER = pwm_hardware + // #define NO_MUSIC_MODE + #define AUDIO_ENABLE_TONE_MULTIPLEXING + #define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10 + #define FP_AUDIO_MOUSE_BUTTONS + #define FP_AUDIO_CUT_COPY_PASTE + #define FP_AUDIO_SAVE + #define FP_STARTUP_LIGHT_EXT HALF_NOTE(_E6), HALF_NOTE(_F6), HALF_NOTE(_C6), WHOLE_NOTE(_A5), WHOLE_DOT_NOTE(_F5), WHOLE_DOT_NOTE(_D5), WHOLE_DOT_NOTE(_G5), WHOLE_DOT_NOTE(_C5), + #define STARTUP_SONG SONG(FP_STARTUP_LIGHT_EXT) + #define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND) } +#endif + +#ifdef HAPTIC_ENABLE + #define FB_ERM_LRA 1 + #define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 + #define FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3 + #define RATED_VOLTAGE 2 + #define V_PEAK 2.8 + #define V_RMS 2.0 + #define F_LRA 150 // resonance freq + #define DRV_GREETING alert_750ms + #define FP_HAPTIC_MOUSE_BUTTONS + #define FP_HAPTIC_CUT_COPY_PASTE + #define FP_HAPTIC_SAVE +#endif + +#ifdef VIK_PMW3360 + #define POINTING_DEVICE_INVERT_Y +#endif + +#include "keyboards/fingerpunch/src/config_post.h" diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/fp_build.json b/keyboards/fingerpunch/pinkiesout/v3_1/fp_build.json new file mode 100644 index 0000000000..a6edbc4eba --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/fp_build.json @@ -0,0 +1,37 @@ +[ + { + "type" : "one-of", + "names" : [ + "VIK_AZOTEQ", + "VIK_CIRQUE", + "VIK_EC11_EVQWGD001", + "VIK_GC9A01", + "VIK_HAPTIC", + "VIK_ILI9341", + "VIK_PER56_CIRQUE_LEDS", + "VIK_PER56_PMW3360_LEDS", + "VIK_PMW3360", + "VIK_WAVESHARE_22224", + "VIK_WEACT_ST7735" + ], + "user_input": "What VIK config would you like to use for the left half? (0) NONE, (1) VIK_AZOTEQ, (2) VIK_CIRQUE, (3) VIK_EC11_EVQWGD001, (4) VIK_GC9A01, (5) VIK_HAPTIC, (6) VIK_ILI9341, (7) VIK_PER56_CIRQUE_LEDS, (8) VIK_PER56_PMW3360_LEDS, (9) VIK_PMW3360, (10) VIK_WAVESHARE_22224, (11) VIK_WEACT_ST7735:" + }, + { + "type" : "one-of", + "names" : [ + "RGBLIGHT_ENABLE", + "RGB_MATRIX_ENABLE" + ], + "user_input": "No RGB, RGB light, RGB matrix?" + }, + { + "type" : "single", + "name" : "ENCODER_ENABLE", + "user_input": "Do you have one or more rotary encoders?" + }, + { + "type" : "single", + "name" : "HAPTIC_ENABLE", + "user_input": "Do you have haptic feedback?" + } +] diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/halconf.h b/keyboards/fingerpunch/pinkiesout/v3_1/halconf.h new file mode 100644 index 0000000000..859baec118 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/halconf.h @@ -0,0 +1,13 @@ +/* + * Copyright 2023 Sadek Baroudi (@sadekbaroudi) + */ + +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE +// #define HAL_USE_SERIAL TRUE // not supported on rp2040, as it seems +#define HAL_USE_SPI TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/info.json b/keyboards/fingerpunch/pinkiesout/v3_1/info.json new file mode 100644 index 0000000000..52395e4082 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/info.json @@ -0,0 +1,11 @@ +{ + "manufacturer": "sadekbaroudi", + "keyboard_name": "pinkies out", + "url": "https://fingerpunch.xyz/product/pinkies-out-v3/", + "maintainer": "Sadek Baroudi ", + "usb": { + "vid": "0xFEFE", + "pid": "0x6011", + "device_version": "3.1.0" + } +} diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/default/keymap.c b/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/default/keymap.c new file mode 100644 index 0000000000..486bc8f6e4 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/default/keymap.c @@ -0,0 +1,100 @@ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[_QWERTY] = LAYOUT_pinkiesout( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LPRN, KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCBR, KC_RCBR, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ADJUST, ADJUST, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, LOWER, KC_SPC, KC_LALT, KC_MUTE, KC_MUTE, KC_RALT, KC_SPC, RAISE, KC_RGUI, KC_RCTL +), + + +[_COLEMAK] = LAYOUT_pinkiesout( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LPRN, KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LCBR, KC_RCBR, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, ADJUST, ADJUST, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, LOWER, KC_SPC, KC_LALT, _______, _______, KC_RALT, KC_SPC, RAISE, KC_RGUI, KC_RCTL +), + + +[_LOWER] = LAYOUT_pinkiesout( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_RAISE] = LAYOUT_pinkiesout( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, + _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_ADJUST] = LAYOUT_pinkiesout( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_TOG, RGB_RMOD, RGB_MOD, _______, TG(_QWERTY), _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, + _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, TG(_COLEMAK), _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + default: + break; + } + + return true; +} diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/sadekbaroudi/keymap.c b/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/sadekbaroudi/keymap.c new file mode 100644 index 0000000000..5407b8ce7b --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/keymaps/sadekbaroudi/keymap.c @@ -0,0 +1,117 @@ +/* Copyright 2021 Sadek Baroudi + * + * 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 "sadekbaroudi.h" +#include QMK_KEYBOARD_H + +/* + * The `LAYOUT_pinkiesout_base` macro is a template to allow the use of identical + * modifiers for the default layouts (eg ALPHA_ALT, Alpha, Dvorak, etc), so + * that there is no need to set them up for each layout, and modify all of + * them if I want to change them. This helps to keep consistency and ease + * of use. K## is a placeholder to pass through the individual keycodes + */ + +// clang-format off +#define LAYOUT_pinkiesout_base( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ + K33, K34, K35, K36, K37, K38 \ + ) \ + LAYOUT_wrapper( \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, TO(_KICAD), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_MS_BTN3, K01, K02, K03, LT(_FUNCTION, K04), K05, _______, TO(_NAVIGATION), K06, LT(_FUNCTION, K07), K08, K09, K0A, KC_BSLS, \ + KC_MS_BTN1, LCTL_T(K11), LGUI_T(K12), LALT_T(K13), LSFT_T(K14), K15, _______, TO(_ALPHA), LT(_MOUSE, K16), RSFT_T(K17), RALT_T(K18), RGUI_T(K19), RCTL_T(K1A), KC_QUOT, \ + KC_MS_BTN2, K21, K22, K23, K24, K25, _______, _______, K26, K27, K28, K29, K2A, KC_ENT, \ + KC_LCTL, KC_LGUI, K33, LT(_NAVIGATION,K34), LT(_FUNCTION,K35), KC_MUTE, KC_MUTE, LT(_MEDIA,K36), LT(_SYMBOLS,K37), K38, KC_RGUI, KC_RCTL \ + ) + +/* Re-pass though to allow templates to be used */ +#define LAYOUT_pinkiesout_base_wrapper(...) LAYOUT_pinkiesout_base(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_ALPHA_ALT] = LAYOUT_pinkiesout_base_wrapper( + _________________ALPHA_ALT_L1_________________, _________________ALPHA_ALT_R1_________________, + _________________ALPHA_ALT_L2_________________, _________________ALPHA_ALT_R2_________________, + _________________ALPHA_ALT_L3_________________, _________________ALPHA_ALT_R3_________________, + __ALPHA_ALT_THUMBS_6__ + ), + + [_ALPHA] = LAYOUT_pinkiesout_base_wrapper( + __________________ALPHA_L1____________________, __________________ALPHA_R1____________________, + __________________ALPHA_L2____________________, __________________ALPHA_R2____________________, + __________________ALPHA_L3____________________, __________________ALPHA_R3____________________, + __ALPHA_THUMBS_6__ + ), + + [_NAVIGATION] = LAYOUT_wrapper( + _______, _______, _______, _______, _______, _______, _______, TO(_ALPHA), _______, _______, _______, _______, _______, _______, + _______, ________________NAVIGATION_1_______________, _______, TO(_SYMBOLS), _________________NUMPAD_1__________________, _______, + _______, ________________NAVIGATION_2_______________, _______, _______, _________________NUMPAD_2__________________, _______, + _______, ________________NAVIGATION_3_______________, _______, _______, _________________NUMPAD_3__________________, _______, + _______, _______, _______, _______, KC_TAB, _______, _______, KC_BSPC, KC_SPACE, KC_DOT, _______, _______ + ), + + [_SYMBOLS] = LAYOUT_wrapper( + _______, _______, _______, _______, _______, _______, _______, TO(_NAVIGATION), _______, _______, _______, _______, _______, _______, + _______, ________________SYMBOLS_L1_________________, _______, TO(_FUNCTION), ________________SYMBOLS_R1_________________, _______, + _______, ________________SYMBOLS_L2_________________, _______, _______, ________________SYMBOLS_R2_________________, _______, + _______, ________________SYMBOLS_L3_________________, _______, _______, ________________SYMBOLS_R3_________________, _______, + _______, _______, _______, KC_ENT, KC_DEL, _______, _______, KC_BSPC, _______, _______, _______, _______ + ), + + [_FUNCTION] = LAYOUT_wrapper( + _______, _______, _______, _______, _______, _______, _______, TO(_SYMBOLS), _______, _______, _______, _______, _______, _______, + _______, ________________SHIFTNAV_1_________________, _______, TO(_MEDIA), ________________FUNCTION_1_________________, _______, + _______, ________________SHIFTNAV_2_________________, _______, _______, ________________FUNCTION_2_________________, _______, + _______, ________________SHIFTNAV_3_________________, _______, _______, ________________FUNCTION_3_________________, _______, + _______, _______, _______, _______, _______, _______, _______, N_DEL_LINE, KC_SPACE, _______, _______, _______ + ), + + [_MEDIA] = LAYOUT_wrapper( + _______, _______, _______, _______, _______, _______, _______, TO(_FUNCTION), _______, _______, _______, _______, _______, _______, + _______, ___________________RGB_1___________________, _______, TO(_MOUSE), _________________MACROS_1__________________, _______, + _______, ___________________RGB_2___________________, _______, _______, _________________MACROS_2__________________, _______, + _______, ___________________RGB_3___________________, _______, _______, _________________MACROS_3__________________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_MOUSE] = LAYOUT_wrapper( + _______, _______, _______, _______, _______, _______, _______, TO(_MEDIA), _______, _______, _______, _______, _______, _______, + _______, __________________MOUSE_1__________________, _______, TO(_GAME), ___________________BLANK___________________, _______, + _______, __________________MOUSE_2__________________, _______, _______, ___________________BLANK___________________, _______, + _______, __________________MOUSE_3__________________, _______, _______, ___________________BLANK___________________, _______, + _______, _______, _______, KC_MS_BTN1, KC_MS_BTN3, _______, _______, KC_MS_BTN3, KC_MS_BTN2, _______, _______, _______ + ), + + [_GAME] = LAYOUT_wrapper( + __GAMES_R0_L__, ___________________GAMES_0_________________, __GAMES_R0_R__, TO(_MOUSE), _______, _______, _______, _______, _______, _______, \ + __GAMES_R1_L__, ___________________GAMES_1_________________, __GAMES_R1_R__, TO(_KICAD), ___________________BLANK___________________, _______, \ + __GAMES_R2_L__, ___________________GAMES_2_________________, __GAMES_R2_R__, _______, ___________________BLANK___________________, _______, \ + __GAMES_R3_L__, ___________________GAMES_3_________________, __GAMES_R3_R__, _______, ___________________BLANK___________________, _______, \ + __GAMES_R4_1__, __GAMES_R4_3__, __GAMES_TH_L__, __GAMES_TH_C__, __GAMES_TH_R__, _______, _______, _______, _______, _______, _______, _______ \ + ), + + [_KICAD] = LAYOUT_wrapper( + __KICAD_R0_L__, ___________________KICAD_0_________________, __KICAD_R0_R__, TO(_GAME), _______, _______, _______, _______, _______, _______, \ + __KICAD_R1_L__, ___________________KICAD_1_________________, __KICAD_R1_R__, TO(_ALPHA), _________________NUMPAD_1__________________, _______, \ + __KICAD_R2_L__, ___________________KICAD_2_________________, __KICAD_R2_R__, _______, _________________NUMPAD_2__________________, _______, \ + __KICAD_R3_L__, ___________________KICAD_3_________________, __GAMES_R3_R__, _______, _________________NUMPAD_3__________________, _______, \ + __KICAD_R4_1__, __KICAD_R4_3__, __KICAD_TH_L__, __KICAD_TH_C__, __KICAD_TH_R__, _______, _______, KC_BSPC, KC_SPACE, KC_DOT, _______, _______ \ + ) +}; diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/mcuconf.h b/keyboards/fingerpunch/pinkiesout/v3_1/mcuconf.h new file mode 100644 index 0000000000..43fbb51cd8 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/mcuconf.h @@ -0,0 +1,18 @@ +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE + +#undef RP_PWM_USE_PWM1 +#define RP_PWM_USE_PWM1 TRUE + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE + +// #undef RP_PWM_USE_PWM0 +// #define RP_PWM_USE_PWM0 TRUE + +// #undef RP_SIO_USE_UART0 +// #define RP_SIO_USE_UART0 TRUE diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/readme.md b/keyboards/fingerpunch/pinkiesout/v3_1/readme.md new file mode 100644 index 0000000000..3109e43670 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/readme.md @@ -0,0 +1,17 @@ +# pinkiesout + +An ergonomic 65% keyboard + +* Keyboard Maintainer: [sadekbaroudi](https://github.com/sadekbaroudi) + +To build the firmware for this keyboard (after setting up your build environment): +``` +make fingerpunch/pinkiesout/v3_1:default RGB_MATRIX_ENABLE=yes AUDIO_ENABLE=yes +``` + +Look at the file `fp_build.json` for all the possible build parameters, or use the `fp_build.sh` script to interactively build (requires bash) +``` +bin/fp_build.sh -k pinkiesout/v3_1 -m default -i -r +``` + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/rules.mk b/keyboards/fingerpunch/pinkiesout/v3_1/rules.mk new file mode 100644 index 0000000000..e8ca371142 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/rules.mk @@ -0,0 +1,54 @@ +# MCU name +MCU = RP2040 + +# Bootloader selection +BOOTLOADER = rp2040 + +# LTO must be disabled for RP2040 builds +LTO_ENABLE = no + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MOUSEKEY_ENABLE = yes + +# Either do RGBLIGHT_ENABLE or RGB_MATRIX_ENABLE and RGB_MATRIX_DRIVER +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = no +RGB_MATRIX_DRIVER = ws2812 + +MIDI_ENABLE = no # MIDI support +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +ENCODER_ENABLE = no +# EXTRAFLAGS += -flto # macros disabled, if you need the extra space +MOUSEKEY_ENABLE = no + +SRC += keyboards/fingerpunch/src/fp_matrix_74hc595_spi.c +QUANTUM_LIB_SRC += spi_master.c +CUSTOM_MATRIX = lite + +AUDIO_ENABLE ?= no +AUDIO_DRIVER = pwm_hardware + +HAPTIC_ENABLE ?= no +HAPTIC_DRIVER = drv2605l + +# PIO serial/WS2812 drivers must be used on RP2040 +SERIAL_DRIVER = vendor +WS2812_DRIVER = vendor + +VIK_ENABLE = yes + +include keyboards/fingerpunch/src/rules.mk diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.c b/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.c new file mode 100644 index 0000000000..83bc10d5c1 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Sadek Baroudi + * + * 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 "v3_1.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 1, 62, 3, 5, 60, 61, 4, 2 }, + { 12, 55, 10, 8, 57, 56, 9, 11 }, + { 15, 48, 17, 19, 46, 47, 18, 16 }, + { 26, 41, 24, 22, 43, 42, 23, 25 }, + { 28, 35, 30, 32, 33, 34, 31, 29 }, + { 0, 39, 44, NO_LED, 53, 50, 64, 21 }, + { 13, 51, 6, NO_LED, 59, 45, 20, NO_LED }, + { 14, 38, 7, NO_LED, 58, NO_LED, NO_LED, 27 }, + { 63, 52, 49, 36, 37, 65, 40, 54 } +}, { + {7,1}, {21,1}, {36,2}, {51,1}, {65,5}, {79,10}, {93,14}, + {90,21}, {76,20}, {62,16}, {48,12}, {33,12}, {19,12}, {4,10}, + {2,20}, {16,22}, {31,23}, {46,23}, {60,27}, {74,31}, {88,35}, + {87,50}, {71,42}, {57,38}, {43,33}, {28,34}, {14,33}, {0,31}, + {25,46}, {40,48}, {56,51}, {70,56}, {84,63}, + {138,63}, {152,56}, {166,51}, {182,48}, {197,46}, {223,31}, {209,33}, + {200,34}, {179,33}, {165,38}, {151,42}, {135,50}, {134,35}, {148,31}, + {162,27}, {176,23}, {191,23}, {206,22}, {220,20}, {218,9}, {203,12}, + {189,12}, {174,12}, {160,16}, {146,20}, {132,24}, {129,14}, {143,10}, + {157,5}, {171,1}, {186,2}, {201,1}, {215,0} +}, { + 1, 4, 4, 4, 4, 4, 1, // left half - row 1 - left to right + 1, 4, 4, 4, 4, 4, 1, // left half - row 2 - right to left + 1, 12, 12, 12, 12, 4, 1, // left half - row 3 - left to right + 1, 4, 4, 4, 4, 4, 1, // left half - row 4 - right to left + 1, 1, 1, 9, 1, // left thumbs - left to right + 1, 9, 1, 1, 1, // right thumbs - left to right + 1, 4, 4, 4, 4, 4, 1, // right half - row 4 - right to left + 1, 4, 12, 12, 12, 12, 1, // right half - row 3 - left to right + 1, 4, 4, 4, 4, 4, 1, // right half - row 2 - right to left + 1, 4, 4, 4, 4, 4, 1 // right half - row 1 - left to right +} }; +#endif diff --git a/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.h b/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.h new file mode 100644 index 0000000000..cbe893c0e1 --- /dev/null +++ b/keyboards/fingerpunch/pinkiesout/v3_1/v3_1.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Sadek Baroudi + * + * 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 . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define ___ KC_NO + +#define LAYOUT_pinkiesout( \ + K50, K00, K01, K02, K03, K04, K62, K65, K05, K06, K07, K80, K53, K86, \ + K60, K10, K11, K12, K13, K14, K72, K75, K15, K16, K17, K81, K55, K87, \ + K70, K20, K21, K22, K23, K24, K63, K66, K25, K26, K27, K82, K56, K67, \ + K71, K30, K31, K32, K33, K34, K51, K52, K35, K36, K37, K83, K57, K77, \ + K40, K41, K42, K43, K44, K76, K73, K45, K46, K47, K84, K85 \ +) \ +{ \ + { K00, K07, K02, K04, K05, K06, K03, K01 }, \ + { K10, K17, K12, K14, K15, K16, K13, K11 }, \ + { K20, K27, K22, K24, K25, K26, K23, K21 }, \ + { K30, K37, K32, K34, K35, K36, K33, K31 }, \ + { K40, K47, K42, K44, K45, K46, K43, K41 }, \ + { K50, K57, K52, ___, K55, K56, K53, K51 }, \ + { K60, K67, K62, ___, K65, K66, K63, ___ }, \ + { K70, K77, K72, ___, K75, K76, K73, K71 }, \ + { K80, K87, K82, K84, K85, K86, K83, K81 } \ +}