diff --git a/keyboards/keychron/c1/c1.c b/keyboards/keychron/c1/c1.c new file mode 100644 index 000000000000..31b645083ad1 --- /dev/null +++ b/keyboards/keychron/c1/c1.c @@ -0,0 +1,20 @@ +/* Copyright 2020 Adam Honse + * Copyright 2020 Dimitris Mantzouranis + * Copyright 2021 IsaacDynamo + * Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "c1.h" diff --git a/keyboards/keychron/c1/c1.h b/keyboards/keychron/c1/c1.h new file mode 100644 index 000000000000..ab604965c039 --- /dev/null +++ b/keyboards/keychron/c1/c1.h @@ -0,0 +1,57 @@ +/* Copyright 2020 Adam Honse + * Copyright 2020 Dimitris Mantzouranis + * Copyright 2021 IsaacDynamo + * Copyright 2022 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +// Readability +#define XXX KC_NO + +#define LAYOUT_tkl_ansi_240B( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, k0g, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \ + k50, k51, k52, k56, k5a, k5b, k5c, k5d, k5e, k5f, k5g \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e, k0f, k0g }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX, XXX, XXX }, \ + { k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, XXX, k4f, XXX }, \ + { k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d, k5e, k5f, k5g } \ +} + +#define LAYOUT_tkl_ansi_260( \ + k00, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \ + k50, k51, k52, k56, k5a, k5b, k5c, k5d, k5e, k5f, k5g \ +) { \ + {k00, XXX, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX, XXX, XXX}, \ + {k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, XXX, k4f, XXX}, \ + {k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d, k5e, k5f, k5g} \ +} diff --git a/keyboards/keychron/c1/config.h b/keyboards/keychron/c1/config.h new file mode 100644 index 000000000000..421ec8b70d5c --- /dev/null +++ b/keyboards/keychron/c1/config.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Adam Honse + * Copyright 2020 Dimitris Mantzouranis + * Copyright 2021 IsaacDynamo + * Copyright 2022 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3434 +#define PRODUCT_ID 0xFE20 +#define DEVICE_VER 0x0001 + +#define MANUFACTURER Keychron +#define PRODUCT Keychron \x43\x31 + +/* Polling Rate */ +#define USB_POLLING_INTERVAL_MS 1 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 1 diff --git a/keyboards/keychron/c1/white/keymaps/default/keymap.c b/keyboards/keychron/c1/keymaps/default/keymap.c similarity index 59% rename from keyboards/keychron/c1/white/keymaps/default/keymap.c rename to keyboards/keychron/c1/keymaps/default/keymap.c index bcfec6d5cdb7..7d39675fd733 100644 --- a/keyboards/keychron/c1/white/keymaps/default/keymap.c +++ b/keyboards/keychron/c1/keymaps/default/keymap.c @@ -16,23 +16,73 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H -#define KC_TASK LGUI(KC_TAB) // Task viewer -#define KC_FLXP LGUI(KC_E) // Windows file explorer -#define KC_CORT LGUI(KC_C) // Cortana -#define KC_SNIP LGUI(LSFT(KC_S)) // Windows snip tool -#define KC_W_FN MO(WIN_FN) // Windows Fn - -#define KC_MSSN LGUI(KC_F3) // Mission Control -#define KC_FIND LALT(LGUI(KC_SPC)) // Finder -#define KC_SIRI LGUI(KC_SPC) // Siri -#define KC_MSCR LSFT(LGUI(KC_3)) // Mac screenshot -#define KC_MSNP LSFT(LGUI(KC_4)) // Mac snip tool -#define KC_M_FN MO(MAC_FN) // Mac Fn +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +/* Keychron Fn */ + +#define KC_TASK LGUI(KC_TAB) // Task viewer +#define KC_FLXP LGUI(KC_E) // Windows file explorer +#define KC_CORT LGUI(KC_C) // Cortana +#define KC_SNIP LGUI(LSFT(KC_S)) // Windows snip tool +#define KC_W_FN MO(WIN_FN) // Windows Fn + +#define KC_MCTL LGUI(KC_UP) // Mission Control +#define KC_SIRI LGUI(KC_SPC) // Siri +#define KC_MSCR LSFT(LGUI(KC_3)) // Mac screenshot +#define KC_MSNP LSFT(LGUI(KC_4)) // Mac snip tool +#define KC_M_FN MO(MAC_FN) // Mac Fn + +/* Variant-tailored Defines */ + +#if defined(LED_MATRIX_ENABLE) + #define LAYOUT_tkl_ansi LAYOUT_tkl_ansi_260 + #define LGT_VAD BL_DEC // Decrease KB Brightness + #define LGT_VAI BL_INC // Increase KB Brightness + #define XTR_AA BL_STEP // Cycle LED Modes + #define XTR_AB BL_TOGG // Toggle BL + #define XTR_BA BL_STEP // Cycle LED Modes + #define XTR_BB BL_TOGG // Toggle BL + #define LGT_HUI KC_TRNS // None + #define LGT_HUD KC_TRNS // None + #define LGT_SAI KC_TRNS // None + #define LGT_SAD KC_TRNS // None +#elif defined(RGB_MATRIX_ENABLE) + #define LAYOUT_tkl_ansi LAYOUT_tkl_ansi_240B + #define LGT_VAD RGB_VAD // Decrease KB Brightness + #define LGT_VAI RGB_VAI // Increase KB Brightness + #define XTR_AA RGB_MOD // Cycle RGB Modes + #define XTR_AB RGB_TOG // Toggle RGB + #define XTR_BA RGB_MOD // Cycle RGB Modes + #define XTR_BB RGB_TOG // Toggle RGB + #define LGT_HUI RGB_HUI // Increase RGB Hue + #define LGT_HUD RGB_HUD // Decrease RGB Hue + #define LGT_SAI RGB_SAI // Increase RGB Saturation + #define LGT_SAD RGB_SAD // Decrease RGB Saturation +#else + #define LAYOUT_tkl_ansi LAYOUT_tkl_ansi_260 + #define LGT_VAD KC_TRNS // None + #define LGT_VAI KC_TRNS // None + #define XTR_AA LGUI(LCTL(KC_Q)) // Mac Lock + #define XTR_AB KC_TRNS // None + #define XTR_BA LGUI(KC_L) // Windows Lock + #define XTR_BB KC_TRNS // None + #define LGT_HUI KC_TRNS // None + #define LGT_HUD KC_TRNS // None + #define LGT_SAI KC_TRNS // None + #define LGT_SAD KC_TRNS // None +#endif + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Windows layout + + /* Mac layout +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|CORT| BL | + | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|SIRI| BL | +--------------------------------------------------------------------------+ +--------------+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| +--------------------------------------------------------------------------+ +--------------+ @@ -42,31 +92,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +--------------------------------------------------------------------------+ +----+ | | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LGUI| LALT | SPACE | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT | + |LCTRL| LALT| LGUI | SPACE | RGUI| RALT | FN | RCTRL | |LFT |DWN |RGT | +-------------------------------------------------------------------------------------------+ */ - [WIN_BASE] = LAYOUT( \ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_CORT, RGB_TOG, \ + [MAC_BASE] = LAYOUT_tkl_ansi( \ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MSCR, KC_SIRI, XTR_AA, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_W_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_M_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), - [WIN_FN] = LAYOUT( \ - RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNIP, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + [MAC_FN] = LAYOUT_tkl_ansi( \ + RESET, KC_BRID, KC_BRIU, KC_MCTL, _______, LGT_VAD, LGT_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSNP, _______, XTR_AB, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, \ - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_MOD \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGT_HUI, \ + _______, _______, GUI_TOG, _______, GUI_TOG, _______, _______, _______, LGT_SAD, LGT_HUD, LGT_SAI \ ), - /* Mac layout + /* Windows layout +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|SIRI| BL | + | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|CORT| BL | +--------------------------------------------------------------------------+ +--------------+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| +--------------------------------------------------------------------------+ +--------------+ @@ -76,25 +126,61 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +--------------------------------------------------------------------------+ +----+ | | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LALT| LGUI | SPACE | RGUI| RALT | FN | RCTRL | |LFT |DWN |RGT | + |LCTRL| LGUI| LALT | SPACE | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT | +-------------------------------------------------------------------------------------------+ */ - [MAC_BASE] = LAYOUT( \ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MSCR, KC_SIRI, RGB_TOG, \ + [WIN_BASE] = LAYOUT_tkl_ansi( \ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_CORT, XTR_BA, \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_M_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_W_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), - [MAC_FN] = LAYOUT( \ - RESET, KC_BRID, KC_BRIU, KC_MSSN, KC_FIND, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSNP, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + [WIN_FN] = LAYOUT_tkl_ansi( \ + RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, LGT_VAD, LGT_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNIP, _______, XTR_BB, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, \ - _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_MOD \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGT_HUI, \ + _______, GUI_TOG, _______, _______, _______, GUI_TOG, _______, _______, LGT_SAD, LGT_HUD, LGT_SAI \ ) }; + +// Manage Windows and Mac LEDs +// - Show status of mode switch +// - Turn LEDs off durring USB suspend +static bool mode_leds_show = true; +static bool mode_leds_windows; + +static void mode_leds_update(void){ + writePin(LED_WIN_PIN, mode_leds_show && mode_leds_windows); + writePin(LED_MAC_PIN, mode_leds_show && !mode_leds_windows); +} + +bool dip_switch_update_kb(uint8_t index, bool active){ + if(index == 0) { + if(active) { // Mac mode + layer_move(MAC_BASE); + } else { // Windows mode + layer_move(WIN_BASE); + } + + // Update mode and update leds + mode_leds_windows = !active; + mode_leds_update(); + } + + dip_switch_update_user(index, active); + return true; +} + +void keyboard_pre_init_kb(void) { + // Setup Win & Mac LED Pins as output + setPinOutput(LED_WIN_PIN); + setPinOutput(LED_MAC_PIN); + + keyboard_pre_init_user(); +} diff --git a/keyboards/keychron/c1/plain/config.h b/keyboards/keychron/c1/plain/config.h index b70037a069c3..f8034e6d344b 100644 --- a/keyboards/keychron/c1/plain/config.h +++ b/keyboards/keychron/c1/plain/config.h @@ -1,35 +1,6 @@ -/* Copyright 2020 Adam Honse - * Copyright 2020 Dimitris Mantzouranis - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - /* USB Device descriptor parameter */ -#define VENDOR_ID 0x3434 -#define PRODUCT_ID 0xFE20 -#define DEVICE_VER 0x0001 +#define DESCRIPTION Keychron \x43\x31 Plain -#define MANUFACTURER Keychron -// \x43\x31 is "C1" in ASCII hex, this is used to prevent macro expansion, because C1 is also a pin macro. -#define PRODUCT \x43\x31 -#define DESCRIPTION \x43\x31 QMK - -#define WAIT_FOR_USB #define USB_MAX_POWER_CONSUMPTION 100 /* key matrix size */ @@ -57,11 +28,6 @@ #define LED_MAC_PIN B4 #define LED_WIN_PIN B5 -/* Enable NKRO by default */ -#define FORCE_NKRO - +/* VIA configs */ #define DYNAMIC_KEYMAP_LAYER_COUNT 4 #define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 1000 - -/* Polling Rate */ -#define USB_POLLING_INTERVAL_MS 1 diff --git a/keyboards/keychron/c1/plain/keymaps/default/keymap.c b/keyboards/keychron/c1/plain/keymaps/default/keymap.c deleted file mode 100644 index 16e60e95f6bd..000000000000 --- a/keyboards/keychron/c1/plain/keymaps/default/keymap.c +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright 2020 Dimitris Mantzouranis - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H - -#define KC_TASK LGUI(KC_TAB) // Task viewer -#define KC_FLXP LGUI(KC_E) // Windows file explorer -#define KC_CORT LGUI(KC_C) // Cortana -#define KC_LOCK LGUI(KC_L) // Lock -#define KC_SNIP LGUI(LSFT(KC_S)) // Windows snip tool -#define KC_W_FN MO(WIN_FN) // Windows Fn - -#define KC_MSSN LGUI(KC_F3) // Mission Control -#define KC_FIND LALT(LGUI(KC_SPC)) // Finder -#define KC_SIRI LGUI(KC_SPC) // Siri -#define KC_MSCR LSFT(LGUI(KC_3)) // Mac screenshot -#define KC_MSNP LSFT(LGUI(KC_4)) // Mac snip tool -#define KC_M_FN MO(MAC_FN) // Mac Fn -#define KD_M_LK LCMD(LCTL(KC_Q)) // Mac Lock - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Windows layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|CORT|LOCK| - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LGUI| LALT | SPACE | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [WIN_BASE] = LAYOUT( \ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_CORT, KC_LOCK, \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_W_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ - ), - - [WIN_FN] = LAYOUT( \ - RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNIP, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - - /* Mac layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|SIRI|LOCK| - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LALT| LGUI | SPACE | RGUI| RALT | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [MAC_BASE] = LAYOUT( \ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MSCR, KC_SIRI, KD_M_LK, \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_M_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ - ), - - [MAC_FN] = LAYOUT( \ - RESET, KC_BRID, KC_BRIU, KC_MSSN, KC_FIND, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSNP, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ) -}; diff --git a/keyboards/keychron/c1/plain/keymaps/via/keymap.c b/keyboards/keychron/c1/plain/keymaps/via/keymap.c index 9b448f5d59ca..0c5fa769a2f8 100644 --- a/keyboards/keychron/c1/plain/keymaps/via/keymap.c +++ b/keyboards/keychron/c1/plain/keymaps/via/keymap.c @@ -1,3 +1,3 @@ // Include default keymap // This way the VIA keymap is always up to date with the default keymap -#include "../default/keymap.c" \ No newline at end of file +#include "../../../keymaps/default/keymap.c" diff --git a/keyboards/keychron/c1/plain/plain.c b/keyboards/keychron/c1/plain/plain.c index 9e0d1f10eda3..50ee36e377ac 100644 --- a/keyboards/keychron/c1/plain/plain.c +++ b/keyboards/keychron/c1/plain/plain.c @@ -1,79 +1,20 @@ -/* Copyright 2021 IsaacDynamo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "plain.h" - -// Manage Windows and Mac LEDs -// - Show status of mode switch -// - Turn LEDs off durring USB suspend -static bool mode_leds_show = true; -static bool mode_leds_windows; - -static void mode_leds_update(void){ - writePin(LED_WIN_PIN, mode_leds_show && mode_leds_windows); - writePin(LED_MAC_PIN, mode_leds_show && !mode_leds_windows); -} - -bool dip_switch_update_kb(uint8_t index, bool active){ - if(index == 0) { - if(active) { // Mac mode - layer_move(MAC_BASE); - } else { // Windows mode - layer_move(WIN_BASE); - } - - // Update mode and update leds - mode_leds_windows = !active; - mode_leds_update(); - } - - dip_switch_update_user(index, active); - return true; -} - -void keyboard_pre_init_kb(void) { - // Setup Win & Mac LED Pins as output - setPinOutput(LED_WIN_PIN); - setPinOutput(LED_MAC_PIN); - - keyboard_pre_init_user(); -} - -void suspend_power_down_kb(void) { - // Turn leds off - mode_leds_show = false; - mode_leds_update(); - - suspend_power_down_user(); -} - -/// TODO: Clean-up workaround -/// Currently the suspend_wakeup_init_kb() has issues. See https://github.com/SonixQMK/qmk_firmware/issues/80 -/// A workaround is to use housekeeping_task_kb() instead. -void housekeeping_task_kb(void) { - // Turn on - mode_leds_show = true; - mode_leds_update(); - - housekeeping_task_user(); -} +// Size optimizations to fit VIA support +// +// These optimizations are pretty intrusive because they remove the idle thread. +// Without idle thread some sleep related functions no longer function. +// These broken functions are overwritten with patched variants. +// +// These optimization are copied from: +// https://github.com/gloryhzw/qmk_firmware/blob/sn32/keyboards/gmmk/full +// +// This file adds patch sleep related functions that work without idle threads. + +#include "quantum.h" #if CH_CFG_NO_IDLE_THREAD == TRUE -# define CYCLES_PER_LOOP 9 -# define LOOP_TIMES (48000000 / (CH_CFG_ST_FREQUENCY) / (CYCLES_PER_LOOP)) +#define CYCLES_PER_LOOP 9 +#define LOOP_TIMES (48000000 / (CH_CFG_ST_FREQUENCY) / (CYCLES_PER_LOOP)) void chThdSleep(sysinterval_t time) { uint32_t loops = time * LOOP_TIMES; diff --git a/keyboards/keychron/c1/plain/plain.h b/keyboards/keychron/c1/plain/plain.h deleted file mode 100644 index d996ca48d968..000000000000 --- a/keyboards/keychron/c1/plain/plain.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "quantum.h" - -// Each layer gets a name for readability -enum layer_names { - WIN_BASE = 0, - WIN_FN = 1, - MAC_BASE = 2, - MAC_FN = 3, -}; - -// readability -#define XXX KC_NO - -#define LAYOUT( \ - k00, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ - k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \ - k50, k51, k52, k56, k5a, k5b, k5c, k5d, k5e, k5f, k5g \ -) \ -{ \ - {k00, XXX, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g}, \ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX, XXX, XXX}, \ - {k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, XXX, k4f, XXX}, \ - {k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d, k5e, k5f, k5g} \ -} diff --git a/keyboards/keychron/c1/plain/plain.json b/keyboards/keychron/c1/plain/plain_via.json similarity index 100% rename from keyboards/keychron/c1/plain/plain.json rename to keyboards/keychron/c1/plain/plain_via.json diff --git a/keyboards/keychron/c1/plain/rand.c b/keyboards/keychron/c1/plain/rand.c index a1096bbe2b58..330d3b39af40 100644 --- a/keyboards/keychron/c1/plain/rand.c +++ b/keyboards/keychron/c1/plain/rand.c @@ -1,6 +1,6 @@ // Small rand() implementation // -// The libc rand implementation takes to much flash space, so an smaller rand() function is used. +// The libc rand implementation takes to much flash space, so an smaller rand() function is used. #include "quantum.h" int rand(void) diff --git a/keyboards/keychron/c1/plain/readme.md b/keyboards/keychron/c1/plain/readme.md index 1d4f27a84659..50bf6fe6d41e 100644 --- a/keyboards/keychron/c1/plain/readme.md +++ b/keyboards/keychron/c1/plain/readme.md @@ -1,11 +1,9 @@ -# Keychron C1 plain - -![Keychron C1](https://i.imgur.com/oB9h56v.png) +# Keychron C1 Plain A customizable TKL keyboard. -* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [IsaacDynamo](https://github.com/IsaacDynamo), [noldevin](https://github.com/noldevin), [vjdato21](https://github.com/vjdato21) -* Hardware Supported: Keychron C1 plain (no leds, shares PCB with White Led version) +* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [edlf](https://github.com/edlf) +* Hardware Supported: Keychron C1 Plain (SN32F268) * Hardware Availability: [Keychron](https://www.keychron.com/products/keychron-c1-wired-mechanical-keyboard) # Install @@ -22,11 +20,12 @@ A customizable TKL keyboard. Without Fn | With Fn ---------- | ------- -ESC | Reset keyboard F1 | Decrease PC Brightness F2 | Increase PC Brightness F3 | Task View F4 | File Explorer +F5 | Decrease KB Brightness +F6 | Increase KB Brightness F7 | Previous Track F8 | Play/Pause Track F9 | Next Track @@ -34,8 +33,10 @@ F10 | Mute F11 | Decrease Volume F12 | Increase Volume Print Screen | Snip & Sketch -Cortana | - -Lock PC | - +Cortana / Microsoft Teams | None +Lock your PC | None +⊞ | GUI Lock Toggle +Home | NKRO Toggle @@ -44,11 +45,12 @@ Lock PC | - Without Fn | With Fn ---------- | ------- -ESC | Reset keyboard F1 | Decrease PC Brightness F2 | Increase PC Brightness -F3 | None -F4 | Finder +F3 | Mission Control +F4 | None +F5 | Decrease KB Brightness +F6 | Increase KB Brightness F7 | Previous Track F8 | Play/Pause Track F9 | Next Track @@ -56,8 +58,10 @@ F10 | Mute F11 | Decrease Volume F12 | Increase Volume Take a screenshot (whole screen) | Take a screenshot (specific area) -Siri (hold down) | - -Lock Mac | - +Siri (hold down) | None +Lock your Mac | None +⌘ | GUI Lock Toggle +Home | NKRO Toggle @@ -65,7 +69,7 @@ Lock Mac | - Make example for this keyboard (after setting up your build environment): - make keychron/c1/plain + make keychron/c1/plain:default [Video](https://www.youtube.com/watch?v=aUiKHdI5Vk8) explaining installation for a similar keyboard. diff --git a/keyboards/keychron/c1/plain/rules.mk b/keyboards/keychron/c1/plain/rules.mk index cf9c8ce55426..53b266d4761f 100644 --- a/keyboards/keychron/c1/plain/rules.mk +++ b/keyboards/keychron/c1/plain/rules.mk @@ -1,23 +1,10 @@ -# project specific files -SRC = rand.c - # MCU name MCU = SN32F268F -# Build Options -# comment out to disable the options. -# -MAGIC_ENABLE = yes -MAGIC_KEYCODE_ENABLE = yes -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -EXTRAKEY_ENABLE = yes # Audio control and System control -NKRO_ENABLE = yes # USB Nkey Rollover -DIP_SWITCH_ENABLE = yes - # Custom Key and LED matrix handling CUSTOM_MATRIX = no RGB_MATRIX_ENABLE = no # Reduce code size USE_PROCESS_STACKSIZE = 0x1E0 -USE_EXCEPTIONS_STACKSIZE = 0xE0 \ No newline at end of file +USE_EXCEPTIONS_STACKSIZE = 0xE0 diff --git a/keyboards/keychron/c1/readme.md b/keyboards/keychron/c1/readme.md new file mode 100644 index 000000000000..f6042308f8c7 --- /dev/null +++ b/keyboards/keychron/c1/readme.md @@ -0,0 +1,15 @@ +# Keychron C1 + +![Keychron C1](https://i.imgur.com/QRmjfU1.png) + +A customizable TKL keyboard. + +* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [noldevin](https://github.com/noldevin), [vjdato21](https://github.com/vjdato21), [IsaacDynamo](https://github.com/IsaacDynamo), [edlf](https://github.com/edlf) +* Hardware Supported: All variants of Keychron C1 +* Hardware Availability: [Keychron](https://www.keychron.com/products/keychron-c1-wired-mechanical-keyboard) + +* * * + +For more information and more detailed flashing instructions, please visit https://github.com/CanUnesi/QMK-on-K6#readme + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/keychron/c1/rgb/config.h b/keyboards/keychron/c1/rgb/config.h index b9bcd440affc..473fb01d2a9d 100644 --- a/keyboards/keychron/c1/rgb/config.h +++ b/keyboards/keychron/c1/rgb/config.h @@ -1,32 +1,5 @@ -/* Copyright 2020 Adam Honse - * Copyright 2020 Dimitris Mantzouranis - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - /* USB Device descriptor parameter */ -#define VENDOR_ID 0x3434 -#define PRODUCT_ID 0xFE20 -#define DEVICE_VER 0x0001 - -#define MANUFACTURER Keychron -#define PRODUCT Keychron \x43\x31 -#define DESCRIPTION \x43\x31 RGB Hotswap +#define DESCRIPTION \x43\x31 RGB /* key matrix size */ #define MATRIX_ROWS 6 @@ -37,11 +10,24 @@ #define MATRIX_COL_PINS { A8, A9, A10, A11, A12, A13, A14, A15, B0, B1, B2, B3, B4, B5, B6, B7, B8 } #define MATRIX_ROW_PINS { C15, D11, D10, D9, D8, D7 } +// Backlight configuration +#define BACKLIGHT_LEVELS 8 + +#define LED_MATRIX_ROWS MATRIX_ROWS +#define LED_MATRIX_ROW_CHANNELS 3 +#define LED_MATRIX_ROWS_HW (LED_MATRIX_ROWS * LED_MATRIX_ROW_CHANNELS) +#define LED_MATRIX_ROW_PINS { C0, C1, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, B13, D3, B15, B14 } + +#define LED_MATRIX_COLS MATRIX_COLS +#define LED_MATRIX_COL_PINS MATRIX_COL_PINS + +#define DRIVER_LED_TOTAL (87) + // Connects each switch in the dip switch to the GPIO pin of the MCU #define DIP_SWITCH_PINS { D4 } -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 0 +/* Disable RGB while USB is sleeping */ +#define RGB_DISABLE_WHEN_USB_SUSPENDED true /* LED Status indicators */ #define LED_CAPS_LOCK_PIN B10 @@ -49,12 +35,6 @@ #define LED_WIN_PIN B12 //labeled Windows on KB since no Numpad #define LED_PIN_ON_STATE 1 -/* Polling Rate */ -#define USB_POLLING_INTERVAL_MS 1 - -/* Disable RGB while USB is sleeping */ -#define RGB_DISABLE_WHEN_USB_SUSPENDED true - /* RGB Non-Reactive Effects */ #define ENABLE_RGB_MATRIX_ALPHAS_MODS #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN @@ -105,5 +85,3 @@ #define ENABLE_RGB_MATRIX_MULTISPLASH #define ENABLE_RGB_MATRIX_SOLID_SPLASH #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#include "config_led.h" diff --git a/keyboards/keychron/c1/rgb/config_led.c b/keyboards/keychron/c1/rgb/config_led.c deleted file mode 100644 index 47e2bc499340..000000000000 --- a/keyboards/keychron/c1/rgb/config_led.c +++ /dev/null @@ -1,31 +0,0 @@ -#ifdef RGB_MATRIX_ENABLE - -#include "rgb_matrix.h" -#include "config_led.h" - -#define XX NO_LED - -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, XX, 13, 14, 15}, - { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, - { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, - { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, XX, 62, XX, XX, XX}, - { 63, XX, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, XX, 74, XX, 75, XX}, - { 76, 77, 78, XX, XX, XX, 79, XX, XX, XX, 80, 81, 82, 83, 84, 85, 86} -}, { - {0 , 0}, {12 , 0}, {25 , 0}, {37 , 0}, {50 , 0}, {62 , 0}, {75 , 0}, {87 , 0}, {100, 0}, {112, 0}, {124, 0}, {137, 0}, {149, 0}, {174, 0}, {187, 0}, {199, 0}, - {0 , 13}, {12 , 13}, {25 , 13}, {37 , 13}, {50 , 13}, {62 , 13}, {75 , 13}, {87 , 13}, {100, 13}, {112, 13}, {124, 13}, {137, 13}, {149, 13}, {168, 13}, {174, 13}, {187, 13}, {199, 13}, - {3 , 26}, {19 , 26}, {31 , 26}, {44 , 26}, {56 , 26}, {68 , 26}, {81 , 26}, {93 , 26}, {106, 26}, {118, 26}, {131, 26}, {143, 26}, {156, 26}, {168, 26}, {174, 26}, {187, 26}, {199, 26}, - {5 , 38}, {22 , 38}, {34 , 38}, {47 , 38}, {59 , 38}, {72 , 38}, {84 , 38}, {96 , 38}, {109, 38}, {121, 38}, {134, 38}, {146, 38}, {166, 38}, - {8 , 51}, {28 , 51}, {40 , 51}, {53 , 51}, {65 , 51}, {78 , 51}, {90 , 51}, {103, 51}, {115, 51}, {128, 51}, {140, 51}, {157, 51}, {187, 51}, - {2 , 64}, {17 , 64}, {33 , 64}, {79 , 64}, {124, 64}, {137, 64}, {149, 64}, {162, 64}, {174, 64}, {187, 64}, {199, 64}, -}, { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 -} }; - -#endif diff --git a/keyboards/keychron/c1/rgb/config_led.h b/keyboards/keychron/c1/rgb/config_led.h deleted file mode 100644 index bfd3fac78c5a..000000000000 --- a/keyboards/keychron/c1/rgb/config_led.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright 2020 Adam Honse -Copyright 2020 Dimitris Mantzouranis - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -// Backlight configuration -#define BACKLIGHT_LEVELS 8 - -#define LED_MATRIX_ROWS MATRIX_ROWS -#define LED_MATRIX_ROW_CHANNELS 3 -#define LED_MATRIX_ROWS_HW (LED_MATRIX_ROWS * LED_MATRIX_ROW_CHANNELS) -#define LED_MATRIX_ROW_PINS { C0, C1, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, B13, D3, B15, B14 } - -#define LED_MATRIX_COLS MATRIX_COLS -#define LED_MATRIX_COL_PINS MATRIX_COL_PINS - -#define DRIVER_LED_TOTAL (87) diff --git a/keyboards/keychron/c1/rgb/keymaps/default/keymap.c b/keyboards/keychron/c1/rgb/keymaps/default/keymap.c deleted file mode 100644 index 3218de291b89..000000000000 --- a/keyboards/keychron/c1/rgb/keymaps/default/keymap.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -Copyright 2020 Dimitris Mantzouranis - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layer_names { - WIN_BASE = 0, - WIN_FN = 1, - MAC_BASE = 2, - MAC_FN = 3, -}; - -#define KC_TASK LGUI(KC_TAB) // Task viewer -#define KC_FLXP LGUI(KC_E) // Windows file explorer -#define KC_CRTN LGUI(KC_C) // Cortana | Microsoft Teams -#define KC_SNIP LGUI(LSFT(KC_S)) // Windows snip tool - -#define KC_MSSN LGUI(KC_F3) // Mission Control -#define KC_FIND LALT(LGUI(KC_SPC)) // Finder -#define KC_SIRI LGUI(KC_SPC) // Siri -#define KC_MSCR LSFT(LGUI(KC_3)) // Mac screenshot -#define KC_MSNP LSFT(LGUI(KC_4)) // Mac snip tool - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Windows layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|CORT|RGB | - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LGUI| LALT | SPACE | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [WIN_BASE] = { // Windows base layout - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_PSCR, KC_CRTN, RGB_MOD }, - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP }, - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN }, - { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO }, - { KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, KC_UP, KC_NO }, - { KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT } - }, - - [WIN_FN] = { // Windows Fn overlay - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_SNIP, _______, RGB_TOG }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO }, - { _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, RGB_HUI, KC_NO }, - { _______, GUI_TOG, _______, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_NO, _______, GUI_TOG, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI } - }, - - /* Mac layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|SIRI|RGB | - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LALT| LGUI | SPACE | RGUI| RALT | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [MAC_BASE] = { // Mac base layout - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MSCR, KC_SIRI, RGB_MOD }, - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP }, - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN }, - { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO }, - { KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, KC_UP, KC_NO }, - { KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RGUI, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT } - }, - - [MAC_FN] = { // Mac Fn overlay - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { RESET, KC_BRID, KC_BRIU, KC_MSSN, KC_FIND, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MSNP, _______, RGB_TOG }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO }, - { _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, RGB_HUI, KC_NO }, - { _______, _______, _______, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI } - } -}; diff --git a/keyboards/keychron/c1/rgb/keymaps/via/keymap.c b/keyboards/keychron/c1/rgb/keymaps/via/keymap.c index 3218de291b89..0c5fa769a2f8 100644 --- a/keyboards/keychron/c1/rgb/keymaps/via/keymap.c +++ b/keyboards/keychron/c1/rgb/keymaps/via/keymap.c @@ -1,113 +1,3 @@ -/* -Copyright 2020 Dimitris Mantzouranis - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layer_names { - WIN_BASE = 0, - WIN_FN = 1, - MAC_BASE = 2, - MAC_FN = 3, -}; - -#define KC_TASK LGUI(KC_TAB) // Task viewer -#define KC_FLXP LGUI(KC_E) // Windows file explorer -#define KC_CRTN LGUI(KC_C) // Cortana | Microsoft Teams -#define KC_SNIP LGUI(LSFT(KC_S)) // Windows snip tool - -#define KC_MSSN LGUI(KC_F3) // Mission Control -#define KC_FIND LALT(LGUI(KC_SPC)) // Finder -#define KC_SIRI LGUI(KC_SPC) // Siri -#define KC_MSCR LSFT(LGUI(KC_3)) // Mac screenshot -#define KC_MSNP LSFT(LGUI(KC_4)) // Mac snip tool - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Windows layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|CORT|RGB | - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LGUI| LALT | SPACE | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [WIN_BASE] = { // Windows base layout - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_PSCR, KC_CRTN, RGB_MOD }, - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP }, - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN }, - { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO }, - { KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, KC_UP, KC_NO }, - { KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT } - }, - - [WIN_FN] = { // Windows Fn overlay - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_SNIP, _______, RGB_TOG }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO }, - { _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, RGB_HUI, KC_NO }, - { _______, GUI_TOG, _______, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_NO, _______, GUI_TOG, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI } - }, - - /* Mac layout - +-------------------------------------------------------------------------------------------+ - | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12| | |PSCR|SIRI|RGB | - +--------------------------------------------------------------------------+ +--------------+ - | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP | |INS |HOME|PGUP| - +--------------------------------------------------------------------------+ +--------------+ - | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | |DEL |END |PGDN| - +--------------------------------------------------------------------------+ +--------------+ - | CAPSLCK | A | S | D | F | G | H | J | K | L | ; | ' | RETURN | | - +--------------------------------------------------------------------------+ +----+ | - | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP | | - +--------------------------------------------------------------------------+ +--------------+ - |LCTRL| LALT| LGUI | SPACE | RGUI| RALT | FN | RCTRL | |LFT |DWN |RGT | - +-------------------------------------------------------------------------------------------+ - */ - - [MAC_BASE] = { // Mac base layout - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MSCR, KC_SIRI, RGB_MOD }, - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP }, - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN }, - { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO }, - { KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, KC_UP, KC_NO }, - { KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RGUI, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT } - }, - - [MAC_FN] = { // Mac Fn overlay - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - { RESET, KC_BRID, KC_BRIU, KC_MSSN, KC_FIND, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MSNP, _______, RGB_TOG }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO }, - { _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_NO, RGB_HUI, KC_NO }, - { _______, _______, _______, KC_NO, KC_NO, KC_NO, _______, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI } - } -}; +// Include default keymap +// This way the VIA keymap is always up to date with the default keymap +#include "../../../keymaps/default/keymap.c" diff --git a/keyboards/keychron/c1/rgb/keymaps/via/rules.mk b/keyboards/keychron/c1/rgb/keymaps/via/rules.mk index 1e5b99807cb7..74edb2bf0d41 100644 --- a/keyboards/keychron/c1/rgb/keymaps/via/rules.mk +++ b/keyboards/keychron/c1/rgb/keymaps/via/rules.mk @@ -1 +1 @@ -VIA_ENABLE = yes +VIA_ENABLE=yes diff --git a/keyboards/keychron/c1/rgb/readme.md b/keyboards/keychron/c1/rgb/readme.md index 6f4738b7f8c4..2588ff4b8e69 100644 --- a/keyboards/keychron/c1/rgb/readme.md +++ b/keyboards/keychron/c1/rgb/readme.md @@ -1,16 +1,14 @@ # Keychron C1 RGB -![Keychron C1](https://i.imgur.com/oB9h56v.png) - A customizable TKL keyboard. -* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [IsaacDynamo](https://github.com/IsaacDynamo), [noldevin](https://github.com/noldevin), [vjdato21](https://github.com/vjdato21) -* Hardware Supported: Keychron C1 RGB +* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [noldevin](https://github.com/noldevin), [vjdato21](https://github.com/vjdato21) +* Hardware Supported: Keychron C1 RGB (SN32F248B) * Hardware Availability: [Keychron](https://www.keychron.com/products/keychron-c1-wired-mechanical-keyboard) Make example for this keyboard (after setting up your build environment): - make keychron/c1/rgb:default | make keychron/c1/rgb:via + make keychron/c1/rgb:default ## How to Flash Flashing example for this keyboard: @@ -40,8 +38,8 @@ F11 | Decrease Volume F12 | Increase Volume Print Screen | Snip & Sketch Cortana / Microsoft Teams | None -Change RGB | Toggle RGB -⊞ | Windows Key Lock Toggle +Cycle RGB Mode | Toggle RGB +⊞ | GUI Lock Toggle Home | NKRO Toggle ↑ | Increase RGB Hue ← | Decrease RGB Saturation @@ -58,7 +56,7 @@ Without Fn | With Fn F1 | Decrease PC Brightness F2 | Increase PC Brightness F3 | Mission Control -F4 | Finder +F4 | None F5 | Decrease KB Brightness F6 | Increase KB Brightness F7 | Previous Track @@ -69,13 +67,13 @@ F11 | Decrease Volume F12 | Increase Volume Take a screenshot (whole screen) | Take a screenshot (specific area) Siri (hold down) | None -Change RGB | Toggle RGB +Cycle RGB Mode | Toggle RGB +⌘ | GUI Lock Toggle Home | NKRO Toggle ↑ | Increase RGB Hue ← | Decrease RGB Saturation ↓ | Decrease RGB Hue → | Increase RGB Saturation - * * * diff --git a/keyboards/keychron/c1/rgb/rgb.c b/keyboards/keychron/c1/rgb/rgb.c index dbb41819641f..2997b24c7cfd 100644 --- a/keyboards/keychron/c1/rgb/rgb.c +++ b/keyboards/keychron/c1/rgb/rgb.c @@ -1,76 +1,30 @@ -/* -Copyright 2021 Dimitris Mantzouranis - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include "rgb.h" - -// Manage Windows and Mac LEDs -// - Show status of mode switch -// - Turn LEDs off durring USB suspend -static bool mode_leds_show = true; -static bool mode_leds_windows; - -static void mode_leds_update(void){ - writePin(LED_WIN_PIN, mode_leds_show && mode_leds_windows); - writePin(LED_MAC_PIN, mode_leds_show && !mode_leds_windows); -} - -bool dip_switch_update_user(uint8_t index, bool active){ - if(index == 0) { - if(active) { // Mac mode - layer_move(2); - } else { // Windows mode - layer_move(0); - } - - // Update mode and update leds - mode_leds_windows = !active; - mode_leds_update(); - } - return true; -} - -void keyboard_pre_init_kb(void) { - // Setup Win & Mac LED Pins as output - setPinOutput(LED_WIN_PIN); - setPinOutput(LED_MAC_PIN); - - keyboard_pre_init_user(); -} - -void suspend_power_down_kb(void) { - // Turn leds off - mode_leds_show = false; - mode_leds_update(); - - // Suspend RGB - rgb_matrix_set_suspend_state(true); - - suspend_power_down_user(); -} - -/// TODO: Clean-up workaround -/// Currently the suspend_wakeup_init_user() has issues. See https://github.com/SonixQMK/qmk_firmware/issues/80 -/// A workaround is to use housekeeping_task_user() instead. -void housekeeping_task_kb(void) { - // Turn on - mode_leds_show = true; - mode_leds_update(); - - // Turn on RGB - rgb_matrix_set_suspend_state(false); - - housekeeping_task_user(); -} +#ifdef RGB_MATRIX_ENABLE + +#include "rgb_matrix.h" + +#define XX NO_LED + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, XX, 13, 14, 15}, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, + { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, + { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, XX, 62, XX, XX, XX}, + { 63, XX, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, XX, 74, XX, 75, XX}, + { 76, 77, 78, XX, XX, XX, 79, XX, XX, XX, 80, 81, 82, 83, 84, 85, 86} +}, { + {0 , 0}, {12 , 0}, {25 , 0}, {37 , 0}, {50 , 0}, {62 , 0}, {75 , 0}, {87 , 0}, {100, 0}, {112, 0}, {124, 0}, {137, 0}, {149, 0}, {174, 0}, {187, 0}, {199, 0}, + {0 , 13}, {12 , 13}, {25 , 13}, {37 , 13}, {50 , 13}, {62 , 13}, {75 , 13}, {87 , 13}, {100, 13}, {112, 13}, {124, 13}, {137, 13}, {149, 13}, {168, 13}, {174, 13}, {187, 13}, {199, 13}, + {3 , 26}, {19 , 26}, {31 , 26}, {44 , 26}, {56 , 26}, {68 , 26}, {81 , 26}, {93 , 26}, {106, 26}, {118, 26}, {131, 26}, {143, 26}, {156, 26}, {168, 26}, {174, 26}, {187, 26}, {199, 26}, + {5 , 38}, {22 , 38}, {34 , 38}, {47 , 38}, {59 , 38}, {72 , 38}, {84 , 38}, {96 , 38}, {109, 38}, {121, 38}, {134, 38}, {146, 38}, {166, 38}, + {8 , 51}, {28 , 51}, {40 , 51}, {53 , 51}, {65 , 51}, {78 , 51}, {90 , 51}, {103, 51}, {115, 51}, {128, 51}, {140, 51}, {157, 51}, {187, 51}, + {2 , 64}, {17 , 64}, {33 , 64}, {79 , 64}, {124, 64}, {137, 64}, {149, 64}, {162, 64}, {174, 64}, {187, 64}, {199, 64}, +}, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 +} }; + +#endif diff --git a/keyboards/keychron/c1/rgb/rgb.h b/keyboards/keychron/c1/rgb/rgb.h deleted file mode 100644 index e996bd32f382..000000000000 --- a/keyboards/keychron/c1/rgb/rgb.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "quantum.h" -// readability -#define XXX KC_NO - -#define LAYOUT( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, k0g, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ - k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \ - k50, k51, k52, k56, k5a, k5b, k5c, k5d, k5e, k5f, k5g \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, XXX}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, k2f, k2g}, \ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, XXX, XXX, XXX, XXX}, \ - {k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, XXX, XXX, k4f, XXX}, \ - {k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d k5e, k5f, k5g} \ -} diff --git a/keyboards/keychron/c1/rgb/rgb.json b/keyboards/keychron/c1/rgb/rgb_via.json similarity index 100% rename from keyboards/keychron/c1/rgb/rgb.json rename to keyboards/keychron/c1/rgb/rgb_via.json diff --git a/keyboards/keychron/c1/rgb/rules.mk b/keyboards/keychron/c1/rgb/rules.mk index f6792f46337c..005bb7b78d87 100644 --- a/keyboards/keychron/c1/rgb/rules.mk +++ b/keyboards/keychron/c1/rgb/rules.mk @@ -1,32 +1,10 @@ # project specific files SRC = ../../../drivers/led/sn32/matrix_sn32f24xx.c -SRC += config_led.c # MCU name MCU = SN32F248BF -# Build Options -# comment out to disable the options. -# -LTO_ENABLE = no -BACKLIGHT_ENABLE = no -MAGIC_ENABLE = yes -MAGIC_KEYCODE_ENABLE = yes -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no -RGBLIGHT_ENABLE = no -SERIAL_LINK_ENABLE = no -WAIT_FOR_USB = yes -CUSTOM_MATRIX = yes -DIP_SWITCH_ENABLE = yes -KEYBOARD_SHARED_EP = no - # Custom RGB matrix handling +CUSTOM_MATRIX = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = SN32F24xB diff --git a/keyboards/keychron/c1/rules.mk b/keyboards/keychron/c1/rules.mk new file mode 100644 index 000000000000..60a68e0f027b --- /dev/null +++ b/keyboards/keychron/c1/rules.mk @@ -0,0 +1,11 @@ +# project specific files +# Build Options +# comment out to disable the options. +# +MAGIC_ENABLE = yes +MAGIC_KEYCODE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +EXTRAKEY_ENABLE = yes # Audio control and System control +NKRO_ENABLE = yes # USB Nkey Rollover +DIP_SWITCH_ENABLE = yes +WAIT_FOR_USB = no diff --git a/keyboards/keychron/c1/white/config.h b/keyboards/keychron/c1/white/config.h index d4103ef1ebbc..dd6fe32e6cc6 100644 --- a/keyboards/keychron/c1/white/config.h +++ b/keyboards/keychron/c1/white/config.h @@ -1,5 +1,6 @@ -/* Copyright 2020 Adam Honse - * Copyright 2020 Dimitris Mantzouranis +/* Copyright 2020 Dimitris Mantzouranis + * Copyright 2021 IsaacDynamo + * Copyright 2022 Eduardo Fernandes * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,20 +16,9 @@ * along with this program. If not, see . */ -#pragma once - -#include "config_common.h" - /* USB Device descriptor parameter */ -#define VENDOR_ID 0x05AC -#define PRODUCT_ID 0x024F -#define DEVICE_VER 0x0001 +#define DESCRIPTION Keychron \x43\x31 White -#define MANUFACTURER Keychron -// \x43\x31 is "C1" in ASCII hex, this is used to prevent macro expansion, because C1 is also a pin macro. -#define PRODUCT Keychron \x43\x31 White - -#define WAIT_FOR_USB #define USB_MAX_POWER_CONSUMPTION 100 /* key matrix size */ @@ -82,8 +72,8 @@ /* Connects each switch in the dip switch to the GPIO pin of the MCU */ #define DIP_SWITCH_PINS { D7 } -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +/* Disable RGB while USB is sleeping */ +#define LED_DISABLE_WHEN_USB_SUSPENDED true /* LED Status indicators */ #define LED_CAPS_LOCK_PIN B3 @@ -91,3 +81,16 @@ #define LED_MAC_PIN B4 #define LED_WIN_PIN B5 + +/* Enable led matrix effects */ +#define ENABLE_LED_MATRIX_ALPHAS_MODS +#define ENABLE_LED_MATRIX_BREATHING +#define ENABLE_LED_MATRIX_BAND +#define ENABLE_LED_MATRIX_BAND_PINWHEEL +#define ENABLE_LED_MATRIX_BAND_SPIRAL +#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +#define ENABLE_LED_MATRIX_CYCLE_OUT_IN +#define ENABLE_LED_MATRIX_DUAL_BEACON +#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_WAVE_UP_DOWN diff --git a/keyboards/keychron/c1/white/keymaps/via/keymap.c b/keyboards/keychron/c1/white/keymaps/via/keymap.c index 9b448f5d59ca..0c5fa769a2f8 100644 --- a/keyboards/keychron/c1/white/keymaps/via/keymap.c +++ b/keyboards/keychron/c1/white/keymaps/via/keymap.c @@ -1,3 +1,3 @@ // Include default keymap // This way the VIA keymap is always up to date with the default keymap -#include "../default/keymap.c" \ No newline at end of file +#include "../../../keymaps/default/keymap.c" diff --git a/keyboards/keychron/c1/white/keymaps/via/rules.mk b/keyboards/keychron/c1/white/keymaps/via/rules.mk index 086f21f4ae12..86b7c35448f8 100644 --- a/keyboards/keychron/c1/white/keymaps/via/rules.mk +++ b/keyboards/keychron/c1/white/keymaps/via/rules.mk @@ -18,4 +18,4 @@ OPT_DEFS += -DRAW_OUT_CAPACITY=1 OPT_DEFS += -DCH_CFG_NO_IDLE_THREAD=TRUE # Include the patched functions -SRC += keymaps/via/no_idle_thread.c +SRC += no_idle_thread.c diff --git a/keyboards/keychron/c1/white/readme.md b/keyboards/keychron/c1/white/readme.md index 7b280c99badf..6d985169a559 100644 --- a/keyboards/keychron/c1/white/readme.md +++ b/keyboards/keychron/c1/white/readme.md @@ -1,16 +1,14 @@ -# Keychron C1 white - -![Keychron C1](https://i.imgur.com/oB9h56v.png) +# Keychron C1 White A customizable TKL keyboard. -* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [IsaacDynamo](https://github.com/IsaacDynamo), [noldevin](https://github.com/noldevin), [vjdato21](https://github.com/vjdato21) -* Hardware Supported: Keychron C1 white +* Keyboard Maintainer(s): [SonixQMK](https://github.com/SonixQMK), [IsaacDynamo](https://github.com/IsaacDynamo) +* Hardware Supported: Keychron C1 White (SN32F268) * Hardware Availability: [Keychron](https://www.keychron.com/products/keychron-c1-wired-mechanical-keyboard) # Install 1. If your keyboard currently has stock firmware installed, put your keyboard first into bootloader by shorting the boot pins found under the spacebar before plugging in your keyboard to the PC. Otherwise, press `Fn + Esc` to put your keyboard into bootloader. -1. Download and run [Sonix Flasher](https://github.com/SonixQMK/sonix-flasher/releases/tag/v0.2.1). +1. Download and run [Sonix Flasher](https://github.com/SonixQMK/sonix-flasher/releases/latest). 1. In Sonix Flasher, select `SN32F26x` under 'Device'. And select `0x00` as the qmk offset. 1. Click 'Flash QMK...' and flash jumploader-keychron_c1_white.bin. This can be found in 'Pre-Compiled Jumploaders' build by the latest [Sonix keyboard bootloader action](https://github.com/SonixQMK/sonix-keyboard-bootloader/actions). 1. In Sonix Flasher, select `SN32F26x` under 'Device'. And select `0x200` as the qmk offset. @@ -22,7 +20,6 @@ A customizable TKL keyboard. Without Fn | With Fn ---------- | ------- -ESC | Reset keyboard F1 | Decrease PC Brightness F2 | Increase PC Brightness F3 | Task View @@ -36,12 +33,10 @@ F10 | Mute F11 | Decrease Volume F12 | Increase Volume Print Screen | Snip & Sketch -Cortana | - -Toggle backlight | - -↑ | Increase effect speed -← | Cycle through modes in reverse -↓ | Decrease effect speed -→ | Cycle through modes +Cortana / Microsoft Teams | None +Cycle LED Mode | Toggle LED +⊞ | GUI Lock Toggle +Home | NKRO Toggle @@ -50,11 +45,10 @@ Toggle backlight | - Without Fn | With Fn ---------- | ------- -ESC | Reset keyboard F1 | Decrease PC Brightness F2 | Increase PC Brightness -F3 | None -F4 | Finder +F3 | Mission Control +F4 | None F5 | Decrease KB Brightness F6 | Increase KB Brightness F7 | Previous Track @@ -64,12 +58,10 @@ F10 | Mute F11 | Decrease Volume F12 | Increase Volume Take a screenshot (whole screen) | Take a screenshot (specific area) -Siri (hold down) | - -Toggle backlight | - -↑ | Increase effect speed -← | Cycle through modes in reverse -↓ | Decrease effect speed -→ | Cycle through modes +Siri (hold down) | None +Cycle LED Mode | Toggle LED +⌘ | GUI Lock Toggle +Home | NKRO Toggle @@ -77,7 +69,7 @@ Toggle backlight | - Make example for this keyboard (after setting up your build environment): - make keychron/c1/white + make keychron/c1/white:default [Video](https://www.youtube.com/watch?v=aUiKHdI5Vk8) explaining installation for a similar keyboard. diff --git a/keyboards/keychron/c1/white/rules.mk b/keyboards/keychron/c1/white/rules.mk index 2bf861ecfe97..a8c8e8923ccc 100644 --- a/keyboards/keychron/c1/white/rules.mk +++ b/keyboards/keychron/c1/white/rules.mk @@ -5,16 +5,6 @@ SRC += rand.c # MCU name MCU = SN32F268F -# Build Options -# comment out to disable the options. -# -MAGIC_ENABLE = yes -MAGIC_KEYCODE_ENABLE = yes -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -EXTRAKEY_ENABLE = yes # Audio control and System control -NKRO_ENABLE = yes # USB Nkey Rollover -DIP_SWITCH_ENABLE = yes - # Custom Key and LED matrix handling CUSTOM_MATRIX = yes LED_MATRIX_ENABLE = yes @@ -22,4 +12,4 @@ LED_MATRIX_DRIVER = SN32F26x # Reduce code size USE_PROCESS_STACKSIZE = 0x1E0 -USE_EXCEPTIONS_STACKSIZE = 0xF0 \ No newline at end of file +USE_EXCEPTIONS_STACKSIZE = 0xF0 diff --git a/keyboards/keychron/c1/white/white.c b/keyboards/keychron/c1/white/white.c index d4ca7d0bf85c..56182efea64e 100644 --- a/keyboards/keychron/c1/white/white.c +++ b/keyboards/keychron/c1/white/white.c @@ -13,80 +13,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "white.h" - -// Manage Windows and Mac LEDs -// - Show status of mode switch -// - Turn LEDs off durring USB suspend -static bool mode_leds_show = true; -static bool mode_leds_windows; - -static void mode_leds_update(void){ - writePin(LED_WIN_PIN, mode_leds_show && mode_leds_windows); - writePin(LED_MAC_PIN, mode_leds_show && !mode_leds_windows); -} - -bool dip_switch_update_kb(uint8_t index, bool active){ - if(index == 0) { - if(active) { // Mac mode - layer_move(MAC_BASE); - } else { // Windows mode - layer_move(WIN_BASE); - } - - // Update mode and update leds - mode_leds_windows = !active; - mode_leds_update(); - } - - dip_switch_update_user(index, active); - return true; -} - -void keyboard_pre_init_kb(void) { - // Setup Win & Mac LED Pins as output - setPinOutput(LED_WIN_PIN); - setPinOutput(LED_MAC_PIN); - - // WORKAROUND: Mac & Windows LED flicker. - // Normally the GPIOs in DIP_SWITCH_PINS will be initialized by dip_switch_init(). - // But during startup of the keyboard the Mac/Windows dip switch seems to jitter, causing the Mac and Windows LEDs to flicker. - // Maybe the internal pull-up of this chip is really weak, and needs some time to pullup the input voltage to the high level? Seems unlikely but cannot think of a better explanation. - // By doing the configuration of the GPIOs here the pullup is enabled earlier and the flicker is gone. - const pin_t dip_switch_pad[] = DIP_SWITCH_PINS; - const size_t size = sizeof(dip_switch_pad) / sizeof(dip_switch_pad[0]); - for (size_t i=0; i