From 9e15cabe8c025989eeaf4a0331cf833fc2f3b6ca Mon Sep 17 00:00:00 2001 From: skullY Date: Sun, 27 Jan 2019 15:24:37 -0800 Subject: [PATCH] Get Clueboard 66% hotswap working with led_matrix --- keyboards/clueboard/66_hotswap/gen1/config.h | 14 +- keyboards/clueboard/66_hotswap/gen1/gen1.c | 155 +++++++++--------- keyboards/clueboard/66_hotswap/gen1/gen1.h | 2 +- keyboards/clueboard/66_hotswap/gen1/led.c | 12 -- keyboards/clueboard/66_hotswap/gen1/rules.mk | 4 +- .../66_hotswap/keymaps/default/keymap.c | 116 ++++++------- 6 files changed, 146 insertions(+), 157 deletions(-) diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h index b779644a2b..89f66f1963 100644 --- a/keyboards/clueboard/66_hotswap/gen1/config.h +++ b/keyboards/clueboard/66_hotswap/gen1/config.h @@ -120,7 +120,7 @@ /* Backlight configuration */ -#define BACKLIGHT_LEVELS 1 +#define BACKLIGHT_LEVELS 10 // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) @@ -129,10 +129,10 @@ // 0b1110111 AD <-> VCC // 0b1110101 AD <-> SCL // 0b1110110 AD <-> SDA -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110110 // Not actually used... +#define LED_DRIVER_ADDR_1 0b1110100 +#define I2C1_BANK GPIOB +#define I2C1_SCL 8 +#define I2C1_SDA 9 -#define DRIVER_COUNT 2 -#define DRIVER_1_LED_TOTAL 71 -#define DRIVER_2_LED_TOTAL 0 -#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL +#define LED_DRIVER_COUNT 1 +#define LED_DRIVER_LED_COUNT 71 diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c index 4c65395de7..c70f223756 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.c +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -14,6 +14,7 @@ * along with this program. If not, see . */ #include "gen1.h" +#include "is31fl3731-simple.h" void matrix_init_kb(void) { } @@ -21,88 +22,86 @@ void matrix_init_kb(void) { void matrix_scan_kb(void) { } -#ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +#ifdef LED_MATRIX_ENABLE +const is31_led g_is31_leds[LED_DRIVER_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver - * | R location - * | | G location - * | | | B location - * | | | | */ - {0, C1_1, C1_1, C1_1}, // k00 KC_GESC - {0, C1_2, C1_2, C1_2}, // k01 KC_1 - {0, C1_3, C1_3, C1_3}, // k02 KC_2 - {0, C1_4, C1_4, C1_4}, // k03 KC_3 - {0, C1_5, C1_5, C1_5}, // k04 KC_4 - {0, C1_6, C1_6, C1_6}, // k05 KC_5 - {0, C1_7, C1_7, C1_7}, // k06 KC_6 - {0, C1_8, C1_8, C1_8}, // k07 KC_7 - {0, C1_9, C1_9, C1_9}, // k50 KC_8 - {0, C1_10, C1_10, C1_10}, // k51 KC_9 - {0, C1_11, C1_11, C1_11}, // k52 KC_0 - {0, C1_12, C1_12, C1_12}, // k53 KC_MINS - {0, C1_13, C1_13, C1_13}, // k54 KC_EQL - {0, C1_14, C1_14, C1_14}, // k55 KC_BSPC - {0, C1_15, C1_15, C1_15}, // k57 KC_PGUP - {0, C2_1, C2_1, C2_1}, // k10 KC_TAB - {0, C2_2, C2_2, C2_2}, // k11 KC_Q - {0, C2_3, C2_3, C2_3}, // k12 KC_W - {0, C2_4, C2_4, C2_4}, // k13 KC_E - {0, C2_5, C2_5, C2_5}, // k14 KC_R - {0, C2_6, C2_6, C2_6}, // k15 KC_T - {0, C2_7, C2_7, C2_7}, // k16 KC_Y - {0, C2_8, C2_8, C2_8}, // k17 KC_U - {0, C2_9, C2_9, C2_9}, // k60 KC_I - {0, C2_10, C2_10, C2_10}, // k61 KC_O - {0, C2_11, C2_11, C2_11}, // k62 KC_P - {0, C2_12, C2_12, C2_12}, // k63 KC_LBRC - {0, C2_13, C2_13, C2_13}, // k64 KC_RBRC - {0, C2_14, C2_14, C2_14}, // k65 KC_BSLS - {0, C2_15, C2_15, C2_15}, // k67 KC_PGDN - {0, C3_1, C3_1, C3_1}, // k20 KC_CAPS - {0, C3_2, C3_2, C3_2}, // k21 KC_A - {0, C3_3, C3_3, C3_3}, // k22 KC_S - {0, C3_4, C3_4, C3_4}, // k23 KC_D - {0, C3_5, C3_5, C3_5}, // k24 KC_F - {0, C3_6, C3_6, C3_6}, // k25 KC_G - {0, C3_7, C3_7, C3_7}, // k26 KC_H - {0, C3_8, C3_8, C3_8}, // k27 KC_J - {0, C3_9, C3_9, C3_9}, // k70 KC_K - {0, C3_10, C3_10, C3_10}, // k71 KC_L - {0, C3_11, C3_11, C3_11}, // k72 KC_SCLN - {0, C3_12, C3_12, C3_12}, // k73 KC_QUOT - {0, C3_14, C3_14, C3_14}, // k75 KC_ENT - {0, C4_1, C4_1, C4_1}, // k30 KC_LSFT - {0, C4_3, C4_3, C4_3}, // k32 KC_Z - {0, C4_4, C4_4, C4_4}, // k33 KC_X - {0, C4_5, C4_5, C4_5}, // k34 KC_C - {0, C4_6, C4_6, C4_6}, // k35 KC_V - {0, C4_7, C4_7, C4_7}, // k36 KC_B - {0, C4_8, C4_8, C4_8}, // k37 KC_N - {0, C4_9, C4_9, C4_9}, // k80 KC_M - {0, C4_10, C4_10, C4_10}, // k81 KC_COMM - {0, C4_11, C4_11, C4_11}, // k82 KC_DOT - {0, C4_12, C4_12, C4_12}, // k83 KC_SLSH - {0, C4_13, C4_13, C4_13}, // k85 KC_RSFT - {0, C4_14, C4_14, C4_14}, // k86 KC_UP - {0, C5_1, C5_1, C5_1}, // k40 KC_LCTL - {0, C5_2, C5_2, C5_2}, // k41 KC_LGUI - {0, C5_3, C5_3, C5_3}, // k42 KC_LALT - {0, C5_4, C5_4, C5_4}, // Unassociated between LALT and SPACE_2.75 - {0, C5_5, C5_5, C5_5}, // k45 KC_SPC SPACE_2.75 - {0, C5_6, C5_6, C5_6}, // k45 KC_SPC SPACE_6.75 - {0, C5_7, C5_7, C5_7}, // k46 KC_SPC SPACE_2.25 - {0, C5_8, C5_8, C5_8}, // Unassociated between SPACE_2.25 and SPACE_1.25 - {0, C5_9, C5_9, C5_9}, // k90 KC_RGUI - {0, C5_10, C5_10, C5_10}, // k92 KC_RALT - {0, C5_11, C5_11, C5_11}, // k93 MO(_FL) - {0, C5_12, C5_12, C5_12}, // k94 KC_RCTL - {0, C5_13, C5_13, C5_13}, // k95 KC_LEFT - {0, C5_14, C5_14, C5_14}, // k96 KC_DOWN - {0, C5_15, C5_15, C5_15} // k97 KC_RGHT + * | LED address + * | | */ + {0, C1_1}, // k00 KC_GESC + {0, C1_2}, // k01 KC_1 + {0, C1_3}, // k02 KC_2 + {0, C1_4}, // k03 KC_3 + {0, C1_5}, // k04 KC_4 + {0, C1_6}, // k05 KC_5 + {0, C1_7}, // k06 KC_6 + {0, C1_8}, // k07 KC_7 + {0, C1_9}, // k50 KC_8 + {0, C1_10}, // k51 KC_9 + {0, C1_11}, // k52 KC_0 + {0, C1_12}, // k53 KC_MINS + {0, C1_13}, // k54 KC_EQL + {0, C1_14}, // k55 KC_BSPC + {0, C1_15}, // k57 KC_PGUP + {0, C2_1}, // k10 KC_TAB + {0, C2_2}, // k11 KC_Q + {0, C2_3}, // k12 KC_W + {0, C2_4}, // k13 KC_E + {0, C2_5}, // k14 KC_R + {0, C2_6}, // k15 KC_T + {0, C2_7}, // k16 KC_Y + {0, C2_8}, // k17 KC_U + {0, C2_9}, // k60 KC_I + {0, C2_10}, // k61 KC_O + {0, C2_11}, // k62 KC_P + {0, C2_12}, // k63 KC_LBRC + {0, C2_13}, // k64 KC_RBRC + {0, C2_14}, // k65 KC_BSLS + {0, C2_15}, // k67 KC_PGDN + {0, C3_1}, // k20 KC_CAPS + {0, C3_2}, // k21 KC_A + {0, C3_3}, // k22 KC_S + {0, C3_4}, // k23 KC_D + {0, C3_5}, // k24 KC_F + {0, C3_6}, // k25 KC_G + {0, C3_7}, // k26 KC_H + {0, C3_8}, // k27 KC_J + {0, C3_9}, // k70 KC_K + {0, C3_10}, // k71 KC_L + {0, C3_11}, // k72 KC_SCLN + {0, C3_12}, // k73 KC_QUOT + {0, C3_14}, // k75 KC_ENT + {0, C4_1}, // k30 KC_LSFT + {0, C4_3}, // k32 KC_Z + {0, C4_4}, // k33 KC_X + {0, C4_5}, // k34 KC_C + {0, C4_6}, // k35 KC_V + {0, C4_7}, // k36 KC_B + {0, C4_8}, // k37 KC_N + {0, C4_9}, // k80 KC_M + {0, C4_10}, // k81 KC_COMM + {0, C4_11}, // k82 KC_DOT + {0, C4_12}, // k83 KC_SLSH + {0, C4_13}, // k85 KC_RSFT + {0, C4_14}, // k86 KC_UP + {0, C5_1}, // k40 KC_LCTL + {0, C5_2}, // k41 KC_LGUI + {0, C5_3}, // k42 KC_LALT + {0, C5_4}, // Unassociated between LALT and SPACE_2.75 + {0, C5_5}, // k45 KC_SPC SPACE_2.75 + {0, C5_6}, // k45 KC_SPC SPACE_6.75 + {0, C5_7}, // k46 KC_SPC SPACE_2.25 + {0, C5_8}, // Unassociated between SPACE_2.25 and SPACE_1.25 + {0, C5_9}, // k90 KC_RGUI + {0, C5_10}, // k92 KC_RALT + {0, C5_11}, // k93 MO(_FL) + {0, C5_12}, // k94 KC_RCTL + {0, C5_13}, // k95 KC_LEFT + {0, C5_14}, // k96 KC_DOWN + {0, C5_15} // k97 KC_RGHT }; -const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { +const led_matrix g_leds[LED_DRIVER_LED_COUNT] = { /*{row | col << 4} | LED_ROW_COL(row, col) diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.h b/keyboards/clueboard/66_hotswap/gen1/gen1.h index 92b04a8f41..05adf49831 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.h +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.h @@ -54,7 +54,7 @@ k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k57, \ k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \ k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \ - k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \ + k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \ k40, k41, k42, k45, k46, k90, k92, k93, k94, k95, k96, k97 \ ) { \ { k00, k01, k02, k03, k04, k05, k06, k07 }, \ diff --git a/keyboards/clueboard/66_hotswap/gen1/led.c b/keyboards/clueboard/66_hotswap/gen1/led.c index e9256e1295..efbf532022 100644 --- a/keyboards/clueboard/66_hotswap/gen1/led.c +++ b/keyboards/clueboard/66_hotswap/gen1/led.c @@ -19,15 +19,3 @@ #include "backlight.h" #include "led.h" #include "printf.h" - -void backlight_init_ports(void) { - printf("backlight_init_ports()\n"); -} - -void backlight_set(uint8_t level) { - printf("backlight_set(%d)\n", level); -} - -void led_set_kb(uint8_t usb_led) { - printf("led_set_kb(%d)\n", usb_led); -} diff --git a/keyboards/clueboard/66_hotswap/gen1/rules.mk b/keyboards/clueboard/66_hotswap/gen1/rules.mk index 0c7894cc24..6b1ee92c18 100644 --- a/keyboards/clueboard/66_hotswap/gen1/rules.mk +++ b/keyboards/clueboard/66_hotswap/gen1/rules.mk @@ -39,12 +39,12 @@ OPT_DEFS = DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave # LED Configuration -RGB_MATRIX_ENABLE = IS31FL3731 +LED_MATRIX_ENABLE = IS31FL3731 # Build Options # comment out to disable the options. # -BACKLIGHT_ENABLE = no +BACKLIGHT_ENABLE = yes BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration ## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) MOUSEKEY_ENABLE = yes # Mouse keys diff --git a/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c index 920742c618..6451cf0370 100644 --- a/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c +++ b/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c @@ -52,70 +52,72 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _CL: Control layer */ [_CL] = LAYOUT( - BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \ - _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \ + BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ - _______,_______,_______, RGB_MOD,RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), + _______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case S_BSKTC: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_basketcase); - } - return false; - case S_ODEJY: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_ode_to_joy); - } - return false; - case S_RCKBY: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_rock_a_bye_baby); - } - return false; - case S_DOEDR: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_doe_a_deer); - } - return false; - case S_SCALE: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_scale); - } - return false; - case S_ONEUP: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_one_up); - } - return false; - case S_COIN: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_coin); - } - return false; - case S_SONIC: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_sonic_ring); - } - return false; - case S_ZELDA: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_zelda_puzzle); - } - return false; + #ifdef AUDIO_ENABLE + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + #endif } return true; }