diff --git a/keyboards/fingerpunch/src/vik/config.h b/keyboards/fingerpunch/src/vik/config.h
index 37eb47ba09..a7888085d4 100644
--- a/keyboards/fingerpunch/src/vik/config.h
+++ b/keyboards/fingerpunch/src/vik/config.h
@@ -155,4 +155,8 @@
#define AZOTEQ_IQS5XX_SWIPE_Y_ENABLE true
#define AZOTEQ_IQS5XX_ZOOM_ENABLE true
#endif
+#endif
+
+#ifdef CIRQUE_ENABLE
+ #define CIRQUE_PINNACLE_SPI_CS_PIN VIK_SPI_CS
#endif
\ No newline at end of file
diff --git a/keyboards/fingerpunch/src/vik/rules.mk b/keyboards/fingerpunch/src/vik/rules.mk
index 8ef8f81604..5accb23028 100644
--- a/keyboards/fingerpunch/src/vik/rules.mk
+++ b/keyboards/fingerpunch/src/vik/rules.mk
@@ -14,6 +14,7 @@
ifeq ($(strip $(VIK_HAPTIC)), yes)
HAPTIC_ENABLE = yes
+ HAPTIC_DRIVER = drv2605l
OPT_DEFS += -DVIK_HAPTIC
endif
diff --git a/keyboards/fingerpunch/vulpes_minora/byomcu/config.h b/keyboards/fingerpunch/vulpes_minora/byomcu/config.h
index 9ceb460fb0..f6ca0ab2b7 100644
--- a/keyboards/fingerpunch/vulpes_minora/byomcu/config.h
+++ b/keyboards/fingerpunch/vulpes_minora/byomcu/config.h
@@ -22,19 +22,36 @@ along with this program. If not, see .
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
-// For SPI
-#define SPI_SCK_PIN GP22
-#define SPI_MOSI_PIN GP23
-#define SPI_MISO_PIN GP20
-
// wiring of each half
#define MATRIX_ROW_PINS { GP4, GP29, GP28, GP27 }
#define MATRIX_COL_PINS { GP5, GP6, GP7, GP8, GP9 }
+// 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 GP21
+#define VIK_I2C_DRIVER I2CD1
+#define VIK_I2C_SDA_PIN GP2
+#define VIK_I2C_SCL_PIN GP3
+#define VIK_GPIO_1 GP15
+#define VIK_GPIO_2 GP26
+#define VIK_WS2812_DI_PIN GP0
+
+// Got help from https://www.eisbahn.jp/yoichiro/2022/08/luankey_pico_qmk_firmware.html
+#define SERIAL_PIO_USE_PIO1
+#define SERIAL_USART_TX_PIN GP1 // USART TX pin
+
+#define WS2812_DI_PIN GP0
+
+#define VIK_ST7735_UNUSED_PIN GP11
+
// https://github.com/sadekbaroudi/vik/tree/master/pcb/pers60-cirque-leds or https://github.com/sadekbaroudi/vik/tree/master/pcb/pers60-pmw3360-leds
#ifdef FP_VIK_PERS60_MODULE
-#define ENCODERS_PAD_A { GP14, GP3 }
-#define ENCODERS_PAD_B { GP13, GP2 }
+// This config assumes the VIK module is connected to the left half
+#define ENCODERS_PAD_A { GP14, GP15 }
+#define ENCODERS_PAD_B { GP13, GP26 }
#define ENCODER_RESOLUTIONS { 2, 1 }
#define ENCODERS_PAD_A_RIGHT { GP14 }
#define ENCODERS_PAD_B_RIGHT { GP13 }
@@ -49,12 +66,6 @@ along with this program. If not, see .
#define ENCODERS_PAD_B_RIGHT { GP13 }
#endif
-// Got help from https://www.eisbahn.jp/yoichiro/2022/08/luankey_pico_qmk_firmware.html
-#define SERIAL_PIO_USE_PIO1
-#define SERIAL_USART_TX_PIN GP1 // USART TX pin
-
-#define WS2812_DI_PIN GP0
-
#ifdef AUDIO_ENABLE
#define AUDIO_VOICES
#define AUDIO_PIN GP12
@@ -72,28 +83,12 @@ along with this program. If not, see .
#endif
#ifdef CIRQUE_ENABLE
- // cirque trackpad config
- #define CIRQUE_PINNACLE_SPI_CS_PIN GP21
- // Uncomment 2 lines below to switch to relative mode and enable right click
- // Note that tap to click doesn't work on the slave side unless you enable relative mode
- // #define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_RELATIVE_MODE
- // #define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE
- #define CIRQUE_PINNACLE_TAP_ENABLE
#define POINTING_DEVICE_ROTATION_90
- #define POINTING_DEVICE_TASK_THROTTLE_MS 5
#define POINTING_DEVICE_LEFT
#endif
-#ifdef FP_TRACKBALL_ENABLE
- // Trackball config
- #define PMW33XX_CS_PIN GP21
- #define PMW33XX_CPI 1000
- #define PMW33XX_CS_DIVISOR 8
-
- /* SPI config for pmw3360 sensor. */
- #define SPI_DRIVER SPID0
- // #define SPI_SCK_PAL_MODE 5 // already defined in chibios
- // #define SPI_MOSI_PAL_MODE 5 // already defined in chibios
- // #define SPI_MISO_PAL_MODE 5 // already defined in chibios
+#ifdef VIK_TRACKBALL_ENABLE
#define POINTING_DEVICE_LEFT
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
\ No newline at end of file
diff --git a/keyboards/fingerpunch/vulpes_minora/byomcu/fp_build.json b/keyboards/fingerpunch/vulpes_minora/byomcu/fp_build.json
index 961562b552..87b59d53b4 100644
--- a/keyboards/fingerpunch/vulpes_minora/byomcu/fp_build.json
+++ b/keyboards/fingerpunch/vulpes_minora/byomcu/fp_build.json
@@ -1,24 +1,23 @@
[
{
- "type" : "single",
- "name" : "CIRQUE_ENABLE",
- "user_input": "Do you have a cirque?"
- },
- {
- "type" : "single",
- "name" : "FP_TRACKBALL_ENABLE",
- "user_input": "Do you have a trackball?"
+ "type" : "one-of",
+ "names" : [
+ "VIK_HAPTIC",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_PMW3360_LEDS",
+ "VIK_PMW3360",
+ "VIK_WEACT_ST7735",
+ "VIK_VIK_GC9A01",
+ "VIK_WAVESHARE_22224"
+ ],
+ "user_input": "Are you using a VIK module? NONE, VIK_HAPTIC, VIK_PER56_CIRQUE_LEDS, VIK_PER56_CIRQUE_LEDS, VIK_PER56_PMW3360_LEDS, VIK_PMW3360, VIK_WEACT_ST7735, VIK_VIK_GC9A01, VIK_WAVESHARE_22224"
},
{
"type" : "one-of",
"names" : [ "RGBLIGHT_ENABLE", "RGB_MATRIX_ENABLE" ],
"user_input": "No RGB, RGB light, RGB matrix?"
},
- {
- "type" : "single",
- "name" : "FP_VIK_PERS60_MODULE",
- "user_input": "Do you have a scroll wheel VIK module installed with LEDs?"
- },
{
"type" : "single",
"name" : "ENCODER_ENABLE",
@@ -28,10 +27,5 @@
"type" : "single",
"name" : "AUDIO_ENABLE",
"user_input": "Do you have an audio buzzer?"
- },
- {
- "type" : "single",
- "name" : "HAPTIC_ENABLE",
- "user_input": "Do you have a haptic feedback?"
}
]
diff --git a/keyboards/fingerpunch/vulpes_minora/byomcu/rules.mk b/keyboards/fingerpunch/vulpes_minora/byomcu/rules.mk
index a14b17aa85..bbe58d682f 100644
--- a/keyboards/fingerpunch/vulpes_minora/byomcu/rules.mk
+++ b/keyboards/fingerpunch/vulpes_minora/byomcu/rules.mk
@@ -30,28 +30,5 @@ MOUSEKEY_ENABLE = yes
SPLIT_KEYBOARD = yes
SERIAL_DRIVER = vendor
-#HAPTIC FEEDBACK
-HAPTIC_ENABLE ?= no
-HAPTIC_DRIVER = drv2605l
-
AUDIO_ENABLE ?= no
AUDIO_DRIVER = pwm_hardware
-
-ifeq ($(strip $(FP_VIK_PERS60_MODULE)), yes)
- OPT_DEFS += -DFP_VIK_PERS60_MODULE
-endif
-
-ifeq ($(strip $(CIRQUE_ENABLE)), yes)
- MOUSEKEY_ENABLE := yes # not required, but enabling for mouse button keys
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := cirque_pinnacle_spi
- OPT_DEFS += -DCIRQUE_ENABLE
-endif
-
-ifeq ($(strip $(FP_TRACKBALL_ENABLE)), yes)
- MOUSEKEY_ENABLE := yes # not required, but enabling for mouse button keys
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := pmw3360
- QUANTUM_LIB_SRC += spi_master.c
- OPT_DEFS += -DFP_TRACKBALL_ENABLE
-endif
diff --git a/keyboards/fingerpunch/vulpes_minora/config.h b/keyboards/fingerpunch/vulpes_minora/config.h
index 4774c5e2c7..cb521f684d 100644
--- a/keyboards/fingerpunch/vulpes_minora/config.h
+++ b/keyboards/fingerpunch/vulpes_minora/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2012 Jun Wako
+Copyright 2023 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
@@ -20,11 +20,11 @@ along with this program. If not, see .
#include "keyboards/fingerpunch/src/config_pre.h"
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-// Got help from https://www.eisbahn.jp/yoichiro/2022/08/luankey_pico_qmk_firmware.html
#define MASTER_LEFT
#define SPLIT_TRANSPORT_MIRROR
@@ -107,20 +107,6 @@ along with this program. If not, see .
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#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
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/fingerpunch/vulpes_minora/rp2040zero/config.h b/keyboards/fingerpunch/vulpes_minora/rp2040zero/config.h
index abc52e5d44..c9c62e2b19 100644
--- a/keyboards/fingerpunch/vulpes_minora/rp2040zero/config.h
+++ b/keyboards/fingerpunch/vulpes_minora/rp2040zero/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2012 Jun Wako
+Copyright 2023 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
@@ -22,31 +22,38 @@ along with this program. If not, see .
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
-// For SPI
-#define SPI_SCK_PIN GP6
-#define SPI_MOSI_PIN GP7
-#define SPI_MISO_PIN GP4
-
// wiring of each half
#define MATRIX_ROW_PINS { GP11, GP10, GP9, GP8 }
#define MATRIX_COL_PINS { GP28, GP27, GP26, GP15, GP14 }
-// https://github.com/sadekbaroudi/vik/tree/master/pcb/pers60-cirque-leds or https://github.com/sadekbaroudi/vik/tree/master/pcb/pers60-pmw3360-leds
-#ifdef FP_VIK_PERS60_MODULE
-#define ENCODERS_PAD_A { GP14 }
-#define ENCODERS_PAD_B { GP29 }
-#define ENCODER_RESOLUTIONS { 1 }
-// Switch the default for the PERS60 rotary encoder to scrolling
-#define FP_ENC_1_LAYER_SCROLL_WHEEL 0
-#define FP_ENC_1_LAYER_SUPER_TAB 5
-#endif
+// VIK pin config
+#define VIK_SPI_DRIVER SPID0
+#define VIK_SPI_SCK_PIN GP6
+#define VIK_SPI_MOSI_PIN GP7
+#define VIK_SPI_MISO_PIN GP4
+#define VIK_SPI_CS GP5
+#define VIK_I2C_DRIVER I2CD1
+#define VIK_I2C_SDA_PIN GP2
+#define VIK_I2C_SCL_PIN GP3
+#define VIK_GPIO_1 GP13
+#define VIK_GPIO_2 GP29
+#define VIK_WS2812_DI_PIN GP0
-// Got help from https://www.eisbahn.jp/yoichiro/2022/08/luankey_pico_qmk_firmware.html
+// Note that this is the top pad on the back of the RP2040-Zero, change this if you end up using that pad
+#define VIK_ST7735_UNUSED_PIN GP25
+
+// Split config
#define SERIAL_PIO_USE_PIO1
#define SERIAL_USART_TX_PIN GP1 // USART TX pin
#define WS2812_DI_PIN GP0
+// In case there is a VIK module that has an encoder
+#ifdef ENCODER_ENABLE
+ #define ENCODERS_PAD_A { GP13 }
+ #define ENCODERS_PAD_B { GP29 }
+#endif
+
#ifdef AUDIO_ENABLE
#define AUDIO_VOICES
#define AUDIO_PIN GP12
@@ -64,28 +71,12 @@ along with this program. If not, see .
#endif
#ifdef CIRQUE_ENABLE
- // cirque trackpad config
- #define CIRQUE_PINNACLE_SPI_CS_PIN GP5
- // Uncomment 2 lines below to switch to relative mode and enable right click
- // Note that tap to click doesn't work on the slave side unless you enable relative mode
- // #define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_RELATIVE_MODE
- // #define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE
- #define CIRQUE_PINNACLE_TAP_ENABLE
#define POINTING_DEVICE_ROTATION_90
- #define POINTING_DEVICE_TASK_THROTTLE_MS 5
#define POINTING_DEVICE_LEFT
#endif
-#ifdef FP_TRACKBALL_ENABLE
- // Trackball config
- #define PMW33XX_CS_PIN GP5
- #define PMW33XX_CPI 1000
- #define PMW33XX_CS_DIVISOR 8
-
- /* SPI config for pmw3360 sensor. */
- #define SPI_DRIVER SPID0
- // #define SPI_SCK_PAL_MODE 5 // already defined in chibios
- // #define SPI_MOSI_PAL_MODE 5 // already defined in chibios
- // #define SPI_MISO_PAL_MODE 5 // already defined in chibios
+#ifdef VIK_TRACKBALL_ENABLE
#define POINTING_DEVICE_LEFT
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
\ No newline at end of file
diff --git a/keyboards/fingerpunch/vulpes_minora/rp2040zero/fp_build.json b/keyboards/fingerpunch/vulpes_minora/rp2040zero/fp_build.json
index 1e5a4beb35..f560fca5b2 100644
--- a/keyboards/fingerpunch/vulpes_minora/rp2040zero/fp_build.json
+++ b/keyboards/fingerpunch/vulpes_minora/rp2040zero/fp_build.json
@@ -1,32 +1,26 @@
[
{
- "type" : "single",
- "name" : "CIRQUE_ENABLE",
- "user_input": "Do you have a cirque?"
- },
- {
- "type" : "single",
- "name" : "FP_TRACKBALL_ENABLE",
- "user_input": "Do you have a trackball?"
+ "type" : "one-of",
+ "names" : [
+ "VIK_HAPTIC",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_PMW3360_LEDS",
+ "VIK_PMW3360",
+ "VIK_WEACT_ST7735",
+ "VIK_VIK_GC9A01",
+ "VIK_WAVESHARE_22224"
+ ],
+ "user_input": "Are you using a VIK module? NONE, VIK_HAPTIC, VIK_PER56_CIRQUE_LEDS, VIK_PER56_CIRQUE_LEDS, VIK_PER56_PMW3360_LEDS, VIK_PMW3360, VIK_WEACT_ST7735, VIK_VIK_GC9A01, VIK_WAVESHARE_22224"
},
{
"type" : "one-of",
"names" : [ "RGBLIGHT_ENABLE", "RGB_MATRIX_ENABLE" ],
"user_input": "No RGB, RGB light, RGB matrix?"
},
- {
- "type" : "single",
- "name" : "FP_VIK_PERS60_MODULE",
- "user_input": "Do you have a scroll wheel VIK module installed with LEDs?"
- },
{
"type" : "single",
"name" : "AUDIO_ENABLE",
"user_input": "Do you have an audio buzzer?"
- },
- {
- "type" : "single",
- "name" : "HAPTIC_ENABLE",
- "user_input": "Do you have a haptic feedback?"
}
]
diff --git a/keyboards/fingerpunch/vulpes_minora/rp2040zero/rules.mk b/keyboards/fingerpunch/vulpes_minora/rp2040zero/rules.mk
index 3d8807e716..1c762cc15f 100644
--- a/keyboards/fingerpunch/vulpes_minora/rp2040zero/rules.mk
+++ b/keyboards/fingerpunch/vulpes_minora/rp2040zero/rules.mk
@@ -32,29 +32,5 @@ MOUSEKEY_ENABLE = yes
SPLIT_KEYBOARD = yes
SERIAL_DRIVER = vendor
-#HAPTIC FEEDBACK
-HAPTIC_ENABLE ?= no
-HAPTIC_DRIVER = drv2605l
-
AUDIO_ENABLE ?= no
AUDIO_DRIVER = pwm_hardware
-
-ifeq ($(strip $(FP_VIK_PERS60_MODULE)), yes)
- OPT_DEFS += -DFP_VIK_PERS60_MODULE
- ENCODER_ENABLE := yes
-endif
-
-ifeq ($(strip $(CIRQUE_ENABLE)), yes)
- MOUSEKEY_ENABLE := yes # not required, but enabling for mouse button keys
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := cirque_pinnacle_spi
- OPT_DEFS += -DCIRQUE_ENABLE
-endif
-
-ifeq ($(strip $(FP_TRACKBALL_ENABLE)), yes)
- MOUSEKEY_ENABLE := yes # not required, but enabling for mouse button keys
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := pmw3360
- QUANTUM_LIB_SRC += spi_master.c
- OPT_DEFS += -DFP_TRACKBALL_ENABLE
-endif
diff --git a/keyboards/fingerpunch/vulpes_minora/rules.mk b/keyboards/fingerpunch/vulpes_minora/rules.mk
index e341ab9833..59de1dcf4e 100644
--- a/keyboards/fingerpunch/vulpes_minora/rules.mk
+++ b/keyboards/fingerpunch/vulpes_minora/rules.mk
@@ -1 +1,3 @@
+VIK_ENABLE=yes
+
include keyboards/fingerpunch/src/rules.mk
diff --git a/keyboards/fingerpunch/vulpes_minora/vulpes_minora.h b/keyboards/fingerpunch/vulpes_minora/vulpes_minora.h
index f69a24cac2..c0588065c7 100644
--- a/keyboards/fingerpunch/vulpes_minora/vulpes_minora.h
+++ b/keyboards/fingerpunch/vulpes_minora/vulpes_minora.h
@@ -21,6 +21,8 @@
# include "byomcu.h"
#elif defined(KEYBOARD_fingerpunch_vulpes_minora_rp2040zero)
# include "rp2040zero.h"
+#elif defined(KEYBOARD_fingerpunch_vulpes_minora_xivik)
+# include "xivik.h"
#endif
#include "keyboards/fingerpunch/src/fp.h"
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/config.h b/keyboards/fingerpunch/vulpes_minora/xivik/config.h
new file mode 100644
index 0000000000..c00c3bf1db
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/config.h
@@ -0,0 +1,81 @@
+/*
+Copyright 2023 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 */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 10
+
+// wiring of each half
+#ifdef FP_XIVIK_V01
+ #define MATRIX_ROW_PINS { GP1, GP24, GP9, GP8 }
+ #define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
+#else
+ #define MATRIX_ROW_PINS { GP1, GP23, GP20, GP22 }
+ #define MATRIX_COL_PINS { GP2, GP3, GP5, GP6, GP4 }
+#endif
+
+// VIK pin config
+#define VIK_SPI_DRIVER SPID1
+#define VIK_SPI_SCK_PIN GP14
+#define VIK_SPI_MOSI_PIN GP15
+#define VIK_SPI_MISO_PIN GP12
+#define VIK_SPI_CS GP13
+#define VIK_I2C_DRIVER I2CD1
+#ifdef FP_XIVIK_V01
+ #define VIK_I2C_SDA_PIN GP22
+ #define VIK_I2C_SCL_PIN GP23
+#else
+ #define VIK_I2C_SDA_PIN GP8
+ #define VIK_I2C_SCL_PIN GP9
+#endif
+#define VIK_GPIO_1 GP18
+#define VIK_GPIO_2 GP10
+#define VIK_WS2812_DI_PIN GP16
+
+// Used only if you have a weact st7735 display, set to unused pin
+#define VIK_ST7735_UNUSED_PIN GP11
+
+// Split config
+#define SERIAL_PIO_USE_PIO1
+#ifdef FP_XIVIK_V01
+ #define SERIAL_USART_TX_PIN GP7
+#else
+ // USART TX pin
+ #define SERIAL_USART_TX_PIN GP21
+#endif
+
+#define WS2812_DI_PIN GP0
+
+#ifdef ENCODER_ENABLE
+ // In case there is a VIK module that has an encode
+ #define ENCODERS_PAD_A { GP18 }
+ #define ENCODERS_PAD_B { GP10 }
+#endif
+
+#ifdef CIRQUE_ENABLE
+ #define POINTING_DEVICE_ROTATION_90
+ #define POINTING_DEVICE_LEFT
+#endif
+
+#ifdef VIK_TRACKBALL_ENABLE
+ #define POINTING_DEVICE_LEFT
+#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
\ No newline at end of file
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json b/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json
new file mode 100644
index 0000000000..0e0a2f08df
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json
@@ -0,0 +1,21 @@
+[
+ {
+ "type" : "one-of",
+ "names" : [
+ "VIK_HAPTIC",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_CIRQUE_LEDS",
+ "VIK_PER56_PMW3360_LEDS",
+ "VIK_PMW3360",
+ "VIK_WEACT_ST7735",
+ "VIK_VIK_GC9A01",
+ "VIK_WAVESHARE_22224"
+ ],
+ "user_input": "Are you using a VIK module? NONE, VIK_HAPTIC, VIK_PER56_CIRQUE_LEDS, VIK_PER56_CIRQUE_LEDS, VIK_PER56_PMW3360_LEDS, VIK_PMW3360, VIK_WEACT_ST7735, VIK_VIK_GC9A01, VIK_WAVESHARE_22224"
+ },
+ {
+ "type" : "one-of",
+ "names" : [ "RGBLIGHT_ENABLE", "RGB_MATRIX_ENABLE" ],
+ "user_input": "No RGB, RGB light, RGB matrix?"
+ }
+]
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/halconf.h b/keyboards/fingerpunch/vulpes_minora/xivik/halconf.h
new file mode 100644
index 0000000000..e659a63244
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/halconf.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2022 Charly Delay (@0xcharly)
+ *
+ * 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
+
+#define HAL_USE_SPI TRUE
+#define HAL_USE_I2C TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#include_next "halconf.h"
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/info.json b/keyboards/fingerpunch/vulpes_minora/xivik/info.json
new file mode 100644
index 0000000000..5115609112
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/info.json
@@ -0,0 +1,11 @@
+{
+ "manufacturer": "sadekbaroudi",
+ "keyboard_name": "vulpes minora",
+ "url": "https://github.com/sadekbaroudi/vulpes-minora/",
+ "maintainer": "Sadek Baroudi ",
+ "usb": {
+ "vid": "0xFEFE",
+ "pid": "0x1110",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/default/keymap.c b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0c375cda76
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/default/keymap.c
@@ -0,0 +1,162 @@
+#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
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | S | D | F | G | | H | J | K | L | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | V | B | | N | M | , | . | / |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | LOWER| Enter| Del | |BckSpc| Space| RAISE|
+ * `--------------------' `--------------------.
+ */
+
+// Default config uses home row mods. So hold each of the keys on the home row to use ctrl, gui, alt, or shift
+[_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ LCTL_T(KC_A), LGUI_T(KC_S), LALT_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, RSFT_T(KC_J), RALT_T(KC_K), RGUI_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LOWER, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, RAISE
+),
+
+/* Colemak
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | F | P | B | | J | L | U | Y | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | R | S | T | G | | M | N | E | I | O |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | D | V | | K | H | , | . | / |
+ * `-------------+--------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | LOWER| Enter| ' | |BckSpc| Space| RAISE|
+ * `--------------------' `--------------------.
+ */
+
+// Default config uses home row mods. So hold each of the keys on the home row to use ctrl, gui, alt, or shift
+[_COLEMAK] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ LCTL_T(KC_A), LGUI_T(KC_R), LALT_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, RSFT_T(KC_N), RALT_T(KC_E), RGUI_T(KC_I), RCTL_T(KC_O),
+ KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH,
+ LOWER, KC_ENT, KC_QUOT, KC_BSPC, KC_SPC, RAISE
+),
+
+/* Raise
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Left | Down | Up | Right| Tab | | | - | = | [ | ] |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Ctrl| ` | GUI | Alt | | | | | | \ | ' |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | LOWER| | | | | | RAISE|
+ * `--------------------' `--------------------.
+ */
+[_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TAB, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
+ _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Esc | | | | | | | _ | + | { | } |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Caps| ~ | |Reset |Btldr | | | | | | | ' |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | LOWER| | | | Del | | RAISE|
+ * `--------------------' `--------------------.
+ */
+[_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
+ KC_CAPS, KC_TILD, _______, QK_RBT, QK_BOOT, _______, _______, _______, KC_PIPE, KC_DQT,
+ _______, _______, _______, KC_DEL, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | RGB_T| RGB_R| RGB_F| |QWERTY| | F1 | F2 | F3 | F4 | F5 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | SPD_I| HUE_I| SAT_I| VAL_I|COLEMK| | F6 | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | SPD_D| HUE_D| SAT_D| VAL_D| | | F11 | F12 | |Reset | Btldr|
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | LOWER| | | | | | RAISE|
+ * `--------------------' `--------------------.
+ */
+[_ADJUST] = LAYOUT_split_3x5_3(
+ RGB_TOG, RGB_RMOD, RGB_MOD, _______, TO(_QWERTY), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, TO(_COLEMAK), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_F11, KC_F12, _______, QK_RBT, QK_BOOT,
+ _______, _______, _______, _______, _______, _______
+)
+};
+
+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;
+}
\ No newline at end of file
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/config.h b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..a3d48aa901
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,21 @@
+// Copyright 2023 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// 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
+
+#define XXX KC_NO
+
+#define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, K31, K32, K33, K34, K35, K36, K37, K38, N39 \
+) \
+LAYOUT_ximi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
+)
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..fadfdc8365
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// 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 .
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/sadekbaroudi/keymap.c b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/sadekbaroudi/keymap.c
new file mode 100644
index 0000000000..1587357cda
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/keymaps/sadekbaroudi/keymap.c
@@ -0,0 +1,96 @@
+/* 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_luakeeb_base` macro is a template to allow the use of identical
+ * modifiers for the default layouts (eg ALPHA_ALT, Colemak, 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_vulpes_minora_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( \
+ K01, K02, K03, LT(_FUNCTION, K04), K05, K06, LT(_FUNCTION, K07), K08, K09, K0A, \
+ LCTL_T(K11), LGUI_T(K12), LALT_T(K13), LSFT_T(K14), K15, LT(_MOUSE, K16), RSFT_T(K17), RALT_T(K18), RGUI_T(K19), RCTL_T(K1A), \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
+ K33, LT(_NAVIGATION,K34), LT(_FUNCTION,K35), LT(_MEDIA,K36), LT(_SYMBOLS,K37), K38, \
+ )
+
+/* Re-pass though to allow templates to be used */
+#define LAYOUT_vulpes_minora_base_wrapper(...) LAYOUT_vulpes_minora_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_ALPHA_ALT] = LAYOUT_vulpes_minora_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_vulpes_minora_base_wrapper(
+ __________________ALPHA_L1____________________, __________________ALPHA_R1____________________,
+ __________________ALPHA_L2____________________, __________________ALPHA_R2____________________,
+ __________________ALPHA_L3____________________, __________________ALPHA_R3____________________,
+ __ALPHA_THUMBS_6__
+ ),
+
+ [_NAVIGATION] = LAYOUT_wrapper(
+ ________________NAVIGATION_1_______________, _________________NUMPAD_1__________________,
+ ________________NAVIGATION_2_______________, _________________NUMPAD_2__________________,
+ ________________NAVIGATION_3_______________, _________________NUMPAD_3__________________,
+ _______, _______, KC_TAB, KC_BSPC, KC_SPACE, KC_DOT
+ ),
+
+ [_SYMBOLS] = LAYOUT_wrapper(
+ ________________SYMBOLS_L1_________________, ________________SYMBOLS_R1_________________,
+ ________________SYMBOLS_L2_________________, ________________SYMBOLS_R2_________________,
+ ________________SYMBOLS_L3_________________, ________________SYMBOLS_R3_________________,
+ _______, KC_ENT, KC_DEL, KC_BSPC, _______, _______
+ ),
+
+ [_FUNCTION] = LAYOUT_wrapper(
+ ________________SHIFTNAV_1_________________, ________________FUNCTION_1_________________,
+ ________________SHIFTNAV_2_________________, ________________FUNCTION_2_________________,
+ ________________SHIFTNAV_3_________________, ________________FUNCTION_3_________________,
+ _______, _______, _______, N_DEL_LINE, KC_SPACE, _______
+ ),
+
+ [_MEDIA] = LAYOUT_wrapper(
+ ___________________RGB_1___________________, _________________MACROS_1__________________,
+ ___________________RGB_2___________________, _________________MACROS_2__________________,
+ ___________________RGB_3___________________, _________________MACROS_3__________________,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_wrapper(
+ __________________MOUSE_1__________________, ___________________BLANK___________________,
+ __________________MOUSE_2__________________, ___________________BLANK___________________,
+ __________________MOUSE_3__________________, ___________________BLANK___________________,
+ _______, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN3, KC_MS_BTN2, _______
+ )
+
+};
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/mcuconf.h b/keyboards/fingerpunch/vulpes_minora/xivik/mcuconf.h
new file mode 100644
index 0000000000..d7053c289d
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/mcuconf.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI1
+#define RP_SPI_USE_SPI1 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#undef RP_PWM_USE_PWM6
+#define RP_PWM_USE_PWM6 TRUE
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/readme.md b/keyboards/fingerpunch/vulpes_minora/xivik/readme.md
new file mode 100644
index 0000000000..9a16bc6834
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/readme.md
@@ -0,0 +1,25 @@
+# vulpes minora
+
+* Keyboard Maintainer: sadekbaroudi
+* Hardware Supported: vulpes minora (rp2040-zero)
+
+Make example for this keyboard (after setting up your build environment):
+```
+ make fingerpunch/vulpes_minora:default RGBLIGHT_ENABLE=yes ENCODER_ENABLE=yes
+```
+
+Options are:
+```
+ RGBLIGHT_ENABLE=yes
+ HAPTIC_FEEDBACK=yes
+ ENCODER_ENABLE=yes
+ CIRQUE_ENABLE=yes
+ FP_TRACKBALL_ENABLE=yes
+```
+
+See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+
+## Build Guide
+
+See:
+https://github.com/sadekbaroudi/vulpes-minora/
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk b/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk
new file mode 100644
index 0000000000..1496ea5c06
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+
+# 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
+
+# Either do RGBLIGHT_ENABLE or RGB_MATRIX_ENABLE and RGB_MATRIX_DRIVER
+RGBLIGHT_ENABLE ?= no
+RGB_MATRIX_ENABLE ?= no # not supported yet, but will add
+RGB_MATRIX_DRIVER = ws2812
+WS2812_DRIVER = vendor
+
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+ENCODER_ENABLE ?= no
+EXTRAFLAGS += -flto # macros enable or disable
+MOUSEKEY_ENABLE = yes
+
+SPLIT_KEYBOARD = yes
+SERIAL_DRIVER = vendor
+
+ifeq ($(strip $(FP_XIVIK_V01)), yes)
+ OPT_DEFS += -DFP_XIVIK_V01
+endif
\ No newline at end of file
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/xivik.c b/keyboards/fingerpunch/vulpes_minora/xivik/xivik.c
new file mode 100644
index 0000000000..7610af850e
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/xivik.c
@@ -0,0 +1 @@
+#include "xivik.h"
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/xivik.h b/keyboards/fingerpunch/vulpes_minora/xivik/xivik.h
new file mode 100644
index 0000000000..c454281c8e
--- /dev/null
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/xivik.h
@@ -0,0 +1,24 @@
+#pragma once
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_split_3x5_3( \
+ K01, K02, K03, K04, K05, K45, K44, K43, K42, K41, \
+ K11, K12, K13, K14, K15, K55, K54, K53, K52, K51, \
+ K21, K22, K23, K24, K25, K65, K64, K63, K62, K61, \
+ K33, K34, K35, K75, K74, K73 \
+ ) \
+ { \
+ { K01, K02, K03, K04, K05 }, \
+ { K11, K12, K13, K14, K15 }, \
+ { K21, K22, K23, K24, K25 }, \
+ { ___, ___, K33, K34, K35 }, \
+ { K41, K42, K43, K44, K45 }, \
+ { K51, K52, K53, K54, K55 }, \
+ { K61, K62, K63, K64, K65 }, \
+ { ___, ___, K73, K74, K75 } \
+ }
+
+#define LAYOUT LAYOUT_split_3x5_3
+