diff --git a/keyboards/fingerpunch/FP_LIBRARY_SUPPORT.md b/keyboards/fingerpunch/FP_LIBRARY_SUPPORT.md
index 020f37eec8..6309925a6b 100644
--- a/keyboards/fingerpunch/FP_LIBRARY_SUPPORT.md
+++ b/keyboards/fingerpunch/FP_LIBRARY_SUPPORT.md
@@ -61,6 +61,7 @@ For an example, see `keyboards/fingerpunch/ximi/config.h`, which uses the `FP_ST
#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 FP_STARTUP_DARK HALF_DOT_NOTE(_B5), QUARTER_NOTE(_B5), HALF_NOTE(_E6), HALF_NOTE(_REST), QUARTER_NOTE(_C6), QUARTER_NOTE(_REST), QUARTER_NOTE(_G5), QUARTER_NOTE(_E5), QUARTER_NOTE(_F5), QUARTER_NOTE(_GS5), QUARTER_NOTE(_G5), QUARTER_NOTE(_F5), WHOLE_NOTE(_G5),
#define FP_MARIO QUARTER_NOTE(_E5), QUARTER_NOTE(_E5), QUARTER_NOTE(_REST), QUARTER_NOTE(_E5), QUARTER_NOTE(_REST), QUARTER_NOTE(_C5), QUARTER_NOTE(_E5), QUARTER_NOTE(_REST), QUARTER_NOTE(_G5), HALF_DOT_NOTE(_REST), QUARTER_NOTE(_G4),
+#define FP_STARTUP_XIMEGA WHOLE_NOTE(_FS5), QUARTER_NOTE(_A5), HALF_DOT_NOTE(_B5), WHOLE_NOTE(_D6), QUARTER_NOTE(_REST), HALF_DOT_NOTE(_B5), HALF_DOT_NOTE(_FS5), HALF_DOT_NOTE(_D5), HALF_DOT_NOTE(_E5), HALF_NOTE(_REST), HALF_DOT_NOTE(_D5), HALF_DOT_NOTE(_B4),
```
### Shared RGB effects
diff --git a/keyboards/fingerpunch/README.md b/keyboards/fingerpunch/README.md
index 8da7eff40a..8de03a334b 100644
--- a/keyboards/fingerpunch/README.md
+++ b/keyboards/fingerpunch/README.md
@@ -84,6 +84,7 @@ Note: if you are using a userspace, and you have custom keycodes, you will need
|| defined(KEYBOARD_fingerpunch_sweeeeep) \
|| defined(KEYBOARD_fingerpunch_vulpes_minora) \
|| defined(KEYBOARD_fingerpunch_vulpes_majora_v1) \
+ || defined(KEYBOARD_fingerpunch_ximega) \
|| defined(KEYBOARD_fingerpunch_ximi)
# define PLACEHOLDER_SAFE_RANGE FP_SAFE_RANGE
#else
@@ -334,7 +335,7 @@ When using a fingerpunch board, the get_haptic_enabled_key is completely overrid
* NO_HAPTIC_PUNCTUATION
* etc...
-See https://github.com/qmk/qmk_firmware/blob/master/docs/feature_haptic_feedback.md#haptic-key-exclusion for details
+See https://github.com/qmk/qmk_firmware/blob/master/docs/features/haptic_feedback.md#haptic-key-exclusion for details
If you'd like to override this, you'll need to create a function as follows:
`bool get_haptic_enabled_key_user(uint16_t keycode, keyrecord_t *record)`
@@ -364,15 +365,45 @@ Note that the ctrl-X audio responses will use control as the modifier, so it won
| Setting | Description | Default |
| --------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------- |
-| `FP_AUDIO_MOUSE_BUTTONS` | (Optional) Enable audio response for Mouse 1, 2, and 3 | `undefined` |
-| `FP_AUDIO_CUT_COPY_PASTE` | (Optional) Enable audio response for ctrl-x, ctrl-c, ctrl-v | `undefined` |
-| `FP_AUDIO_SAVE` | (Optional) Enable audio response for ctrl-s | `undefined` |
+| `FP_AUDIO_MOUSE_BUTTONS` | (Optional) Enable audio response for Mouse 1, 2, and 3 | `undefined` |
+| `FP_AUDIO_CUT_COPY_PASTE` | (Optional) Enable audio response for ctrl-x, ctrl-c, ctrl-v | `undefined` |
+| `FP_AUDIO_SAVE` | (Optional) Enable audio response for ctrl-s | `undefined` |
+## VIK
-## Keymap
+VIK features are automatically integrated when a keyboard is properly configured using the fingerpunch VIK library. If you'd like to support these VIK features, please see the [FP_LIBRARY_SUPPORT](./FP_LIBRARY_SUPPORT.md) page
-If you are looking to use process_record_kb() or process_record
+All fingerpunch boards with a VIK connector support the features below. When compiling, you can add the flags below. Please note that the `*_RIGHT` features are for split boards only, and that pointing devices will require additional configuration to change orientation or invert the axis. See the [QMK documentation for pointing devices](https://github.com/qmk/qmk_firmware/blob/master/docs/features/pointing_device.md#common-configuration) if you need to change the pointing orientation.
+Important notes:
+* For split keyboards with **different** pointing devices (i.e. cirque on left, and trackball on right), you must build two separate firmwares, one for each half. You must specify `VIK_BUILD_LEFT=yes` as a parameter when compiling the left, and `VIK_BUILD_RIGHT=yes` when compiling the right. Then you need to flash each firmware on each respective half.
+* For split keyboards, the fingerpunch VIK logic will set `VIK_BUILD_LEFT` and `VIK_BUILD_RIGHT` so that you can check what the user configured. This can be checked with `#ifdef VIK_BUILD_LEFT` or `#ifdef VIK_BUILD_RIGHT`
+* All encoder functions in VIK modules do not support any click function of the encoder.
+* For all of the items below, please see the [VIK repository certifications](https://github.com/sadekbaroudi/vik?tab=readme-ov-file#known-list-of-vik-certifications) in the modules section for details on the hardware.
+
+| Rules.mk | Split Use | Description |
+| --------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `VIK_ENABLE=yes` | Both | Enables the VIK code, this should always be yes if the keyboard has a VIK connector that meets specifications |
+| `VIK_BUILD_LEFT=yes` | Left | **If and only if** you have different pointing devices on each half, you must specify this when compiling firmware for the left, and then flash that firmware on the left only |
+| `VIK_BUILD_RIGHT=yes` | Right | **If and only if** you have different pointing devices on each half, you must specify this when compiling firmware for the right, and then flash that firmware on the right only |
+| `VIK_HAPTIC=yes` | Both | Enables haptic feedback on both sides of the keyboard, requires `#define SPLIT_HAPTIC_ENABLE` |
+| `VIK_ILI9341=yes` | Left | Enables ILI9341 display, see [qmk quantum painter](https://github.com/qmk/qmk_firmware/blob/master/docs/quantum_painter.md) |
+| `VIK_PER56_CIRQUE_LEDS=yes` | Left | Enables PER56 encoder and cirque trackpad, note that the keyboard firmware should enable RGB leds since the number of LEDs can vary, use `#ifdef VIK_PER56_CIRQUE_LEDS` to check if this is enabled |
+| `VIK_PER56_PMW3360_LEDS=yes` | Left | Enables PER56 encoder and pmw3360, note that the keyboard firmware should enable RGB leds since the number of LEDs can vary, use `#ifdef VIK_PER56_PMW3360_LEDS` to check if this is enabled |
+| `VIK_PMW3360=yes` | Left | Enables pmw3360, note that the keyboard firmware should set orientation, use `#ifdef VIK_PMW3360` to check if this is enabled |
+| `VIK_WEACT_ST7735=yes` | Left | Enables WeAct ST7735 display, see [qmk quantum painter](https://github.com/qmk/qmk_firmware/blob/master/docs/quantum_painter.md) |
+| `VIK_GC9A01=yes` | Left | Enables GC9A01 display, see [qmk quantum painter](https://github.com/qmk/qmk_firmware/blob/master/docs/quantum_painter.md) . |
+| `VIK_WAVESHARE_22224=yes` | Left | Enables Waveshare 22224 display, see [qmk quantum painter](https://github.com/qmk/qmk_firmware/blob/master/docs/quantum_painter.md) |
+| `VIK_AZOTEQ=yes` | Left | Enables azoteq trackpad, note that the keyboard firmware should set orientation and trackpade size, use `#ifdef VIK_AZOTEQ` to check if this is enabled |
+| `VIK_EC11_EVQWGD001=yes` | Left | Enables encoders in QMK. Because a keyboard can have existing encoders, the pin configuration must happen at the keyboard. Use `#ifdef VIK_EC11_EVQWGD001` to check if this is enabled. |
+| `VIK_CIRQUE=yes` | Left | Enables cirque trackpad via SPI, note that the keyboard firmware should set orientation, use `#ifdef VIK_CIRQUE` to check if this is enabled |
+| `VIK_TRACKPOINT=yes` | Left | Enables PS/2 trackpoint. This does **not** support split pointing, so it must be on the master half |
+| `VIK_CIRQUE_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. See section header above about determining which device is on which half. |
+| `VIK_PER56_CIRQUE_LEDS_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. See section header above about determining which device is on which half. |
+| `VIK_PER56_PMW3360_LEDS_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. See section header above about determining which device is on which half. |
+| `VIK_PMW3360_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. See section header above about determining which device is on which half. |
+| `VIK_AZOTEQ_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. See section header above about determining which device is on which half. |
+| `VIK_EC11_EVQWGD001_RIGHT=yes` | Right | Same as above, but equivalent for the right half of a split board. Do not set this if you aren't using a split keyboard. |
## Debugging
diff --git a/keyboards/fingerpunch/arachnophobe/config.h b/keyboards/fingerpunch/arachnophobe/config.h
index 2b26407f12..47be0d7245 100644
--- a/keyboards/fingerpunch/arachnophobe/config.h
+++ b/keyboards/fingerpunch/arachnophobe/config.h
@@ -40,3 +40,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/barobord/config.h b/keyboards/fingerpunch/barobord/config.h
index 8c90ca780b..16503eab2b 100644
--- a/keyboards/fingerpunch/barobord/config.h
+++ b/keyboards/fingerpunch/barobord/config.h
@@ -116,3 +116,4 @@ along with this program. If not, see .
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/barobord_byomcu/config.h b/keyboards/fingerpunch/barobord_byomcu/config.h
index f5f75ea8b0..3a1b4c4b53 100644
--- a/keyboards/fingerpunch/barobord_byomcu/config.h
+++ b/keyboards/fingerpunch/barobord_byomcu/config.h
@@ -116,3 +116,4 @@ along with this program. If not, see .
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/bgkeeb/config.h b/keyboards/fingerpunch/bgkeeb/config.h
index e63ab796a5..1b4e68886d 100644
--- a/keyboards/fingerpunch/bgkeeb/config.h
+++ b/keyboards/fingerpunch/bgkeeb/config.h
@@ -99,3 +99,5 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/bigbarobord/config.h b/keyboards/fingerpunch/bigbarobord/config.h
index f36780cdfe..b56a06fb5b 100644
--- a/keyboards/fingerpunch/bigbarobord/config.h
+++ b/keyboards/fingerpunch/bigbarobord/config.h
@@ -121,3 +121,4 @@ along with this program. If not, see .
// If using encoder type 2, uncomment this
// #define ENCODERS_B_REVERSE
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/euclid36/config.h b/keyboards/fingerpunch/euclid36/config.h
index 5575cbcd83..1a08c9656d 100644
--- a/keyboards/fingerpunch/euclid36/config.h
+++ b/keyboards/fingerpunch/euclid36/config.h
@@ -79,3 +79,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/atmega/v1/config.h b/keyboards/fingerpunch/ffkb/atmega/v1/config.h
index 0cb94cb8b6..ca95035d0c 100644
--- a/keyboards/fingerpunch/ffkb/atmega/v1/config.h
+++ b/keyboards/fingerpunch/ffkb/atmega/v1/config.h
@@ -139,3 +139,4 @@ along with this program. If not, see .
// If using encoder type 2, uncomment this
// #define ENCODERS_B_REVERSE
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/byomcu/v1/config.h b/keyboards/fingerpunch/ffkb/byomcu/v1/config.h
index d054cdc8a9..5d709ec32c 100644
--- a/keyboards/fingerpunch/ffkb/byomcu/v1/config.h
+++ b/keyboards/fingerpunch/ffkb/byomcu/v1/config.h
@@ -63,3 +63,5 @@ along with this program. If not, see .
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/byomcu/v2/config.h b/keyboards/fingerpunch/ffkb/byomcu/v2/config.h
index aa5baec764..46572b14a1 100644
--- a/keyboards/fingerpunch/ffkb/byomcu/v2/config.h
+++ b/keyboards/fingerpunch/ffkb/byomcu/v2/config.h
@@ -96,3 +96,5 @@ along with this program. If not, see .
#define FP_HAPTIC_CUT_COPY_PASTE
#define FP_HAPTIC_SAVE
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/byomcu/v3/config.h b/keyboards/fingerpunch/ffkb/byomcu/v3/config.h
index 4a87b853e1..545dc0a8b1 100644
--- a/keyboards/fingerpunch/ffkb/byomcu/v3/config.h
+++ b/keyboards/fingerpunch/ffkb/byomcu/v3/config.h
@@ -79,3 +79,4 @@ along with this program. If not, see .
#define POINTING_DEVICE_INVERT_Y
#endif
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/lite/v1/config.h b/keyboards/fingerpunch/ffkb/lite/v1/config.h
index a6842bf581..4e84288142 100644
--- a/keyboards/fingerpunch/ffkb/lite/v1/config.h
+++ b/keyboards/fingerpunch/ffkb/lite/v1/config.h
@@ -38,4 +38,6 @@ along with this program. If not, see .
{ D3, D2, B2, B6 }
#define MATRIX_COL_PINS \
{ B4, E6, D7, C6, D4, B5, F4, F5, F6, F7, B1, B3 }
-#endif
\ No newline at end of file
+#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ffkb/rp/v0/config.h b/keyboards/fingerpunch/ffkb/rp/v0/config.h
index 1b9c9a9271..21e1717e35 100644
--- a/keyboards/fingerpunch/ffkb/rp/v0/config.h
+++ b/keyboards/fingerpunch/ffkb/rp/v0/config.h
@@ -119,3 +119,5 @@ along with this program. If not, see .
#define FP_HAPTIC_CUT_COPY_PASTE
#define FP_HAPTIC_SAVE
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/fflx/config.h b/keyboards/fingerpunch/fflx/config.h
index d6c6643786..651b146d1b 100644
--- a/keyboards/fingerpunch/fflx/config.h
+++ b/keyboards/fingerpunch/fflx/config.h
@@ -85,3 +85,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/fpm101/config.h b/keyboards/fingerpunch/fpm101/config.h
index 31df9e88e0..c1dced08b5 100644
--- a/keyboards/fingerpunch/fpm101/config.h
+++ b/keyboards/fingerpunch/fpm101/config.h
@@ -200,3 +200,4 @@ along with this program. If not, see .
#define POINTING_DEVICE_INVERT_Y
#endif
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/kucheza/config.h b/keyboards/fingerpunch/kucheza/config.h
index 6feb81f053..447783c18a 100644
--- a/keyboards/fingerpunch/kucheza/config.h
+++ b/keyboards/fingerpunch/kucheza/config.h
@@ -141,4 +141,4 @@ along with this program. If not, see .
// #define POINTING_DEVICE_INVERT_Y
// #endif
-#include "keyboards/fingerpunch/src/config_post.h"
\ No newline at end of file
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/luakeeb/config.h b/keyboards/fingerpunch/luakeeb/config.h
index 99b05563f7..c054027e6d 100644
--- a/keyboards/fingerpunch/luakeeb/config.h
+++ b/keyboards/fingerpunch/luakeeb/config.h
@@ -89,3 +89,5 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/baboon38/config.h b/keyboards/fingerpunch/personal/baboon38/config.h
index ab77fb078b..092c18e4c8 100644
--- a/keyboards/fingerpunch/personal/baboon38/config.h
+++ b/keyboards/fingerpunch/personal/baboon38/config.h
@@ -31,4 +31,6 @@
// To dynamically control the backlight with BL_TOGG keycode
#define BACKLIGHT_PIN GP24
-#endif
\ No newline at end of file
+#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/badwings/config.h b/keyboards/fingerpunch/personal/badwings/config.h
index 7a275a311a..d23f4f573f 100644
--- a/keyboards/fingerpunch/personal/badwings/config.h
+++ b/keyboards/fingerpunch/personal/badwings/config.h
@@ -27,3 +27,5 @@
#define POINTING_DEVICE_TASK_THROTTLE_MS 5
#define CIRQUE_PINNACLE_DIAMETER_MM 35
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/badwings_v2/config.h b/keyboards/fingerpunch/personal/badwings_v2/config.h
index f25b594d49..692c63aa46 100644
--- a/keyboards/fingerpunch/personal/badwings_v2/config.h
+++ b/keyboards/fingerpunch/personal/badwings_v2/config.h
@@ -19,4 +19,4 @@
#define CIRQUE_PINNACLE_DIAMETER_MM 35
#define POINTING_DEVICE_ROTATION_90
-#include "keyboards/fingerpunch/src/config_post.h"
\ No newline at end of file
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/barghoot/config.h b/keyboards/fingerpunch/personal/barghoot/config.h
index 272560094d..7c15e084f2 100644
--- a/keyboards/fingerpunch/personal/barghoot/config.h
+++ b/keyboards/fingerpunch/personal/barghoot/config.h
@@ -91,3 +91,5 @@
#define RGB_MATRIX_LED_COUNT 63
#endif // defined(RGB_MATRIX_ENABLE)
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/euclid36proto/config.h b/keyboards/fingerpunch/personal/euclid36proto/config.h
index 3036c8dd34..e42cb45a8e 100644
--- a/keyboards/fingerpunch/personal/euclid36proto/config.h
+++ b/keyboards/fingerpunch/personal/euclid36proto/config.h
@@ -75,3 +75,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/klor/config.h b/keyboards/fingerpunch/personal/klor/config.h
index b48cefb493..032c2ad530 100644
--- a/keyboards/fingerpunch/personal/klor/config.h
+++ b/keyboards/fingerpunch/personal/klor/config.h
@@ -133,3 +133,5 @@ along with this program. If not, see .
# define F_LRA 150 // resonance freq
# define DRV_GREETING alert_750ms
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/ximi/config.h b/keyboards/fingerpunch/personal/ximi/config.h
index 15e18f0743..522d6accea 100644
--- a/keyboards/fingerpunch/personal/ximi/config.h
+++ b/keyboards/fingerpunch/personal/ximi/config.h
@@ -213,3 +213,5 @@ along with this program. If not, see .
defined(FP_TRACKBALL_RIGHT_ONLY)
#define POINTING_DEVICE_INVERT_X_RIGHT
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/ximihalf/config.h b/keyboards/fingerpunch/personal/ximihalf/config.h
index d67bd6ebc7..161d5fa412 100644
--- a/keyboards/fingerpunch/personal/ximihalf/config.h
+++ b/keyboards/fingerpunch/personal/ximihalf/config.h
@@ -168,3 +168,5 @@ along with this program. If not, see .
#define POINTING_DEVICE_INVERT_Y // This inverts the Y on the left side only
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/ximihalf_rp2040/config.h b/keyboards/fingerpunch/personal/ximihalf_rp2040/config.h
index b0c0d1c825..5d6dbc623f 100644
--- a/keyboards/fingerpunch/personal/ximihalf_rp2040/config.h
+++ b/keyboards/fingerpunch/personal/ximihalf_rp2040/config.h
@@ -166,3 +166,5 @@ along with this program. If not, see .
// #define SPI_MOSI_PAL_MODE 5 // already defined in chibios
// #define SPI_MISO_PAL_MODE 5 // already defined in chibios
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/personal/zazu/config.h b/keyboards/fingerpunch/personal/zazu/config.h
index fb384f4a41..1fc9f7c2aa 100644
--- a/keyboards/fingerpunch/personal/zazu/config.h
+++ b/keyboards/fingerpunch/personal/zazu/config.h
@@ -108,3 +108,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/pinkiesout/v1/config.h b/keyboards/fingerpunch/pinkiesout/v1/config.h
index ac29ca2230..a0ab4a84dd 100644
--- a/keyboards/fingerpunch/pinkiesout/v1/config.h
+++ b/keyboards/fingerpunch/pinkiesout/v1/config.h
@@ -97,3 +97,5 @@ along with this program. If not, see .
#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/pinkiesout/v2/config.h b/keyboards/fingerpunch/pinkiesout/v2/config.h
index f1a38b383e..e9d7e13fc7 100644
--- a/keyboards/fingerpunch/pinkiesout/v2/config.h
+++ b/keyboards/fingerpunch/pinkiesout/v2/config.h
@@ -163,3 +163,5 @@ along with this program. If not, see .
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/pinkiesout/v2_ext/config.h b/keyboards/fingerpunch/pinkiesout/v2_ext/config.h
index c8983d0a91..b3968f939b 100644
--- a/keyboards/fingerpunch/pinkiesout/v2_ext/config.h
+++ b/keyboards/fingerpunch/pinkiesout/v2_ext/config.h
@@ -163,3 +163,5 @@ along with this program. If not, see .
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/rockon/v1/config.h b/keyboards/fingerpunch/rockon/v1/config.h
index 137a7b654c..f63fdcf1fa 100644
--- a/keyboards/fingerpunch/rockon/v1/config.h
+++ b/keyboards/fingerpunch/rockon/v1/config.h
@@ -31,3 +31,5 @@ along with this program. If not, see .
#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/rockon/v2/config.h b/keyboards/fingerpunch/rockon/v2/config.h
index f7ba5858dd..1887880d28 100644
--- a/keyboards/fingerpunch/rockon/v2/config.h
+++ b/keyboards/fingerpunch/rockon/v2/config.h
@@ -75,3 +75,5 @@ along with this program. If not, see .
#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/rockon/v3/config.h b/keyboards/fingerpunch/rockon/v3/config.h
index 51b742fbe5..645b8e92a0 100644
--- a/keyboards/fingerpunch/rockon/v3/config.h
+++ b/keyboards/fingerpunch/rockon/v3/config.h
@@ -132,3 +132,4 @@ along with this program. If not, see .
#define POINTING_DEVICE_INVERT_Y
#endif
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/rockon_bp/config.h b/keyboards/fingerpunch/rockon_bp/config.h
index 63b6d0d8e4..ac650d9a3e 100644
--- a/keyboards/fingerpunch/rockon_bp/config.h
+++ b/keyboards/fingerpunch/rockon_bp/config.h
@@ -155,3 +155,5 @@ along with this program. If not, see .
#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/src/config_post.h b/keyboards/fingerpunch/src/config_post.h
index 3556c8d409..cb842e372d 100644
--- a/keyboards/fingerpunch/src/config_post.h
+++ b/keyboards/fingerpunch/src/config_post.h
@@ -1,3 +1,3 @@
#ifdef VIK_ENABLE
- #include "keyboards/fingerpunch/src/vik/config.h"
-#endif
\ No newline at end of file
+ #include "keyboards/fingerpunch/src/vik/config.vik.post.h"
+#endif
diff --git a/keyboards/fingerpunch/src/config_pre.h b/keyboards/fingerpunch/src/config_pre.h
index 5d76151b8f..2636f3cad7 100644
--- a/keyboards/fingerpunch/src/config_pre.h
+++ b/keyboards/fingerpunch/src/config_pre.h
@@ -4,3 +4,7 @@
#ifdef POINTING_DEVICE_ENABLE
#define PMW33XX_CPI 1000
#endif
+
+#ifdef VIK_ENABLE
+ #include "keyboards/fingerpunch/src/vik/config.vik.pre.h"
+#endif
diff --git a/keyboards/fingerpunch/src/vik/config.h b/keyboards/fingerpunch/src/vik/config.vik.post.h
similarity index 85%
rename from keyboards/fingerpunch/src/vik/config.h
rename to keyboards/fingerpunch/src/vik/config.vik.post.h
index 5a405c33ee..2e74b11948 100644
--- a/keyboards/fingerpunch/src/vik/config.h
+++ b/keyboards/fingerpunch/src/vik/config.vik.post.h
@@ -12,6 +12,7 @@
* VIK_WAVESHARE_22224
* VIK_AZOTEQ
* VIK_EC11_EVQWGD001
+ * VIK_CIRQUE (really just a raw cirque)
* VIK_TRACKPOINT
*
* Pin config:
@@ -96,7 +97,7 @@
#define DISPLAY_RST_PIN VIK_DISPLAY_RST_UNUSED_PIN
#endif
-#ifdef VIK_PER56_CIRQUE_LEDS
+#if defined(VIK_PER56_CIRQUE_LEDS) || defined(VIK_PER56_CIRQUE_LEDS_RIGHT)
#ifdef RGBLIGHT_LED_COUNT
#undef RGBLIGHT_LED_COUNT
#endif
@@ -109,7 +110,7 @@
#define RGBLIGHT_LED_COUNT 4
#endif
-#ifdef VIK_PER56_PMW3360_LEDS
+#if defined(VIK_PER56_PMW3360_LEDS) || defined(VIK_PER56_PMW3360_LEDS_RIGHT)
// Trackball config
#define PMW33XX_CS_PIN VIK_SPI_CS
#define PMW33XX_CPI 1000
@@ -127,7 +128,7 @@
#define RGBLIGHT_LED_COUNT 4
#endif
-#ifdef VIK_PMW3360
+#if defined(VIK_PMW3360) || defined(VIK_PMW3360_RIGHT)
// Trackball config
#define PMW33XX_CS_PIN VIK_SPI_CS
#define PMW33XX_CPI 1000
@@ -167,20 +168,20 @@
#define DISPLAY_RST_PIN VIK_DISPLAY_RST_UNUSED_PIN
#endif
-#ifdef VIK_AZOTEQ
+#if defined(VIK_AZOTEQ) || defined(VIK_AZOTEQ_RIGHT)
// default to AZOTEQ_IQS5XX_TPS43... shouldn't really do this
#if !defined(AZOTEQ_IQS5XX_TPS43) && !defined(AZOTEQ_IQS5XX_TPS65)
// #warning "fingerpunch:vik:azoteq: no azoteq profile defined, defaulted to AZOTEQ_IQS5XX_TPS43"
#define AZOTEQ_IQS5XX_TPS43
- #define AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE true
- #define AZOTEQ_IQS5XX_SWIPE_X_ENABLE true
- #define AZOTEQ_IQS5XX_SWIPE_Y_ENABLE true
- #define AZOTEQ_IQS5XX_ZOOM_ENABLE true
- // Can only use motion pin on unibodies or splits that don't use split pointing
- // This is currently a QMK constraint
- #ifndef SPLIT_POINTING
- #define POINTING_DEVICE_MOTION_PIN VIK_GPIO_2
- #endif
+ #endif
+ // #define AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE true
+ // #define AZOTEQ_IQS5XX_SWIPE_X_ENABLE true
+ // #define AZOTEQ_IQS5XX_SWIPE_Y_ENABLE true
+ // #define AZOTEQ_IQS5XX_ZOOM_ENABLE true
+ // Can only use motion pin on unibodies or splits that don't use split pointing
+ // This is currently a QMK constraint
+ #ifndef SPLIT_POINTING_ENABLE
+ #define POINTING_DEVICE_MOTION_PIN VIK_GPIO_2
#endif
#endif
@@ -206,4 +207,6 @@
#ifdef CIRQUE_ENABLE
#define CIRQUE_PINNACLE_SPI_CS_PIN VIK_SPI_CS
+ #define CIRQUE_PINNACLE_TAP_ENABLE
+ #define POINTING_DEVICE_TASK_THROTTLE_MS 5
#endif
diff --git a/keyboards/fingerpunch/src/vik/config.vik.pre.h b/keyboards/fingerpunch/src/vik/config.vik.pre.h
new file mode 100644
index 0000000000..ed1b4b6fc2
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/config.vik.pre.h
@@ -0,0 +1,12 @@
+#ifdef SPLIT_KEYBOARD
+ #ifdef VIK_POINTING_LEFT
+ #ifdef VIK_POINTING_RIGHT
+ #define SPLIT_POINTING_ENABLE
+ #define POINTING_DEVICE_COMBINED
+ #else
+ #define POINTING_DEVICE_LEFT
+ #endif
+ #elif defined(VIK_POINTING_RIGHT)
+ #define POINTING_DEVICE_RIGHT
+ #endif
+#endif
diff --git a/keyboards/fingerpunch/src/vik/rules.mk b/keyboards/fingerpunch/src/vik/rules.mk
index c6ccb2834d..fc14984669 100644
--- a/keyboards/fingerpunch/src/vik/rules.mk
+++ b/keyboards/fingerpunch/src/vik/rules.mk
@@ -12,145 +12,31 @@
# VIK_WAVESHARE_22224
# VIK_AZOTEQ
# VIK_EC11_EVQWGD001
+# VIK_CIRQUE
# VIK_TRACKPOINT
-ifeq ($(strip $(VIK_HAPTIC)), yes)
- HAPTIC_ENABLE = yes
- HAPTIC_DRIVER = drv2605l
- OPT_DEFS += -DVIK_HAPTIC
+# rules.mk options for split right half
+# VIK_CIRQUE_RIGHT
+# VIK_PER56_CIRQUE_LEDS_RIGHT
+# VIK_PER56_PMW3360_LEDS_RIGHT
+# VIK_PMW3360_RIGHT
+# VIK_AZOTEQ_RIGHT
+# VIK_EC11_EVQWGD001_RIGHT
+
+# Up front rules
+include keyboards/fingerpunch/src/vik/rules.vik.pre.mk
+
+# Include the unibody / split left VIK features
+include keyboards/fingerpunch/src/vik/rules.vik.main.general.mk
+include keyboards/fingerpunch/src/vik/rules.vik.main.pointing.mk
+
+### Begin VIK right half support, if there is a VIK module on the right half
+### IMPORTANT: not all modules can work on the slave half, which is a QMK limitation
+### only those that work will be handled here
+ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ include keyboards/fingerpunch/src/vik/rules.vik.right.general.mk
+ include keyboards/fingerpunch/src/vik/rules.vik.right.pointing.mk
endif
-ifeq ($(strip $(VIK_ILI9341)), yes)
- # For LCD backlight toggling
- BACKLIGHT_ENABLE = yes
- BACKLIGHT_DRIVER = software
-
- QUANTUM_PAINTER_ENABLE = yes
- QUANTUM_PAINTER_DRIVERS += ili9341_spi
- QUANTUM_PAINTER_LVGL_INTEGRATION = yes
- SRC += keyboards/fingerpunch/src/display/ili9341.c
- OPT_DEFS += -DVIK_ILI9341
-endif
-
-ifeq ($(strip $(VIK_PER56_CIRQUE_LEDS)), yes)
- CIRQUE_ENABLE = yes
- ENCODER_ENABLE = yes
-# RGBLIGHT_ENABLE = yes # you need to choose whether or not this is enabled within the keyboard or user rules.mk
- OPT_DEFS += -DVIK_PER56_CIRQUE_LEDS
-endif
-
-ifeq ($(strip $(VIK_PER56_PMW3360_LEDS)), yes)
- PMW3360_ENABLE = yes
- ENCODER_ENABLE = yes
-# RGBLIGHT_ENABLE = yes # you need to choose whether or not this is enabled within the keyboard or user rules.mk
- OPT_DEFS += -DVIK_PER56_PMW3360_LEDS
-endif
-
-ifeq ($(strip $(VIK_PMW3360)), yes)
- PMW3360_ENABLE = yes
- OPT_DEFS += -DVIK_PMW3360
-endif
-
-ifeq ($(strip $(VIK_WEACT_ST7735)), yes)
- # For LCD backlight toggling
- BACKLIGHT_ENABLE = yes
- BACKLIGHT_DRIVER = software
-
- QUANTUM_PAINTER_ENABLE = yes
- QUANTUM_PAINTER_DRIVERS += st7735_spi
- QUANTUM_PAINTER_LVGL_INTEGRATION = yes
- SRC += keyboards/fingerpunch/src/display/st7735.c
-# WPM_ENABLE = yes
- OPT_DEFS += -DVIK_WEACT_ST7735
-endif
-
-ifeq ($(strip $(VIK_GC9A01)), yes)
- QUANTUM_PAINTER_ENABLE = yes
- QUANTUM_PAINTER_DRIVERS += gc9a01_spi
- QUANTUM_PAINTER_LVGL_INTEGRATION = yes
- SRC += keyboards/fingerpunch/src/display/gc9a01.c
-# WPM_ENABLE = yes
- OPT_DEFS += -DVIK_GC9A01
-endif
-
-ifeq ($(strip $(VIK_WAVESHARE_22224)), yes)
- QUANTUM_PAINTER_ENABLE = yes
- QUANTUM_PAINTER_DRIVERS += st7789_spi
- QUANTUM_PAINTER_LVGL_INTEGRATION = yes
- SRC += keyboards/fingerpunch/src/display/waveshare_22224.c
-# WPM_ENABLE = yes
- OPT_DEFS += -DVIK_WAVESHARE_22224
-endif
-
-ifeq ($(strip $(VIK_AZOTEQ)), yes)
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := azoteq_iqs5xx
- OPT_DEFS += -DVIK_AZOTEQ
-endif
-
-ifeq ($(strip $(VIK_EC11_EVQWGD001)), yes)
- ENCODER_ENABLE := yes
- OPT_DEFS += -DVIK_EC11_EVQWGD001
-endif
-
-ifeq ($(strip $(VIK_TRACKPOINT)), yes)
-
- ###### OVERALL FINDINGS SO FAR
- # AVR interrupt mode doesn't work for RP2040, as it requires PAL_MODE_OUTPUT_OPENDRAIN, which isn't provided for RP2040
- # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#interrupt-version-arm-chibios-idinterrupt-version-chibios
- # https://github.com/qmk/qmk_firmware/pull/22615#issuecomment-1841537237
-
- # USART mode won't work, since the pins on the VIK controllers don't use USART for GPIO 1 and GPIO 2
- # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#usart-version-idusart-version
-
- # The only thing that's left is busywait, which is not recommended by QMK, and also requires PAL_MODE_OUTPUT_OPENDRAIN
- # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#busywait-version-idbusywait-version
-
- # So, our only option is to use two consecutive pins, which means we can't even use the VIK connector unless GPIO AD1 and AD2
- # are consecutive, as defined by the RP2040 vendor driver, check QMK docs
-
- # Options are:
- # 1) hand wire from VIK module to a PCB with consecutive GPIO available (assuming RP2040), or hand wire to any two GPIO for non-RP2040 controllers. This also requires a bodge for 3.3v (untested) or a logic level conversion between 3.3v and 5v if using a 3.3v controller
- # 2) figure out an alternative way to get a driver working in QMK with PAL_MODE_OUTPUT_OPENDRAIN on an RP2040 (I don't even know if this is possible)
- ######
-
- ###### Actual VIK logic and options below:
- # Uncomment these two lines, and one of the modes to test the various options, see:
- # https://discord.com/channels/939959680611020840/1179500491525328926/1189474876386459678
- # PS2_MOUSE_ENABLE = yes
- # PS2_ENABLE = yes
-
- # Busywait mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#busywait-version-idbusywait-version
- # PS2_DRIVER = busywait
-
- # If using this mode, also see: keyboards/fingerpunch/svlinky/halconf.h
- # ARM interrupt mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#interrupt-version-arm-chibios-idinterrupt-version-chibios
- # PS2_DRIVER = interrupt
-
- # RP2040 pio / vendor mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#rp2040-pio-version-idrp2040-pio-version
- # PS2_DRIVER = vendor
-
- OPT_DEFS += -DVIK_TRACKPOINT
-endif
-
-ifeq ($(strip $(VIK_RGB_ONLY)), yes)
- OPT_DEFS += -DVIK_RGB_ONLY
-endif
-
-ifeq ($(strip $(PMW3360_ENABLE)), yes)
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := pmw3360
- QUANTUM_LIB_SRC += spi_master.c
- OPT_DEFS += -DVIK_TRACKBALL_ENABLE
-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 $(QUANTUM_PAINTER_ENABLE)), yes)
- SRC += keyboards/fingerpunch/src/display/fp_display.c
-endif
+# Include any post processing that's dependent on everything else
+include keyboards/fingerpunch/src/vik/rules.vik.post.mk
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.main.general.mk b/keyboards/fingerpunch/src/vik/rules.vik.main.general.mk
new file mode 100644
index 0000000000..b03540139f
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.main.general.mk
@@ -0,0 +1,112 @@
+# Note that we need to wrap *all* of the actual enabling of drivers to only happen when building
+# the left side. This is to avoid conflicts with the VIK device on the right half
+# Notice the blocks below:
+# ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+# ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+# rules to enable feature
+# endif
+# else
+# rules to enable feature
+# endif
+
+ifeq ($(strip $(VIK_HAPTIC)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ HAPTIC_ENABLE = yes
+ HAPTIC_DRIVER = drv2605l
+ endif
+ else
+ HAPTIC_ENABLE = yes
+ HAPTIC_DRIVER = drv2605l
+ endif
+ OPT_DEFS += -DVIK_HAPTIC
+endif
+
+ifeq ($(strip $(VIK_ILI9341)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ BACKLIGHT_ENABLE = yes
+ BACKLIGHT_DRIVER = software
+
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += ili9341_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/ili9341.c
+ endif
+ else
+ BACKLIGHT_ENABLE = yes
+ BACKLIGHT_DRIVER = software
+
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += ili9341_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/ili9341.c
+ endif
+
+ OPT_DEFS += -DVIK_ILI9341
+endif
+
+ifeq ($(strip $(VIK_WEACT_ST7735)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ BACKLIGHT_ENABLE = yes
+ BACKLIGHT_DRIVER = software
+
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += st7735_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/st7735.c
+ endif
+ else
+ BACKLIGHT_ENABLE = yes
+ BACKLIGHT_DRIVER = software
+
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += st7735_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/st7735.c
+ endif
+
+ OPT_DEFS += -DVIK_WEACT_ST7735
+endif
+
+ifeq ($(strip $(VIK_GC9A01)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += gc9a01_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/gc9a01.c
+ endif
+ else
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += gc9a01_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/gc9a01.c
+ endif
+
+ OPT_DEFS += -DVIK_GC9A01
+endif
+
+ifeq ($(strip $(VIK_WAVESHARE_22224)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += st7789_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/waveshare_22224.c
+ endif
+ else
+ QUANTUM_PAINTER_ENABLE = yes
+ QUANTUM_PAINTER_DRIVERS += st7789_spi
+ QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+ SRC += keyboards/fingerpunch/src/display/waveshare_22224.c
+ endif
+
+ OPT_DEFS += -DVIK_WAVESHARE_22224
+endif
+
+ifeq ($(strip $(VIK_EC11_EVQWGD001)), yes)
+ ENCODER_ENABLE := yes
+ OPT_DEFS += -DVIK_EC11_EVQWGD001
+endif
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.main.pointing.mk b/keyboards/fingerpunch/src/vik/rules.vik.main.pointing.mk
new file mode 100644
index 0000000000..7982de6d7f
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.main.pointing.mk
@@ -0,0 +1,83 @@
+ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ ifeq ($(strip $(VIK_BUILD_LEFT)), yes)
+ endif
+else
+endif
+
+# Point devices left
+ifeq ($(strip $(VIK_AZOTEQ)), yes)
+ POINTING_DEVICE_ENABLE := yes
+ POINTING_DEVICE_DRIVER := azoteq_iqs5xx
+ VIK_POINTING_LEFT := yes
+ OPT_DEFS += -DVIK_AZOTEQ
+ OPT_DEFS += -DVIK_POINTING_LEFT
+endif
+
+ifeq ($(strip $(VIK_CIRQUE)), yes)
+ CIRQUE_ENABLE := yes
+ VIK_POINTING_LEFT := yes
+ OPT_DEFS += -DVIK_CIRQUE
+ OPT_DEFS += -DVIK_POINTING_LEFT
+endif
+
+ifeq ($(strip $(VIK_PER56_CIRQUE_LEDS)), yes)
+ CIRQUE_ENABLE = yes
+ VIK_POINTING_LEFT := yes
+ ENCODER_ENABLE = yes
+ OPT_DEFS += -DVIK_PER56_CIRQUE_LEDS
+ OPT_DEFS += -DVIK_POINTING_LEFT
+endif
+
+ifeq ($(strip $(VIK_PER56_PMW3360_LEDS)), yes)
+ PMW3360_ENABLE = yes
+ VIK_POINTING_LEFT := yes
+ ENCODER_ENABLE = yes
+ OPT_DEFS += -DVIK_PER56_PMW3360_LEDS
+ OPT_DEFS += -DVIK_POINTING_LEFT
+endif
+
+ifeq ($(strip $(VIK_PMW3360)), yes)
+ PMW3360_ENABLE = yes
+ VIK_POINTING_LEFT := yes
+ OPT_DEFS += -DVIK_PMW3360
+ OPT_DEFS += -DVIK_POINTING_LEFT
+endif
+
+ifeq ($(strip $(VIK_TRACKPOINT)), yes)
+ ###### OVERALL FINDINGS SO FAR
+ # AVR interrupt mode doesn't work for RP2040, as it requires PAL_MODE_OUTPUT_OPENDRAIN, which isn't provided for RP2040
+ # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#interrupt-version-arm-chibios-idinterrupt-version-chibios
+ # https://github.com/qmk/qmk_firmware/pull/22615#issuecomment-1841537237
+
+ # USART mode won't work, since the pins on the VIK controllers don't use USART for GPIO 1 and GPIO 2
+ # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#usart-version-idusart-version
+
+ # The only thing that's left is busywait, which is not recommended by QMK, and also requires PAL_MODE_OUTPUT_OPENDRAIN
+ # https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#busywait-version-idbusywait-version
+
+ # So, our only option is to use two consecutive pins, which means we can't even use the VIK connector unless GPIO AD1 and AD2
+ # are consecutive, as defined by the RP2040 vendor driver, check QMK docs
+
+ # Options are:
+ # 1) hand wire from VIK module to a PCB with consecutive GPIO available (assuming RP2040), or hand wire to any two GPIO for non-RP2040 controllers. This also requires a bodge for 3.3v (untested) or a logic level conversion between 3.3v and 5v if using a 3.3v controller
+ # 2) figure out an alternative way to get a driver working in QMK with PAL_MODE_OUTPUT_OPENDRAIN on an RP2040 (I don't even know if this is possible)
+ ######
+
+ ###### Actual VIK logic and options below:
+ # Uncomment these two lines, and one of the modes to test the various options, see:
+ # https://discord.com/channels/939959680611020840/1179500491525328926/1189474876386459678
+ # PS2_MOUSE_ENABLE = yes
+ # PS2_ENABLE = yes
+
+ # Busywait mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#busywait-version-idbusywait-version
+ # PS2_DRIVER = busywait
+
+ # If using this mode, also see: keyboards/fingerpunch/svlinky/halconf.h
+ # ARM interrupt mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#interrupt-version-arm-chibios-idinterrupt-version-chibios
+ # PS2_DRIVER = interrupt
+
+ # RP2040 pio / vendor mode: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_ps2_mouse.md#rp2040-pio-version-idrp2040-pio-version
+ # PS2_DRIVER = vendor
+
+ OPT_DEFS += -DVIK_TRACKPOINT
+endif
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.post.mk b/keyboards/fingerpunch/src/vik/rules.vik.post.mk
new file mode 100644
index 0000000000..d27c9ad4db
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.post.mk
@@ -0,0 +1,17 @@
+ifeq ($(strip $(PMW3360_ENABLE)), yes)
+ POINTING_DEVICE_ENABLE := yes
+ POINTING_DEVICE_DRIVER := pmw3360
+ QUANTUM_LIB_SRC += spi_master.c
+ OPT_DEFS += -DVIK_TRACKBALL_ENABLE
+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 $(QUANTUM_PAINTER_ENABLE)), yes)
+ SRC += keyboards/fingerpunch/src/display/fp_display.c
+endif
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.pre.mk b/keyboards/fingerpunch/src/vik/rules.vik.pre.mk
new file mode 100644
index 0000000000..3a3baee7b9
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.pre.mk
@@ -0,0 +1,6 @@
+VIK_POINTING_LEFT ?= no
+VIK_POINTING_RIGHT ?= no
+
+ifeq ($(strip $(VIK_RGB_ONLY)), yes)
+ OPT_DEFS += -DVIK_RGB_ONLY
+endif
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.right.general.mk b/keyboards/fingerpunch/src/vik/rules.vik.right.general.mk
new file mode 100644
index 0000000000..c2888c8965
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.right.general.mk
@@ -0,0 +1,4 @@
+ifeq ($(strip $(VIK_EC11_EVQWGD001_RIGHT)), yes)
+ ENCODER_ENABLE := yes
+ OPT_DEFS += -DVIK_EC11_EVQWGD001_RIGHT
+endif
diff --git a/keyboards/fingerpunch/src/vik/rules.vik.right.pointing.mk b/keyboards/fingerpunch/src/vik/rules.vik.right.pointing.mk
new file mode 100644
index 0000000000..f2cd72396e
--- /dev/null
+++ b/keyboards/fingerpunch/src/vik/rules.vik.right.pointing.mk
@@ -0,0 +1,73 @@
+# Note that we need to wrap *all* of the actual enabling of drivers to only happen when building
+# the right side, or if the left side has no pointing device
+# Notice the blocks below:
+# ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+# rules to enable pointing
+# endif
+# ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+# rules to enable pointing
+# endif
+
+ifeq ($(strip $(VIK_AZOTEQ_RIGHT)), yes)
+ ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+ POINTING_DEVICE_ENABLE := yes
+ POINTING_DEVICE_DRIVER := azoteq_iqs5xx
+ endif
+ ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+ POINTING_DEVICE_ENABLE := yes
+ POINTING_DEVICE_DRIVER := azoteq_iqs5xx
+ endif
+ VIK_POINTING_RIGHT := yes
+ OPT_DEFS += -DVIK_AZOTEQ_RIGHT
+ OPT_DEFS += -DVIK_POINTING_RIGHT
+endif
+
+ifeq ($(strip $(VIK_CIRQUE_RIGHT)), yes)
+ ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+ CIRQUE_ENABLE := yes
+ endif
+ ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+ CIRQUE_ENABLE := yes
+ endif
+ VIK_POINTING_RIGHT := yes
+ OPT_DEFS += -DVIK_CIRQUE_RIGHT
+ OPT_DEFS += -DVIK_POINTING_RIGHT
+endif
+
+ifeq ($(strip $(VIK_PER56_CIRQUE_LEDS_RIGHT)), yes)
+ ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+ CIRQUE_ENABLE := yes
+ endif
+ ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+ CIRQUE_ENABLE := yes
+ endif
+ ENCODER_ENABLE = yes
+ VIK_POINTING_RIGHT := yes
+ OPT_DEFS += -DVIK_PER56_CIRQUE_LEDS_RIGHT
+ OPT_DEFS += -DVIK_POINTING_RIGHT
+endif
+
+ifeq ($(strip $(VIK_PER56_PMW3360_LEDS_RIGHT)), yes)
+ ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+ PMW3360_ENABLE = yes
+ endif
+ ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+ PMW3360_ENABLE = yes
+ endif
+ ENCODER_ENABLE = yes
+ VIK_POINTING_RIGHT := yes
+ OPT_DEFS += -DVIK_PER56_PMW3360_LEDS_RIGHT
+ OPT_DEFS += -DVIK_POINTING_RIGHT
+endif
+
+ifeq ($(strip $(VIK_PMW3360_RIGHT)), yes)
+ ifeq ($(strip $(VIK_POINTING_LEFT)), no)
+ PMW3360_ENABLE = yes
+ endif
+ ifeq ($(strip $(VIK_BUILD_RIGHT)), yes)
+ PMW3360_ENABLE = yes
+ endif
+ VIK_POINTING_RIGHT := yes
+ OPT_DEFS += -DVIK_PMW3360_RIGHT
+ OPT_DEFS += -DVIK_POINTING_RIGHT
+endif
diff --git a/keyboards/fingerpunch/stenographobe/config.h b/keyboards/fingerpunch/stenographobe/config.h
index 2b26407f12..47be0d7245 100644
--- a/keyboards/fingerpunch/stenographobe/config.h
+++ b/keyboards/fingerpunch/stenographobe/config.h
@@ -40,3 +40,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/svlinky/config.h b/keyboards/fingerpunch/svlinky/config.h
index 746552649c..55dd9bc551 100644
--- a/keyboards/fingerpunch/svlinky/config.h
+++ b/keyboards/fingerpunch/svlinky/config.h
@@ -16,7 +16,8 @@ along with this program. If not, see .
*/
// NOTE: All logic for the modules can be found in:
-// keyboards/fingerpunch/src/vik/config.h
+// keyboards/fingerpunch/src/vik/config.vik.pre.h
+// keyboards/fingerpunch/src/vik/config.vik.post.h
// keyboards/fingerpunch/src/vik/rules.mk
#pragma once
diff --git a/keyboards/fingerpunch/sweeeeep/config.h b/keyboards/fingerpunch/sweeeeep/config.h
index 8a62a501f4..22791c9272 100644
--- a/keyboards/fingerpunch/sweeeeep/config.h
+++ b/keyboards/fingerpunch/sweeeeep/config.h
@@ -93,3 +93,5 @@
/* Backwards compatibility with existing out-of-tree keymaps */
#define LAYOUT_sweeeeep LAYOUT_split_3x5_3
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/tenbit/config.h b/keyboards/fingerpunch/tenbit/config.h
index 25fe8a4085..7de0333a5f 100644
--- a/keyboards/fingerpunch/tenbit/config.h
+++ b/keyboards/fingerpunch/tenbit/config.h
@@ -101,3 +101,5 @@ along with this program. If not, see .
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ximega/config.h b/keyboards/fingerpunch/ximega/config.h
index f2966a0af0..30050385aa 100644
--- a/keyboards/fingerpunch/ximega/config.h
+++ b/keyboards/fingerpunch/ximega/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see .
#define SPI_MOSI_PIN GP23
#define SPI_MISO_PIN GP20
-// Got help from https://www.eisbahn.jp/yoichiro/2022/08/luankey_pico_qmk_firmware.html
#define MASTER_LEFT
#define SPLIT_TRANSPORT_MIRROR
#define SPLIT_POINTING_ENABLE
@@ -143,64 +142,48 @@ along with this program. If not, see .
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#ifdef CIRQUE_ENABLE
- // cirque trackpad config
- // This is for I2C only, which is not the default. Ximega doesn't have pull up resistors
- // So you can't use it anyway
- #define CIRQUE_PINNACLE_ADDR 0x2A
- // This is for SPI only, which is the default
- #define CIRQUE_PINNACLE_SPI_CS_PIN GP9
-
- // 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_TASK_THROTTLE_MS 5
-#endif
-
-#ifdef FP_TRACKBALL_ENABLE
- // Trackball config
- #define PMW33XX_CS_PIN GP9
- #define PMW33XX_CPI 1000
- #define PMW33XX_CS_DIVISOR 8
-#endif
-
// All the possible configurations of pointing devices
-#if defined(FP_TRACKBALL_BOTH)
- #define POINTING_DEVICE_COMBINED // two pointing devices
- #define POINTING_DEVICE_INVERT_Y // for trackball on the left
- #define POINTING_DEVICE_INVERT_X_RIGHT // for trackball on the right
+#if defined(VIK_CIRQUE) || defined(VIK_PER56_CIRQUE_LEDS)
+ #define POINTING_DEVICE_ROTATION_90
#endif
-#if defined(FP_CIRQUE_BOTH)
- #define POINTING_DEVICE_COMBINED // two pointing devices
- #define POINTING_DEVICE_ROTATION_90 // for cirque on the left
- #define POINTING_DEVICE_ROTATION_90_RIGHT // for cirque on the right
-#endif
-#if defined(FP_TRACKBALL_LEFT_ONLY)
- #define POINTING_DEVICE_LEFT // one pointing device, on the left
- #define POINTING_DEVICE_INVERT_Y // for trackball on the left
-#endif
-#if defined(FP_TRACKBALL_RIGHT_ONLY)
- #define POINTING_DEVICE_RIGHT // one pointing device, on the right
- #define POINTING_DEVICE_INVERT_X_RIGHT // for trackball on the right
-#endif
-#if defined(FP_CIRQUE_LEFT_ONLY)
- #define POINTING_DEVICE_LEFT // one pointing device, on the left
- #define POINTING_DEVICE_ROTATION_90 // for cirque on the left
-#endif
-#if defined(FP_CIRQUE_RIGHT_ONLY)
- #define POINTING_DEVICE_RIGHT // one pointing device, on the right
- #define POINTING_DEVICE_ROTATION_90_RIGHT // for cirque on the right
-#endif
-#if defined(FP_TRACKBALL_LEFT_CIRQUE_RIGHT)
- #define POINTING_DEVICE_COMBINED // two pointing devices
- #define POINTING_DEVICE_INVERT_Y // for trackball on the left
- #define POINTING_DEVICE_ROTATION_90_RIGHT // for cirque on the right
+#if defined(VIK_CIRQUE_RIGHT) || defined(VIK_PER56_CIRQUE_LEDS_RIGHT)
+ #ifdef POINTING_DEVICE_COMBINED
+ #define POINTING_DEVICE_ROTATION_90_RIGHT
+ #else
+ #define POINTING_DEVICE_ROTATION_90
+ #endif
#endif
-#if defined(FP_CIRQUE_LEFT_TRACKBALL_RIGHT)
- #define POINTING_DEVICE_COMBINED // two pointing devices
- #define POINTING_DEVICE_ROTATION_90 // for cirque on the left
- #define POINTING_DEVICE_INVERT_X_RIGHT // for trackball on the right
+
+#if defined(VIK_PMW3360) || defined(VIK_PER56_PMW3360_LEDS)
+ #define POINTING_DEVICE_INVERT_X
#endif
+
+#if defined(VIK_PMW3360_RIGHT) || defined(VIK_PER56_PMW3360_LEDS_RIGHT)
+ #ifdef POINTING_DEVICE_COMBINED
+ #define POINTING_DEVICE_INVERT_Y_RIGHT
+ #else
+ #define POINTING_DEVICE_INVERT_Y
+ #endif
+#endif
+
+#if defined(VIK_AZOTEQ)
+ #define AZOTEQ_IQS5XX_TPS65
+ #define POINTING_DEVICE_ROTATION_270
+#endif
+
+#if defined(VIK_AZOTEQ_RIGHT)
+ #define AZOTEQ_IQS5XX_TPS65
+ #ifdef POINTING_DEVICE_COMBINED
+ #define POINTING_DEVICE_ROTATION_270_RIGHT
+ #else
+ #define POINTING_DEVICE_ROTATION_270
+ #endif
+#endif
+
+// Display rotations
+#if defined(VIK_WEACT_ST7735)
+ #define FP_QP_ROTATION QP_ROTATION_180
+#endif
+
+// Encoder configuration from VIK is in version specific config, e.g. ximega/v1/config.h
diff --git a/keyboards/fingerpunch/ximega/rules.mk b/keyboards/fingerpunch/ximega/rules.mk
index d7028d20f6..5f13efb81e 100644
--- a/keyboards/fingerpunch/ximega/rules.mk
+++ b/keyboards/fingerpunch/ximega/rules.mk
@@ -46,103 +46,12 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
endif
-# Choose only one (or none) of the 8 options below
-FP_TRACKBALL_BOTH ?= no
-FP_CIRQUE_BOTH ?= no
-FP_TRACKBALL_LEFT_ONLY ?= no
-FP_TRACKBALL_RIGHT_ONLY ?= no
-FP_CIRQUE_LEFT_ONLY ?= no
-FP_CIRQUE_RIGHT_ONLY ?= no
-FP_TRACKBALL_LEFT_CIRQUE_RIGHT ?= no
-FP_CIRQUE_LEFT_TRACKBALL_RIGHT ?= no
-# When qmk supports multiple types of pointing devices, can remove this line below
-# Also, can remove the question from fp_build.json
-FP_SPLIT_LEFT ?= no
-FP_SPLIT_RIGHT ?= no
# If you want to use VIK2 port's RGB instead of per key rgb and VIK1, enable this
FP_VIK2_RGB ?= no
-ifeq ($(strip $(FP_TRACKBALL_BOTH)), yes)
- PMW3360_ENABLE = yes
- OPT_DEFS += -DFP_TRACKBALL_BOTH
-endif
-
-ifeq ($(strip $(FP_TRACKBALL_LEFT_ONLY)), yes)
- PMW3360_ENABLE = yes
- OPT_DEFS += -DFP_TRACKBALL_LEFT_ONLY
-endif
-
-ifeq ($(strip $(FP_TRACKBALL_RIGHT_ONLY)), yes)
- PMW3360_ENABLE = yes
- OPT_DEFS += -DFP_TRACKBALL_RIGHT_ONLY
-endif
-
-ifeq ($(strip $(FP_TRACKBALL_LEFT_CIRQUE_RIGHT)), yes)
- # When qmk supports multiple types of pointing devices, change to something like the commented code below
- # PMW3360_ENABLE = yes
- # CIRQUE_ENABLE = yes
- ifeq ($(strip $(FP_SPLIT_LEFT)), yes)
- PMW3360_ENABLE = yes
- endif
- ifeq ($(strip $(FP_SPLIT_RIGHT)), yes)
- CIRQUE_ENABLE = yes
- endif
- OPT_DEFS += -DFP_TRACKBALL_LEFT_CIRQUE_RIGHT
-endif
-
-ifeq ($(strip $(FP_CIRQUE_LEFT_TRACKBALL_RIGHT)), yes)
- # When qmk supports multiple types of pointing devices, change to something like the commented code below
- # PMW3360_ENABLE = yes
- # CIRQUE_ENABLE = yes
- ifeq ($(strip $(FP_SPLIT_LEFT)), yes)
- CIRQUE_ENABLE = yes
- endif
- ifeq ($(strip $(FP_SPLIT_RIGHT)), yes)
- PMW3360_ENABLE = yes
- endif
- OPT_DEFS += -DFP_CIRQUE_LEFT_TRACKBALL_RIGHT
-endif
-
-ifeq ($(strip $(FP_CIRQUE_BOTH)), yes)
- CIRQUE_ENABLE = yes
- OPT_DEFS += -DFP_CIRQUE_BOTH
-endif
-
-ifeq ($(strip $(FP_CIRQUE_LEFT_ONLY)), yes)
- CIRQUE_ENABLE = yes
- OPT_DEFS += -DFP_CIRQUE_LEFT_ONLY
-endif
-
-ifeq ($(strip $(FP_CIRQUE_RIGHT_ONLY)), yes)
- CIRQUE_ENABLE = yes
- OPT_DEFS += -DFP_CIRQUE_RIGHT_ONLY
-endif
-
-# When qmk supports multiple types of pointing devices, can remove the FP_SPLIT_* blocks below
-ifeq ($(strip $(FP_SPLIT_LEFT)), yes)
- OPT_DEFS += -DFP_SPLIT_LEFT
-endif
-
-ifeq ($(strip $(FP_SPLIT_RIGHT)), yes)
- OPT_DEFS += -DFP_SPLIT_RIGHT
-endif
-
ifeq ($(strip $(FP_VIK2_RGB)), yes)
OPT_DEFS += -DFP_VIK2_RGB
endif
# include here so that if VIK enables the PMW3360, the OPT_DEFS get set appropriately for ximega
include keyboards/fingerpunch/src/rules.mk
-
-ifeq ($(strip $(CIRQUE_ENABLE)), yes)
- POINTING_DEVICE_ENABLE := yes
- POINTING_DEVICE_DRIVER := cirque_pinnacle_spi
- OPT_DEFS += -DCIRQUE_ENABLE
-endif
-
-ifeq ($(strip $(PMW3360_ENABLE)), yes)
- 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/ximega/v1/config.h b/keyboards/fingerpunch/ximega/v1/config.h
index d06ed67e9e..79384adbde 100644
--- a/keyboards/fingerpunch/ximega/v1/config.h
+++ b/keyboards/fingerpunch/ximega/v1/config.h
@@ -49,4 +49,34 @@ along with this program. If not, see .
// Used only if you have a display with RESET unconnected, set to unused pin
#define VIK_DISPLAY_RST_UNUSED_PIN GP17
-#define FP_QP_ROTATION QP_ROTATION_270
+
+// Encoder configuration from VIK
+#ifdef VIK_EC11_EVQWGD001
+ #define ENCODERS_PAD_A { GP26 }
+ #define ENCODERS_PAD_B { GP27 }
+ #define ENCODER_RESOLUTIONS { 2 }
+#elif defined(VIK_PER56_CIRQUE_LEDS) || defined(VIK_PER56_PMW3360_LEDS)
+ #define ENCODERS_PAD_A { GP26 }
+ #define ENCODERS_PAD_B { GP27 }
+ #define ENCODER_RESOLUTIONS { 1 }
+#else
+ #define ENCODERS_PAD_A { }
+ #define ENCODERS_PAD_B { }
+ #define ENCODER_RESOLUTIONS { }
+#endif
+
+#ifdef VIK_EC11_EVQWGD001_RIGHT
+ #define ENCODERS_PAD_A_RIGHT { GP26 }
+ #define ENCODERS_PAD_B_RIGHT { GP27 }
+ #define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#elif defined(VIK_PER56_CIRQUE_LEDS_RIGHT) || defined(VIK_PER56_PMW3360_LEDS_RIGHT)
+ #define ENCODERS_PAD_A_RIGHT { GP26 }
+ #define ENCODERS_PAD_B_RIGHT { GP27 }
+ #define ENCODER_RESOLUTIONS_RIGHT { 1 }
+#else
+ #define ENCODERS_PAD_A_RIGHT { }
+ #define ENCODERS_PAD_B_RIGHT { }
+ #define ENCODER_RESOLUTIONS_RIGHT { }
+#endif
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ximega/v1/fp_build.json b/keyboards/fingerpunch/ximega/v1/fp_build.json
index 79d544e7c5..c40e58df22 100644
--- a/keyboards/fingerpunch/ximega/v1/fp_build.json
+++ b/keyboards/fingerpunch/ximega/v1/fp_build.json
@@ -2,24 +2,39 @@
{
"type" : "one-of",
"names" : [
- "FP_TRACKBALL_BOTH",
- "FP_CIRQUE_BOTH",
- "FP_TRACKBALL_LEFT_ONLY",
- "FP_TRACKBALL_RIGHT_ONLY",
- "FP_CIRQUE_LEFT_ONLY",
- "FP_CIRQUE_RIGHT_ONLY",
- "FP_TRACKBALL_LEFT_CIRQUE_RIGHT",
- "FP_CIRQUE_LEFT_TRACKBALL_RIGHT"
+ "VIK_BUILD_LEFT",
+ "VIK_BUILD_RIGHT"
],
- "user_input": "What config would you like to use? (NONE, FP_TRACKBALL_BOTH, FP_CIRQUE_BOTH, FP_TRACKBALL_LEFT_ONLY, FP_TRACKBALL_RIGHT_ONLY, FP_CIRQUE_LEFT_ONLY, FP_CIRQUE_RIGHT_ONLY, FP_TRACKBALL_LEFT_CIRQUE_RIGHT, FP_CIRQUE_LEFT_TRACKBALL_RIGHT):"
+ "user_input": "This is only applicable if you have two *different* VIK devices, one on each half. 0 if not applicable, 1 to build left firmware, 2 to build right firmware:"
},
{
"type" : "one-of",
"names" : [
- "FP_SPLIT_LEFT",
- "FP_SPLIT_RIGHT"
+ "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": "This is only applicable if you are doing mixed pointing devices. 0 if not applicable, 1 to build left firmware, 2 to build right firmware:"
+ "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" : [
+ "VIK_AZOTEQ_RIGHT",
+ "VIK_CIRQUE_RIGHT",
+ "VIK_EC11_EVQWGD001_RIGHT",
+ "VIK_PER56_CIRQUE_LEDS_RIGHT",
+ "VIK_PER56_PMW3360_LEDS_RIGHT",
+ "VIK_PMW3360_RIGHT"
+ ],
+ "user_input": "What VIK config would you like to use for the right half? (0) NONE, (1) VIK_AZOTEQ, (2) VIK_CIRQUE, (3) VIK_EC11_EVQWGD001, (4) VIK_PER56_CIRQUE_LEDS, (5) VIK_PER56_PMW3360_LEDS, (6) VIK_PMW3360:"
},
{
"type" : "one-of",
@@ -28,10 +43,5 @@
"RGB_MATRIX_ENABLE"
],
"user_input": "No RGB, RGB light, RGB matrix?"
- },
- {
- "type" : "single",
- "name" : "FP_VIK2_RGB",
- "user_input": "Do you want to use the RGB on VIK2? This disables per key rgb and VIK1 RGB."
}
]
diff --git a/keyboards/fingerpunch/ximi/v1/config.h b/keyboards/fingerpunch/ximi/v1/config.h
index 52958f4c03..45c39e6266 100644
--- a/keyboards/fingerpunch/ximi/v1/config.h
+++ b/keyboards/fingerpunch/ximi/v1/config.h
@@ -21,3 +21,4 @@ along with this program. If not, see .
#define MATRIX_ROW_PINS { GP29, GP28, GP27, GP24 }
#define MATRIX_COL_PINS { GP10, GP11, GP26, GP12, GP13, GP14, GP15, GP16 }
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/ximi/v2/config.h b/keyboards/fingerpunch/ximi/v2/config.h
index 5ad259e56d..e0df1b086c 100644
--- a/keyboards/fingerpunch/ximi/v2/config.h
+++ b/keyboards/fingerpunch/ximi/v2/config.h
@@ -37,3 +37,5 @@ along with this program. If not, see .
// Used only if you have a display with RESET unconnected, set to unused pin
#define VIK_DISPLAY_RST_UNUSED_PIN GP15
#define FP_QP_ROTATION QP_ROTATION_270
+
+#include "keyboards/fingerpunch/src/config_post.h"
diff --git a/keyboards/fingerpunch/xivik/config.h b/keyboards/fingerpunch/xivik/config.h
index fabb974a88..b7f12e3143 100644
--- a/keyboards/fingerpunch/xivik/config.h
+++ b/keyboards/fingerpunch/xivik/config.h
@@ -16,7 +16,8 @@ along with this program. If not, see .
*/
// NOTE: All logic for the modules can be found in:
-// keyboards/fingerpunch/src/vik/config.h
+// keyboards/fingerpunch/src/vik/config.vik.pre.h
+// keyboards/fingerpunch/src/vik/config.vik.post.h
// keyboards/fingerpunch/src/vik/rules.mk
#pragma once
diff --git a/users/sadekbaroudi/process_records.h b/users/sadekbaroudi/process_records.h
index 96a8b45233..3a451b59cd 100755
--- a/users/sadekbaroudi/process_records.h
+++ b/users/sadekbaroudi/process_records.h
@@ -29,6 +29,7 @@
|| defined(KEYBOARD_fingerpunch_sweeeeep) \
|| defined(KEYBOARD_fingerpunch_vulpes_minora) \
|| defined(KEYBOARD_fingerpunch_vulpes_majora_v1) \
+ || defined(KEYBOARD_fingerpunch_ximega) \
|| defined(KEYBOARD_fingerpunch_ximi) \
|| defined(KEYBOARD_fingerpunch_personal_badwings) \
|| defined(KEYBOARD_fingerpunch_personal_badwings_v2) \