diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/config.h b/keyboards/fingerpunch/vulpes_minora/xivik/config.h
index c00c3bf1db5f..1132ffc43a27 100644
--- a/keyboards/fingerpunch/vulpes_minora/xivik/config.h
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/config.h
@@ -26,9 +26,12 @@ along with this program. If not, see .
#ifdef FP_XIVIK_V01
#define MATRIX_ROW_PINS { GP1, GP24, GP9, GP8 }
#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
-#else
+#elif defined(FP_XIVIK_V02)
#define MATRIX_ROW_PINS { GP1, GP23, GP20, GP22 }
#define MATRIX_COL_PINS { GP2, GP3, GP5, GP6, GP4 }
+#else // If we're here, it's v03
+ #define MATRIX_ROW_PINS { GP1, GP23, GP20, GP22 }
+ #define MATRIX_COL_PINS { GP2, GP3, GP6, GP7, GP4 }
#endif
// VIK pin config
@@ -41,12 +44,17 @@ along with this program. If not, see .
#ifdef FP_XIVIK_V01
#define VIK_I2C_SDA_PIN GP22
#define VIK_I2C_SCL_PIN GP23
-#else
+#else // v0.2 or v0.3
#define VIK_I2C_SDA_PIN GP8
#define VIK_I2C_SCL_PIN GP9
#endif
+#if defined(FP_XIVIK_V01) || defined(FP_XIVIK_V02)
#define VIK_GPIO_1 GP18
#define VIK_GPIO_2 GP10
+#else // If we're here, it's v03
+#define VIK_GPIO_1 GP26
+#define VIK_GPIO_2 GP27
+#endif
#define VIK_WS2812_DI_PIN GP16
// Used only if you have a weact st7735 display, set to unused pin
@@ -56,17 +64,22 @@ along with this program. If not, see .
#define SERIAL_PIO_USE_PIO1
#ifdef FP_XIVIK_V01
#define SERIAL_USART_TX_PIN GP7
-#else
+#else // v0.2 or v0.3
// USART TX pin
#define SERIAL_USART_TX_PIN GP21
#endif
#define WS2812_DI_PIN GP0
+// For VIK modules with encoders
#ifdef ENCODER_ENABLE
- // In case there is a VIK module that has an encode
- #define ENCODERS_PAD_A { GP18 }
- #define ENCODERS_PAD_B { GP10 }
+#if defined(FP_XIVIK_V01) || defined(FP_XIVIK_V02)
+#define ENCODERS_PAD_A { GP18 }
+#define ENCODERS_PAD_B { GP10 }
+#else // If we're here, it's v03
+#define ENCODERS_PAD_A { GP26 }
+#define ENCODERS_PAD_B { GP27 }
+#endif
#endif
#ifdef CIRQUE_ENABLE
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json b/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json
index 5172abdf5cbc..f430dc4a713d 100644
--- a/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/fp_build.json
@@ -1,4 +1,12 @@
[
+ {
+ "type" : "one-of",
+ "names" : [
+ "FP_XIVIK_V01",
+ "FP_XIVIK_V02"
+ ],
+ "user_input": "Which version of xivik are you running? Latest v0.3 (0), v0.1 (1), or v0.2 (2)"
+ },
{
"type" : "one-of",
"names" : [
diff --git a/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk b/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk
index 1496ea5c066a..268e9f731500 100644
--- a/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk
+++ b/keyboards/fingerpunch/vulpes_minora/xivik/rules.mk
@@ -34,4 +34,8 @@ SERIAL_DRIVER = vendor
ifeq ($(strip $(FP_XIVIK_V01)), yes)
OPT_DEFS += -DFP_XIVIK_V01
+endif
+
+ifeq ($(strip $(FP_XIVIK_V02)), yes)
+ OPT_DEFS += -DFP_XIVIK_V02
endif
\ No newline at end of file
diff --git a/keyboards/fingerpunch/xivik/config.h b/keyboards/fingerpunch/xivik/config.h
index 31ea8cbcb424..92f8d7c8e4f9 100644
--- a/keyboards/fingerpunch/xivik/config.h
+++ b/keyboards/fingerpunch/xivik/config.h
@@ -48,12 +48,17 @@ along with this program. If not, see .
#ifdef FP_XIVIK_V01
#define VIK_I2C_SDA_PIN GP22
#define VIK_I2C_SCL_PIN GP23
-#else
+#else // v0.2 or v0.3
#define VIK_I2C_SDA_PIN GP8
#define VIK_I2C_SCL_PIN GP9
#endif
+#if defined(FP_XIVIK_V01) || defined(FP_XIVIK_V02)
#define VIK_GPIO_1 GP18
#define VIK_GPIO_2 GP10
+#else // If we're here, it's v03
+#define VIK_GPIO_1 GP26
+#define VIK_GPIO_2 GP27
+#endif
#define VIK_WS2812_DI_PIN GP16
// Used only if you have a weact st7735 display, set to unused pin
@@ -63,9 +68,12 @@ along with this program. If not, see .
#ifdef FP_XIVIK_V01
#define MATRIX_ROW_PINS { GP24, GP9, GP8, GP7 }
#define MATRIX_COL_PINS { GP0, GP1, GP2, GP3, GP4, GP5, GP6 }
-#else
+#elif defined(FP_XIVIK_V02)
#define MATRIX_ROW_PINS { GP23, GP20, GP22, GP21 }
#define MATRIX_COL_PINS { GP0, GP1, GP2, GP3, GP5, GP6, GP4 }
+#else // If we're here, it's v03
+#define MATRIX_ROW_PINS { GP23, GP20, GP22, GP21 }
+#define MATRIX_COL_PINS { GP0, GP1, GP2, GP3, GP6, GP7, GP4 }
#endif
/* COL2ROW or ROW2COL */
@@ -73,8 +81,13 @@ along with this program. If not, see .
// For VIK modules with encoders
#ifdef ENCODER_ENABLE
+#if defined(FP_XIVIK_V01) || defined(FP_XIVIK_V02)
#define ENCODERS_PAD_A { GP18 }
#define ENCODERS_PAD_B { GP10 }
+#else // If we're here, it's v03
+#define ENCODERS_PAD_A { GP26 }
+#define ENCODERS_PAD_B { GP27 }
+#endif
#endif
#ifdef CIRQUE_ENABLE
diff --git a/keyboards/fingerpunch/xivik/fp_build.json b/keyboards/fingerpunch/xivik/fp_build.json
index 2ea695e311c3..4cacc7f243b4 100644
--- a/keyboards/fingerpunch/xivik/fp_build.json
+++ b/keyboards/fingerpunch/xivik/fp_build.json
@@ -1,4 +1,12 @@
[
+ {
+ "type" : "one-of",
+ "names" : [
+ "FP_XIVIK_V01",
+ "FP_XIVIK_V02"
+ ],
+ "user_input": "Which version of xivik are you running? Latest v0.3 (0), v0.1 (1), or v0.2 (2)"
+ },
{
"type" : "one-of",
"names" : [
diff --git a/keyboards/fingerpunch/xivik/rules.mk b/keyboards/fingerpunch/xivik/rules.mk
index ef89ad39fffc..fccd1c09132d 100644
--- a/keyboards/fingerpunch/xivik/rules.mk
+++ b/keyboards/fingerpunch/xivik/rules.mk
@@ -64,4 +64,8 @@ ifeq ($(strip $(FP_XIVIK_V01)), yes)
OPT_DEFS += -DFP_XIVIK_V01
endif
+ifeq ($(strip $(FP_XIVIK_V02)), yes)
+ OPT_DEFS += -DFP_XIVIK_V02
+endif
+
include keyboards/fingerpunch/src/rules.mk