diff options
| author | Takeshi ISHII <2170248+mtei@users.noreply.github.com> | 2020-11-17 07:26:44 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-17 07:26:44 +0900 |
| commit | e6a13e0b1c543bfe15f8ae94557456c9c1a92556 (patch) | |
| tree | 76642103993df62da3a10ab851424257fbc8aaca | |
| parent | aaea5e24b6375078b661c37ff459faafaddfd0f6 (diff) | |
| download | qmk_firmware-e6a13e0b1c543bfe15f8ae94557456c9c1a92556.tar.gz qmk_firmware-e6a13e0b1c543bfe15f8ae94557456c9c1a92556.zip | |
[Keymap] clean up helix:five_rows keymap (#10866)
* Makes the OLED driver used by the helix:five_rows keymap switchable.
* use TOP/drivers/oled/oled_driver.c
`make HELIX=stdole helix:five_rows`
* use helix/local_drivers/ssd1306.c
`make HELIX=oled helix:five_rows`
* Separated the OLED related code from keymap.c and moved it to oled_display.c.
* scan rate without OLED
* make HELIX=verbose,dispoff,scan helix/rev2:five_rows
use Helix original code
text data bss dec hex filename
18880 58 235 19173 4ae5 .build/helix_rev2_five_rows.elf
matrix scan frequency: 1590
* make HELIX=verbose,dispoff,scan,sc helix/rev2:five_rows
use split_common code
text data bss dec hex filename
18554 40 231 18825 4989 .build/helix_rev2_five_rows.elf
matrix scan frequency: 1202
* scan rate with helix/local_drivers/ssd1306.c
* make HELIX=verbose,dispoff,scan,oled helix/rev2:five_rows
use Helix original code
text data bss dec hex filename
24048 196 342 24586 600a .build/helix_rev2_five_rows.elf
matrix scan frequency: 739
* make HELIX=verbose,dispoff,scan,sc,oled helix/rev2:five_rows
use split_common code
text data bss dec hex filename
23750 176 338 24264 5ec8 .build/helix_rev2_five_rows.elf
matrix scan frequency: 642
* scan rate with drivers/oled/oled_driver.c
* make HELIX=verbose,dispoff,scan,stdole helix/rev2:five_rows
use Helix original code
text data bss dec hex filename
24590 210 798 25598 63fe .build/helix_rev2_five_rows.elf
matrix scan frequency: 293
* make HELIX=verbose,dispoff,scan,sc,stdole helix/rev2:five_rows
use split_common code
text data bss dec hex filename
24290 190 794 25274 62ba .build/helix_rev2_five_rows.elf
matrix scan frequency: 277
* clean up helix/rev2/keymaps/five_rows/keymap.c
* update five_rows/oled_display.c
* update helix/rev2/keymaps/five_rows/keymap.c: remove LAYOUT_kc()
* Ported the keymap from helix/rev2:five_rows to helix/rev3_5rows:five_rows.
* update five_rows/oled_display.c
* add License comment
10 files changed, 1293 insertions, 361 deletions
diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c index fcc5c4bbe..a2ec10862 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c +++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c | |||
| @@ -1,199 +1,234 @@ | |||
| 1 | /* Copyright 2020 mtei | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 1 | #include QMK_KEYBOARD_H | 17 | #include QMK_KEYBOARD_H |
| 18 | #include "util.h" | ||
| 2 | #include "bootloader.h" | 19 | #include "bootloader.h" |
| 3 | #ifdef PROTOCOL_LUFA | 20 | #ifdef PROTOCOL_LUFA |
| 4 | #include "lufa.h" | 21 | #include "lufa.h" |
| 5 | #include "split_util.h" | 22 | #include "split_util.h" |
| 6 | #endif | 23 | #endif |
| 7 | #ifdef AUDIO_ENABLE | ||
| 8 | #include "audio.h" | ||
| 9 | #endif | ||
| 10 | #ifdef SSD1306OLED | ||
| 11 | #include "ssd1306.h" | ||
| 12 | #endif | ||
| 13 | #ifdef CONSOLE_ENABLE | 24 | #ifdef CONSOLE_ENABLE |
| 14 | #include <print.h> | 25 | #include <print.h> |
| 15 | #endif | 26 | #endif |
| 27 | #include "layer_number.h" | ||
| 16 | 28 | ||
| 17 | extern keymap_config_t keymap_config; | 29 | extern keymap_config_t keymap_config; |
| 18 | 30 | ||
| 19 | #ifdef RGBLIGHT_ENABLE | ||
| 20 | //Following line allows macro to read current RGB settings | ||
| 21 | extern rgblight_config_t rgblight_config; | ||
| 22 | #endif | ||
| 23 | |||
| 24 | extern uint8_t is_master; | 31 | extern uint8_t is_master; |
| 25 | 32 | ||
| 26 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 27 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 28 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 29 | // entirely and just use numbers. | ||
| 30 | enum layer_number { | ||
| 31 | _QWERTY = 0, | ||
| 32 | _COLEMAK, | ||
| 33 | _DVORAK, | ||
| 34 | _EUCALYN, | ||
| 35 | _KEYPAD, | ||
| 36 | _AUX, | ||
| 37 | _KAUX, | ||
| 38 | _LOWER, | ||
| 39 | _RAISE, | ||
| 40 | _PADFUNC, | ||
| 41 | _ADJUST, | ||
| 42 | }; | ||
| 43 | |||
| 44 | enum custom_keycodes { | 33 | enum custom_keycodes { |
| 45 | QWERTY = SAFE_RANGE, | 34 | QWERTY = SAFE_RANGE, |
| 46 | COLEMAK, | 35 | COLEMAK, |
| 47 | DVORAK, | 36 | DVORAK, |
| 48 | EUCALYN, | 37 | EUCALYN, |
| 49 | KEYPAD, | 38 | KEYPAD, |
| 50 | KC_xEISU, | 39 | xEISU, |
| 51 | KC_xKANA, | 40 | xKANA, |
| 52 | KC_ZERO2, | 41 | ZERO2, |
| 53 | RGBRST | 42 | RGBRST |
| 54 | }; | 43 | }; |
| 55 | 44 | ||
| 45 | #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 46 | |||
| 56 | //Macros | 47 | //Macros |
| 57 | #define KC_LOWER MO(_LOWER) | 48 | #define KC_LOWER MO(_LOWER) |
| 58 | #define KC_RABS LT(_RAISE,KC_BSPC) | 49 | #define XXXX XXXXXXX |
| 59 | #define KC_RAEN LT(_RAISE,KC_ENT) | 50 | #define ____ _______ |
| 60 | #define KC_FF12 LT(_PADFUNC,KC_F12) | ||
| 61 | #define KC_____ _______ | ||
| 62 | #define KC_XXXX XXXXXXX | ||
| 63 | #define KC_ADJ MO(_ADJUST) | 51 | #define KC_ADJ MO(_ADJUST) |
| 64 | #define KC_LSMI LSFT(KC_MINS) | 52 | #define KC_LSMI LSFT(KC_MINS) |
| 65 | #define KC_LSEQ LSFT(KC_EQL) | 53 | #define KC_LSEQ LSFT(KC_EQL) |
| 66 | #define KC_LSRB LSFT(KC_RBRC) | 54 | #define KC_LSRB LSFT(KC_RBRC) |
| 67 | #define KC_LSLB LSFT(KC_LBRC) | 55 | #define KC_LSLB LSFT(KC_LBRC) |
| 68 | #define ___ _______ | 56 | |
| 57 | #define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 | ||
| 58 | #define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 59 | #define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ | ||
| 60 | KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) | ||
| 61 | #define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 62 | LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER | ||
| 63 | |||
| 69 | 64 | ||
| 70 | #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 | 65 | #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 |
| 71 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 66 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 72 | 67 | ||
| 73 | /* Qwerty | 68 | /* Qwerty |
| 74 | * ,-----------------------------------------. ,-----------------------------------------. | 69 | * ,-----------------------------------. ,-----------------------------------. |
| 75 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | | 70 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | |
| 76 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 71 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 77 | * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | | 72 | * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | |
| 78 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 73 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 79 | * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | Ctrl | | 74 | * | Ctrl| A | S | D | F | G | | H | J | K | L | ; |Ctrl | |
| 80 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 75 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 81 | * | Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / | Shift| | 76 | * |Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / |Shift| |
| 82 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 77 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 83 | * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | | 78 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| |
| 84 | * `-------------------------------------------------------------------------------------------------' | 79 | * `-----------------------------------------------------------------------------------' |
| 85 | */ | 80 | */ |
| 86 | [_QWERTY] = LAYOUT_kc( \ | 81 | #define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T |
| 87 | ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \ | 82 | #define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P |
| 88 | TAB, Q, W, E, R, T, Y, U, I, O, P, BSLS, \ | 83 | #define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G |
| 89 | LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCTL, \ | 84 | #define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN |
| 90 | LSFT, Z, X, C, V, B, GRV, QUOT, N, M, COMM, DOT, SLSH, RSFT, \ | 85 | #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B |
| 91 | LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \ | 86 | #define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH |
| 92 | ), | 87 | |
| 88 | [_QWERTY] = LAYOUT_wrapper( \ | ||
| 89 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 90 | KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ | ||
| 91 | KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ | ||
| 92 | KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ | ||
| 93 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 94 | ), | ||
| 93 | 95 | ||
| 94 | /* Colemak | 96 | /* Colemak |
| 95 | * ,-----------------------------------------. ,-----------------------------------------. | 97 | * ,-----------------------------------. ,-----------------------------------. |
| 96 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | | 98 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | |
| 97 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 99 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 98 | * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | | 100 | * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | |
| 99 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 101 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 100 | * | Ctrl | A | R | S | T | D | | H | N | E | I | O | Ctrl | | 102 | * | Ctrl| A | R | S | T | D | | H | N | E | I | O |Ctrl | |
| 101 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 103 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 102 | * | Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / | Shift| | 104 | * |Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / |Shift| |
| 103 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 105 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 104 | * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | | 106 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| |
| 105 | * `-------------------------------------------------------------------------------------------------' | 107 | * `-----------------------------------------------------------------------------------' |
| 106 | */ | 108 | */ |
| 107 | [_COLEMAK] = LAYOUT_kc( \ | 109 | #define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G |
| 108 | ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \ | 110 | #define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN |
| 109 | TAB, Q, W, F, P, G, J, L, U, Y, SCLN, BSLS, \ | 111 | #define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D |
| 110 | LCTL, A, R, S, T, D, H, N, E, I, O, RCTL, \ | 112 | #define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O |
| 111 | LSFT, Z, X, C, V, B, GRV, QUOT, K, M, COMM, DOT, SLSH, RSFT, \ | 113 | #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B |
| 112 | LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \ | 114 | #define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH |
| 113 | ), | 115 | |
| 116 | [_COLEMAK] = LAYOUT_wrapper( \ | ||
| 117 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 118 | KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ | ||
| 119 | KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ | ||
| 120 | KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ | ||
| 121 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 122 | ), | ||
| 114 | 123 | ||
| 115 | /* Dvorak | 124 | /* Dvorak |
| 116 | * ,-----------------------------------------. ,-----------------------------------------. | 125 | * ,-----------------------------------. ,-----------------------------------. |
| 117 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | | 126 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | |
| 118 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 127 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 119 | * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | | 128 | * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | |
| 120 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 129 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 121 | * | Ctrl | A | O | E | U | I | | D | H | T | N | S | Ctrl | | 130 | * | Ctrl| A | O | E | U | I | | D | H | T | N | S |Ctrl | |
| 122 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 131 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 123 | * | Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z | Shift| | 132 | * |Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z |Shift| |
| 124 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 133 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 125 | * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | | 134 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| |
| 126 | * `-------------------------------------------------------------------------------------------------' | 135 | * `-----------------------------------------------------------------------------------' |
| 127 | */ | 136 | */ |
| 128 | [_DVORAK] = LAYOUT_kc( \ | 137 | #define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y |
| 129 | ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \ | 138 | #define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L |
| 130 | TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, BSLS, \ | 139 | #define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I |
| 131 | LCTL, A, O, E, U, I, D, H, T, N, S, RCTL, \ | 140 | #define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S |
| 132 | LSFT, SCLN, Q, J, K, X, GRV, SLSH, B, M, W, V, Z, RSFT, \ | 141 | #define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X |
| 133 | LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \ | 142 | #define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z |
| 134 | ), | 143 | |
| 144 | [_DVORAK] = LAYOUT_wrapper( \ | ||
| 145 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 146 | KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ | ||
| 147 | KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ | ||
| 148 | KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ | ||
| 149 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 150 | ), | ||
| 135 | 151 | ||
| 136 | /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) | 152 | /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) |
| 137 | * ,-----------------------------------------. ,-----------------------------------------. | 153 | * ,-----------------------------------. ,-----------------------------------. |
| 138 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | | 154 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | |
| 139 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 155 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 140 | * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | | 156 | * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | |
| 141 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 157 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 142 | * | Ctrl | A | O | E | I | U | | G | T | K | S | N | Ctrl | | 158 | * | Ctrl| A | O | E | I | U | | G | T | K | S | N |Ctrl | |
| 143 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 159 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 144 | * | Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / | Shift| | 160 | * |Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / |Shift| |
| 145 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 161 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 146 | * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | | 162 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| |
| 147 | * `-------------------------------------------------------------------------------------------------' | 163 | * `-----------------------------------------------------------------------------------' |
| 148 | */ | 164 | */ |
| 149 | [_EUCALYN] = LAYOUT_kc( \ | 165 | #define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN |
| 150 | ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \ | 166 | #define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P |
| 151 | TAB, Q, W, COMM, DOT, SCLN, M, R, D, Y, P, BSLS, \ | 167 | #define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U |
| 152 | LCTL, A, O, E, I, U, G, T, K, S, N, RCTL, \ | 168 | #define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N |
| 153 | LSFT, Z, X, C, V, F, GRV, QUOT, B, H, J, L, SLSH, RSFT, \ | 169 | #define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F |
| 154 | LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \ | 170 | #define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH |
| 155 | ), | 171 | |
| 172 | [_EUCALYN] = LAYOUT_wrapper( \ | ||
| 173 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 174 | KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ | ||
| 175 | KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ | ||
| 176 | KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ | ||
| 177 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 178 | ), | ||
| 156 | 179 | ||
| 157 | /* Keypad | 180 | /* Keypad |
| 158 | * ,-----------------------------------------. ,-----------------------------------------. | 181 | * ,-----------------------------------. ,-----------------------------------. |
| 159 | * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | | 182 | * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | |
| 160 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 183 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 161 | * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | | 184 | * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | |
| 162 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 185 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 163 | * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 | | 186 | * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 | |
| 164 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 187 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 165 | * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 | | 188 | * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 | |
| 166 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 189 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 167 | * | 0 | , | . | Enter| F5 | F10 | F12 | F12 | F5 | F10 | Enter| 0 | , | . | | 190 | * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | |
| 168 | * `-------------------------------------------------------------------------------------------------' | 191 | * `-----------------------------------------------------------------------------------' |
| 169 | */ | 192 | */ |
| 170 | [_KEYPAD] = LAYOUT_kc( \ | 193 | #define KP_TOP KC_TAB, KC_PSLS, KC_PAST |
| 171 | TAB, PSLS, PAST, DEL, F1, F6, F1, F6, DEL, TAB, PSLS, PAST, \ | 194 | #define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 |
| 172 | KP_7, KP_8, KP_9, BSPC, F2, F7, F2, F7, BSPC, KP_7, KP_8, KP_9, \ | 195 | #define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 |
| 173 | KP_4, KP_5, KP_6, PMNS, F3, F8, F3, F8, PMNS, KP_4, KP_5, KP_6, \ | 196 | #define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 |
| 174 | KP_1, KP_2, KP_3, PPLS, F4, F9, F11, F11, F4, F9, PPLS, KP_1, KP_2, KP_3, \ | 197 | #define KP_BTM KC_KP_0, KC_COMM, KC_PDOT |
| 175 | KP_0, COMM, PDOT, PENT, F5, F10, FF12, FF12, F5, F10, PENT, KP_0, COMM, PDOT \ | 198 | #define F_1_6 KC_F1, KC_F6 |
| 176 | ), | 199 | #define F_2_7 KC_F2, KC_F7 |
| 200 | #define F_3_8 KC_F3, KC_F8 | ||
| 201 | #define F_4_9 KC_F4, KC_F9 | ||
| 202 | #define F_510 KC_F5, KC_F10 | ||
| 203 | #define FF12 LT(_PADFUNC,KC_F12) | ||
| 204 | |||
| 205 | [_KEYPAD] = LAYOUT_wrapper( \ | ||
| 206 | KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ | ||
| 207 | KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ | ||
| 208 | KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ | ||
| 209 | KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ | ||
| 210 | KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ | ||
| 211 | ), | ||
| 177 | 212 | ||
| 178 | /* AUX modifier key layer | 213 | /* AUX modifier key layer |
| 179 | * ,-----------------------------------------. ,-----------------------------------------. | 214 | * ,-----------------------------------. ,-----------------------------------. |
| 180 | * | | | | | | | | | | | | | | | 215 | * | | | | | | | | | | | | | | |
| 181 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 216 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 182 | * | | | | | | | | | | | | | | | 217 | * | | | | | | | | | | | | | | |
| 183 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | 218 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| |
| 184 | * | | | | | | | | | | | | | | | 219 | * | | | | | | | | | | | | | | |
| 185 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 220 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 186 | * | | | | | | | | | | | | | | | | 221 | * | | | | | | | | | | | | | | | |
| 187 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | 222 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| |
| 188 | * | | 00 | | | | | | | | | | | 00 | | | 223 | * | | 00 | | | | | | | | | | | 00 | | |
| 189 | * `-------------------------------------------------------------------------------------------------' | 224 | * `-----------------------------------------------------------------------------------' |
| 190 | */ | 225 | */ |
| 191 | [_KAUX] = LAYOUT_kc( \ | 226 | [_KAUX] = LAYOUT( \ |
| 192 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 227 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 193 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 228 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 194 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 229 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 195 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 230 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 196 | ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ZERO2,____ \ | 231 | ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ |
| 197 | ), | 232 | ), |
| 198 | 233 | ||
| 199 | /* Keypad function layer | 234 | /* Keypad function layer |
| @@ -209,12 +244,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 209 | * | | | | | | | | | | | | | | | | 244 | * | | | | | | | | | | | | | | | |
| 210 | * `-------------------------------------------------------------------------------------------------' | 245 | * `-------------------------------------------------------------------------------------------------' |
| 211 | */ | 246 | */ |
| 212 | [_PADFUNC] = LAYOUT_kc( \ | 247 | #define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR |
| 213 | XXXX, XXXX, XXXX, PAUS, SLCK, PSCR, PSCR, SLCK, PAUS, XXXX, XXXX, XXXX, \ | 248 | #define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS |
| 214 | XXXX, XXXX, XXXX, HOME, UP, PGUP, PGUP, UP, HOME, XXXX, XXXX, XXXX, \ | 249 | #define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP |
| 215 | XXXX, DEL, INS, LEFT, DOWN, RGHT, LEFT, DOWN, RGHT, INS, DEL, XXXX, \ | 250 | #define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME |
| 216 | XXXX, XXXX, XXXX, END, XXXX, PGDN, ADJ, ADJ, PGDN, XXXX, END, XXXX, XXXX, XXXX, \ | 251 | #define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT |
| 217 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ | 252 | #define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL |
| 253 | #define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN | ||
| 254 | |||
| 255 | [_PADFUNC] = LAYOUT_wrapper( \ | ||
| 256 | XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ | ||
| 257 | XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ | ||
| 258 | XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ | ||
| 259 | XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ | ||
| 260 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ | ||
| 218 | ), | 261 | ), |
| 219 | 262 | ||
| 220 | /* Lower | 263 | /* Lower |
| @@ -230,12 +273,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 230 | * | | | PrtSc| | | | | | | | | PrtSc| | | | 273 | * | | | PrtSc| | | | | | | | | PrtSc| | | |
| 231 | * `-------------------------------------------------------------------------------------------------' | 274 | * `-------------------------------------------------------------------------------------------------' |
| 232 | */ | 275 | */ |
| 233 | [_LOWER] = LAYOUT_kc( \ | 276 | #define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 |
| 234 | XXXX, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \ | 277 | #define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 |
| 235 | XXXX, XXXX, PAUS, SLCK, INS, XXXX, XXXX, INS, SLCK, PAUS, XXXX, F12, \ | 278 | #define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS |
| 236 | ____, HOME, XXXX, UP, DEL, PGUP, PGUP, DEL, UP, XXXX, HOME, ____, \ | 279 | #define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS |
| 237 | ____, END, LEFT, DOWN, RGHT, PGDN, XXXX, XXXX, PGDN, LEFT, DOWN, RGHT, END, ____, \ | 280 | #define _ADJ_ADJ KC_ADJ, KC_ADJ |
| 238 | ____, ____, PSCR, ____, ____, ____, ADJ, ADJ, ____, ____, ____, PSCR, ____, ____ \ | 281 | #define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP |
| 282 | #define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP | ||
| 283 | #define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN | ||
| 284 | #define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END | ||
| 285 | |||
| 286 | [_LOWER] = LAYOUT_wrapper( \ | ||
| 287 | XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ | ||
| 288 | XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ | ||
| 289 | ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ | ||
| 290 | ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ | ||
| 291 | ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ | ||
| 239 | ), | 292 | ), |
| 240 | 293 | ||
| 241 | /* Raise | 294 | /* Raise |
| @@ -251,12 +304,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 251 | * | | | | | | | | | | | | | | | | 304 | * | | | | | | | | | | | | | | | |
| 252 | * `-------------------------------------------------------------------------------------------------' | 305 | * `-------------------------------------------------------------------------------------------------' |
| 253 | */ | 306 | */ |
| 254 | [_RAISE] = LAYOUT_kc( \ | 307 | #define _LSMI_MINS KC_LSMI, KC_MINS |
| 308 | #define _EQL_LSEQ KC_EQL, KC_LSEQ | ||
| 309 | #define _LSLB_LBRC KC_LSLB, KC_LBRC | ||
| 310 | #define _RBRC_LSRB KC_RBRC, KC_LSRB | ||
| 311 | #define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||
| 312 | |||
| 313 | [_RAISE] = LAYOUT_wrapper( \ | ||
| 255 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ | 314 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ |
| 256 | XXXX, XXXX, XXXX, XXXX, LSMI, MINS, EQL, LSEQ, XXXX, XXXX, XXXX, XXXX, \ | 315 | XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ |
| 257 | ____, XXXX, XXXX, XXXX, LSLB, LBRC, RBRC, LSRB, XXXX, XXXX, XXXX, ____, \ | 316 | ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ |
| 258 | ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA,MNXT, VOLD, VOLU, MPLY, ____, \ | 317 | ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ |
| 259 | ADJ, ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ, ADJ \ | 318 | _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ |
| 260 | ), | 319 | ), |
| 261 | 320 | ||
| 262 | /* Adjust (Lower + Raise) | 321 | /* Adjust (Lower + Raise) |
| @@ -276,8 +335,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 276 | XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ | 335 | XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ |
| 277 | XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ | 336 | XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ |
| 278 | RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ | 337 | RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ |
| 279 | RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ | 338 | RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ |
| 280 | _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ | 339 | _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ |
| 281 | ), | 340 | ), |
| 282 | 341 | ||
| 283 | /* AUX modifier key layer | 342 | /* AUX modifier key layer |
| @@ -293,12 +352,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 293 | * | | | | | | BS | Enter| | | | | | | | | 352 | * | | | | | | BS | Enter| | | | | | | | |
| 294 | * `-------------------------------------------------------------------------------------------------' | 353 | * `-------------------------------------------------------------------------------------------------' |
| 295 | */ | 354 | */ |
| 296 | [_AUX] = LAYOUT_kc( \ | 355 | #define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) |
| 356 | [_AUX] = LAYOUT_wrapper( \ | ||
| 297 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 357 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 298 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 358 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 299 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 359 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 300 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | 360 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
| 301 | ____, ____, ____, ____, ____, BSPC, RAEN, ____, ____, ____, ____, ____, ____, ____ \ | 361 | ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ |
| 302 | ) | 362 | ) |
| 303 | }; | 363 | }; |
| 304 | 364 | ||
| @@ -307,28 +367,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 307 | #endif | 367 | #endif |
| 308 | 368 | ||
| 309 | 369 | ||
| 310 | #ifdef AUDIO_ENABLE | 370 | int current_default_layer; |
| 311 | |||
| 312 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); | ||
| 313 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); | ||
| 314 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); | ||
| 315 | float tone_plover[][2] = SONG(PLOVER_SOUND); | ||
| 316 | float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); | ||
| 317 | float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); | ||
| 318 | #endif | ||
| 319 | 371 | ||
| 320 | static int current_default_layer; | 372 | uint32_t default_layer_state_set_user(uint32_t state) { |
| 321 | 373 | current_default_layer = biton32(state); | |
| 322 | uint32_t default_layer_state_set_kb(uint32_t state) { | ||
| 323 | // 1<<_QWERTY - 1 == 1 - 1 == _QWERTY (=0) | ||
| 324 | // 1<<_COLEMAK - 1 == 2 - 1 == _COLEMAK (=1) | ||
| 325 | current_default_layer = state - 1; | ||
| 326 | // 1<<_DVORAK - 2 == 4 - 2 == _DVORAK (=2) | ||
| 327 | if ( current_default_layer == 3 ) current_default_layer -= 1; | ||
| 328 | // 1<<_EUCALYN - 5 == 8 - 5 == _EUCALYN (=3) | ||
| 329 | if ( current_default_layer == 7 ) current_default_layer -= 4; | ||
| 330 | // 1<<_KEYPAD - 12 == 16 - 12 == _KEYPAD (=4) | ||
| 331 | if ( current_default_layer == 15 ) current_default_layer -= 11; | ||
| 332 | return state; | 374 | return state; |
| 333 | } | 375 | } |
| 334 | 376 | ||
| @@ -351,56 +393,41 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 351 | switch (keycode) { | 393 | switch (keycode) { |
| 352 | case QWERTY: | 394 | case QWERTY: |
| 353 | if (record->event.pressed) { | 395 | if (record->event.pressed) { |
| 354 | #ifdef AUDIO_ENABLE | ||
| 355 | PLAY_SONG(tone_qwerty); | ||
| 356 | #endif | ||
| 357 | update_base_layer(_QWERTY); | 396 | update_base_layer(_QWERTY); |
| 358 | } | 397 | } |
| 359 | return false; | 398 | return false; |
| 360 | break; | 399 | break; |
| 361 | case COLEMAK: | 400 | case COLEMAK: |
| 362 | if (record->event.pressed) { | 401 | if (record->event.pressed) { |
| 363 | #ifdef AUDIO_ENABLE | ||
| 364 | PLAY_SONG(tone_colemak); | ||
| 365 | #endif | ||
| 366 | update_base_layer(_COLEMAK); | 402 | update_base_layer(_COLEMAK); |
| 367 | } | 403 | } |
| 368 | return false; | 404 | return false; |
| 369 | break; | 405 | break; |
| 370 | case DVORAK: | 406 | case DVORAK: |
| 371 | if (record->event.pressed) { | 407 | if (record->event.pressed) { |
| 372 | #ifdef AUDIO_ENABLE | ||
| 373 | PLAY_SONG(tone_dvorak); | ||
| 374 | #endif | ||
| 375 | update_base_layer(_DVORAK); | 408 | update_base_layer(_DVORAK); |
| 376 | } | 409 | } |
| 377 | return false; | 410 | return false; |
| 378 | break; | 411 | break; |
| 379 | case EUCALYN: | 412 | case EUCALYN: |
| 380 | if (record->event.pressed) { | 413 | if (record->event.pressed) { |
| 381 | #ifdef AUDIO_ENABLE | ||
| 382 | PLAY_SONG(tone_dvorak); | ||
| 383 | #endif | ||
| 384 | update_base_layer(_EUCALYN); | 414 | update_base_layer(_EUCALYN); |
| 385 | } | 415 | } |
| 386 | return false; | 416 | return false; |
| 387 | break; | 417 | break; |
| 388 | case KEYPAD: | 418 | case KEYPAD: |
| 389 | if (record->event.pressed) { | 419 | if (record->event.pressed) { |
| 390 | #ifdef AUDIO_ENABLE | ||
| 391 | PLAY_SONG(tone_dvorak); | ||
| 392 | #endif | ||
| 393 | update_base_layer(_KEYPAD); | 420 | update_base_layer(_KEYPAD); |
| 394 | } | 421 | } |
| 395 | return false; | 422 | return false; |
| 396 | break; | 423 | break; |
| 397 | case KC_ZERO2: | 424 | case ZERO2: |
| 398 | if (record->event.pressed) { | 425 | if (record->event.pressed) { |
| 399 | SEND_STRING("00"); | 426 | SEND_STRING("00"); |
| 400 | } | 427 | } |
| 401 | return false; | 428 | return false; |
| 402 | break; | 429 | break; |
| 403 | case KC_xEISU: | 430 | case xEISU: |
| 404 | if (record->event.pressed) { | 431 | if (record->event.pressed) { |
| 405 | if(keymap_config.swap_lalt_lgui==false){ | 432 | if(keymap_config.swap_lalt_lgui==false){ |
| 406 | register_code(KC_LANG2); | 433 | register_code(KC_LANG2); |
| @@ -412,7 +439,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 412 | } | 439 | } |
| 413 | return false; | 440 | return false; |
| 414 | break; | 441 | break; |
| 415 | case KC_xKANA: | 442 | case xKANA: |
| 416 | if (record->event.pressed) { | 443 | if (record->event.pressed) { |
| 417 | if(keymap_config.swap_lalt_lgui==false){ | 444 | if(keymap_config.swap_lalt_lgui==false){ |
| 418 | register_code(KC_LANG1); | 445 | register_code(KC_LANG1); |
| @@ -437,161 +464,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 437 | } | 464 | } |
| 438 | 465 | ||
| 439 | void matrix_init_user(void) { | 466 | void matrix_init_user(void) { |
| 440 | #ifdef AUDIO_ENABLE | 467 | INIT_HELIX_OLED(); /* define in layer_number.h */ |
| 441 | startup_user(); | ||
| 442 | #endif | ||
| 443 | //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h | ||
| 444 | #ifdef SSD1306OLED | ||
| 445 | iota_gfx_init(!has_usb()); // turns on the display | ||
| 446 | #endif | ||
| 447 | } | ||
| 448 | |||
| 449 | |||
| 450 | #ifdef AUDIO_ENABLE | ||
| 451 | |||
| 452 | void startup_user() | ||
| 453 | { | ||
| 454 | _delay_ms(20); // gets rid of tick | ||
| 455 | } | ||
| 456 | |||
| 457 | void shutdown_user() | ||
| 458 | { | ||
| 459 | _delay_ms(150); | ||
| 460 | stop_all_notes(); | ||
| 461 | } | ||
| 462 | |||
| 463 | void music_on_user(void) | ||
| 464 | { | ||
| 465 | music_scale_user(); | ||
| 466 | } | ||
| 467 | |||
| 468 | void music_scale_user(void) | ||
| 469 | { | ||
| 470 | PLAY_SONG(music_scale); | ||
| 471 | } | ||
| 472 | |||
| 473 | #endif | ||
| 474 | |||
| 475 | |||
| 476 | //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h | ||
| 477 | #ifdef SSD1306OLED | ||
| 478 | |||
| 479 | void matrix_scan_user(void) { | ||
| 480 | iota_gfx_task(); // this is what updates the display continuously | ||
| 481 | } | 468 | } |
| 482 | |||
| 483 | void matrix_update(struct CharacterMatrix *dest, | ||
| 484 | const struct CharacterMatrix *source) { | ||
| 485 | if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
| 486 | memcpy(dest->display, source->display, sizeof(dest->display)); | ||
| 487 | dest->dirty = true; | ||
| 488 | } | ||
| 489 | } | ||
| 490 | |||
| 491 | static void render_logo(struct CharacterMatrix *matrix) { | ||
| 492 | |||
| 493 | static char logo[]={ | ||
| 494 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | ||
| 495 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | ||
| 496 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, | ||
| 497 | 0}; | ||
| 498 | matrix_write(matrix, logo); | ||
| 499 | #ifdef RGBLIGHT_ENABLE | ||
| 500 | char buf[30]; | ||
| 501 | if (RGBLIGHT_MODES > 1 && rgblight_config.enable) { | ||
| 502 | snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", | ||
| 503 | rgblight_config.mode, | ||
| 504 | rgblight_config.hue/RGBLIGHT_HUE_STEP, | ||
| 505 | rgblight_config.sat/RGBLIGHT_SAT_STEP, | ||
| 506 | rgblight_config.val/RGBLIGHT_VAL_STEP); | ||
| 507 | matrix_write(matrix, buf); | ||
| 508 | } | ||
| 509 | #endif | ||
| 510 | //matrix_write_P(&matrix, PSTR(" Split keyboard kit")); | ||
| 511 | } | ||
| 512 | |||
| 513 | static const char Qwerty_name[] PROGMEM = " Qwerty"; | ||
| 514 | static const char Colemak_name[] PROGMEM = " Colemak"; | ||
| 515 | static const char Dvorak_name[] PROGMEM = " Dvorak"; | ||
| 516 | static const char Eucalyn_name[] PROGMEM = " Eucalyn"; | ||
| 517 | static const char Keypad_name[] PROGMEM = " Keypad"; | ||
| 518 | |||
| 519 | static const char AUX_name[] PROGMEM = ":AUX"; | ||
| 520 | static const char KAUX_name[] PROGMEM = ":00"; | ||
| 521 | static const char Padfunc_name[] PROGMEM = ":PadFunc"; | ||
| 522 | static const char Lower_name[] PROGMEM = ":Func"; | ||
| 523 | static const char Raise_name[] PROGMEM = ":Extra"; | ||
| 524 | static const char Adjust_name[] PROGMEM = ":Adjust"; | ||
| 525 | |||
| 526 | static const char *layer_names[] = { | ||
| 527 | [_QWERTY] = Qwerty_name, | ||
| 528 | [_COLEMAK] = Colemak_name, | ||
| 529 | [_DVORAK] = Dvorak_name, | ||
| 530 | [_EUCALYN]= Eucalyn_name, | ||
| 531 | [_KEYPAD] = Keypad_name, | ||
| 532 | [_AUX] = AUX_name, | ||
| 533 | [_KAUX] = KAUX_name, | ||
| 534 | [_LOWER] = Lower_name, | ||
| 535 | [_RAISE] = Raise_name, | ||
| 536 | [_PADFUNC]= Padfunc_name, | ||
| 537 | [_ADJUST] = Adjust_name | ||
| 538 | }; | ||
| 539 | |||
| 540 | void render_status(struct CharacterMatrix *matrix) { | ||
| 541 | |||
| 542 | // Render to mode icon | ||
| 543 | static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; | ||
| 544 | if(keymap_config.swap_lalt_lgui==false){ | ||
| 545 | matrix_write(matrix, logo[0][0]); | ||
| 546 | matrix_write_P(matrix, PSTR("\n")); | ||
| 547 | matrix_write(matrix, logo[0][1]); | ||
| 548 | }else{ | ||
| 549 | matrix_write(matrix, logo[1][0]); | ||
| 550 | matrix_write_P(matrix, PSTR("\n")); | ||
| 551 | matrix_write(matrix, logo[1][1]); | ||
| 552 | } | ||
| 553 | |||
| 554 | // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below | ||
| 555 | int name_num; | ||
| 556 | uint32_t lstate; | ||
| 557 | matrix_write_P(matrix, layer_names[current_default_layer]); | ||
| 558 | matrix_write_P(matrix, PSTR("\n")); | ||
| 559 | for( lstate = layer_state, name_num = 0; | ||
| 560 | lstate && name_num < sizeof(layer_names)/sizeof(char *); | ||
| 561 | lstate >>=1, name_num++ ) { | ||
| 562 | if( (lstate & 1) != 0 ) { | ||
| 563 | if( layer_names[name_num] ) { | ||
| 564 | matrix_write_P(matrix, layer_names[name_num]); | ||
| 565 | } | ||
| 566 | } | ||
| 567 | } | ||
| 568 | |||
| 569 | // Host Keyboard LED Status | ||
| 570 | char led[40]; | ||
| 571 | snprintf(led, sizeof(led), "\n%s %s %s", | ||
| 572 | (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", | ||
| 573 | (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", | ||
| 574 | (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); | ||
| 575 | matrix_write(matrix, led); | ||
| 576 | } | ||
| 577 | |||
| 578 | |||
| 579 | void iota_gfx_task_user(void) { | ||
| 580 | struct CharacterMatrix matrix; | ||
| 581 | |||
| 582 | #if DEBUG_TO_SCREEN | ||
| 583 | if (debug_enable) { | ||
| 584 | return; | ||
| 585 | } | ||
| 586 | #endif | ||
| 587 | |||
| 588 | matrix_clear(&matrix); | ||
| 589 | if(is_master){ | ||
| 590 | render_status(&matrix); | ||
| 591 | }else{ | ||
| 592 | render_logo(&matrix); | ||
| 593 | } | ||
| 594 | matrix_update(&display, &matrix); | ||
| 595 | } | ||
| 596 | |||
| 597 | #endif | ||
diff --git a/keyboards/helix/rev2/keymaps/five_rows/layer_number.h b/keyboards/helix/rev2/keymaps/five_rows/layer_number.h new file mode 100644 index 000000000..1272feba4 --- /dev/null +++ b/keyboards/helix/rev2/keymaps/five_rows/layer_number.h | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 6 | // entirely and just use numbers. | ||
| 7 | enum layer_number { | ||
| 8 | _QWERTY = 0, | ||
| 9 | _COLEMAK, | ||
| 10 | _DVORAK, | ||
| 11 | _EUCALYN, | ||
| 12 | _KEYPAD, | ||
| 13 | _AUX, | ||
| 14 | _KAUX, | ||
| 15 | _LOWER, | ||
| 16 | _RAISE, | ||
| 17 | _PADFUNC, | ||
| 18 | _ADJUST, | ||
| 19 | }; | ||
| 20 | |||
| 21 | #if defined(SSD1306OLED) | ||
| 22 | extern void init_helix_oled(void); | ||
| 23 | # define INIT_HELIX_OLED() init_helix_oled(); | ||
| 24 | #else | ||
| 25 | # define INIT_HELIX_OLED() | ||
| 26 | #endif | ||
diff --git a/keyboards/helix/rev2/keymaps/five_rows/oled_display.c b/keyboards/helix/rev2/keymaps/five_rows/oled_display.c new file mode 100644 index 000000000..c1f039e5b --- /dev/null +++ b/keyboards/helix/rev2/keymaps/five_rows/oled_display.c | |||
| @@ -0,0 +1,200 @@ | |||
| 1 | /* Copyright 2020 mtei | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | #include <stdio.h> | ||
| 19 | #ifdef CONSOLE_ENABLE | ||
| 20 | #include <print.h> | ||
| 21 | #endif | ||
| 22 | #ifdef SSD1306OLED | ||
| 23 | #include "ssd1306.h" | ||
| 24 | #endif | ||
| 25 | #include "string.h" | ||
| 26 | #include "layer_number.h" | ||
| 27 | |||
| 28 | extern int current_default_layer; | ||
| 29 | |||
| 30 | void init_helix_oled(void) { | ||
| 31 | #ifdef SSD1306OLED | ||
| 32 | //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h | ||
| 33 | iota_gfx_init(!has_usb()); // turns on the display | ||
| 34 | #endif | ||
| 35 | } | ||
| 36 | |||
| 37 | //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h | ||
| 38 | #if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE) | ||
| 39 | |||
| 40 | # if defined(OLED_DRIVER_ENABLE) | ||
| 41 | oled_rotation_t oled_init_user(oled_rotation_t rotation) { | ||
| 42 | if (is_keyboard_master()) { | ||
| 43 | return OLED_ROTATION_0; | ||
| 44 | } else { | ||
| 45 | return OLED_ROTATION_180; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | # else | ||
| 49 | # define oled_write(data,flag) matrix_write(matrix, data) | ||
| 50 | # define oled_write_P(data,flag) matrix_write_P(matrix, data) | ||
| 51 | # endif | ||
| 52 | |||
| 53 | # ifdef SSD1306OLED | ||
| 54 | void matrix_scan_user(void) { | ||
| 55 | iota_gfx_task(); // this is what updates the display continuously | ||
| 56 | } | ||
| 57 | |||
| 58 | void matrix_update(struct CharacterMatrix *dest, | ||
| 59 | const struct CharacterMatrix *source) { | ||
| 60 | if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
| 61 | memcpy(dest->display, source->display, sizeof(dest->display)); | ||
| 62 | dest->dirty = true; | ||
| 63 | } | ||
| 64 | } | ||
| 65 | # endif | ||
| 66 | |||
| 67 | # ifdef SSD1306OLED | ||
| 68 | static void render_logo(struct CharacterMatrix *matrix) { | ||
| 69 | # else | ||
| 70 | static void render_logo(void) { | ||
| 71 | # endif | ||
| 72 | |||
| 73 | static const char helix_logo[] PROGMEM = { | ||
| 74 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | ||
| 75 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | ||
| 76 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, | ||
| 77 | 0}; | ||
| 78 | oled_write_P(helix_logo, false); | ||
| 79 | # ifdef RGBLIGHT_ENABLE | ||
| 80 | char buf[30]; | ||
| 81 | if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { | ||
| 82 | snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", | ||
| 83 | rgblight_get_mode(), | ||
| 84 | rgblight_get_hue()/RGBLIGHT_HUE_STEP, | ||
| 85 | rgblight_get_sat()/RGBLIGHT_SAT_STEP, | ||
| 86 | rgblight_get_val()/RGBLIGHT_VAL_STEP); | ||
| 87 | oled_write(buf, false); | ||
| 88 | # ifndef SSD1306OLED | ||
| 89 | } else { | ||
| 90 | oled_write_P( PSTR("\n"), false); | ||
| 91 | # endif | ||
| 92 | } | ||
| 93 | # endif | ||
| 94 | } | ||
| 95 | |||
| 96 | static const char Qwerty_name[] PROGMEM = " Qwerty"; | ||
| 97 | static const char Colemak_name[] PROGMEM = " Colemak"; | ||
| 98 | static const char Dvorak_name[] PROGMEM = " Dvorak"; | ||
| 99 | static const char Eucalyn_name[] PROGMEM = " Eucalyn"; | ||
| 100 | static const char Keypad_name[] PROGMEM = " Keypad"; | ||
| 101 | |||
| 102 | static const char AUX_name[] PROGMEM = ":AUX"; | ||
| 103 | static const char KAUX_name[] PROGMEM = ":00"; | ||
| 104 | static const char Padfunc_name[] PROGMEM = ":PadFunc"; | ||
| 105 | static const char Lower_name[] PROGMEM = ":Func"; | ||
| 106 | static const char Raise_name[] PROGMEM = ":Extra"; | ||
| 107 | static const char Adjust_name[] PROGMEM = ":Adjust"; | ||
| 108 | |||
| 109 | static const char *layer_names[] = { | ||
| 110 | [_QWERTY] = Qwerty_name, | ||
| 111 | [_COLEMAK] = Colemak_name, | ||
| 112 | [_DVORAK] = Dvorak_name, | ||
| 113 | [_EUCALYN]= Eucalyn_name, | ||
| 114 | [_KEYPAD] = Keypad_name, | ||
| 115 | [_AUX] = AUX_name, | ||
| 116 | [_KAUX] = KAUX_name, | ||
| 117 | [_LOWER] = Lower_name, | ||
| 118 | [_RAISE] = Raise_name, | ||
| 119 | [_PADFUNC]= Padfunc_name, | ||
| 120 | [_ADJUST] = Adjust_name | ||
| 121 | }; | ||
| 122 | |||
| 123 | # ifdef SSD1306OLED | ||
| 124 | void render_status(struct CharacterMatrix *matrix) { | ||
| 125 | # else | ||
| 126 | void render_status(void) { | ||
| 127 | # endif | ||
| 128 | |||
| 129 | // Render to mode icon | ||
| 130 | static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; | ||
| 131 | if(keymap_config.swap_lalt_lgui==false){ | ||
| 132 | oled_write_P(os_logo[0][0], false); | ||
| 133 | oled_write_P(PSTR("\n"), false); | ||
| 134 | oled_write_P(os_logo[0][1], false); | ||
| 135 | } else { | ||
| 136 | oled_write_P(os_logo[1][0], false); | ||
| 137 | oled_write_P(PSTR("\n"), false); | ||
| 138 | oled_write_P(os_logo[1][1], false); | ||
| 139 | } | ||
| 140 | |||
| 141 | // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below | ||
| 142 | int name_num; | ||
| 143 | uint32_t lstate; | ||
| 144 | oled_write_P(layer_names[current_default_layer], false); | ||
| 145 | oled_write_P(PSTR("\n"), false); | ||
| 146 | for (lstate = layer_state, name_num = 0; | ||
| 147 | lstate && name_num < sizeof(layer_names)/sizeof(char *); | ||
| 148 | lstate >>=1, name_num++) { | ||
| 149 | if ((lstate & 1) != 0) { | ||
| 150 | if (layer_names[name_num]) { | ||
| 151 | oled_write_P(layer_names[name_num], false); | ||
| 152 | } | ||
| 153 | } | ||
| 154 | } | ||
| 155 | |||
| 156 | // Host Keyboard LED Status | ||
| 157 | char led[40]; | ||
| 158 | snprintf(led, sizeof(led), "\n%s %s %s", | ||
| 159 | (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", | ||
| 160 | (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", | ||
| 161 | (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); | ||
| 162 | oled_write(led, false); | ||
| 163 | } | ||
| 164 | |||
| 165 | # ifdef SSD1306OLED | ||
| 166 | void iota_gfx_task_user(void) { | ||
| 167 | struct CharacterMatrix matrix; | ||
| 168 | |||
| 169 | # if DEBUG_TO_SCREEN | ||
| 170 | if (debug_enable) { | ||
| 171 | return; | ||
| 172 | } | ||
| 173 | # endif | ||
| 174 | |||
| 175 | matrix_clear(&matrix); | ||
| 176 | if (is_keyboard_master()) { | ||
| 177 | render_status(&matrix); | ||
| 178 | } else { | ||
| 179 | render_logo(&matrix); | ||
| 180 | } | ||
| 181 | matrix_update(&display, &matrix); | ||
| 182 | } | ||
| 183 | # else | ||
| 184 | void oled_task_user(void) { | ||
| 185 | |||
| 186 | # if DEBUG_TO_SCREEN | ||
| 187 | if (debug_enable) { | ||
| 188 | return; | ||
| 189 | } | ||
| 190 | # endif | ||
| 191 | |||
| 192 | if(is_keyboard_master()){ | ||
| 193 | render_status(); | ||
| 194 | }else{ | ||
| 195 | render_logo(); | ||
| 196 | } | ||
| 197 | } | ||
| 198 | # endif | ||
| 199 | |||
| 200 | #endif | ||
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk index 8c4239deb..83cdb30d0 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk +++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk | |||
| @@ -25,9 +25,51 @@ HELIX_ROWS = 5 # Helix Rows is 4 or 5 | |||
| 25 | # IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) | 25 | # IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) |
| 26 | 26 | ||
| 27 | ifneq ($(strip $(HELIX)),) | 27 | ifneq ($(strip $(HELIX)),) |
| 28 | ifeq ($(findstring console,$(HELIX)), console) | 28 | define KEYMAP_OPTION_PARSE |
| 29 | CONSOLE_ENABLE = yes | 29 | # $xinfo .$1.x #debug |
| 30 | endif | 30 | # parse 'dispoff', 'consle', 'stdole', 'oled', 'sc' |
| 31 | ifeq ($(strip $1),dispoff) | ||
| 32 | OLED_ENABLE = no | ||
| 33 | OLED_DRIVER_ENABLE = no | ||
| 34 | LED_BACK_ENABLE = no | ||
| 35 | LED_UNDERGLOW_ENABLE = no | ||
| 36 | endif | ||
| 37 | ifeq ($(strip $1),console) | ||
| 38 | CONSOLE_ENABLE = yes | ||
| 39 | endif | ||
| 40 | ifeq ($(strip $1),stdole) | ||
| 41 | ## make HELIX=stdole helix:five_rows -- use TOP/drivers/oled/oled_driver.c | ||
| 42 | OLED_ENABLE = new | ||
| 43 | endif | ||
| 44 | ifeq ($(strip $1),oled) | ||
| 45 | ## make HELIX=oled helix:five_rows -- use helix/local_drivers/ssd1306.c | ||
| 46 | OLED_ENABLE = yes | ||
| 47 | endif | ||
| 48 | ifeq ($(strip $1),back) | ||
| 49 | LED_BACK_ENABLE = yes | ||
| 50 | endif | ||
| 51 | ifeq ($(strip $1),sc) | ||
| 52 | SPLIT_KEYBOARD = yes | ||
| 53 | endif | ||
| 54 | endef # end of KEYMAP_OPTION_PARSE | ||
| 55 | |||
| 56 | COMMA=, | ||
| 57 | $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \ | ||
| 58 | $(call KEYMAP_OPTION_PARSE,$(A_OPTION_NAME)))) | ||
| 59 | endif | ||
| 60 | |||
| 61 | ifeq ($(strip $(OLED_ENABLE)), new) | ||
| 62 | OLED_DRIVER_ENABLE = yes | ||
| 63 | OLED_ENABLE = no | ||
| 64 | SRC += oled_display.c | ||
| 65 | ifeq ($(strip $(LOCAL_GLCDFONT)), yes) | ||
| 66 | OPT_DEFS += -DOLED_FONT_H=\<helixfont.h\> | ||
| 67 | else | ||
| 68 | OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\" | ||
| 69 | endif | ||
| 70 | endif | ||
| 71 | ifeq ($(strip $(OLED_ENABLE)), yes) | ||
| 72 | SRC += oled_display.c | ||
| 31 | endif | 73 | endif |
| 32 | 74 | ||
| 33 | # convert Helix-specific options (that represent combinations of standard options) | 75 | # convert Helix-specific options (that represent combinations of standard options) |
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h new file mode 100644 index 000000000..416e8fd7c --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | /* | ||
| 2 | This is the c configuration file for the keymap | ||
| 3 | |||
| 4 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
| 5 | Copyright 2015 Jack Humbert | ||
| 6 | Copyright 2020 mtei | ||
| 7 | |||
| 8 | This program is free software: you can redistribute it and/or modify | ||
| 9 | it under the terms of the GNU General Public License as published by | ||
| 10 | the Free Software Foundation, either version 2 of the License, or | ||
| 11 | (at your option) any later version. | ||
| 12 | |||
| 13 | This program is distributed in the hope that it will be useful, | ||
| 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | GNU General Public License for more details. | ||
| 17 | |||
| 18 | You should have received a copy of the GNU General Public License | ||
| 19 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | */ | ||
| 21 | |||
| 22 | #ifndef CONFIG_USER_H | ||
| 23 | #define CONFIG_USER_H | ||
| 24 | |||
| 25 | #undef TAPPING_TERM | ||
| 26 | #define TAPPING_TERM 300 | ||
| 27 | #define PERMISSIVE_HOLD | ||
| 28 | /* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD. | ||
| 29 | see tmk_core/common/action_tapping.c */ | ||
| 30 | |||
| 31 | // place overrides here | ||
| 32 | |||
| 33 | // If you need more program area, try select and reduce rgblight modes to use. | ||
| 34 | |||
| 35 | // Selection of RGBLIGHT MODE to use. | ||
| 36 | #if defined(LED_ANIMATIONS) | ||
| 37 | #define RGBLIGHT_EFFECT_BREATHING | ||
| 38 | #define RGBLIGHT_EFFECT_RAINBOW_MOOD | ||
| 39 | #define RGBLIGHT_EFFECT_RAINBOW_SWIRL | ||
| 40 | //#define RGBLIGHT_EFFECT_SNAKE | ||
| 41 | //#define RGBLIGHT_EFFECT_KNIGHT | ||
| 42 | #define RGBLIGHT_EFFECT_CHRISTMAS | ||
| 43 | #define RGBLIGHT_EFFECT_STATIC_GRADIENT | ||
| 44 | //#define RGBLIGHT_EFFECT_RGB_TEST | ||
| 45 | //#define RGBLIGHT_EFFECT_ALTERNATING | ||
| 46 | #endif | ||
| 47 | |||
| 48 | #endif /* CONFIG_USER_H */ | ||
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keyboard_post_init_user_scan.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keyboard_post_init_user_scan.c new file mode 100644 index 000000000..7c84e1ed8 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/keyboard_post_init_user_scan.c | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | |||
| 3 | void keyboard_post_init_user(void) { | ||
| 4 | #if defined(DEBUG_MATRIX_SCAN_RATE) | ||
| 5 | debug_enable = true; | ||
| 6 | #endif | ||
| 7 | } | ||
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c new file mode 100644 index 000000000..a2ec10862 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c | |||
| @@ -0,0 +1,468 @@ | |||
| 1 | /* Copyright 2020 mtei | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | #include "util.h" | ||
| 19 | #include "bootloader.h" | ||
| 20 | #ifdef PROTOCOL_LUFA | ||
| 21 | #include "lufa.h" | ||
| 22 | #include "split_util.h" | ||
| 23 | #endif | ||
| 24 | #ifdef CONSOLE_ENABLE | ||
| 25 | #include <print.h> | ||
| 26 | #endif | ||
| 27 | #include "layer_number.h" | ||
| 28 | |||
| 29 | extern keymap_config_t keymap_config; | ||
| 30 | |||
| 31 | extern uint8_t is_master; | ||
| 32 | |||
| 33 | enum custom_keycodes { | ||
| 34 | QWERTY = SAFE_RANGE, | ||
| 35 | COLEMAK, | ||
| 36 | DVORAK, | ||
| 37 | EUCALYN, | ||
| 38 | KEYPAD, | ||
| 39 | xEISU, | ||
| 40 | xKANA, | ||
| 41 | ZERO2, | ||
| 42 | RGBRST | ||
| 43 | }; | ||
| 44 | |||
| 45 | #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 46 | |||
| 47 | //Macros | ||
| 48 | #define KC_LOWER MO(_LOWER) | ||
| 49 | #define XXXX XXXXXXX | ||
| 50 | #define ____ _______ | ||
| 51 | #define KC_ADJ MO(_ADJUST) | ||
| 52 | #define KC_LSMI LSFT(KC_MINS) | ||
| 53 | #define KC_LSEQ LSFT(KC_EQL) | ||
| 54 | #define KC_LSRB LSFT(KC_RBRC) | ||
| 55 | #define KC_LSLB LSFT(KC_LBRC) | ||
| 56 | |||
| 57 | #define _1_2_3_4_5 KC_1, KC_2, KC_3, KC_4, KC_5 | ||
| 58 | #define _6_7_8_9_0 KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 59 | #define L_LOWER2_CAPS_LALT_LGUI_SPC_RABS \ | ||
| 60 | KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) | ||
| 61 | #define R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 62 | LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER | ||
| 63 | |||
| 64 | |||
| 65 | #if MATRIX_ROWS == 10 // HELIX_ROWS == 5 | ||
| 66 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 67 | |||
| 68 | /* Qwerty | ||
| 69 | * ,-----------------------------------. ,-----------------------------------. | ||
| 70 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | | ||
| 71 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 72 | * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | | ||
| 73 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 74 | * | Ctrl| A | S | D | F | G | | H | J | K | L | ; |Ctrl | | ||
| 75 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 76 | * |Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / |Shift| | ||
| 77 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 78 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| | ||
| 79 | * `-----------------------------------------------------------------------------------' | ||
| 80 | */ | ||
| 81 | #define _Q_W_E_R_T KC_Q, KC_W, KC_E, KC_R, KC_T | ||
| 82 | #define _Y_U_I_O_P KC_Y, KC_U, KC_I, KC_O, KC_P | ||
| 83 | #define _A_S_D_F_G KC_A, KC_S, KC_D, KC_F, KC_G | ||
| 84 | #define _H_J_K_L_SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN | ||
| 85 | #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 86 | #define _N_M_COMM_DOT_SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH | ||
| 87 | |||
| 88 | [_QWERTY] = LAYOUT_wrapper( \ | ||
| 89 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 90 | KC_TAB, _Q_W_E_R_T, _Y_U_I_O_P, KC_BSLS, \ | ||
| 91 | KC_LCTL, _A_S_D_F_G, _H_J_K_L_SCLN, KC_RCTL, \ | ||
| 92 | KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _N_M_COMM_DOT_SLSH, KC_RSFT, \ | ||
| 93 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 94 | ), | ||
| 95 | |||
| 96 | /* Colemak | ||
| 97 | * ,-----------------------------------. ,-----------------------------------. | ||
| 98 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | | ||
| 99 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 100 | * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | | ||
| 101 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 102 | * | Ctrl| A | R | S | T | D | | H | N | E | I | O |Ctrl | | ||
| 103 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 104 | * |Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / |Shift| | ||
| 105 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 106 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| | ||
| 107 | * `-----------------------------------------------------------------------------------' | ||
| 108 | */ | ||
| 109 | #define _Q_W_F_P_G KC_Q, KC_W, KC_F, KC_P, KC_G | ||
| 110 | #define _J_L_U_Y_SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN | ||
| 111 | #define _A_R_S_T_D KC_A, KC_R, KC_S, KC_T, KC_D | ||
| 112 | #define _H_N_E_I_O KC_H, KC_N, KC_E, KC_I, KC_O | ||
| 113 | #define _Z_X_C_V_B KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 114 | #define _K_M_COMM_DOT_SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH | ||
| 115 | |||
| 116 | [_COLEMAK] = LAYOUT_wrapper( \ | ||
| 117 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 118 | KC_TAB, _Q_W_F_P_G, _J_L_U_Y_SCLN, KC_BSLS, \ | ||
| 119 | KC_LCTL, _A_R_S_T_D, _H_N_E_I_O, KC_RCTL, \ | ||
| 120 | KC_LSFT, _Z_X_C_V_B, KC_GRV, KC_QUOT, _K_M_COMM_DOT_SLSH, KC_RSFT, \ | ||
| 121 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 122 | ), | ||
| 123 | |||
| 124 | /* Dvorak | ||
| 125 | * ,-----------------------------------. ,-----------------------------------. | ||
| 126 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | | ||
| 127 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 128 | * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | | ||
| 129 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 130 | * | Ctrl| A | O | E | U | I | | D | H | T | N | S |Ctrl | | ||
| 131 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 132 | * |Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z |Shift| | ||
| 133 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 134 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| | ||
| 135 | * `-----------------------------------------------------------------------------------' | ||
| 136 | */ | ||
| 137 | #define _QUOT_COMM_DOT_P_Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y | ||
| 138 | #define _F_G_C_R_L KC_F, KC_G, KC_C, KC_R, KC_L | ||
| 139 | #define _A_O_E_U_I KC_A, KC_O, KC_E, KC_U, KC_I | ||
| 140 | #define _D_H_T_N_S KC_D, KC_H, KC_T, KC_N, KC_S | ||
| 141 | #define _SCLN_Q_J_K_X KC_SCLN, KC_Q, KC_J, KC_K, KC_X | ||
| 142 | #define _B_M_W_V_Z KC_B, KC_M, KC_W, KC_V, KC_Z | ||
| 143 | |||
| 144 | [_DVORAK] = LAYOUT_wrapper( \ | ||
| 145 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 146 | KC_TAB, _QUOT_COMM_DOT_P_Y, _F_G_C_R_L, KC_BSLS, \ | ||
| 147 | KC_LCTL, _A_O_E_U_I, _D_H_T_N_S, KC_RCTL, \ | ||
| 148 | KC_LSFT, _SCLN_Q_J_K_X, KC_GRV, KC_SLSH, _B_M_W_V_Z, KC_RSFT, \ | ||
| 149 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 150 | ), | ||
| 151 | |||
| 152 | /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) | ||
| 153 | * ,-----------------------------------. ,-----------------------------------. | ||
| 154 | * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | | ||
| 155 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 156 | * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | | ||
| 157 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 158 | * | Ctrl| A | O | E | I | U | | G | T | K | S | N |Ctrl | | ||
| 159 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 160 | * |Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / |Shift| | ||
| 161 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 162 | * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| | ||
| 163 | * `-----------------------------------------------------------------------------------' | ||
| 164 | */ | ||
| 165 | #define _Q_W_COMM_DOT_SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN | ||
| 166 | #define _M_R_D_Y_P KC_M, KC_R, KC_D, KC_Y, KC_P | ||
| 167 | #define _A_O_E_I_U KC_A, KC_O, KC_E, KC_I, KC_U | ||
| 168 | #define _G_T_K_S_N KC_G, KC_T, KC_K, KC_S, KC_N | ||
| 169 | #define _Z_X_C_V_F KC_Z, KC_X, KC_C, KC_V, KC_F | ||
| 170 | #define _B_H_J_L_SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH | ||
| 171 | |||
| 172 | [_EUCALYN] = LAYOUT_wrapper( \ | ||
| 173 | KC_ESC, _1_2_3_4_5, _6_7_8_9_0, KC_BSPC, \ | ||
| 174 | KC_TAB, _Q_W_COMM_DOT_SCLN, _M_R_D_Y_P, KC_BSLS, \ | ||
| 175 | KC_LCTL, _A_O_E_I_U, _G_T_K_S_N, KC_RCTL, \ | ||
| 176 | KC_LSFT, _Z_X_C_V_F, KC_GRV, KC_QUOT, _B_H_J_L_SLSH, KC_RSFT, \ | ||
| 177 | L_LOWER2_CAPS_LALT_LGUI_SPC_RABS, R_RAEN_SPC_RGUI_RALT_APP_LOWER2 \ | ||
| 178 | ), | ||
| 179 | |||
| 180 | /* Keypad | ||
| 181 | * ,-----------------------------------. ,-----------------------------------. | ||
| 182 | * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | | ||
| 183 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 184 | * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | | ||
| 185 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 186 | * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 | | ||
| 187 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 188 | * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 | | ||
| 189 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 190 | * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | | ||
| 191 | * `-----------------------------------------------------------------------------------' | ||
| 192 | */ | ||
| 193 | #define KP_TOP KC_TAB, KC_PSLS, KC_PAST | ||
| 194 | #define KP_789 KC_KP_7, KC_KP_8, KC_KP_9 | ||
| 195 | #define KP_456 KC_KP_4, KC_KP_5, KC_KP_6 | ||
| 196 | #define KP_123 KC_KP_1, KC_KP_2, KC_KP_3 | ||
| 197 | #define KP_BTM KC_KP_0, KC_COMM, KC_PDOT | ||
| 198 | #define F_1_6 KC_F1, KC_F6 | ||
| 199 | #define F_2_7 KC_F2, KC_F7 | ||
| 200 | #define F_3_8 KC_F3, KC_F8 | ||
| 201 | #define F_4_9 KC_F4, KC_F9 | ||
| 202 | #define F_510 KC_F5, KC_F10 | ||
| 203 | #define FF12 LT(_PADFUNC,KC_F12) | ||
| 204 | |||
| 205 | [_KEYPAD] = LAYOUT_wrapper( \ | ||
| 206 | KP_TOP, KC_DEL, F_1_6, F_1_6, KC_DEL, KP_TOP, \ | ||
| 207 | KP_789, KC_BSPC, F_2_7, F_2_7, KC_BSPC, KP_789, \ | ||
| 208 | KP_456, KC_PMNS, F_3_8, F_3_8, KC_PMNS, KP_456, \ | ||
| 209 | KP_123, KC_PPLS, F_4_9, KC_F11, KC_F11, F_4_9, KC_PPLS, KP_123, \ | ||
| 210 | KP_BTM, KC_PENT, F_510, FF12, FF12, F_510, KC_PENT, KP_BTM \ | ||
| 211 | ), | ||
| 212 | |||
| 213 | /* AUX modifier key layer | ||
| 214 | * ,-----------------------------------. ,-----------------------------------. | ||
| 215 | * | | | | | | | | | | | | | | | ||
| 216 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 217 | * | | | | | | | | | | | | | | | ||
| 218 | * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| | ||
| 219 | * | | | | | | | | | | | | | | | ||
| 220 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 221 | * | | | | | | | | | | | | | | | | ||
| 222 | * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| | ||
| 223 | * | | 00 | | | | | | | | | | | 00 | | | ||
| 224 | * `-----------------------------------------------------------------------------------' | ||
| 225 | */ | ||
| 226 | [_KAUX] = LAYOUT( \ | ||
| 227 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 228 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 229 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 230 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 231 | ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ \ | ||
| 232 | ), | ||
| 233 | |||
| 234 | /* Keypad function layer | ||
| 235 | * ,-----------------------------------------. ,-----------------------------------------. | ||
| 236 | * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | | ||
| 237 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 238 | * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | | ||
| 239 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 240 | * | |Delete|Insert| Left | Down | Right| | Left | Down | Right|Insert|Delete| | | ||
| 241 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 242 | * | | | | End | | PgDn |Adjust|Adjust| PgDn | | End | | | | | ||
| 243 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 244 | * | | | | | | | | | | | | | | | | ||
| 245 | * `-------------------------------------------------------------------------------------------------' | ||
| 246 | */ | ||
| 247 | #define _PAUS_SLCK_PSCR KC_PAUS, KC_SLCK, KC_PSCR | ||
| 248 | #define _PSCR_SLCK_PAUS KC_PSCR, KC_SLCK, KC_PAUS | ||
| 249 | #define _HOME_UP_PGUP KC_HOME, KC_UP, KC_PGUP | ||
| 250 | #define _PGUP_UP_HOME KC_PGUP, KC_UP, KC_HOME | ||
| 251 | #define _DEL_INS_LEFT_DOWN_RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT | ||
| 252 | #define _LEFT_DOWN_RGHT_INS_DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL | ||
| 253 | #define _PGDN_ADJ_ADJ_PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN | ||
| 254 | |||
| 255 | [_PADFUNC] = LAYOUT_wrapper( \ | ||
| 256 | XXXX, XXXX, XXXX, _PAUS_SLCK_PSCR, _PSCR_SLCK_PAUS, XXXX, XXXX, XXXX, \ | ||
| 257 | XXXX, XXXX, XXXX, _HOME_UP_PGUP, _PGUP_UP_HOME, XXXX, XXXX, XXXX, \ | ||
| 258 | XXXX, _DEL_INS_LEFT_DOWN_RGHT, _LEFT_DOWN_RGHT_INS_DEL, XXXX, \ | ||
| 259 | XXXX, XXXX, XXXX, KC_END, XXXX, _PGDN_ADJ_ADJ_PGDN, XXXX, KC_END, XXXX, XXXX, XXXX, \ | ||
| 260 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \ | ||
| 261 | ), | ||
| 262 | |||
| 263 | /* Lower | ||
| 264 | * ,-----------------------------------------. ,-----------------------------------------. | ||
| 265 | * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | | ||
| 266 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 267 | * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | | ||
| 268 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 269 | * | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | | | ||
| 270 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 271 | * | | PgDn | Left | Down | Right| End |Adjust|Adjust| End | Left | Down | Right| PgDn | | | ||
| 272 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 273 | * | | | PrtSc| | | | | | | | | PrtSc| | | | ||
| 274 | * `-------------------------------------------------------------------------------------------------' | ||
| 275 | */ | ||
| 276 | #define _F1_F2_F3_F4_F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 | ||
| 277 | #define _F6_F7_F8_F9_F10_F11 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 | ||
| 278 | #define _PAUS_SLCK_INS KC_PAUS, KC_SLCK, KC_INS | ||
| 279 | #define _INS_SLCK_PAUS KC_INS, KC_SLCK, KC_PAUS | ||
| 280 | #define _ADJ_ADJ KC_ADJ, KC_ADJ | ||
| 281 | #define _UP_DEL_PGUP KC_UP, KC_DEL, KC_PGUP | ||
| 282 | #define _PGUP_DEL_UP KC_PGUP, KC_DEL, KC_UP | ||
| 283 | #define _END_LEFT_DOWN_RGHT_PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN | ||
| 284 | #define _PGDN_LEFT_DOWN_RGHT_END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END | ||
| 285 | |||
| 286 | [_LOWER] = LAYOUT_wrapper( \ | ||
| 287 | XXXX, _F1_F2_F3_F4_F5, _F6_F7_F8_F9_F10_F11, \ | ||
| 288 | XXXX, XXXX, _PAUS_SLCK_INS, XXXX, XXXX, _INS_SLCK_PAUS, XXXX, KC_F12, \ | ||
| 289 | ____, KC_HOME, XXXX, _UP_DEL_PGUP, _PGUP_DEL_UP, XXXX, KC_HOME, ____, \ | ||
| 290 | ____, _END_LEFT_DOWN_RGHT_PGDN, XXXX, XXXX, _PGDN_LEFT_DOWN_RGHT_END, ____, \ | ||
| 291 | ____, ____, KC_PSCR, ____, ____, ____, _ADJ_ADJ, ____, ____, ____, KC_PSCR, ____, ____ \ | ||
| 292 | ), | ||
| 293 | |||
| 294 | /* Raise | ||
| 295 | * ,-----------------------------------------. ,-----------------------------------------. | ||
| 296 | * | | | | | | | | | | | | | | | ||
| 297 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 298 | * | | | | | _ | - | | = | + | | | | | | ||
| 299 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 300 | * | | | | | { | [ | | ] | } | | | | | | ||
| 301 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 302 | * | | | | | | EISU | EISU | KANA | KANA | Next | Vol- | Vol+ | Play | | | ||
| 303 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 304 | * | | | | | | | | | | | | | | | | ||
| 305 | * `-------------------------------------------------------------------------------------------------' | ||
| 306 | */ | ||
| 307 | #define _LSMI_MINS KC_LSMI, KC_MINS | ||
| 308 | #define _EQL_LSEQ KC_EQL, KC_LSEQ | ||
| 309 | #define _LSLB_LBRC KC_LSLB, KC_LBRC | ||
| 310 | #define _RBRC_LSRB KC_RBRC, KC_LSRB | ||
| 311 | #define _MNXT_VOLD_VOLU_MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||
| 312 | |||
| 313 | [_RAISE] = LAYOUT_wrapper( \ | ||
| 314 | XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \ | ||
| 315 | XXXX, XXXX, XXXX, XXXX, _LSMI_MINS, _EQL_LSEQ, XXXX, XXXX, XXXX, XXXX, \ | ||
| 316 | ____, XXXX, XXXX, XXXX, _LSLB_LBRC, _RBRC_LSRB, XXXX, XXXX, XXXX, ____, \ | ||
| 317 | ____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA, _MNXT_VOLD_VOLU_MPLY, ____, \ | ||
| 318 | _ADJ_ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, _ADJ_ADJ \ | ||
| 319 | ), | ||
| 320 | |||
| 321 | /* Adjust (Lower + Raise) | ||
| 322 | * ,-----------------------------------------. ,-----------------------------------------. | ||
| 323 | * | |Keypad|Dvorak|Colemk|Euclyn|Qwerty| |Qwerty|Euclyn|Colemk|Dvorak|Keypad| | | ||
| 324 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 325 | * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win |Aud on|RGB ON|RGBRST| | | | ||
| 326 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 327 | * | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac |Audoff|RGB md| VAL+ | SAT+ | HUE+ | | ||
| 328 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 329 | * | HUE- | SAT- | VAL- | | | | | | | | | VAL- | SAT- | HUE- | | ||
| 330 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 331 | * | | | | | | | | | | | | | | | | ||
| 332 | * `-------------------------------------------------------------------------------------------------' | ||
| 333 | */ | ||
| 334 | [_ADJUST] = LAYOUT( \ | ||
| 335 | XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \ | ||
| 336 | XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \ | ||
| 337 | RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \ | ||
| 338 | RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \ | ||
| 339 | _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \ | ||
| 340 | ), | ||
| 341 | |||
| 342 | /* AUX modifier key layer | ||
| 343 | * ,-----------------------------------------. ,-----------------------------------------. | ||
| 344 | * | | | | | | | | | | | | | | | ||
| 345 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 346 | * | | | | | | | | | | | | | | | ||
| 347 | * |------+------+------+------+------+------| |------+------+------+------+------+------| | ||
| 348 | * | | | | | | | | | | | | | | | ||
| 349 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 350 | * | | | | | | | | | | | | | | | | ||
| 351 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 352 | * | | | | | | BS | Enter| | | | | | | | | ||
| 353 | * `-------------------------------------------------------------------------------------------------' | ||
| 354 | */ | ||
| 355 | #define _BSPC_RAEN KC_BSPC, LT(_RAISE,KC_ENT) | ||
| 356 | [_AUX] = LAYOUT_wrapper( \ | ||
| 357 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 358 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 359 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 360 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ | ||
| 361 | ____, ____, ____, ____, ____, _BSPC_RAEN, ____, ____, ____, ____, ____, ____, ____ \ | ||
| 362 | ) | ||
| 363 | }; | ||
| 364 | |||
| 365 | #else | ||
| 366 | #error "undefined keymaps" | ||
| 367 | #endif | ||
| 368 | |||
| 369 | |||
| 370 | int current_default_layer; | ||
| 371 | |||
| 372 | uint32_t default_layer_state_set_user(uint32_t state) { | ||
| 373 | current_default_layer = biton32(state); | ||
| 374 | return state; | ||
| 375 | } | ||
| 376 | |||
| 377 | void update_base_layer(int base) | ||
| 378 | { | ||
| 379 | if( current_default_layer != base ) { | ||
| 380 | eeconfig_update_default_layer(1UL<<base); | ||
| 381 | default_layer_set(1UL<<base); | ||
| 382 | layer_off(_AUX); | ||
| 383 | layer_off(_KAUX); | ||
| 384 | } else { | ||
| 385 | if( base < _KEYPAD ) | ||
| 386 | layer_invert(_AUX); | ||
| 387 | else | ||
| 388 | layer_invert(_KAUX); | ||
| 389 | } | ||
| 390 | } | ||
| 391 | |||
| 392 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 393 | switch (keycode) { | ||
| 394 | case QWERTY: | ||
| 395 | if (record->event.pressed) { | ||
| 396 | update_base_layer(_QWERTY); | ||
| 397 | } | ||
| 398 | return false; | ||
| 399 | break; | ||
| 400 | case COLEMAK: | ||
| 401 | if (record->event.pressed) { | ||
| 402 | update_base_layer(_COLEMAK); | ||
| 403 | } | ||
| 404 | return false; | ||
| 405 | break; | ||
| 406 | case DVORAK: | ||
| 407 | if (record->event.pressed) { | ||
| 408 | update_base_layer(_DVORAK); | ||
| 409 | } | ||
| 410 | return false; | ||
| 411 | break; | ||
| 412 | case EUCALYN: | ||
| 413 | if (record->event.pressed) { | ||
| 414 | update_base_layer(_EUCALYN); | ||
| 415 | } | ||
| 416 | return false; | ||
| 417 | break; | ||
| 418 | case KEYPAD: | ||
| 419 | if (record->event.pressed) { | ||
| 420 | update_base_layer(_KEYPAD); | ||
| 421 | } | ||
| 422 | return false; | ||
| 423 | break; | ||
| 424 | case ZERO2: | ||
| 425 | if (record->event.pressed) { | ||
| 426 | SEND_STRING("00"); | ||
| 427 | } | ||
| 428 | return false; | ||
| 429 | break; | ||
| 430 | case xEISU: | ||
| 431 | if (record->event.pressed) { | ||
| 432 | if(keymap_config.swap_lalt_lgui==false){ | ||
| 433 | register_code(KC_LANG2); | ||
| 434 | }else{ | ||
| 435 | SEND_STRING(SS_LALT("`")); | ||
| 436 | } | ||
| 437 | } else { | ||
| 438 | unregister_code(KC_LANG2); | ||
| 439 | } | ||
| 440 | return false; | ||
| 441 | break; | ||
| 442 | case xKANA: | ||
| 443 | if (record->event.pressed) { | ||
| 444 | if(keymap_config.swap_lalt_lgui==false){ | ||
| 445 | register_code(KC_LANG1); | ||
| 446 | }else{ | ||
| 447 | SEND_STRING(SS_LALT("`")); | ||
| 448 | } | ||
| 449 | } else { | ||
| 450 | unregister_code(KC_LANG1); | ||
| 451 | } | ||
| 452 | return false; | ||
| 453 | break; | ||
| 454 | case RGBRST: | ||
| 455 | #ifdef RGBLIGHT_ENABLE | ||
| 456 | if (record->event.pressed) { | ||
| 457 | eeconfig_update_rgblight_default(); | ||
| 458 | rgblight_enable(); | ||
| 459 | } | ||
| 460 | #endif | ||
| 461 | break; | ||
| 462 | } | ||
| 463 | return true; | ||
| 464 | } | ||
| 465 | |||
| 466 | void matrix_init_user(void) { | ||
| 467 | INIT_HELIX_OLED(); /* define in layer_number.h */ | ||
| 468 | } | ||
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/layer_number.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/layer_number.h new file mode 100644 index 000000000..1272feba4 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/layer_number.h | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 6 | // entirely and just use numbers. | ||
| 7 | enum layer_number { | ||
| 8 | _QWERTY = 0, | ||
| 9 | _COLEMAK, | ||
| 10 | _DVORAK, | ||
| 11 | _EUCALYN, | ||
| 12 | _KEYPAD, | ||
| 13 | _AUX, | ||
| 14 | _KAUX, | ||
| 15 | _LOWER, | ||
| 16 | _RAISE, | ||
| 17 | _PADFUNC, | ||
| 18 | _ADJUST, | ||
| 19 | }; | ||
| 20 | |||
| 21 | #if defined(SSD1306OLED) | ||
| 22 | extern void init_helix_oled(void); | ||
| 23 | # define INIT_HELIX_OLED() init_helix_oled(); | ||
| 24 | #else | ||
| 25 | # define INIT_HELIX_OLED() | ||
| 26 | #endif | ||
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c new file mode 100644 index 000000000..c1f039e5b --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c | |||
| @@ -0,0 +1,200 @@ | |||
| 1 | /* Copyright 2020 mtei | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | #include <stdio.h> | ||
| 19 | #ifdef CONSOLE_ENABLE | ||
| 20 | #include <print.h> | ||
| 21 | #endif | ||
| 22 | #ifdef SSD1306OLED | ||
| 23 | #include "ssd1306.h" | ||
| 24 | #endif | ||
| 25 | #include "string.h" | ||
| 26 | #include "layer_number.h" | ||
| 27 | |||
| 28 | extern int current_default_layer; | ||
| 29 | |||
| 30 | void init_helix_oled(void) { | ||
| 31 | #ifdef SSD1306OLED | ||
| 32 | //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h | ||
| 33 | iota_gfx_init(!has_usb()); // turns on the display | ||
| 34 | #endif | ||
| 35 | } | ||
| 36 | |||
| 37 | //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h | ||
| 38 | #if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE) | ||
| 39 | |||
| 40 | # if defined(OLED_DRIVER_ENABLE) | ||
| 41 | oled_rotation_t oled_init_user(oled_rotation_t rotation) { | ||
| 42 | if (is_keyboard_master()) { | ||
| 43 | return OLED_ROTATION_0; | ||
| 44 | } else { | ||
| 45 | return OLED_ROTATION_180; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | # else | ||
| 49 | # define oled_write(data,flag) matrix_write(matrix, data) | ||
| 50 | # define oled_write_P(data,flag) matrix_write_P(matrix, data) | ||
| 51 | # endif | ||
| 52 | |||
| 53 | # ifdef SSD1306OLED | ||
| 54 | void matrix_scan_user(void) { | ||
| 55 | iota_gfx_task(); // this is what updates the display continuously | ||
| 56 | } | ||
| 57 | |||
| 58 | void matrix_update(struct CharacterMatrix *dest, | ||
| 59 | const struct CharacterMatrix *source) { | ||
| 60 | if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
| 61 | memcpy(dest->display, source->display, sizeof(dest->display)); | ||
| 62 | dest->dirty = true; | ||
| 63 | } | ||
| 64 | } | ||
| 65 | # endif | ||
| 66 | |||
| 67 | # ifdef SSD1306OLED | ||
| 68 | static void render_logo(struct CharacterMatrix *matrix) { | ||
| 69 | # else | ||
| 70 | static void render_logo(void) { | ||
| 71 | # endif | ||
| 72 | |||
| 73 | static const char helix_logo[] PROGMEM = { | ||
| 74 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | ||
| 75 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | ||
| 76 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, | ||
| 77 | 0}; | ||
| 78 | oled_write_P(helix_logo, false); | ||
| 79 | # ifdef RGBLIGHT_ENABLE | ||
| 80 | char buf[30]; | ||
| 81 | if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { | ||
| 82 | snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", | ||
| 83 | rgblight_get_mode(), | ||
| 84 | rgblight_get_hue()/RGBLIGHT_HUE_STEP, | ||
| 85 | rgblight_get_sat()/RGBLIGHT_SAT_STEP, | ||
| 86 | rgblight_get_val()/RGBLIGHT_VAL_STEP); | ||
| 87 | oled_write(buf, false); | ||
| 88 | # ifndef SSD1306OLED | ||
| 89 | } else { | ||
| 90 | oled_write_P( PSTR("\n"), false); | ||
| 91 | # endif | ||
| 92 | } | ||
| 93 | # endif | ||
| 94 | } | ||
| 95 | |||
| 96 | static const char Qwerty_name[] PROGMEM = " Qwerty"; | ||
| 97 | static const char Colemak_name[] PROGMEM = " Colemak"; | ||
| 98 | static const char Dvorak_name[] PROGMEM = " Dvorak"; | ||
| 99 | static const char Eucalyn_name[] PROGMEM = " Eucalyn"; | ||
| 100 | static const char Keypad_name[] PROGMEM = " Keypad"; | ||
| 101 | |||
| 102 | static const char AUX_name[] PROGMEM = ":AUX"; | ||
| 103 | static const char KAUX_name[] PROGMEM = ":00"; | ||
| 104 | static const char Padfunc_name[] PROGMEM = ":PadFunc"; | ||
| 105 | static const char Lower_name[] PROGMEM = ":Func"; | ||
| 106 | static const char Raise_name[] PROGMEM = ":Extra"; | ||
| 107 | static const char Adjust_name[] PROGMEM = ":Adjust"; | ||
| 108 | |||
| 109 | static const char *layer_names[] = { | ||
| 110 | [_QWERTY] = Qwerty_name, | ||
| 111 | [_COLEMAK] = Colemak_name, | ||
| 112 | [_DVORAK] = Dvorak_name, | ||
| 113 | [_EUCALYN]= Eucalyn_name, | ||
| 114 | [_KEYPAD] = Keypad_name, | ||
| 115 | [_AUX] = AUX_name, | ||
| 116 | [_KAUX] = KAUX_name, | ||
| 117 | [_LOWER] = Lower_name, | ||
| 118 | [_RAISE] = Raise_name, | ||
| 119 | [_PADFUNC]= Padfunc_name, | ||
| 120 | [_ADJUST] = Adjust_name | ||
| 121 | }; | ||
| 122 | |||
| 123 | # ifdef SSD1306OLED | ||
| 124 | void render_status(struct CharacterMatrix *matrix) { | ||
| 125 | # else | ||
| 126 | void render_status(void) { | ||
| 127 | # endif | ||
| 128 | |||
| 129 | // Render to mode icon | ||
| 130 | static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; | ||
| 131 | if(keymap_config.swap_lalt_lgui==false){ | ||
| 132 | oled_write_P(os_logo[0][0], false); | ||
| 133 | oled_write_P(PSTR("\n"), false); | ||
| 134 | oled_write_P(os_logo[0][1], false); | ||
| 135 | } else { | ||
| 136 | oled_write_P(os_logo[1][0], false); | ||
| 137 | oled_write_P(PSTR("\n"), false); | ||
| 138 | oled_write_P(os_logo[1][1], false); | ||
| 139 | } | ||
| 140 | |||
| 141 | // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below | ||
| 142 | int name_num; | ||
| 143 | uint32_t lstate; | ||
| 144 | oled_write_P(layer_names[current_default_layer], false); | ||
| 145 | oled_write_P(PSTR("\n"), false); | ||
| 146 | for (lstate = layer_state, name_num = 0; | ||
| 147 | lstate && name_num < sizeof(layer_names)/sizeof(char *); | ||
| 148 | lstate >>=1, name_num++) { | ||
| 149 | if ((lstate & 1) != 0) { | ||
| 150 | if (layer_names[name_num]) { | ||
| 151 | oled_write_P(layer_names[name_num], false); | ||
| 152 | } | ||
| 153 | } | ||
| 154 | } | ||
| 155 | |||
| 156 | // Host Keyboard LED Status | ||
| 157 | char led[40]; | ||
| 158 | snprintf(led, sizeof(led), "\n%s %s %s", | ||
| 159 | (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ", | ||
| 160 | (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ", | ||
| 161 | (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " "); | ||
| 162 | oled_write(led, false); | ||
| 163 | } | ||
| 164 | |||
| 165 | # ifdef SSD1306OLED | ||
| 166 | void iota_gfx_task_user(void) { | ||
| 167 | struct CharacterMatrix matrix; | ||
| 168 | |||
| 169 | # if DEBUG_TO_SCREEN | ||
| 170 | if (debug_enable) { | ||
| 171 | return; | ||
| 172 | } | ||
| 173 | # endif | ||
| 174 | |||
| 175 | matrix_clear(&matrix); | ||
| 176 | if (is_keyboard_master()) { | ||
| 177 | render_status(&matrix); | ||
| 178 | } else { | ||
| 179 | render_logo(&matrix); | ||
| 180 | } | ||
| 181 | matrix_update(&display, &matrix); | ||
| 182 | } | ||
| 183 | # else | ||
| 184 | void oled_task_user(void) { | ||
| 185 | |||
| 186 | # if DEBUG_TO_SCREEN | ||
| 187 | if (debug_enable) { | ||
| 188 | return; | ||
| 189 | } | ||
| 190 | # endif | ||
| 191 | |||
| 192 | if(is_keyboard_master()){ | ||
| 193 | render_status(); | ||
| 194 | }else{ | ||
| 195 | render_logo(); | ||
| 196 | } | ||
| 197 | } | ||
| 198 | # endif | ||
| 199 | |||
| 200 | #endif | ||
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk b/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk new file mode 100644 index 000000000..21261fa20 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | # QMK Standard Build Options | ||
| 2 | # change to "no" to disable the options, or define them in the Makefile in | ||
| 3 | # the appropriate keymap folder that will get included automatically | ||
| 4 | # | ||
| 5 | # See TOP/docs/config_options.md for more information. | ||
| 6 | # | ||
| 7 | CONSOLE_ENABLE = no # Console for debug | ||
| 8 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 9 | # CONSOLE_ENABLE and COMMAND_ENABLE | ||
| 10 | # yes, no +1500 | ||
| 11 | # yes, yes +3200 | ||
| 12 | # no, yes +400 | ||
| 13 | LTO_ENABLE = no # if firmware size over limit, try this option | ||
| 14 | |||
| 15 | ifneq ($(strip $(HELIX)),) | ||
| 16 | define KEYMAP_OPTION_PARSE | ||
| 17 | # $xinfo .$1.x #debug | ||
| 18 | # parse 'dispoff', 'consle', 'back', 'oled' | ||
| 19 | ifeq ($(strip $1),dispoff) | ||
| 20 | OLED_DRIVER_ENABLE = no | ||
| 21 | RGBLIGHT_ENABLE = no | ||
| 22 | endif | ||
| 23 | ifeq ($(strip $1),console) | ||
| 24 | CONSOLE_ENABLE = yes | ||
| 25 | endif | ||
| 26 | ifeq ($(strip $1),oled) | ||
| 27 | OLED_DRIVER_ENABLE = yes | ||
| 28 | endif | ||
| 29 | ifeq ($(strip $1),back) | ||
| 30 | RGBLIGHT_ENABLE = yes | ||
| 31 | endif | ||
| 32 | ifeq ($(strip $1),scan) | ||
| 33 | # use DEBUG_MATRIX_SCAN_RATE | ||
| 34 | # see docs/newbs_testing_debugging.md | ||
| 35 | OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE | ||
| 36 | CONSOLE_ENABLE = yes | ||
| 37 | SRC += keyboard_post_init_user_scan.c | ||
| 38 | endif | ||
| 39 | endef # end of KEYMAP_OPTION_PARSE | ||
| 40 | |||
| 41 | COMMA=, | ||
| 42 | $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \ | ||
| 43 | $(call KEYMAP_OPTION_PARSE,$(A_OPTION_NAME)))) | ||
| 44 | endif | ||
