From 093d5c9991c42ec428d89aeec24c6df2200ff7b3 Mon Sep 17 00:00:00 2001 From: Derek Hsu Date: Mon, 27 Dec 2021 10:39:57 +0800 Subject: [PATCH 1/2] [Keyboard] Add Runner3680 with 5x6+5x8 layout (#14617) * [Keyboard] Add Runner3680 keyboard with 5x6 + 5x8 layout * [Keymap] Use general audio key codes instead of MacOS specific ones * [Keymap] Add via support * [Keyboard] Add config for RGB Matrix feature for runner3680 5x6+5x8 layout * Add license to .c and .h files * Remove unused code * [Keymap] Rename 'JIS' directory to be lower cased * [Keyboard] Explicitly define enabled RGB lighting effects for Runner3680 * [Keyboard] Remove unused code of Runner3680 * [Keyboard] Move RGB Matrix related config to keyboard's rules.mk file * [Keymap] Clean up default keymaps of Runner3680 --- keyboards/runner3680/5x6_5x8/.noci | 0 keyboards/runner3680/5x6_5x8/5x6_5x8.c | 52 ++++++++++++ keyboards/runner3680/5x6_5x8/5x6_5x8.h | 41 +++++++++ keyboards/runner3680/5x6_5x8/config.h | 84 ++++++++++++++++++ keyboards/runner3680/5x6_5x8/info.json | 85 +++++++++++++++++++ .../5x6_5x8/keymaps/default/config.h | 25 ++++++ .../5x6_5x8/keymaps/default/keymap.c | 71 ++++++++++++++++ .../5x6_5x8/keymaps/derekhsu/config.h | 26 ++++++ .../5x6_5x8/keymaps/derekhsu/keymap.c | 60 +++++++++++++ .../5x6_5x8/keymaps/derekhsu/rules.mk | 3 + .../runner3680/5x6_5x8/keymaps/jis/config.h | 25 ++++++ .../runner3680/5x6_5x8/keymaps/jis/keymap.c | 72 ++++++++++++++++ .../runner3680/5x6_5x8/keymaps/via/config.h | 25 ++++++ .../runner3680/5x6_5x8/keymaps/via/keymap.c | 71 ++++++++++++++++ .../runner3680/5x6_5x8/keymaps/via/rules.mk | 1 + keyboards/runner3680/5x6_5x8/rules.mk | 1 + keyboards/runner3680/runner3680.h | 4 + 17 files changed, 646 insertions(+) create mode 100644 keyboards/runner3680/5x6_5x8/.noci create mode 100644 keyboards/runner3680/5x6_5x8/5x6_5x8.c create mode 100644 keyboards/runner3680/5x6_5x8/5x6_5x8.h create mode 100644 keyboards/runner3680/5x6_5x8/config.h create mode 100644 keyboards/runner3680/5x6_5x8/info.json create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/default/config.h create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/jis/config.h create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/via/config.h create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c create mode 100644 keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk create mode 100644 keyboards/runner3680/5x6_5x8/rules.mk diff --git a/keyboards/runner3680/5x6_5x8/.noci b/keyboards/runner3680/5x6_5x8/.noci new file mode 100644 index 00000000000..e69de29bb2d diff --git a/keyboards/runner3680/5x6_5x8/5x6_5x8.c b/keyboards/runner3680/5x6_5x8/5x6_5x8.c new file mode 100644 index 00000000000..62597d00601 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/5x6_5x8.c @@ -0,0 +1,52 @@ +/* Copyright 2021 omkbd + * + * 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 "5x6_5x8.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { NO_LED, NO_LED, 5, 4, 3, 2, 1, 0 }, + { NO_LED, NO_LED, 6, 7, 8, 9, 10, 11 }, + { NO_LED, NO_LED, 17, 16, 15, 14, 13, 12 }, + { NO_LED, NO_LED, 18, 19, 20, 21, 22, 23 }, + { NO_LED, NO_LED, 29, 28, 27, 26, 25, 24 }, + { 37, 36, 35, 34, 33, 32, 31, 30 }, + { 38, 39, 40, 41, 42, 43, 44, 45 }, + { 53, 52, 51, 50, 49, 48, 47, 46 }, + { 54, 55, 56, 57, 58, 59, 60, 61 }, + { 69, 68, 67, 66, 65, 64, 63, 62 } +}, { + // LED Index to Physical Position + { 86, 0 }, { 69, 0 }, { 52, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 }, + { 0, 16 }, { 17, 16 }, { 34, 16 }, { 52, 16 }, { 69, 16 }, { 86, 16 }, + { 86, 32 }, { 69, 32 }, { 52, 32 }, { 34, 32 }, { 17, 32 }, { 0, 32 }, + { 0, 48 }, { 17, 48 }, { 34, 48 }, { 52, 48 }, { 69, 48 }, { 86, 48 }, + { 86, 64 }, { 69, 64 }, { 52, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 }, + { 103, 0 }, { 121, 0 }, { 138, 0 }, { 155, 0 }, { 172, 0 }, { 190, 0 }, { 207, 0 }, { 224, 0 }, + { 224, 16 }, { 207, 16 }, { 190, 16 }, { 172, 16 }, { 155, 16 }, { 138, 16 }, { 121, 16 }, { 103, 16 }, + { 103, 32 }, { 121, 32 }, { 138, 32 }, { 155, 32 }, { 172, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 }, + { 224, 48 }, { 207, 48 }, { 190, 48 }, { 172, 48 }, { 155, 48 }, { 138, 48 }, { 121, 48 }, { 103, 48 }, + { 103, 64 }, { 121, 64 }, { 138, 64 }, { 155, 64 }, { 172, 64 }, { 190, 64 }, { 207, 64 }, { 224, 64 } +}, { + // LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +} }; +#endif diff --git a/keyboards/runner3680/5x6_5x8/5x6_5x8.h b/keyboards/runner3680/5x6_5x8/5x6_5x8.h new file mode 100644 index 00000000000..afceac0a89a --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/5x6_5x8.h @@ -0,0 +1,41 @@ +/* Copyright 2021 omkbd + * + * 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 "runner3680.h" + +#include "quantum.h" + +#define LAYOUT( \ + L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \ + L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \ + L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \ + L32, L33, L34, L35, L36, L37, R30, R31, R32, R33, R34, R35, R36, R37, \ + L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47 \ + ) \ + { \ + { KC_NO, KC_NO, L02, L03, L04, L05, L06, L07 }, \ + { KC_NO, KC_NO, L12, L13, L14, L15, L16, L17 }, \ + { KC_NO, KC_NO, L22, L23, L24, L25, L26, L27 }, \ + { KC_NO, KC_NO, L32, L33, L34, L35, L36, L37 }, \ + { KC_NO, KC_NO, L42, L43, L44, L45, L46, L47 }, \ + { R07, R06, R05, R04, R03, R02, R01, R00 }, \ + { R17, R16, R15, R14, R13, R12, R11, R10 }, \ + { R27, R26, R25, R24, R23, R22, R21, R20 }, \ + { R37, R36, R35, R34, R33, R32, R31, R30 }, \ + { R47, R46, R45, R44, R43, R42, R41, R40 } \ + } diff --git a/keyboards/runner3680/5x6_5x8/config.h b/keyboards/runner3680/5x6_5x8/config.h new file mode 100644 index 00000000000..815da24950e --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/config.h @@ -0,0 +1,84 @@ +/* Copyright 2021 omkbd + * + * 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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3680 +#define PRODUCT_ID 0x5658 +#define DEVICE_VER 0x0005 +#define MANUFACTURER Omkbd +#define PRODUCT runner3680 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 ,B6 } +// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order + +#define DIODE_DIRECTION COL2ROW + +/* define tapping term */ +#define TAPPING_TERM 120 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#ifdef RGBLIGHT_ENABLE +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLED_NUM 70 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 30, 40 } // Number of LEDs +#define RGBLIGHT_LIMIT_VAL 100 +#endif +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_LED_TOTAL 70 +#define RGB_MATRIX_SPLIT { 30, 40 } // Number of LEDs +#endif + +#define SOFT_SERIAL_PIN D2 +#define SELECT_SOFT_SERIAL_SPEED 1 +/*Sets the protocol speed when using serial communication*/ +//Speeds: +//0: about 189kbps (Experimental only) +//1: about 137kbps (default) +//2: about 75kbps +//3: about 39kbps +//4: about 26kbps +//5: about 20kbps diff --git a/keyboards/runner3680/5x6_5x8/info.json b/keyboards/runner3680/5x6_5x8/info.json new file mode 100644 index 00000000000..e8fb4c09272 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "runner3680 5x6+5x8", + "url": "", + "maintainer": "omkbd", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/runner3680/5x6_5x8/keymaps/default/config.h b/keyboards/runner3680/5x6_5x8/keymaps/default/config.h new file mode 100644 index 00000000000..a21551badf3 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/default/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 omkbd + * + * 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 + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c new file mode 100644 index 00000000000..4dafb4b2a37 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 omkbd + * + * 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 + +enum layer_number { + _QWERTY = 0, + _ADJUST +}; + +// Fillers to make layering more clear +#define EISU LALT(KC_GRV) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY + * ,-----------------------------------------. ,--------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | EISU | Del | Space| | Enter| Bksp | EISU | ESC |Adjust| Left | Down | Right| + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_QWERTY] = LAYOUT( + 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_DEL, + 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_BSPC, + KC_ESC, 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, EISU, KC_ESC, ADJUST, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Adjust + * ,-----------------------------------------. ,--------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | TOG | HUI | SAI | VAI | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | MOD | HUD | SAD | VAD | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h new file mode 100644 index 00000000000..818ea7d4af4 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h @@ -0,0 +1,26 @@ +/* Copyright 2021 omkbd + * + * 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 + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c new file mode 100644 index 00000000000..2f8aed176c2 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 omkbd + * + * 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 + +enum layer_number { + _QWERTY = 0, + _NAV, + _SYMBOL, + _MEDIA +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + 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_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_ESC, 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_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_DEL, + KC_LCTL, KC_LALT, KC_LGUI, MO(2), MO(1), KC_SPC, KC_SPC, MO(1), MO(2), KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +[_NAV] = 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_DEL, + KC_TRNS, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_TRNS, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END +), + +[_SYMBOL] = LAYOUT( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, KC_BSPC, + KC_TRNS, KC_NO, KC_P7, KC_P8, KC_P9, KC_NO, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, KC_NO, KC_LCBR, KC_RCBR, KC_PIPE, + KC_ESC, KC_NO, KC_P4, KC_P5, KC_P6, KC_NO, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_COLN, KC_DQUO, KC_TRNS, KC_TRNS, + KC_TRNS, KC_NO, KC_P1, KC_P2, KC_P3, KC_NO, KC_LBRC, KC_RBRC, KC_LT, KC_GT, KC_QUES, KC_TRNS, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_P0, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT +), + +[_MEDIA] = LAYOUT( + KC_NO, KC_SLCK, KC_PAUS, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_NO, KC_NO, KC_NO, + KC_NO, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_G, KC_NO, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_NO, + KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_MRWD, KC_VOLD, KC_MFFD +) + +}; diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk new file mode 100644 index 00000000000..8110dbaa1f9 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk @@ -0,0 +1,3 @@ +RGB_MATRIX_ENABLE = yes +EXTRAKEY_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h b/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h new file mode 100644 index 00000000000..a21551badf3 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 omkbd + * + * 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 + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c new file mode 100644 index 00000000000..463d8476394 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2021 omkbd + * + * 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 +#include "keymap_jp.h" + +enum layer_number { + _QWERTY = 0, + _ADJUST +}; + +// Fillers to make layering more clear +#define EISU LALT(KC_GRV) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY + * ,-----------------------------------------. ,--------------------------------------------------------. + * | EISU | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | ^ | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | @ | [ | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | : | ; | ] | Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | MHEN | Del | Space| | Enter| Bksp | HENK |Adjust| F10 | Left | Down | Right| + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_QWERTY] = LAYOUT( + JP_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, JP_YEN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_HENK, ADJUST, KC_F10, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Adjust + * ,-----------------------------------------. ,--------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | TOG | HUI | SAI | VAI | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | MOD | HUD | SAD | VAD | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/config.h b/keyboards/runner3680/5x6_5x8/keymaps/via/config.h new file mode 100644 index 00000000000..a21551badf3 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/via/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 omkbd + * + * 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 + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c new file mode 100644 index 00000000000..4dafb4b2a37 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 omkbd + * + * 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 + +enum layer_number { + _QWERTY = 0, + _ADJUST +}; + +// Fillers to make layering more clear +#define EISU LALT(KC_GRV) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY + * ,-----------------------------------------. ,--------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | EISU | Del | Space| | Enter| Bksp | EISU | ESC |Adjust| Left | Down | Right| + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_QWERTY] = LAYOUT( + 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_DEL, + 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_BSPC, + KC_ESC, 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, EISU, KC_ESC, ADJUST, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Adjust + * ,-----------------------------------------. ,--------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | TOG | HUI | SAI | VAI | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | MOD | HUD | SAD | VAD | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk b/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/runner3680/5x6_5x8/rules.mk b/keyboards/runner3680/5x6_5x8/rules.mk new file mode 100644 index 00000000000..32afd216356 --- /dev/null +++ b/keyboards/runner3680/5x6_5x8/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/runner3680/runner3680.h b/keyboards/runner3680/runner3680.h index e7842b765aa..39a498e90a0 100644 --- a/keyboards/runner3680/runner3680.h +++ b/keyboards/runner3680/runner3680.h @@ -14,6 +14,10 @@ #include "5x6.h" #endif +#ifdef KEYBOARD_runner3680_5x6_5x8 + #include "5x6_5x8.h" +#endif + #ifdef KEYBOARD_runner3680_4x8 #include "4x8.h" #endif From 743f78022127ad15e8ad4c736375516735469d63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Hor=C3=A1k?= Date: Mon, 27 Dec 2021 02:42:01 +0000 Subject: [PATCH 2/2] [Keymap] Add keymap for the Keychron Q1 ISO layout (#14853) * Add keymap for the Keychron Q1 ISO layout - The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default. - RGB lighting turns off when the computer sleeps - Caps Lock and alpha keys turn red to indicate when Caps Lock is on - When the Fn layer is active, RGB lighting turns off for keys that are not assigned * Update keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c Suggestion from review Co-authored-by: Drashna Jaelre Co-authored-by: Drashna Jaelre --- .../q1/rev_0102/keymaps/kubahorak/README.md | 16 ++++ .../q1/rev_0102/keymaps/kubahorak/config.h | 25 +++++++ .../q1/rev_0102/keymaps/kubahorak/keymap.c | 66 ++++++++++++++++ .../rev_0102/keymaps/kubahorak/keymap_user.h | 28 +++++++ .../keymaps/kubahorak/rgb_matrix_user.c | 75 +++++++++++++++++++ .../keymaps/kubahorak/rgb_matrix_user.h | 24 ++++++ .../q1/rev_0102/keymaps/kubahorak/rules.mk | 6 ++ 7 files changed, 240 insertions(+) create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md new file mode 100644 index 00000000000..3cfae17543b --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md @@ -0,0 +1,16 @@ +# kubahorak's Keychron Q1 keymap + +This ISO layout got heavily inspired by gtg465x's ANSI keymap (rev_0100). + +Features: +- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default. +- RGB lighting turns off when the computer sleeps +- Caps Lock and alpha keys turn red to indicate when Caps Lock is on +- When the Fn layer is active, RGB lighting turns off for keys that are not assigned + +## Changelog + +### 2021-10-17 - 1.0.0 + +- Initial release + diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h new file mode 100644 index 00000000000..55dbb74d4a0 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Jakub Horak (@kubahorak) + * + * 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 + +#ifdef RGB_MATRIX_ENABLE +/* from rev_0100/keymaps/gtg465x */ +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define CAPS_LOCK_INDICATOR_COLOR RGB_RED +# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS +# define FN_LAYER_TRANSPARENT_KEYS_OFF +#endif diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c new file mode 100644 index 00000000000..479988dfa9f --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Jakub Horak (@kubahorak) + * + * 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 +#include "keymap_user.h" +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix_user.h" +#endif + +// clang-format off + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso_83( + KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + 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_HOME, + 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_PGUP, + 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_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_iso_83( + KC_TRNS, 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_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_iso_83( + 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_DEL, KC_INS, + 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_HOME, + 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_PGUP, + 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_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, 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, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [3] = LAYOUT_iso_83( + KC_TRNS, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +// clang-format on + +void matrix_init_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init_user(); +#endif +} diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h new file mode 100644 index 00000000000..728114d556f --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h @@ -0,0 +1,28 @@ +/* Copyright 2021 @ Grayson Carr + * + * 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 + +// clang-format off + +enum layers { + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +// clang-format on diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c new file mode 100644 index 00000000000..8650f30df1c --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c @@ -0,0 +1,75 @@ +/* Copyright 2021 @ Grayson Carr + * + * 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 +#include "rgb_matrix_user.h" +#include "keymap_user.h" + +keypos_t led_index_key_position[DRIVER_LED_TOTAL]; + +void rgb_matrix_init_user(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + uint8_t led_index = g_led_config.matrix_co[row][col]; + if (led_index != NO_LED) { + led_index_key_position[led_index] = (keypos_t){.row = row, .col = col}; + } + } + } +} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + uint8_t current_layer = get_highest_layer(layer_state); + switch (current_layer) { + case MAC_BASE: + case WIN_BASE: +#ifdef CAPS_LOCK_INDICATOR_COLOR + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR); + } +#endif + break; + case MAC_FN: + case WIN_FN: +#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF); +#endif + break; + } +} + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = led_min; i < led_max; i++) { + uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]); + if ((*is_keycode)(keycode)) { + rgb_matrix_set_color(i, red, green, blue); + } + } +} + +bool is_caps_lock_indicator(uint16_t keycode) { + switch (keycode) { +#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS + case KC_A ... KC_Z: +#endif + case KC_CAPS: + return true; + default: + return false; + } +} + +bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; } diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h new file mode 100644 index 00000000000..dead4541676 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h @@ -0,0 +1,24 @@ +/* Copyright 2021 @ Grayson Carr + * + * 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 + +void rgb_matrix_init_user(void); + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue); + +bool is_caps_lock_indicator(uint16_t keycode); +bool is_transparent(uint16_t keycode); diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk new file mode 100644 index 00000000000..af720e37ee7 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += rgb_matrix_user.c +endif \ No newline at end of file