#pragma once #include "config_common.h" // USB parameters #define VENDOR_ID 0x3297 // ZSA Labs #define PRODUCT_ID 0x4976 // Ergodox glow variant #define DEVICE_VER 0x0002 #define MANUFACTURER Betalupi #define PRODUCT Betalupi ErgoDox #define WEBUSB_LANDING_PAGE_URL u8"betalupi.com" #define USB_MAX_POWER_CONSUMPTION 500 #define USB_SUSPEND_WAKEUP_DELAY 0 // Key matrix info #define MATRIX_ROWS 14 #define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) #define MATRIX_COLS 6 #define COL_EXPANDED { true, true, true, true, true, true, true, false, false, false, false, false, false, false } #define MATRIX_ONBOARD_ROW_PINS { 0, 0, 0, 0, 0, 0, 0, B0, B1, B2, B3, D2, D3, C6 } #define MATRIX_ONBOARD_COL_PINS { F0, F1, F4, F5, F6, F7 } #define DIODE_DIRECTION COL2ROW #define EXPANDER_COL_REGISTER GPIOB #define EXPANDER_ROW_REGISTER GPIOA #define MATRIX_EXPANDER_COL_PINS { 5, 4, 3, 2, 1, 0 } #define MATRIX_EXPANDER_ROW_PINS { 0, 1, 2, 3, 4, 5, 6 } // The debounce filtering reports a key/switch change directly, // without any extra delay. After that the debounce logic will filter // all further changes, until the key/switch reports the same // state for the given count of scans. // // A perfect switch will get a short debounce period and // bad key will get a much longer debounce period. // // The result is an adaptive debouncing period for each switch. // If you don't define it here, the matrix code will default to // 5, which is now closer to 10ms, but still plenty according to // manufacturer specs. #define DEBOUNCE 30 // Feature parameters #define TAPPING_TOGGLE 1 #define TAPPING_TERM 200 // This makes it possible to do rolling combos (zx) // with keys that convert to other keys on hold // (z becomes ctrl when you hold it, and when this option isn't // enabled, z rapidly followed by x actually sends Ctrl-x) #define IGNORE_MOD_TAP_INTERRUPT #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_DELAY 0 #define MOUSEKEY_TIME_TO_MAX 100 #define MOUSEKEY_MAX_SPEED 5 #define MOUSEKEY_WHEEL_DELAY 400 #define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL #define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED #define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX // Ergodox indicator LEDs #define LED_BRIGHTNESS_LO 5 #define LED_BRIGHTNESS_HI 100 #define LED_BRIGHTNESS_DEFAULT (LED_BRIGHTNESS_LO) // RGBLight (Underglow) config #define RGBLED_NUM 8 #define RGB_DI_PIN D7 #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 16 #define RGBLIGHT_VAL_STEP 10 // Max brightness #define RGBLIGHT_LIMIT_VAL 200 //#define RGBLIGHT_OFF_AT_START //#define RGBLIGHT_NO_EEPROM // Prevents RGB keycodes from affecting underglow. // This allows us to control RGBMatrix and RGBLight seperately // with custom macros defined in betalupi_ergodox.c #define RGBLIGHT_DISABLE_KEYCODES // The underglow LEDs I used for the backlight mod aren't RGBW, // undef this just to be sure. #undef RGBW #define RGBLIGHT_SLEEP // RGBMatrix (Key light) config #define DRIVER_ADDR_1 0b1110100 #define DRIVER_ADDR_2 0b1110111 #define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 24 #define DRIVER_2_LED_TOTAL 24 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) #define RGB_MATRIX_HUE_STEP 10 #define RGB_MATRIX_SAT_STEP 16 #define RGB_MATRIX_VAL_STEP 16 #define RGB_MATRIX_STARTUP_SPD 60 // limits the number of LEDs to process in an animation per task run // (increases keyboard responsiveness) #define RGB_MATRIX_LED_PROCESS_LIMIT 5 // limits in milliseconds how frequently an animation will update the LEDs. // 16 (16ms) is equivalent to limiting to 60fps // (increases keyboard responsiveness) #define RGB_MATRIX_LED_FLUSH_LIMIT 26 // turn off effects when suspended #define RGB_DISABLE_WHEN_USB_SUSPENDED true // Misc /* key combination for command */ #define IS_COMMAND() ( \ get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ ) // Not sure what this does. // ZSA says: "fixes space cadet rollover issue" #define DISABLE_SPACE_CADET_ROLLOVER // Disable unnecessary features //#define NO_DEBUG //#define NO_PRINT //#define DEBUG_MATRIX_SCAN_RATE //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION