diff --git a/keyboards/fingerpunch/ximi/config.h b/keyboards/fingerpunch/ximi/config.h
index 443e22ecd1..c291b15197 100644
--- a/keyboards/fingerpunch/ximi/config.h
+++ b/keyboards/fingerpunch/ximi/config.h
@@ -47,27 +47,69 @@ along with this program. If not, see .
#define RGB_DI_PIN GP26
#ifdef RGBLIGHT_ENABLE
- #define RGBLIGHT_SPLIT
- #define RGBLED_SPLIT { 21, 21 }
- #define RGBLED_NUM 42
- #define RGBLIGHT_HUE_STEP 16
- #define RGBLIGHT_SAT_STEP 16
- #define RGBLIGHT_VAL_STEP 16
- #define RGBLIGHT_LIMIT_VAL 120 /* 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_SPLIT
+# define RGBLED_SPLIT { 21, 21 }
+# define RGBLED_NUM 42
+# define RGBLIGHT_HUE_STEP 16
+# define RGBLIGHT_SAT_STEP 16
+# define RGBLIGHT_VAL_STEP 16
+# define RGBLIGHT_LIMIT_VAL 180 /* 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 */
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL 42 // Number of LEDs
+# define RGB_MATRIX_SPLIT { 21, 21 }
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+# define RGB_MATRIX_STARTUP_HUE 35
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
#endif
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
+/* audio support */
+#define AUDIO_VOICES
+#define AUDIO_PIN GP4
+
+#ifdef AUDIO_ENABLE
+# define NO_MUSIC_MODE
+# define STARTUP_SONG SONG(PREONIC_SOUND)
+# 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 NO_HAPTIC_ALPHA
+# define NO_HAPTIC_PUNCTUATION
+# define NO_HAPTIC_NAV
+# define NO_HAPTIC_NUMERIC
+#endif
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+#define I2C_DRIVER I2CD2
+#define I2C1_SDA_PIN GP6
+#define I2C1_SCL_PIN GP7
+
// cirque trackpad config
#define CIRQUE_PINNACLE_ADDR 0x2A
#define POINTING_DEVICE_TASK_THROTTLE_MS 5
+#define POINTING_DEVICE_ROTATION_90 // move to cirque specific config
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
@@ -76,7 +118,7 @@ along with this program. If not, see .
#define PMW33XX_CS_PIN GP26
#define PMW33XX_CPI 800
#define PMW33XX_CS_DIVISOR 8 // needs to be the same as the SHIFTREG_DIVISOR above
-#define POINTING_DEVICE_INVERT_Y
+// #define POINTING_DEVICE_INVERT_Y // move to trackball specific config
#define SPI_SCK_PIN GP2
#define SPI_MOSI_PIN GP3
diff --git a/keyboards/fingerpunch/ximi/mcuconf.c b/keyboards/fingerpunch/ximi/mcuconf.c
index 92d84ba387..7089a6c11b 100644
--- a/keyboards/fingerpunch/ximi/mcuconf.c
+++ b/keyboards/fingerpunch/ximi/mcuconf.c
@@ -2,11 +2,11 @@
#include_next "mcuconf.h"
-#undef RP_SPI_USE_SPI0
+#undef RP_SPI_USE_SPI1
#define RP_SPI_USE_SPI1 TRUE
// #undef RP_SPI_USE_SPI1
// #define RP_SPI_USE_SPI1 TRUE
-#undef RP_I2C_USE_I2C0
-#define RP_I2C_USE_I2C0 TRUE
\ No newline at end of file
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
\ No newline at end of file
diff --git a/keyboards/fingerpunch/ximi/rules.mk b/keyboards/fingerpunch/ximi/rules.mk
index e5a6d6bf29..4225ba4c34 100644
--- a/keyboards/fingerpunch/ximi/rules.mk
+++ b/keyboards/fingerpunch/ximi/rules.mk
@@ -19,6 +19,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
+WS2812_DRIVER = vendor
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
@@ -33,13 +34,22 @@ MOUSEKEY_ENABLE = yes
SPLIT_KEYBOARD = yes
SERIAL_DRIVER = vendor
-# CIRQUE_ENABLE = no
-# PMW3360_ENABLE = no
-# ifeq ($(strip $(CIRQUE_ENABLE)), yes)
-# POINTING_DEVICE_ENABLE = yes
-# POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
-# endif
+#HAPTIC FEEDBACK
+HAPTIC_DRIVER = DRV2605L
+HAPTIC_ENABLE = yes
+
+# Audio doesn't work with RP2040 yet :(
+AUDIO_ENABLE = no
+
+CIRQUE_ENABLE = yes
+
+ifeq ($(strip $(CIRQUE_ENABLE)), yes)
+ POINTING_DEVICE_ENABLE = yes
+ POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
+endif
+
+# PMW3360_ENABLE = no
# ifeq ($(strip $(PMW3360_ENABLE)), yes)
# POINTING_DEVICE_ENABLE := yes