Manual user keymap removal (#23104)
This commit is contained in:
		
							parent
							
								
									db1df185c9
								
							
						
					
					
						commit
						e26e12402b
					
				| @ -1,11 +0,0 @@ | |||||||
| // List any combo dictionaries you want loaded to your device below! |  | ||||||
| 
 |  | ||||||
| // QMK wide includes |  | ||||||
| //#include "combos/germ-vim-helpers.def" |  | ||||||
| #include "combos/germ-mouse-keys.def" |  | ||||||
| 
 |  | ||||||
| // User includes |  | ||||||
| #include "gergoplex.def" |  | ||||||
| 
 |  | ||||||
| // Word completion |  | ||||||
| // #include "combos/eng-combos.def" |  | ||||||
| @ -1,31 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| // Copy and worked on with love from the EZ team
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define HOLD_ON_OTHER_KEY_PRESS_PER_KEY |  | ||||||
| 
 |  | ||||||
| #undef DEBOUNCE |  | ||||||
| #define DEBOUNCE 25 |  | ||||||
| 
 |  | ||||||
| #define COMBO_ALLOW_ACTION_KEYS |  | ||||||
| #define COMBO_VARIABLE_LEN |  | ||||||
| 
 |  | ||||||
| #define TAPPING_TERM_PER_KEY |  | ||||||
| @ -1,7 +0,0 @@ | |||||||
| // Gergoplex specfic combos |  | ||||||
| 
 |  | ||||||
| COMB(hjEnt,         KC_ENT,         KC_H, KC_J) |  | ||||||
| COMB(loDel,         KC_DEL,         KC_L, KC_O) |  | ||||||
| COMB(pscBspace,     KC_BSPC,        KC_P, KC_SCLN) |  | ||||||
| COMB(sdEsc,         KC_ESC,         KC_D, KC_F) |  | ||||||
| COMB(fgEsc,         KC_ESC,         KC_F, KC_G) |  | ||||||
| @ -1,212 +0,0 @@ | |||||||
| /* Copyright 2021 Jane Bernhardt
 |  | ||||||
|   * |  | ||||||
|   * This program is free software: you can redistribute it and/or modify |  | ||||||
|   * it under the terms of the GNU General Public License as published by |  | ||||||
|   * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|   * (at your option) any later version. |  | ||||||
|   * |  | ||||||
|   * This program is distributed in the hope that it will be useful, |  | ||||||
|   * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|   * GNU General Public License for more details. |  | ||||||
|   * |  | ||||||
|   * You should have received a copy of the GNU General Public License |  | ||||||
|   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|   */ |  | ||||||
| 
 |  | ||||||
| /* Good on you for modifying your layout! if you don't have
 |  | ||||||
|  * time to read the QMK docs, a list of keycodes can be found at |  | ||||||
|  * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "g/keymap_combo.h" |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     _ALPHA,   // default
 |  | ||||||
|     _GAME,    // gaming
 |  | ||||||
|     _SPECIAL, // special characters
 |  | ||||||
|     _NUMBERS  // numbers/function/motion
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| typedef enum { |  | ||||||
|     TD_NONE, |  | ||||||
|     TD_UNKNOWN, |  | ||||||
|     TD_SINGLE_TAP, |  | ||||||
|     TD_DOUBLE_TAP, |  | ||||||
|     TD_TRIPLE_TAP |  | ||||||
| } td_state_t; |  | ||||||
| 
 |  | ||||||
| typedef struct { |  | ||||||
|     bool is_press_action; |  | ||||||
|     td_state_t state; |  | ||||||
| } td_tap_t; |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     GAME |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| td_state_t cur_dance(tap_dance_state_t *state); |  | ||||||
| 
 |  | ||||||
| void ql_finished(tap_dance_state_t *state, void *user_data); |  | ||||||
| void ql_reset(tap_dance_state_t *state, void *user_data); |  | ||||||
| 
 |  | ||||||
| #define KC_CTL_A  MT(MOD_LCTL, KC_A)     // Tap for A, hold for Control
 |  | ||||||
| #define KC_SFT_Z  MT(MOD_RSFT, KC_Z)     // Tap for Z, hold for Shift
 |  | ||||||
| #define KC_SFT_SL MT(MOD_RSFT, KC_SLSH)  // Tap for slash, hold for Shift
 |  | ||||||
| #define KC_SPE_SPC LT(_SPECIAL, KC_SPC)  // Tap for Space, hold for Special layer
 |  | ||||||
| #define KC_NUM_SPC LT(_NUMBERS, KC_SPC)  // Tap for Space, hold for Numbers layer
 |  | ||||||
| 
 |  | ||||||
|     /* Combomap
 |  | ||||||
|      * |  | ||||||
|      * ,-------------------------------.      ,-------------------------------. |  | ||||||
|      * |       |     |     |     |     |      |     |     |     |     |       | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-DEL-+-BSPC--| |  | ||||||
|      * |       |     |    ESC   ESC    |      |    ENT    |     |     |       | |  | ||||||
|      * |-------+-----+-----+-RMB-+-LMB-|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |       |     |     |     |     |      |     |     |     |     |       | |  | ||||||
|      * `-------------------------------'      `-------------------------------' |  | ||||||
|      *            .-----------------.            .-----------------. |  | ||||||
|      *            |     |     |     |            |     |     |     | |  | ||||||
|      *            '-----------------'            '-----------------' |  | ||||||
|      */ |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Alpha layer
 |  | ||||||
|      * |  | ||||||
|      * ,-------------------------------.      ,-------------------------------. |  | ||||||
|      * |     Q |  W  |  E  |  R  |  T  |      |  Y  |  U  |  I  |  O  |   P   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * | CTRL A|  S  |  D  |  F  |  G  |      |  H  |  J  |  K  |  L  |   ;   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * | SHFT Z|  X  |  C  |  V  |  B  |      |  N  |  M  |  ,  |  .  |SHFT / | |  | ||||||
|      * `-------------------------------'      `-------------------------------' |  | ||||||
|      *       .----------------------.           .----------------------. |  | ||||||
|      *       | META | ALT | SPC SPE |           | SPC NUM | TAB | SHFT | |  | ||||||
|      *       '----------------------'           '----------------------' |  | ||||||
|      */ |  | ||||||
|     [_ALPHA] = LAYOUT_split_3x5_3( |  | ||||||
|          KC_Q,     KC_W,   KC_E,   KC_R,   KC_T,          KC_Y,   KC_U,   KC_I,     KC_O,   KC_P, |  | ||||||
|          KC_CTL_A, KC_S,   KC_D,   KC_F,   KC_G,          KC_H,   KC_J,   KC_K,     KC_L,   KC_SCLN, |  | ||||||
|          KC_SFT_Z, KC_X,   KC_C,   KC_V,   KC_B,          KC_N,   KC_M,   TD(GAME), KC_DOT, KC_SFT_SL, |  | ||||||
|                    KC_LGUI, KC_LALT, KC_SPE_SPC,          KC_NUM_SPC, KC_TAB, KC_RSFT), |  | ||||||
| 
 |  | ||||||
|     /* Gaming layer
 |  | ||||||
|      * |  | ||||||
|      * ,-------------------------------.      ,-------------------------------. |  | ||||||
|      * |   ~   |  Q  |  W  |  E  |  R  |      |  Y  |  U  |  I  |  O  |   P   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |  CTRL |  A  |  S  |  D  |  F  |      |  H  |  J  |  K  |  L  |   ;   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |  SHFT |  Z  |  X  |  C  |  V  |      |  N  |  M  |  ,  |  .  |SHFT / | |  | ||||||
|      * `-------------------------------'      `-------------------------------' |  | ||||||
|      *           .------------------.           .----------------------. |  | ||||||
|      *           | META | ALT | SPC |           | SPC NUM | TAB | SHFT | |  | ||||||
|      *           '------------------'           '----------------------' |  | ||||||
|      */ |  | ||||||
|     [_GAME] = LAYOUT_split_3x5_3( |  | ||||||
|          KC_TILD,  KC_Q,   KC_W,   KC_E,   KC_R,          KC_Y,   KC_U,   KC_I,     KC_O,   KC_P, |  | ||||||
|          KC_LCTL , KC_A,   KC_S,   KC_D,   KC_F,          KC_H,   KC_J,   KC_K,     KC_L,   KC_SCLN, |  | ||||||
|          KC_LSFT,  KC_Z,   KC_X,   KC_C,   KC_V,          KC_N,   KC_M,   TD(GAME), KC_DOT, KC_SFT_SL, |  | ||||||
|                        KC_LGUI, KC_LALT, KC_SPC,          KC_NUM_SPC, KC_TAB, KC_RSFT), |  | ||||||
| 
 |  | ||||||
|     /* Special characters layer
 |  | ||||||
|      * |  | ||||||
|      * ,-------------------------------.      ,-------------------------------. |  | ||||||
|      * |    !  |  @  |  {  |  }  |  |  |      |  `  |  -  |  =  |  /  |   \   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |    #  |  $  |  (  |  )  |     |      | LFT | DWN | UP  | RGT |   '   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |    %  |  ^  |  [  |  ]  |     |      |  &  |  ~  |  +  |  *  |       | |  | ||||||
|      * `-------------------------------'      `-------------------------------' |  | ||||||
|      *           .-------------------.          .-----------------. |  | ||||||
|      *           |       |     |     |          |     |  "  |  _  | |  | ||||||
|      *           '-------------------'          '-----------------' |  | ||||||
|      */ |  | ||||||
|     [_SPECIAL] = LAYOUT_split_3x5_3( |  | ||||||
|          KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE,          KC_GRV,  KC_MINS, KC_EQL , KC_SLSH, KC_BSLS, |  | ||||||
|          KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_TRNS,          KC_LEFT, KC_DOWN, KC_UP  , KC_RGHT, KC_QUOT, |  | ||||||
|          KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TRNS,          KC_AMPR, KC_TILD, KC_PLUS, KC_ASTR, KC_TRNS, |  | ||||||
|                            KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, LSFT(KC_QUOTE), LSFT(KC_MINS)), |  | ||||||
| 
 |  | ||||||
|     /* Numbers/Function/Motion layer
 |  | ||||||
|      * |  | ||||||
|      * ,-------------------------------.      ,-------------------------------. |  | ||||||
|      * |   1   |  2  |  3  |  4  |  5  |      |  6  |  7  |  8  |  9  |   0   | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |  F1   | F2  | F3  | F4  | F5  |      |     |     |     |     |       | |  | ||||||
|      * |-------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|      * |  F6   | F7  | F8  | F9  | F10 |      | MLFT| MDWN| MUP | MRGT|       | |  | ||||||
|      * `-------------------------------'      `-------------------------------' |  | ||||||
|      *             .-----------------.          .-----------------. |  | ||||||
|      *             | F11 | F12 |     |          |     |     |     | |  | ||||||
|      *             '-----------------'          '-----------------' |  | ||||||
|      */ |  | ||||||
|     [_NUMBERS] = LAYOUT_split_3x5_3( |  | ||||||
|          KC_1,  KC_2,  KC_3,  KC_4,  KC_5,           KC_6,    KC_7,    KC_8,    KC_9,    KC_0, |  | ||||||
|          KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|          KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,         KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, |  | ||||||
|                     KC_F11, KC_F12, KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case KC_CTL_A: |  | ||||||
|             return false; |  | ||||||
|         default: |  | ||||||
|             return true; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| td_state_t cur_dance(tap_dance_state_t *state) { |  | ||||||
|     if (state->count == 1) |  | ||||||
|         return TD_SINGLE_TAP; |  | ||||||
|     if (state->count == 2) |  | ||||||
|         return TD_DOUBLE_TAP; |  | ||||||
|     else if (state->count == 3) |  | ||||||
| 	return TD_TRIPLE_TAP; |  | ||||||
|     return TD_UNKNOWN; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static td_tap_t ql_tap_state = { |  | ||||||
|     .is_press_action = true, |  | ||||||
|     .state = TD_NONE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void ql_finished(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     ql_tap_state.state = cur_dance(state); |  | ||||||
|     switch (ql_tap_state.state) { |  | ||||||
|         case TD_SINGLE_TAP: |  | ||||||
|             tap_code(KC_COMMA); |  | ||||||
|             break; |  | ||||||
|         case TD_DOUBLE_TAP: |  | ||||||
|             tap_code(KC_COMMA); |  | ||||||
|             tap_code(KC_COMMA); |  | ||||||
|             break; |  | ||||||
|         case TD_TRIPLE_TAP: |  | ||||||
|             if (layer_state_is(_GAME)) |  | ||||||
|                 layer_off(_GAME); |  | ||||||
|             else |  | ||||||
|                 layer_on(_GAME); |  | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void ql_reset(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     ql_tap_state.state = TD_NONE; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     [GAME] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: |  | ||||||
|             return 275; |  | ||||||
|         default: |  | ||||||
|             return TAPPING_TERM; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| # George Petri's Gergoplex layout |  | ||||||
| Vim and programming focused layout. |  | ||||||
| ``` |  | ||||||
| qmk compile -kb gboards/gergoplex -km georgepetri |  | ||||||
| qmk flash -kb gboards/gergoplex -km georgepetri |  | ||||||
| ``` |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| #----------------------------------------------------------------------------
 |  | ||||||
| # make gboards/gergoplex:default:flash
 |  | ||||||
| # Make sure you have dfu-programmer installed!
 |  | ||||||
| #----------------------------------------------------------------------------
 |  | ||||||
| 
 |  | ||||||
| #Debug options
 |  | ||||||
| VERBOSE                = no |  | ||||||
| DEBUG_MATRIX_SCAN_RATE = no |  | ||||||
| DEBUG_MATRIX           = no |  | ||||||
| CONSOLE_ENABLE         = no |  | ||||||
| 
 |  | ||||||
| #Combos!
 |  | ||||||
| COMBO_ENABLE = yes |  | ||||||
| VPATH                  +=  keyboards/gboards/ |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(DEBUG_MATRIX)), yes) |  | ||||||
|     OPT_DEFS += -DDEBUG_MATRIX |  | ||||||
| endif |  | ||||||
| 
 |  | ||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| @ -1,11 +0,0 @@ | |||||||
| // List any combo dictionaries you want loaded to your device below! |  | ||||||
| 
 |  | ||||||
| // QMK wide includes |  | ||||||
| //#include "combos/germ-vim-helpers.def" |  | ||||||
| //#include "combos/germ-mouse-keys.def" |  | ||||||
| 
 |  | ||||||
| // User includes |  | ||||||
| #include "gergoplex.def" |  | ||||||
| 
 |  | ||||||
| // Word completion |  | ||||||
| // #include "combos/eng-combos.def" |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define COMBO_ALLOW_ACTION_KEYS |  | ||||||
| #define COMBO_VARIABLE_LEN |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| // Gergoplex specfic combos |  | ||||||
| 
 |  | ||||||
| COMB(qwGrav,      KC_GRV,           KC_W, KC_Q) |  | ||||||
| COMB(wsEsc,       KC_ESC,           KC_W, KC_S) |  | ||||||
| COMB(sdBackspace, KC_BSPC,          KC_S, KC_D) |  | ||||||
| COMB(dfTab,       KC_TAB,           KC_D, KC_F) |  | ||||||
| COMB(cvEnter,     KC_ENT,           KC_C, KC_V) |  | ||||||
| 
 |  | ||||||
| COMB(ioMinus,     KC_MINS,          KC_I, KC_O) |  | ||||||
| COMB(opBackslash, KC_BSLS,          KC_O, KC_P) |  | ||||||
| COMB(hjLess,      KC_LT,            KC_H, KC_J) |  | ||||||
| COMB(klGreat,     KC_GT,            KC_K, KC_L) |  | ||||||
| COMB(jkColon,     KC_COLN,          KC_J, KC_K) |  | ||||||
| COMB(mcUnder,     KC_UNDS,          KC_M, KC_COMM) |  | ||||||
| COMB(nmQuote,     KC_QUOT,          KC_N, KC_M) |  | ||||||
| 
 |  | ||||||
| SUBS(pasta,       "I'd just like to interject for a moment.",       KC_H, KC_J, KC_K, KC_L) |  | ||||||
| @ -1,286 +0,0 @@ | |||||||
| /* Copyright 2022 Tony Grosinger
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "g/keymap_combo.h" |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|   _ALPHA,  // Default
 |  | ||||||
|   _SYMB,   // Symbols
 |  | ||||||
|   _NUMB,   // Numbers
 |  | ||||||
|   _ARROWS, // Arrows and OS
 |  | ||||||
|   _TMUX,   // TMUX Nav layer
 |  | ||||||
|   _POPOS,  // Gnome Shell, aka PopOS
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // Macros
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|   TMUX_NEW = SAFE_RANGE, |  | ||||||
|   TMUX_ZOOM, |  | ||||||
|   TMUX_SCROLL, |  | ||||||
|   TMUX_PN_LT, |  | ||||||
|   TMUX_PN_UP, |  | ||||||
|   TMUX_PN_DN, |  | ||||||
|   TMUX_PN_RT, |  | ||||||
|   TMUX_WN_LT, |  | ||||||
|   TMUX_WN_RT, |  | ||||||
|   TMUX_SP_VT, |  | ||||||
|   TMUX_SP_HZ, |  | ||||||
|   VIM_CLIP_CP, |  | ||||||
|   VIM_CLIP_PST, |  | ||||||
|   VIM_MACRO, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|   switch (keycode) { |  | ||||||
|     case TMUX_NEW: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("c"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_ZOOM: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("z"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_SCROLL: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("["); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_PN_LT: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         tap_code(KC_LEFT); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_PN_DN: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         tap_code(KC_DOWN); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_PN_UP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         tap_code(KC_UP); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_PN_RT: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         tap_code(KC_RIGHT); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_WN_LT: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("p"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_WN_RT: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("n"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_SP_VT: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("%"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TMUX_SP_HZ: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(C(KC_B)); |  | ||||||
|         SEND_STRING("\""); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case VIM_CLIP_CP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(S(KC_QUOTE)); |  | ||||||
|         tap_code16(S(KC_EQUAL)); |  | ||||||
|         tap_code(KC_Y); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case VIM_CLIP_PST: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(S(KC_QUOTE)); |  | ||||||
|         tap_code16(S(KC_EQUAL)); |  | ||||||
|         tap_code(KC_P); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case VIM_MACRO: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tap_code16(S(KC_2)); |  | ||||||
|         tap_code(KC_Q); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     /*
 |  | ||||||
|     case LAYRMOD: |  | ||||||
|       // Act as a mod key if held, or toggle a layer if tapped
 |  | ||||||
|       // replace KC_LCTL with desired mod, and _TARGET with desired layer name / number
 |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         uint8_t key_timer = timer_read(); |  | ||||||
|         register_mods(MOD_BIT(KC_LCTL)); |  | ||||||
|       } else { |  | ||||||
|         unregister_mods(MOD_BIT(KC_LCTL)); |  | ||||||
|         if (timer_elapsed(key_timer) < 200) { |  | ||||||
|           layer_invert(_TARGET); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     */ |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* Combos
 |  | ||||||
|  * |  | ||||||
|  * ,-----------------------------.      ,-----------------------------. |  | ||||||
|  * |     `     |     |     |     |      |     |    MINS   |    BSLH   | |  | ||||||
|  * |-----+----ESC----+-----+-----|      |-----+-----+-----+-----------| |  | ||||||
|  * |     |   BSPC   TAB    |     |      |    LES   COLN  GRT    |     | |  | ||||||
|  * |-----+-----+-----+--RMB+-LMB-|      |-----+-----+-----+-----------| |  | ||||||
|  * |     |     |    ENT    |     |      |    QUO   UNDR   |     |     | |  | ||||||
|  * `-----+-----+-----+-----+-----'      `-----------------------------' |  | ||||||
|  *     .-------------------------.           .-------------------. |  | ||||||
|  *     |        |       |        |           |        |    |     | |  | ||||||
|  *     '-------------------------'           '-------------------' |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   /* Keymap 0: Default layer
 |  | ||||||
|   * ,------------------------------.      ,----------------------------------. |  | ||||||
|   * |  Q   |  W  |  E  |  R  |  T  |      |  Y  |  U  |  I  |   O   |    P   | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-------+--------| |  | ||||||
|   * |CTRL/A|  S  |  D  |  F  |  G  |      |  H  |  J  |  K  |   L   | CTRL/; | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-------+--------| |  | ||||||
|   * |SHFT/Z|ALT/X|  C  |  V  |  B  |      |  N  |  M  |  <  | ALT/> | SHFT/? | |  | ||||||
|   * `------+-----+-----+------+----'      `----------------------------------' |  | ||||||
|   *           .-----------------.             .----------------------. |  | ||||||
|   *           |   |GUI |SPC(NUM)|             |SPC(SYM)|TMUX | PopOS | |  | ||||||
|   *           '-----------------'             '----------------------' |  | ||||||
|   */ |  | ||||||
|   [_ALPHA] = LAYOUT_split_3x5_3( |  | ||||||
|       KC_Q,              KC_W,               KC_E, KC_R, KC_T,    KC_Y, KC_U, KC_I,    KC_O,   KC_P,  |  | ||||||
|       MT(MOD_LCTL, KC_A),KC_S,               KC_D, KC_F, KC_G,    KC_H, KC_J, KC_K,    KC_L,   MT(MOD_LCTL, KC_SCLN), |  | ||||||
|       MT(MOD_LSFT, KC_Z),MT(MOD_LALT, KC_X), KC_C, KC_V, KC_B,    KC_N, KC_M, KC_COMM, MT(MOD_LALT, KC_DOT), MT(MOD_RSFT, KC_SLSH), |  | ||||||
|                |  | ||||||
|       KC_NO,   KC_LGUI, LT(_NUMB, KC_SPC),       // Left
 |  | ||||||
|       LT(_SYMB, KC_SPC), MO(_TMUX), MO(_POPOS)   // Right
 |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Keymap 1: Symbols layer
 |  | ||||||
|   * ,------------------------------.      ,-------------------------------. |  | ||||||
|   * |  !   |  @  |  #  |  $  |  %  |      |  ^  |  &  |  *  |  +  |   =   | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|   * |  F1  | F2  | F3  | F4  | F5  |      | F6  | F7  | F8  | F9  |  F10  | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|   * |      |     |     |     |     |      |     |     |     | F11 |  F12  | |  | ||||||
|   * `------+-----+-----+-----+-----'      `-------------------------------' |  | ||||||
|   *        .-----------------.                  .-----------------. |  | ||||||
|   *        |     | DEL | MO3 |                  | HLD | SPC |     | |  | ||||||
|   *        '-----------------'                  '-----------------' |  | ||||||
|   */ |  | ||||||
|   [_SYMB] = LAYOUT_split_3x5_3( |  | ||||||
|       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,   KC_CIRC, KC_AMPR, KC_ASTR, KC_PLUS, KC_EQL, |  | ||||||
|       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,     KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10, |  | ||||||
|       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,     KC_NO,   KC_NO,   KC_NO,   KC_F11,  KC_F12, |  | ||||||
|                 KC_NO, KC_DEL, MO(_ARROWS),                 KC_TRNS,  KC_SPC, KC_NO |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Keymap 2: Number layer
 |  | ||||||
|   * ,------------------------------.      ,-------------------------------. |  | ||||||
|   * |  1   |  2  |  3  |  4  |  5  |      |  6  |  7  |  8  |  9  |   0   | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|   * | CTRL |     |  (  |  )  |     |      |     |  4  |  7  |  6  |       | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-----+-----+-----+-----+-------| |  | ||||||
|   * | SHFT |     |  [  |  ]  |     |      |     |  1  |  2  |  3  |   .   | |  | ||||||
|   * `------+-----+-----+-----+-----'      `-------------------------------' |  | ||||||
|   *        .-----------------.                  .-----------------. |  | ||||||
|   *        |     |     | HLD |                  | MO3 |  0  |     | |  | ||||||
|   *        '-----------------'                  '-----------------' |  | ||||||
|   */ |  | ||||||
|   [_NUMB] = LAYOUT_split_3x5_3( |  | ||||||
|       KC_1,    KC_2,  KC_3,    KC_4,    KC_5,       KC_6,  KC_7, KC_8, KC_9,  KC_0, |  | ||||||
|       KC_LCTL, KC_NO, KC_LPRN, KC_RPRN, KC_NO,      KC_NO, KC_4, KC_5, KC_6,  KC_NO, |  | ||||||
|       KC_LSFT, KC_NO, KC_LBRC, KC_RBRC, KC_NO,      KC_NO, KC_1, KC_2, KC_3,  KC_DOT, |  | ||||||
|                   KC_NO,KC_NO,KC_TRNS,                   MO(_ARROWS),KC_0,KC_NO |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Keymap 3: Arrows and OS
 |  | ||||||
|   * ,------------------------------.      ,------------------------------------. |  | ||||||
|   * |      |     |     |     |     |      |       |       |      |       |     | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-------+-------+------+-------+-----| |  | ||||||
|   * | CTRL |HOME | PUP |     |     |      | LEFT  | DOWN  |  UP  | RIGHT |     | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-------+-------+------+-------+-----| |  | ||||||
|   * | SHFT |END  | PDN |     |     |      |       |       |      |       |     | |  | ||||||
|   * `------+-----+-----+-----+-----'      `------------------------------------' |  | ||||||
|   *        .-----------------.                   .-----------------. |  | ||||||
|   *        |     |     | HLD |                   | HLD |     |     | |  | ||||||
|   *        '-----------------'                   '-----------------' |  | ||||||
|   */ |  | ||||||
|   [_ARROWS] = LAYOUT_split_3x5_3( |  | ||||||
|       KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,     KC_NO,        KC_NO,         KC_NO,         KC_NO,         KC_NO, |  | ||||||
|       KC_LCTL, KC_HOME, KC_PGUP, KC_NO, KC_NO,     KC_LEFT,      KC_DOWN,       KC_UP,         KC_RGHT,       KC_NO, |  | ||||||
|       KC_LSFT, KC_END,  KC_PGDN, KC_NO, KC_NO,     KC_NO,        KC_NO,         KC_NO,         KC_NO,         KC_NO, |  | ||||||
|                   KC_NO,KC_NO,KC_TRNS,                   KC_TRNS,KC_NO,KC_NO |  | ||||||
|       ), |  | ||||||
|        |  | ||||||
|   /* Keymap 4: Tmux navigation layer
 |  | ||||||
|   * ,----------------------------------.      ,---------------------------------------. |  | ||||||
|   * | Vi Mcr |     |     |     | SP VT |      | Vi Ynk|       |       |       | Vi PT | |  | ||||||
|   * |--------+-----+-----+-----+-------|      |-------+-------+-------+-------+-------| |  | ||||||
|   * |        | SCRL|     |     |       |      | PN LT | PN DN | PN UP | PN RT | SP HZ | |  | ||||||
|   * |--------+-----+-----+-----+-------|      |-------+-------+-------+-------+-------| |  | ||||||
|   * |  ZOOM  | KILL| NEW |     |       |      | W LT  |       |       | W RT  |       | |  | ||||||
|   * `--------+-----+-----+-----+-------'      `---------------------------------------' |  | ||||||
|   *          .-----------------.                   .-----------------. |  | ||||||
|   *          |     |     |     |                   |     | HLD |     | |  | ||||||
|   *          '-----------------'                   '-----------------' |  | ||||||
|   */ |  | ||||||
|   [_TMUX] = LAYOUT_split_3x5_3( |  | ||||||
|       VIM_MACRO, KC_NO,       KC_NO,    KC_NO, TMUX_SP_VT,      VIM_CLIP_CP, KC_NO,      KC_NO,      KC_NO,      VIM_CLIP_PST, |  | ||||||
|       KC_NO,     TMUX_SCROLL, KC_NO,    KC_NO, KC_NO,           TMUX_PN_LT,  TMUX_PN_DN, TMUX_PN_UP, TMUX_PN_RT, TMUX_SP_HZ, |  | ||||||
|       TMUX_ZOOM, KC_NO,       TMUX_NEW, KC_NO, KC_NO,           TMUX_WN_LT,  KC_NO,      KC_NO,      TMUX_WN_RT, KC_NO, |  | ||||||
|                   KC_NO,KC_NO,KC_NO,                              KC_NO,KC_TRNS,KC_NO |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Keymap 5: Gnome Shell (PopOS)
 |  | ||||||
|   * ,------------------------------.      ,--------------------------------------. |  | ||||||
|   * |      |     |     |     |     |      | MV-DWN| D-DWN | D-UP  | MV-UP | Flip | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-------+-------+-------+-------+------| |  | ||||||
|   * |      |     |     |     |     |      |  W-L  | W-DWN | W-UP  | W-R   |      | |  | ||||||
|   * |------+-----+-----+-----+-----|      |-------+-------+-------+-------+------| |  | ||||||
|   * |      |     |     |     |     |      | Scrns | Apps  | Close |       |      | |  | ||||||
|   * `------+-----+-----+-----+-----'      `--------------------------------------' |  | ||||||
|   *        .-----------------.                   .-----------------. |  | ||||||
|   *        |     |     |     |                   |     |     | HLD | |  | ||||||
|   *        '-----------------'                   '-----------------' |  | ||||||
|   */ |  | ||||||
|   [_POPOS] = LAYOUT_split_3x5_3( |  | ||||||
|       KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     SGUI(KC_J), LCTL(LGUI(KC_J)), LCTL(LGUI(KC_K)), SGUI(KC_K), LGUI(KC_O), |  | ||||||
|       KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     LGUI(KC_H), LGUI(KC_J),       LGUI(KC_K),       LGUI(KC_L), KC_NO, |  | ||||||
|       KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     LGUI(KC_D), LGUI(KC_A),       LGUI(KC_Q),       KC_NO,      KC_NO, |  | ||||||
|                   KC_NO,KC_NO,KC_NO,                   KC_NO,KC_NO,KC_TRNS |  | ||||||
|       ), |  | ||||||
| }; |  | ||||||
| @ -1,12 +0,0 @@ | |||||||
| # GergoPlex |  | ||||||
| 
 |  | ||||||
| This keymap I created for the GergoPlex with a focus on: |  | ||||||
| 
 |  | ||||||
| - Keeping keys close to their normal locations when possible (number/symbol rows) |  | ||||||
| - Work well for vim, tmux, and Ubuntu default desktop shortcuts |  | ||||||
| - Work okay for OSx shortcuts |  | ||||||
| 
 |  | ||||||
| ## Firmware Building |  | ||||||
| 
 |  | ||||||
|     util/docker_build.sh gboards/gergoplex:tgrosinger |  | ||||||
|     util/docker_build.sh gboards/gergoplex:tgrosinger:flash |  | ||||||
| @ -1,18 +0,0 @@ | |||||||
| #----------------------------------------------------------------------------
 |  | ||||||
| # make gboards/gergoplex:default:flash
 |  | ||||||
| # Make sure you have dfu-programmer installed!
 |  | ||||||
| #----------------------------------------------------------------------------
 |  | ||||||
| 
 |  | ||||||
| #Debug options
 |  | ||||||
| VERBOSE                = no |  | ||||||
| DEBUG_MATRIX_SCAN_RATE = no |  | ||||||
| DEBUG_MATRIX           = no |  | ||||||
| CONSOLE_ENABLE         = no |  | ||||||
| 
 |  | ||||||
| #Combos!
 |  | ||||||
| COMBO_ENABLE = yes |  | ||||||
| VPATH                  +=  keyboards/gboards/ |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(DEBUG_MATRIX)), yes) |  | ||||||
|     OPT_DEFS += -DDEBUG_MATRIX |  | ||||||
| endif |  | ||||||
| @ -1,119 +0,0 @@ | |||||||
| /* Copyright 2021 Zhi Quan
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|     KC_P00 = SAFE_RANGE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| [0] = LAYOUT_all( /* Base */ |  | ||||||
|     KC_F1,   KC_F2,      KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL,     TG(2),   KC_PSLS, KC_PAST, KC_PMNS, |  | ||||||
|     KC_F3,   KC_F4,      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,             KC_P7,   KC_P8,   KC_P9,   KC_PPLS, |  | ||||||
|     KC_F5,   KC_F6,      KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,              KC_P4,   KC_P5,   KC_P6,   KC_PPLS, |  | ||||||
|     KC_F7,   KC_F8,      KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(1),               KC_P1,   KC_P2,   KC_P3,   KC_PENT, |  | ||||||
|     KC_F9,   KC_F10,     KC_LCTL,          KC_LCMD,                            KC_SPC,                                      KC_ROPT,          MO(1),               KC_P0,   KC_P00,  KC_PDOT, KC_PENT), |  | ||||||
| 
 |  | ||||||
| [1] = LAYOUT_all( /* FN */ |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,  KC_TRNS,    KC_TRNS, KC_MPRV, KC_MNXT, KC_VOLD, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, QK_BOOT,             KC_HOME, KC_UP,   KC_PGUP, KC_VOLU, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,             KC_LEFT, KC_MUTE, KC_RGHT, KC_VOLU, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_END,  KC_DOWN, KC_PGDN, KC_MPLY, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS,          KC_TRNS,                            KC_TRNS,                                     KC_TRNS,          KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY), |  | ||||||
| 
 |  | ||||||
| [2] = LAYOUT_all( /* Numpad */ |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_HOME, KC_UP,   KC_PGUP, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,             KC_LEFT, XXXXXXX, KC_RGHT, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_END,  KC_DOWN, KC_PGDN, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS,          KC_TRNS,                            KC_TRNS,                                     KC_TRNS,          KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), |  | ||||||
| 
 |  | ||||||
| [3] = LAYOUT_all( /* Empty for dynamic keymaps */ |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS,    KC_TRNS,          KC_TRNS,                            KC_TRNS,                                     KC_TRNS,          KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch(keycode) { |  | ||||||
|         case KC_P00: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 tap_code(KC_P0); |  | ||||||
|                 tap_code(KC_P0); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case KC_ESC: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 // Turn on capslock indicator.
 |  | ||||||
|                 writePin(LED_CAPS_LOCK_PIN, LED_PIN_ON_STATE); |  | ||||||
|             } else { |  | ||||||
|                 // Turn off capslock indicator.
 |  | ||||||
|                 writePin(LED_CAPS_LOCK_PIN, !LED_PIN_ON_STATE); |  | ||||||
|             } |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Customized function so that numlock and capslock indicator are no longer controlled by the host.
 |  | ||||||
| bool led_update_user(led_t led_state) { |  | ||||||
| #if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN) |  | ||||||
| #    if LED_PIN_ON_STATE == 0 |  | ||||||
|         // invert the whole thing to avoid having to conditionally !led_state.x later
 |  | ||||||
|         led_state.raw = ~led_state.raw; |  | ||||||
| #    endif |  | ||||||
| 
 |  | ||||||
| // #    ifdef LED_NUM_LOCK_PIN
 |  | ||||||
| //         writePin(LED_NUM_LOCK_PIN, led_state.num_lock);
 |  | ||||||
| // #    endif
 |  | ||||||
| // #    ifdef LED_CAPS_LOCK_PIN
 |  | ||||||
| //         writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
 |  | ||||||
| // #    endif
 |  | ||||||
| #    ifdef LED_SCROLL_LOCK_PIN |  | ||||||
|         writePin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock); |  | ||||||
| #    endif |  | ||||||
| #    ifdef LED_COMPOSE_PIN |  | ||||||
|         writePin(LED_COMPOSE_PIN, led_state.compose); |  | ||||||
| #    endif |  | ||||||
| #    ifdef LED_KANA_PIN |  | ||||||
|         writePin(LED_KANA_PIN, led_state.kana); |  | ||||||
| #    endif |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|     // Return false to let led_update_kb fall through.
 |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Customized function to manage numlock indicator based on layer.
 |  | ||||||
| layer_state_t layer_state_set_user(layer_state_t state) { |  | ||||||
|     switch (get_highest_layer(state)) { |  | ||||||
|         // Base layer
 |  | ||||||
|         case 0: |  | ||||||
|             // Turn on numlock indicator.
 |  | ||||||
|             writePin(LED_NUM_LOCK_PIN, LED_PIN_ON_STATE); |  | ||||||
|             break; |  | ||||||
| 
 |  | ||||||
|         // Numpad navigation layer
 |  | ||||||
|         case 2: |  | ||||||
|             // Turn off numlock indicator.
 |  | ||||||
|             writePin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE); |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return state; |  | ||||||
| } |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| # Personal W1-AT keymap |  | ||||||
| The main highlights are as follows: |  | ||||||
| * VIA support enabled |  | ||||||
| * Enter bootloader mode using Fn + \ |  | ||||||
| * Grave key (` and ~) in place of Esc key |  | ||||||
| * Esc in place of CapsLock key |  | ||||||
| * Use NumLock LED indicator on layers: ON in layer 0, OFF in layer 2 (workaround for macOS since there is no NumLock key) |  | ||||||
| * Use CapsLock LED indicator on Esc key |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Layer 0 (Base) |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| ## Layer 1 (Function) |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| ## Layer 2 (Numpad Navigation) |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| @ -1 +0,0 @@ | |||||||
| VIA_ENABLE = yes |  | ||||||
| @ -1,56 +0,0 @@ | |||||||
| /* Copyright 2022 Eugenio Pastoral
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| enum custom_layers { |  | ||||||
|     _BL, |  | ||||||
|     _FL, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   /* Keymap _BL: Base Layer (Default Layer)
 |  | ||||||
|    */ |  | ||||||
| [_BL] = LAYOUT( |  | ||||||
|   QK_GESC,  KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSPC,  KC_HOME, |  | ||||||
|   KC_TAB,   KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,  KC_END, |  | ||||||
|   KC_CAPS,  KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_QUOT,  KC_ENT,             KC_PGUP, |  | ||||||
|   KC_LSFT,  KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,     KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,  KC_UP,    KC_PGDN, |  | ||||||
|   KC_LCTL,  KC_LALT,  KC_LGUI,                                KC_SPC,                                 KC_RALT,  MO(1),    KC_LEFT,  KC_DOWN,  KC_RGHT), |  | ||||||
| 
 |  | ||||||
|   /* Keymap _FL: Function Layer
 |  | ||||||
|    */ |  | ||||||
| [_FL] = LAYOUT( |  | ||||||
|   KC_GRV,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,    KC_DEL,  RGB_TOG, |  | ||||||
|   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_PSCR,  KC_SCRL,  KC_PAUS,   _______,  _______, |  | ||||||
|   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______, |  | ||||||
|   _______,  _______,  RGB_HUI,  RGB_HUD,  RGB_SPD,  RGB_SPI,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,   RGB_VAI,  _______, |  | ||||||
|   EE_CLR,  _______,  _______,                                 QK_BOOT,                                _______,  _______,  RGB_RMOD,  RGB_VAD,  RGB_MOD) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Turns side LEDs to white for caps lock and layer indicators.
 |  | ||||||
| bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { |  | ||||||
|     if (host_keyboard_led_state().caps_lock || get_highest_layer(layer_state | default_layer_state)) { |  | ||||||
|         for (uint8_t i = led_min; i < led_max; i++) { |  | ||||||
|             if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
 |  | ||||||
|                 rgb_matrix_set_color(i, 0xff, 0xff, 0xff); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return false; |  | ||||||
| }; |  | ||||||
| @ -1 +0,0 @@ | |||||||
| # ANSI GMMKV2 65% Layout |  | ||||||
| @ -1,72 +0,0 @@ | |||||||
|  /* Copyright 2022 Eugenio Pastoral |  | ||||||
|   * |  | ||||||
|   * This program is free software: you can redistribute it and/or modify |  | ||||||
|   * it under the terms of the GNU General Public License as published by |  | ||||||
|   * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|   * (at your option) any later version. |  | ||||||
|   * |  | ||||||
|   * This program is distributed in the hope that it will be useful, |  | ||||||
|   * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|   * GNU General Public License for more details. |  | ||||||
|   * |  | ||||||
|   * You should have received a copy of the GNU General Public License |  | ||||||
|   * along with this program.  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
|   */ |  | ||||||
| 
 |  | ||||||
| RGB_MATRIX_EFFECT(SOLID_UNDERGLOW) |  | ||||||
| RGB_MATRIX_EFFECT(HOLOGRAPHICS_UNDERGLOW) |  | ||||||
| 
 |  | ||||||
| #ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 |  | ||||||
| 
 |  | ||||||
| // This is a side lights only configuration where the solid color is following the current HSV setting.
 |  | ||||||
| static bool SOLID_UNDERGLOW(effect_params_t* params) { |  | ||||||
|     RGB_MATRIX_USE_LIMITS(led_min, led_max); |  | ||||||
| 
 |  | ||||||
|     RGB rgb = rgb_matrix_hsv_to_rgb(rgb_matrix_config.hsv); |  | ||||||
|     for (uint8_t i = led_min; i < led_max; i++) { |  | ||||||
|         if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
 |  | ||||||
|             rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); |  | ||||||
|         } else { |  | ||||||
|             rgb_matrix_set_color(i, 0x00, 0x00, 0x00); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return rgb_matrix_check_finished_leds(led_max); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // This is a side lights only configuration where the color is set to a static gradient.
 |  | ||||||
| static bool HOLOGRAPHICS_UNDERGLOW(effect_params_t* params) { |  | ||||||
|     RGB_MATRIX_USE_LIMITS(led_min, led_max); |  | ||||||
| 
 |  | ||||||
|     for (uint8_t i = led_min; i < led_max; i++) { |  | ||||||
|         if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
 |  | ||||||
|             // RIGHT-HAND SIDE LEDS || LEFT-HAND SIDE LEDS
 |  | ||||||
|             if (i == 67 || i == 77) { |  | ||||||
|                 rgb_matrix_set_color(i, 0xff, 0x00, 0xee); |  | ||||||
|             } else if (i == 68 || i == 78) { |  | ||||||
|                 rgb_matrix_set_color(i, 0xcc, 0x00, 0xff); |  | ||||||
|             } else if (i == 69 || i == 79) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x9e, 0x00, 0xff); |  | ||||||
|             } else if (i == 70 || i == 80) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x70, 0x00, 0xff); |  | ||||||
|             } else if (i == 71 || i == 81) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x52, 0x00, 0xff); |  | ||||||
|             } else if (i == 72 || i == 82) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x33, 0x00, 0xff); |  | ||||||
|             } else if (i == 73 || i == 83) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x00, 0x38, 0xff); |  | ||||||
|             } else if (i == 74 || i == 84) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x00, 0x57, 0xff); |  | ||||||
|             } else if (i == 75 || i == 85) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x00, 0x85, 0xff); |  | ||||||
|             } else if (i == 76 || i == 86) { |  | ||||||
|                 rgb_matrix_set_color(i, 0x00, 0xb2, 0xff); |  | ||||||
|             } else { |  | ||||||
|                 rgb_matrix_set_color(i, 0x00, 0x00, 0x00); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return rgb_matrix_check_finished_leds(led_max); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 |  | ||||||
| @ -1 +0,0 @@ | |||||||
| RGB_MATRIX_CUSTOM_USER = yes |  | ||||||
| @ -1,44 +0,0 @@ | |||||||
| /* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| enum custom_layers { |  | ||||||
|     _BL, |  | ||||||
|     _FL, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   /* Keymap _BL: Base Layer (Default Layer)
 |  | ||||||
|    */ |  | ||||||
| [_BL] = LAYOUT( |  | ||||||
|   QK_GESC,  KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSPC,  KC_HOME, |  | ||||||
|   KC_TAB,   KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,  KC_PGUP, |  | ||||||
|   KC_CAPS,  KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_QUOT,  KC_ENT,             KC_PGDN, |  | ||||||
|   KC_LSFT,  KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,     KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,  KC_UP,    KC_END, |  | ||||||
|   KC_LCTL,  KC_LGUI,  KC_LALT,                                KC_SPC,                                 KC_RALT,  MO(1),    KC_LEFT,  KC_DOWN,  KC_RGHT), |  | ||||||
| 
 |  | ||||||
|   /* Keymap _FL: Function Layer
 |  | ||||||
|    */ |  | ||||||
| [_FL] = LAYOUT( |  | ||||||
|   KC_GRV,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,    _______,  KC_INS, |  | ||||||
|   RGB_M_P,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_PSCR,  KC_SCRL,  KC_PAUS,   _______,  _______, |  | ||||||
|   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,             _______, |  | ||||||
|   _______,  _______,  RGB_HUI,  RGB_HUD,  RGB_SPD,  RGB_SPI,  _______,  _______,  _______,  KC_MPRV,  KC_MPLY,  KC_MNXT,  _______,   RGB_VAI,  RGB_TOG, |  | ||||||
|   KC_MUTE,  KC_VOLU,  KC_VOLD,                                QK_BOOT,                                _______,  _______,  RGB_RMOD,  RGB_VAD,  RGB_MOD) |  | ||||||
| }; |  | ||||||
| @ -1 +0,0 @@ | |||||||
| # ANSI GMMKV2 65% Layout |  | ||||||
| @ -1,107 +0,0 @@ | |||||||
| /* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
 |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // clang-format off
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
| //      ESC      F1       F2       F3       F4       F5       F6       F7       F8       F9       F10      F11      F12	     Prt           Rotary(Mute)
 |  | ||||||
| //      ~        1        2        3        4        5        6        7        8        9        0         -       (=)	     BackSpc           Del
 |  | ||||||
| //      Tab      Q        W        E        R        T        Y        U        I        O        P        [        ]                          PgUp
 |  | ||||||
| //      Caps     A        S        D        F        G        H        J        K        L        ;        "        #        Enter             PgDn
 |  | ||||||
| //      Sh_L     /        Z        X        C        V        B        N        M        ,        .        ?                 Sh_R     Up       End
 |  | ||||||
| //      Ct_L     Win_L    Alt_L                               SPACE                               Alt_R    FN       Ct_R     Left     Down     Right
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without
 |  | ||||||
|     // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
 |  | ||||||
|     // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
 |  | ||||||
|     // if that's your preference.
 |  | ||||||
|     //
 |  | ||||||
|     // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
 |  | ||||||
|     // it'll be back to normal when you plug it back in.
 |  | ||||||
|     //
 |  | ||||||
|     // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
 |  | ||||||
|     // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
 |  | ||||||
|     // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
 |  | ||||||
|     [0] = LAYOUT( |  | ||||||
|         KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_HOME,          KC_MUTE, |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,          KC_DEL, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,                   KC_PGUP, |  | ||||||
|         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,           KC_PGDN, |  | ||||||
|         KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          KC_RSFT, KC_UP,   KC_END, |  | ||||||
|         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [1] = LAYOUT( |  | ||||||
|         _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_PSCR,          _______, |  | ||||||
|         _______, RGB_TOG, RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,          _______, |  | ||||||
|         _______, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, |  | ||||||
|         _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,  KC_INS, _______,          _______, |  | ||||||
|         _______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______,          _______, RGB_MOD, _______, |  | ||||||
|         _______, _______, _______,                            _______,                            _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| // clang-format on
 |  | ||||||
| 
 |  | ||||||
| #ifdef ENCODER_ENABLE |  | ||||||
| bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_VOLU); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_VOLD); |  | ||||||
|     } |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { |  | ||||||
|     static uint32_t cycle_led_timer = 0; |  | ||||||
|     static uint8_t  current_value   = 0; |  | ||||||
|     static uint8_t  left_side_leds[8] = {68, 71, 74, 77, 81, 84, 88, 92}; |  | ||||||
|     static uint8_t  right_side_leds[8] = {69, 72, 75, 78, 82, 85, 89, 93}; |  | ||||||
| 
 |  | ||||||
|     if (host_keyboard_led_state().caps_lock) { |  | ||||||
|         if (timer_elapsed32(cycle_led_timer) > 500) { |  | ||||||
|             current_value = current_value == 0 ? 255 : 0; |  | ||||||
|             cycle_led_timer = timer_read32(); |  | ||||||
|         } |  | ||||||
|     HSV tempHSV = {.h = 0, .s = 255, .v = current_value}; |  | ||||||
|     RGB tempRGB = hsv_to_rgb(tempHSV); |  | ||||||
|     for (uint8_t i = 0; i < ARRAY_SIZE(left_side_leds); i++) { |  | ||||||
|         rgb_matrix_set_color(left_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b); |  | ||||||
|         rgb_matrix_set_color(right_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     static uint8_t l2_functions[26] = {6, 7, 8, 12, 13, 14, 15, 16, 18, 23, 28, 34, 38, 39, 44, 50, 56, 61, 66, 70, 80, 86, 94, 95, 96, 98}; |  | ||||||
|     switch(get_highest_layer(layer_state)){  // special handling per layer
 |  | ||||||
|        case 2:  //layer one
 |  | ||||||
|          break; |  | ||||||
|        case 1: |  | ||||||
|          for (uint8_t i = 0; i < ARRAY_SIZE(l2_functions); i++) { |  | ||||||
|              RGB_MATRIX_INDICATOR_SET_COLOR(l2_functions[i], 255, 0, 0); |  | ||||||
|          } |  | ||||||
|          break; |  | ||||||
|        default: |  | ||||||
|          break; |  | ||||||
|        break; |  | ||||||
|     } |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| # chofstede GMMK Pro layout |  | ||||||
| 
 |  | ||||||
| - Added Print-Screen to FN+POS1 |  | ||||||
| - Added Insert to FN+# |  | ||||||
| - The LED bars on the left and right side of the keyboard blink red when CAPS Lock is enabled |  | ||||||
| - All mapped keys light up red when FN is being pressed |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @ -1,72 +0,0 @@ | |||||||
| /* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
 |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // clang-format off
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
| //      ESC      F1       F2       F3       F4       F5       F6       F7       F8       F9       F10      F11      F12	     Prt           Rotary(Mute)
 |  | ||||||
| //      ~        1        2        3        4        5        6        7        8        9        0         -       (=)	     BackSpc           Del
 |  | ||||||
| //      Tab      Q        W        E        R        T        Y        U        I        O        P        [        ]                          PgUp
 |  | ||||||
| //      Caps     A        S        D        F        G        H        J        K        L        ;        "        #        Enter             PgDn
 |  | ||||||
| //      Sh_L     /        Z        X        C        V        B        N        M        ,        .        ?                 Sh_R     Up       End
 |  | ||||||
| //      Ct_L     Win_L    Alt_L                               SPACE                               Alt_R    FN       Ct_R     Left     Down     Right
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without
 |  | ||||||
|     // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
 |  | ||||||
|     // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
 |  | ||||||
|     // if that's your preference.
 |  | ||||||
|     //
 |  | ||||||
|     // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
 |  | ||||||
|     // it'll be back to normal when you plug it back in.
 |  | ||||||
|     //
 |  | ||||||
|     // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
 |  | ||||||
|     // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
 |  | ||||||
|     // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
 |  | ||||||
|     [0] = LAYOUT( |  | ||||||
|         KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,           KC_MPLY, |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,          KC_HOME, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,                   KC_PGUP, |  | ||||||
|         MO(1),   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,           KC_PGDN, |  | ||||||
|         KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          KC_RSFT, KC_UP,   KC_END, |  | ||||||
|         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [1] = LAYOUT( |  | ||||||
|         _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP,          KC_MNXT, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,          _______, |  | ||||||
|         _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, |  | ||||||
|         _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, |  | ||||||
|         _______, _______, RGB_VAD, RGB_TOG, RGB_VAI, RGB_HUI, _______, NK_TOGG, _______, _______, _______, _______,          _______, RGB_MOD, _______, |  | ||||||
|         _______, _______, _______,                            _______,                            _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| // clang-format on
 |  | ||||||
| 
 |  | ||||||
| #ifdef ENCODER_ENABLE |  | ||||||
| bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_VOLU); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_VOLD); |  | ||||||
|     } |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| # Falke Carlsen keymap for GMMK PRO ISO |  | ||||||
| Based on the default keymap, inheriting rotary encoder and LED configs without modification. |  | ||||||
| 
 |  | ||||||
| ## Changes: |  | ||||||
| - Fixes layer 1 of top-row to correspond to 'Keychron ISO Q1 & K2 Dye-Sub PBT Nordic' printed legend multimedia keys. |  | ||||||
| - Adds early 2010s Ducky layer 1 mouse-emulation to WASD with left+right click and scroll in the 2x4 cluster. |  | ||||||
| - Remaps default keymaps LED-handling to 2nd-row due to addition of mouse-emulation. |  | ||||||
| - Swap layer 0 rotary encoder click to play/pause, and layer 1 click to next. |  | ||||||
| @ -1,232 +0,0 @@ | |||||||
| /* Copyright 2021 Qiaowei Tang
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  /*
 |  | ||||||
|  * LED ranges for Think6.5v2 2U |  | ||||||
|  * These values were derived from manual testing. Derived from keymaps/rys. |  | ||||||
|  * ┌───────┬───────┬─────────────┬───────────────────────────────────────────┐ |  | ||||||
|  * │ 00 01 │ 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │ |  | ||||||
|  * │ badge │ badge │    (?)      │              underglow (?)                │ |  | ||||||
|  * │  bar  │ icon  │             │                                           │ |  | ||||||
|  * └───────┴───────┴─────────────┴───────────────────────────────────────────┘ |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| // Define the LED ranges                  start, end
 |  | ||||||
| #define THINK65_LED_RANGE_OFF                 0, 0 |  | ||||||
| #define THINK65_LED_RANGE_CAPS                0, 2 |  | ||||||
| #define THINK65_LED_RANGE_BADGE               0, 4 |  | ||||||
| #define THINK65_LED_RANGE_UNDERGLOW           4, 22 |  | ||||||
| #define THINK65_LED_RANGE_ALL                 0, 22 |  | ||||||
| 
 |  | ||||||
| // Turn the LEDs off by setting HSV to 0, 0, 0
 |  | ||||||
| #define THINK65_LEDS_OFF                      0, 0, 0 |  | ||||||
| 
 |  | ||||||
| // Caps Lock indicator LED
 |  | ||||||
| #define THINK65_LEDS_CAPS                    0, 0, 255 |  | ||||||
| 
 |  | ||||||
| #define THINK65_LED_STATE_OFF                 0x0 // 0b00000000
 |  | ||||||
| #define THINK65_LED_STATE_CAPS                0x1 // 0b00000001
 |  | ||||||
| #define THINK65_LED_STATE_BADGE               0x2 // 0b00000010
 |  | ||||||
| #define THINK65_LED_STATE_CAPS_AND_BADGE      0x3 // 0b00000011
 |  | ||||||
| 
 |  | ||||||
| // Define each LED range as a bit flag
 |  | ||||||
| #define THINK65_LED_CAPS_RANGE_BIT            0 |  | ||||||
| #define THINK65_LED_BADGE_RANGE_BIT           1 |  | ||||||
| 
 |  | ||||||
| // Setup some keycodes to control cycling and range toggling
 |  | ||||||
| enum { |  | ||||||
|     KVM_SW1 = SAFE_RANGE, |  | ||||||
|     KVM_SW2, |  | ||||||
|     CYC_LED, |  | ||||||
|     TOG_BDG |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // setup the user EEPROM space we need
 |  | ||||||
| typedef union { |  | ||||||
|     uint8_t raw; |  | ||||||
|     struct { |  | ||||||
|         uint8_t current_led_state:8; |  | ||||||
|     }; |  | ||||||
| } user_config_t; |  | ||||||
| 
 |  | ||||||
| user_config_t user_config; |  | ||||||
| 
 |  | ||||||
| // toggle one of the range flag bits
 |  | ||||||
| void toggle_led_state(unsigned int led_range) { |  | ||||||
|     if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { |  | ||||||
|         user_config.current_led_state ^= 1 << led_range; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // set one of the range flag bits
 |  | ||||||
| void set_led_state(unsigned int led_range) { |  | ||||||
|     if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { |  | ||||||
|         user_config.current_led_state |= 1 << led_range; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // clear one of the range flag bits
 |  | ||||||
| void clear_led_state(unsigned int led_range) { |  | ||||||
|     if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { |  | ||||||
|         user_config.current_led_state &= ~(1 << led_range); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // cycle LED states: Off -> Esc -> Badge -> Underglow -> Esc+Badge -> Esc+Underglow -> Badge+Underglow -> All
 |  | ||||||
| void cycle_led_state(void) { |  | ||||||
|     switch(user_config.current_led_state) { |  | ||||||
|         case THINK65_LED_STATE_OFF: |  | ||||||
|             user_config.current_led_state = THINK65_LED_STATE_CAPS; |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_CAPS: |  | ||||||
|             user_config.current_led_state = THINK65_LED_STATE_BADGE; |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_BADGE: |  | ||||||
|             user_config.current_led_state = THINK65_LED_STATE_CAPS_AND_BADGE; |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_CAPS_AND_BADGE: |  | ||||||
|             user_config.current_led_state = THINK65_LED_STATE_OFF; |  | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void apply_led_state(void) { |  | ||||||
|     uint8_t h = rgblight_get_hue(); |  | ||||||
|     uint8_t s = rgblight_get_sat(); |  | ||||||
|     uint8_t v = rgblight_get_val(); |  | ||||||
| 
 |  | ||||||
|     // Set the RGB ranges based on the current state
 |  | ||||||
|     switch(user_config.current_led_state) { |  | ||||||
|         case THINK65_LED_STATE_OFF: |  | ||||||
|             rgblight_sethsv_range(THINK65_LEDS_OFF,     THINK65_LED_RANGE_ALL); |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_CAPS: |  | ||||||
|             rgblight_sethsv_range(THINK65_LEDS_OFF,     THINK65_LED_RANGE_BADGE); |  | ||||||
|             rgblight_sethsv_range(THINK65_LEDS_CAPS,    THINK65_LED_RANGE_CAPS); |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_BADGE: |  | ||||||
|             rgblight_sethsv_range(THINK65_LEDS_OFF,     THINK65_LED_RANGE_CAPS); |  | ||||||
|             rgblight_sethsv_range(h, s, v,              THINK65_LED_RANGE_BADGE); |  | ||||||
|             break; |  | ||||||
|         case THINK65_LED_STATE_CAPS_AND_BADGE: |  | ||||||
|             rgblight_sethsv_range(h, s, v,              THINK65_LED_RANGE_BADGE); |  | ||||||
|             rgblight_sethsv_range(THINK65_LEDS_CAPS,    THINK65_LED_RANGE_CAPS); |  | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void keyboard_post_init_user(void) { |  | ||||||
|     user_config.raw = eeconfig_read_user(); |  | ||||||
| 
 |  | ||||||
|     if (user_config.current_led_state >= THINK65_LED_STATE_OFF && user_config.current_led_state <= THINK65_LED_STATE_CAPS_AND_BADGE) { |  | ||||||
|         // If the current state read from user EEPROM is valid, apply it
 |  | ||||||
|         apply_led_state(); |  | ||||||
|     } else { |  | ||||||
|         // Setup a new default state of off
 |  | ||||||
|         user_config.current_led_state = THINK65_LED_STATE_OFF; |  | ||||||
|         apply_led_state(); |  | ||||||
|         eeconfig_update_user(user_config.raw); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case KVM_SW1: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "1"); |  | ||||||
|             } else {} |  | ||||||
|             break; |  | ||||||
|         case KVM_SW2: |  | ||||||
|             if(record->event.pressed) { |  | ||||||
|                 SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "2"); |  | ||||||
|             } else {} |  | ||||||
|             break; |  | ||||||
|         case CYC_LED: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 cycle_led_state(); |  | ||||||
|                 apply_led_state(); |  | ||||||
|                 eeconfig_update_user(user_config.raw); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|         case TOG_BDG: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 toggle_led_state(THINK65_LED_BADGE_RANGE_BIT); |  | ||||||
|                 apply_led_state(); |  | ||||||
|                 eeconfig_update_user(user_config.raw); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|         case KC_CAPS: |  | ||||||
|             if (!record->event.pressed) { |  | ||||||
|                 // connect capslock LED control to the badge LEDs
 |  | ||||||
|                 host_keyboard_led_state().caps_lock ? set_led_state(THINK65_LED_CAPS_RANGE_BIT) : clear_led_state(THINK65_LED_CAPS_RANGE_BIT); |  | ||||||
|                 apply_led_state(); |  | ||||||
|                 eeconfig_update_user(user_config.raw); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Base Layer
 |  | ||||||
|     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ |  | ||||||
|     * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│` ~│ |  | ||||||
|     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ |  | ||||||
|     * │Tab  │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│|   \│Del│ |  | ||||||
|     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ |  | ||||||
|     * │HyCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│   Enter│   │ |  | ||||||
|     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤   │ |  | ||||||
|     * │Shift   │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│   │ |  | ||||||
|     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ |  | ||||||
|     * │Ctrl│ Opt│ Cmd│          Space         │Cmd │FnPy│ │Lef│Dow│Rig│ |  | ||||||
|     * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ |  | ||||||
|     */ |  | ||||||
|     [0] = LAYOUT_65_ansi_blocker( |  | ||||||
|         QK_GESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_GRV, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, |  | ||||||
|         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,           XXXXXXX, |  | ||||||
|         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   XXXXXXX, |  | ||||||
|         KC_LCTL, KC_LGUI, KC_LALT,                      KC_SPC,                          MO(1),   KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
|     /*
 |  | ||||||
|      * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┬───┐ |  | ||||||
|      * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│        │SW1│ |  | ||||||
|      * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┼───┤ |  | ||||||
|      * │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│   │   │Hom│End│      │SW2│ |  | ||||||
|      * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┼───┤ |  | ||||||
|      * │      │CYC│BDG│UGL│CAP│   │   │   │   │   │   │   │         │   │ |  | ||||||
|      * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤   │ |  | ||||||
|      * │        │   │   │   │   │   │   │   │   │   │   │      │Vol+│   │ |  | ||||||
|      * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼────┼───┤ |  | ||||||
|      * │    │    │    │                        │    │    │ │   │Vol-│   │ |  | ||||||
|      * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘ |  | ||||||
|      */ |  | ||||||
|     [1] = LAYOUT_65_ansi_blocker( |  | ||||||
|         QK_BOOT, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, KVM_SW1, |  | ||||||
|         TOG_BDG, RGB_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_HOME, KC_END,  _______, KVM_SW2, |  | ||||||
|         _______, CYC_LED, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          KC_VOLU, _______, |  | ||||||
|         _______, _______, _______,                      _______,                         _______, _______,          _______, KC_VOLD, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| @ -1,9 +0,0 @@ | |||||||
| # dangjoeltang's Think6.5v2 keymap |  | ||||||
| 
 |  | ||||||
| My personal keymap for the Think6.5v2. Using the `LAYOUT_65_ansi_blocker` LAYOUT for a 2U blocker version. I added functionality to enable the Caps-lock indicator LED above the badge. This functionality shipped with the original board; however, for those who reflash their boards using the default `gray_studio/think65/solder` keymaps that functionality disappeared. |  | ||||||
| 
 |  | ||||||
| ## [Base Layer](http://www.keyboard-layout-editor.com/#/gists/9c6a905a643b77249958f28662348f53) |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| ## [Function Layer](http://www.keyboard-layout-editor.com/#/gists/1c061d3664ea5caf5cb64c759339278d) |  | ||||||
|  |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| /* Copyright 2022 Yt Liu
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define RGBLIGHT_LAYERS |  | ||||||
| @ -1,139 +0,0 @@ | |||||||
| /* Copyright 2021 Qiaowei Tang
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  /*
 |  | ||||||
|  * LED ranges for Think6.5v2 2U |  | ||||||
|  * These values were derived from manual testing. Derived from keymaps/rys. |  | ||||||
|  * ┌───────┬───────┬─────────────┬───────────────────────────────────────────┐ |  | ||||||
|  * │ 00 01 │ 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │ |  | ||||||
|  * │ badge │ badge │    (?)      │              underglow (?)                │ |  | ||||||
|  * │  bar  │ icon  │             │                                           │ |  | ||||||
|  * └───────┴───────┴─────────────┴───────────────────────────────────────────┘ |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // Setup some layers to control mac/win layouts
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum bs_layers { |  | ||||||
|     _WIN, |  | ||||||
|     _MAC, |  | ||||||
|     _FN, |  | ||||||
|     _BLANC |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Setup some keycodes to control cycling and range toggling
 |  | ||||||
| enum bs_keycodes { |  | ||||||
|   WIN = SAFE_RANGE, |  | ||||||
|   MAC |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
 |  | ||||||
| const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( |  | ||||||
|     {0, 4, HSV_WHITE}     // Light 4 LEDs, starting with LED 12
 |  | ||||||
| ); |  | ||||||
| 
 |  | ||||||
| // Now define the array of layers. Later layers take precedence
 |  | ||||||
| const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( |  | ||||||
|     my_capslock_layer     // Overrides other layers
 |  | ||||||
| ); |  | ||||||
| 
 |  | ||||||
| void keyboard_post_init_user(void) { |  | ||||||
|     // Enable the LED layers
 |  | ||||||
|     rgblight_layers = my_rgb_layers; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool led_update_user(led_t led_state) { |  | ||||||
|     rgblight_set_layer_state(0, led_state.caps_lock); |  | ||||||
|     return true; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| layer_state_t default_layer_state_set_user(layer_state_t state) { |  | ||||||
|     if (get_highest_layer(state) == _MAC) { |  | ||||||
|         rgblight_mode_noeeprom(6); |  | ||||||
|     } else { |  | ||||||
|         rgblight_mode_noeeprom(9); |  | ||||||
|     } |  | ||||||
|     return state; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Win Layer
 |  | ||||||
|     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ |  | ||||||
|     * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│pup│ |  | ||||||
|     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ |  | ||||||
|     * │Tab  │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│|   \│pdw│ |  | ||||||
|     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ |  | ||||||
|     * │lTCap │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│   Enter│   │ |  | ||||||
|     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤   │ |  | ||||||
|     * │Shift   │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│   │ |  | ||||||
|     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴───┴┬─┬───┼───┼───┤ |  | ||||||
|     * │Ctrl│ win│ alt│          Space         │   Func  │ │Lef│Dow│Rig│ |  | ||||||
|     * └────┴────┴────┴────────────────────────┴─────────┴─┴───┴───┴───┘ |  | ||||||
|     */ |  | ||||||
|     [_WIN] = LAYOUT_65_ansi_blocker( |  | ||||||
|         QK_GESC,            KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_PGUP, |  | ||||||
|         KC_TAB,             KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, |  | ||||||
|         LT(_FN, KC_CAPS), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,             _______, |  | ||||||
|         KC_LSFT,            KC_Z,      KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,        KC_UP,   _______, |  | ||||||
|         KC_LCTL,            KC_LGUI, KC_LALT,                      KC_SPC,                          KC_1,   MO(_FN),          KC_LEFT, KC_DOWN,  KC_RGHT |  | ||||||
|     ), |  | ||||||
|     /* Mac Layer
 |  | ||||||
|     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ |  | ||||||
|     * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│pup│ |  | ||||||
|     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ |  | ||||||
|     * │Tab  │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│|   \│pdw│ |  | ||||||
|     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ |  | ||||||
|     * │lTCap │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│   Enter│   │ |  | ||||||
|     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤   │ |  | ||||||
|     * │Shift   │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│   │ |  | ||||||
|     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴───┴┬─┬───┼───┼───┤ |  | ||||||
|     * │Ctrl│ Opt│ Cmd│          Space         │   Func  │ │Lef│Dow│Rig│ |  | ||||||
|     * └────┴────┴────┴────────────────────────┴─────────┴─┴───┴───┴───┘ |  | ||||||
|     */ |  | ||||||
|     [_MAC] = LAYOUT_65_ansi_blocker( |  | ||||||
|         QK_GESC,            KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_PGUP, |  | ||||||
|         KC_TAB,             KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, |  | ||||||
|         LT(_FN, KC_CAPS),   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,           _______, |  | ||||||
|         KC_LSFT,            KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   _______, |  | ||||||
|         KC_LCTL,            KC_LOPT, KC_LCMD,                      KC_SPC,                          KC_1,   MO(_FN),           KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
|     /* Fn Layer
 |  | ||||||
|      * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┬───┐ |  | ||||||
|      * │lck│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ delete │mac│ |  | ||||||
|      * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┼───┤ |  | ||||||
|      * │ TOG │MB1│MSU│MB2│MDU│   │   │   │UP │   │Hom│pgu│End│      │win│ |  | ||||||
|      * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┼───┤ |  | ||||||
|      * │MO(2) │MSL│MSD│MSR│MWD│   │   │Lft│Dwn│rgt│END│pgd│  reset  │   │ |  | ||||||
|      * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤   │ |  | ||||||
|      * │ RGB_mod│F13│F14│F15│F16│F17│F18│F19│F20│F21│F22│F23   │Bri+│   │ |  | ||||||
|      * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼────┼───┤ |  | ||||||
|      * │Vold│Mute│Volu│                        │    │    │ │   │Bri-│   │ |  | ||||||
|      * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘ |  | ||||||
|      */ |  | ||||||
|     [_FN] = LAYOUT_65_ansi_blocker( |  | ||||||
|         QK_LOCK, KC_F1,      KC_F2,      KC_F3,       KC_F4,          KC_F5,    KC_F6,    KC_F7,    KC_F8,   KC_F9,    KC_F10,  KC_F11,  KC_F12,  KC_DEL,    MAC, |  | ||||||
|         RGB_TOG, KC_MS_BTN1, KC_MS_UP,   KC_MS_BTN2,  KC_MS_WH_UP,    _______,  _______,  _______,  KC_UP,   _______,  KC_HOME, KC_PGUP, _______, _______,   WIN, |  | ||||||
|         _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,  _______,  _______,  KC_LEFT,  KC_DOWN, KC_RIGHT, KC_END,  KC_PGDN,          QK_BOOT,     _______, |  | ||||||
|         RGB_MOD, KC_F13,     KC_F14,     KC_F15,      KC_F16,         KC_F17,   KC_F18,   KC_F19,   KC_F20,  KC_F21,   KC_F22,  KC_F23,           KC_BRIU,   _______,  |  | ||||||
|         KC_VOLD, KC_MUTE,    KC_VOLU,                 _______,                            _______,  _______,                             _______, KC_BRID,   _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
|      |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| # YT45's Think6.5v2 keymap |  | ||||||
| 
 |  | ||||||
| My personal keymap for the Think6.5v2. Using the dangjoeltang as a the base and adding a quick switch from mac to win layouts. also with indication of the current layer with RGB lights. |  | ||||||
| @ -1,5 +0,0 @@ | |||||||
| LTO_ENABLE = yes |  | ||||||
| VIA_ENABLE = yes |  | ||||||
| MOUSEKEY_ENABLE = yes |  | ||||||
| KEY_LOCK_ENABLE = yes |  | ||||||
| CONSOLE_ENABLE = no |  | ||||||
| @ -1,43 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
| 	LAYOUT( |  | ||||||
| 		KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR,  |  | ||||||
| 		KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9,  |  | ||||||
| 		KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_SCLN, KC_P4, KC_P5, KC_P6,  |  | ||||||
| 		KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, KC_P1, KC_P2, KC_P3,  |  | ||||||
| 		KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), |  | ||||||
| /* Primary
 |  | ||||||
|  * ,------+------+------+------+------+------------------------------------------------. |  | ||||||
|  * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   10 | PRTSN| |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. |  | ||||||
|  * |  ˜   |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | BKSP |  7   |   8  |   9  | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * |  Tab |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |  '   |   ;  |  4   |   5  |   6  | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |  .   |  Up  |  /?  |   1  |   2  |  3   | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * | Ctrl | Alt  | GUI  | Raise|         Space      | Raise| Ctrl | Left | Down |Right |   0  |   .  | Enter| |  | ||||||
|  * `--------------------------------------------------------------------------------------------------------' |  | ||||||
|  */ |  | ||||||
| 	LAYOUT( |  | ||||||
| 		KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,  |  | ||||||
| 		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_HOME, KC_INS, KC_PGUP,  |  | ||||||
| 		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DEL, KC_PGDN,  |  | ||||||
| 		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  |  | ||||||
| 		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), |  | ||||||
| /* Secondary
 |  | ||||||
|  * ,------+------+------+------+------+------------------------------------------------. |  | ||||||
|  * |  Esc |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  | F10  |      | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. |  | ||||||
|  * |      |      |      |      |      |      |      |      |      |  F11 | F12  |      | Home | Ins  | PgUP | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * |      |      |      |      |      |      |      |      |      |      |      |      | End  |  Del | PgDN | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * |      |      |      |      |      |      |      |      |      |      | Vol+ |      |      |      |      | |  | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|  * |      |      |      |      |      |      |      |      |      |      | Vol- |      |      |      |      | |  | ||||||
|  * `--------------------------------------------------------------------------------------------------------' |  | ||||||
|  */ |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| @ -1,7 +0,0 @@ | |||||||
|  |  | ||||||
| 
 |  | ||||||
| # My Custome Hadron Layout |  | ||||||
| 
 |  | ||||||
| + Moved numpad to the right |  | ||||||
| + changed F row to standard numbers |  | ||||||
| + Bottom row subject to change |  | ||||||
| @ -1,42 +0,0 @@ | |||||||
| /* Copyright 2021 Matteo Bonora
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| #define CTESC LCTL_T(KC_ESC) |  | ||||||
| 
 |  | ||||||
| enum layer_names { |  | ||||||
|     BL, |  | ||||||
|     FL |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     [BL] = LAYOUT( |  | ||||||
|              KC_1,    KC_2,    KC_3,    KC_4,    KC_5,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_MINS,  KC_EQL, KC_BSPC, |  | ||||||
|       KC_GRV,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_LBRC,   KC_RBRC, KC_RGUI, |  | ||||||
|          CTESC,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN,   KC_QUOT,   KC_BSLS,      KC_ENT, |  | ||||||
|        KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT, |  | ||||||
|                                                            LT(FL, KC_SPC) |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [FL] = LAYOUT( |  | ||||||
|             KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,  KC_DEL, |  | ||||||
|      KC_TAB, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, |  | ||||||
|          _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, _______, _______, _______, _______, |  | ||||||
|          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |  | ||||||
|                                                              _______ |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| @ -1,99 +0,0 @@ | |||||||
| /* Copyright 2021 Fernando "ManoShu" Rodrigues
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| #include "keymap_brazilian_abnt2.h" |  | ||||||
| #include "sendstring_brazilian_abnt2.h" |  | ||||||
| 
 |  | ||||||
| enum {  |  | ||||||
|     LAYER_BASE,  |  | ||||||
|     LAYER_FUNCTIONS  |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define L_FUNCT MO(LAYER_FUNCTIONS) |  | ||||||
| #define W_CHOLD LGUI_T(KC_CAPS) |  | ||||||
| 
 |  | ||||||
| //Combination keycodes
 |  | ||||||
| #define KC_PSBR C(KC_PAUSE)    // Ctrl+Pause/Break
 |  | ||||||
| #define KC_SNIP SGUI(BR_S)     // Screen Snip (GUI + Shift + S)
 |  | ||||||
| #define KC_WRUN G(BR_R)        // Run (GUI + R)
 |  | ||||||
| #define KC_WLCK G(BR_L)        // Lock (GUI + L)
 |  | ||||||
| #define KC_WDSK G(BR_D)        // Desktop (GUI + D)
 |  | ||||||
| #define KC_WEXP G(BR_E)        // Explorer (GUI + E)
 |  | ||||||
| #define KC_WPSE G(KC_PAUSE)    // System Properties (GUI + Pause)
 |  | ||||||
| #define KC_WMGP G(BR_EQL)      // Magnify (+)
 |  | ||||||
| #define KC_WMGM G(BR_MINS)     // Magnify (-)
 |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|     KC_WPRN = SAFE_RANGE,  // Project (P)
 |  | ||||||
|     KC_WSPC                // Input Select (Space)
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| layer_state_t layer_state_set_user(layer_state_t state) { |  | ||||||
|     if (get_highest_layer(state) == LAYER_BASE) { |  | ||||||
|         unregister_mods(MOD_MASK_GUI); |  | ||||||
|     } |  | ||||||
|     return state; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     if(keycode == KC_WPRN || keycode == KC_WSPC) { |  | ||||||
|         if (record->event.pressed) { |  | ||||||
| 
 |  | ||||||
|             register_code(KC_LGUI); |  | ||||||
| 
 |  | ||||||
|             if(keycode == KC_WPRN) { |  | ||||||
|                 tap_code(KC_P); |  | ||||||
|             } else if (keycode == KC_WSPC) { |  | ||||||
|                 tap_code(KC_SPACE); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     [LAYER_BASE] = LAYOUT( |  | ||||||
|         /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */ |  | ||||||
|               KC_ESC,             KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,              KC_F9,    KC_F10,  KC_F11,   KC_F12, |  | ||||||
|         /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */ |  | ||||||
|              BR_QUOT,   BR_1,     BR_2,     BR_3,      BR_4,    BR_5,     BR_6,      BR_7,    BR_8,     BR_9,     BR_0,    BR_MINS,  BR_EQL,        KC_BSPC, |  | ||||||
|         /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */ |  | ||||||
|                 KC_TAB,      BR_Q,     BR_W,     BR_E,     BR_R,     BR_T,     BR_Y,     BR_U,     BR_I,     BR_O,     BR_P,    BR_ACUT,  BR_LBRC,      KC_ENT, |  | ||||||
|         /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬           ┤ */ |  | ||||||
|                   W_CHOLD,      BR_A,     BR_S,      BR_D,    BR_F,     BR_G,     BR_H,     BR_J,     BR_K,     BR_L,    BR_CCED,  BR_TILD,  BR_RBRC, |  | ||||||
|         /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */ |  | ||||||
|               KC_LSFT,   BR_BSLS,   BR_Z,     BR_X,     BR_C,     BR_V,     BR_B,     BR_N,     BR_M,    BR_COMM,  BR_DOT,   BR_SCLN,      BR_SLSH,       KC_UP, |  | ||||||
|         /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */ |  | ||||||
|               KC_LCTL,   L_FUNCT,    KC_LALT,                                 KC_SPC,                            KC_APP,    KC_DEL,  KC_LEFT,  KC_DOWN,  KC_RGHT |  | ||||||
|         /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */ |  | ||||||
|     ), |  | ||||||
|     [LAYER_FUNCTIONS] = LAYOUT( |  | ||||||
|         /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */ |  | ||||||
|               QK_BOOT,           _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,  KC_PSBR,  KC_SNIP,  |  | ||||||
|         /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */ |  | ||||||
|              _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_WMGM,  KC_WMGP,       _______, |  | ||||||
|         /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */ |  | ||||||
|                _______,     KC_MPLY,  KC_MUTE,  KC_WEXP,  KC_WRUN,  _______,  _______,  _______,  _______,  _______,  KC_WPRN,  _______,  _______,      _______, |  | ||||||
|         /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬           ┤ */ |  | ||||||
|                  _______,      KC_MPRV,  KC_MNXT,  KC_WDSK,  _______,  _______,  _______,  _______,  _______,  KC_WLCK,  _______,  _______,  _______,     |  | ||||||
|         /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */ |  | ||||||
|               _______,   _______,  KC_VOLU,  KC_VOLD,  KC_CALC,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,      KC_PGUP,  |  | ||||||
|         /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */ |  | ||||||
|               _______,    _______,    _______,                                KC_WSPC,                           _______,   KC_INS,  KC_HOME,  KC_PGDN,  KC_END |  | ||||||
|         /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */ |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| @ -1,16 +0,0 @@ | |||||||
|  |  | ||||||
| 
 |  | ||||||
| # ManoShu's custom layout |  | ||||||
| 
 |  | ||||||
| Has all the functions of a ABNT TKL keyboard, sans right shift. |  | ||||||
| 
 |  | ||||||
| Basic media functions also included. |  | ||||||
| 
 |  | ||||||
| Trying to emulate where notebooks/smaller OEM keyboard put the function key, for this reason the GUI key was moved and it can be used by holding the Caps Lock key. |  | ||||||
| 
 |  | ||||||
| To not use the new GUI position very often, commonly used GUI + [X] commands are sent using `SEND_STRING()`, `(un)register_code()` and `tap_code()`. |  | ||||||
| 
 |  | ||||||
| ## Why you didn't used `LT(FUNCTIONS, KC_LGUI)` on the GUI/FN key? |  | ||||||
| Because I don't want rely on the tapping term to determine I will send either KC_HOME or snap the active window to the left. |  | ||||||
| 
 |  | ||||||
| If there is a better way to solve this, please let me know. |  | ||||||
| @ -1,42 +0,0 @@ | |||||||
| /* Copyright 2019 cbc02009
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /* LAYER 1
 |  | ||||||
|   * ,---------------+-------. |  | ||||||
|   * |KC_MPRV|KC_MNXT|KC_MUTE| |  | ||||||
|   * |-------+-------+-------, |  | ||||||
|   * |KC_MPLY|KC_MSTP|KC_MUTE| |  | ||||||
|   * `-------+-------+-------' |  | ||||||
|   */ |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [0] = LAYOUT(KC_MPRV, KC_MNXT, KC_MUTE, KC_MPLY, KC_MSTP, KC_MUTE) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #ifdef ENCODER_ENABLE |  | ||||||
| #include "encoder.h" |  | ||||||
| bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|   if (index == 0) { /* First encoder */ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_VOLU); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_VOLD); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,89 +0,0 @@ | |||||||
| // Copyright 2022 Shem Sedrick (@ssedrick)
 |  | ||||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "print.h" |  | ||||||
| 
 |  | ||||||
| enum key_layers { |  | ||||||
|     _BASE, |  | ||||||
|     _COLEMAK, |  | ||||||
|     _RAISE, |  | ||||||
|     _LOWER |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum layer_keycodes { |  | ||||||
|     QWERTY = SAFE_RANGE, |  | ||||||
|     COLEMAK, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define RAISE  TT(_RAISE) |  | ||||||
| #define LOWER  MO(_LOWER) |  | ||||||
| #define SH_ESC SFT_T(KC_ESC) |  | ||||||
| #define UNDSC  RSFT(KC_MINS) |  | ||||||
| #define MAC_LOCK C(G(KC_D)) |  | ||||||
| #define ____   KC_TRANSPARENT |  | ||||||
| 
 |  | ||||||
| #undef TAPPING_TOGGLE |  | ||||||
| #define TAPPING_TOGGLE 2 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     [_BASE] = LAYOUT( |  | ||||||
|         KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,                        KC_Y,    KC_U,   KC_I,    KC_O,   KC_P, |  | ||||||
|         KC_A,    KC_S,    KC_D,    KC_F,   KC_G,                        KC_H,    KC_J,   KC_K,    KC_L,   KC_SCLN, |  | ||||||
|         KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,                        KC_N,    KC_M,   KC_COMM, KC_DOT, KC_SLSH, |  | ||||||
|                  KC_LCBR, KC_RCBR,                                                       KC_QUOT, KC_GRV, |  | ||||||
|                                    SH_ESC, KC_LGUI, KC_TAB,    KC_RSFT, KC_SPC,  KC_ENT, |  | ||||||
|                                    RAISE,  KC_LCTL,                     KC_BSPC, LOWER |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [_COLEMAK] = LAYOUT( |  | ||||||
|         KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,                  KC_J, KC_L, KC_U,    KC_Y,   KC_SCLN, |  | ||||||
|         KC_A,    KC_R,    KC_S,    KC_T,    KC_D,                  KC_H, KC_N, KC_E,    KC_I,   KC_O, |  | ||||||
|         KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                  KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, |  | ||||||
|                  KC_LCBR, KC_RCBR,                                             KC_QUOT, KC_GRV, |  | ||||||
|                                    ____,    ____,  ____,     ____, ____, ____, |  | ||||||
|                                    ____,    ____,                  ____, ____ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [_RAISE] = LAYOUT( |  | ||||||
|         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,             KC_6,    KC_7,    KC_8,    KC_9,    KC_0, |  | ||||||
|      S(KC_9), S(KC_0), KC_LBRC, KC_RBRC,  KC_EQL,            KC_MINS,  KC_4,    KC_5,    KC_6, KC_QUOT, |  | ||||||
|       QK_RBT, QK_BOOT,    ____,    ____,    ____,             ____,    KC_1,    KC_2,    KC_3,    ____, |  | ||||||
|              MAC_LOCK,    ____,                                                 KC_0,  KC_DOT, |  | ||||||
|                                    ____,    ____,  ____,     ____, ____,    ____, |  | ||||||
|                                    ____,    ____,                  ____,    ____ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [_LOWER] = LAYOUT( |  | ||||||
|      KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,            KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, |  | ||||||
|      S(KC_9), S(KC_0), KC_LBRC, KC_RBRC,  KC_EQL,              UNDSC, KC_MINS,  KC_EQL, KC_BSLS, KC_PIPE, |  | ||||||
|      KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD,    ____,               ____, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, |  | ||||||
|                  ____,    ____,                                              QWERTY, COLEMAK, |  | ||||||
|                                    ____,    ____,  ____,     ____, ____,    ____, |  | ||||||
|                                    ____,    ____,                  ____,    ____ |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|   // If console is enabled, it will print the matrix position and status of each key pressed
 |  | ||||||
| #ifdef CONSOLE_ENABLE |  | ||||||
|     uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %d, time: %u, interrupt: %d, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); |  | ||||||
| #endif  |  | ||||||
|     switch (keycode) { |  | ||||||
|         case QWERTY: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 set_single_persistent_default_layer(_BASE); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case COLEMAK: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 set_single_persistent_default_layer(_COLEMAK); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2022 Nabos <nabos at glargh dot fr> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define EE_HANDS |  | ||||||
| 
 |  | ||||||
| @ -1,75 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2022 Nabos <nabos at glargh dot fr> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum layer_names { |  | ||||||
|     _QWERTY, |  | ||||||
|     _FUNCTIONS, |  | ||||||
|     _NUMPAD, |  | ||||||
|     _GAMING |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define FUNCTIONS MO(_FUNCTIONS) |  | ||||||
| #define NUMPAD MO(_NUMPAD) |  | ||||||
| #define GAMING TG(_GAMING) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [_QWERTY] = LAYOUT_5x6( |  | ||||||
|      QK_GESC, KC_1 , KC_2  ,  KC_3  , KC_4  , KC_5  ,         KC_6     , KC_7  , KC_8  , KC_9 , KC_0  ,KC_RBRC, |  | ||||||
|      KC_TAB , KC_Q , KC_W  ,  KC_E  , KC_R  , KC_T  ,         KC_Y     , KC_U  , KC_I  , KC_O , KC_P  ,KC_LBRC, |  | ||||||
|      KC_PGUP, KC_A , KC_S  ,  KC_D  , KC_F  , KC_G  ,         KC_H     , KC_J  , KC_K  , KC_L ,KC_SCLN,KC_QUOT, |  | ||||||
|      KC_PGDN, KC_Z , KC_X  ,  KC_C  , KC_V  , KC_B  ,         KC_N     , KC_M  ,KC_COMM,KC_DOT,KC_SLSH,_______, |  | ||||||
|                     KC_LEFT,KC_RIGHT,                                           KC_DOWN,KC_UP , |  | ||||||
|                                      KC_LSFT,KC_SPC ,         KC_ENT   ,KC_BSPC, |  | ||||||
|                                      KC_LGUI,KC_LALT,         FUNCTIONS,KC_RALT, |  | ||||||
|                                      KC_DEL ,GAMING ,         NUMPAD   ,KC_RCTL |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_FUNCTIONS] = LAYOUT_5x6( |  | ||||||
|      KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,         KC_F6  , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,_______,_______,_______,_______,_______, |  | ||||||
|                      _______,_______,                                         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_NUMPAD] = LAYOUT_5x6( |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,KC_NUM ,_______,_______,KC_MINS,KC_EQL , |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,KC_KP_7,KC_KP_8,KC_KP_9,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,KC_KP_4,KC_KP_5,KC_KP_6,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,KC_KP_1,KC_KP_2,KC_KP_3,_______,KC_PSCR, |  | ||||||
|                      _______,_______,                                         KC_KP_0,KC_PDOT, |  | ||||||
|                                      _______,_______,         KC_PENT,_______, |  | ||||||
|                                      _______,_______,         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_GAMING] = LAYOUT_5x6( |  | ||||||
|      _______,_______,_______,_______,_______,_______,         _______,_______,_______,_______,_______,_______, |  | ||||||
|       KC_T  ,KC_TAB , KC_Q  , KC_W  , KC_E  , KC_R  ,         _______,_______,_______,_______,_______,_______, |  | ||||||
|       KC_G  ,KC_LSFT, KC_A  , KC_S  , KC_D  , KC_F  ,         _______,_______,_______,_______,_______,_______, |  | ||||||
|       KC_B  ,KC_LCTL, KC_Z  , KC_X  , KC_C  , KC_V  ,         _______,_______,_______,_______,_______,_______, |  | ||||||
|                      _______,_______,                                         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______, |  | ||||||
|                                      _______,_______,         _______,_______ |  | ||||||
|   ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| @ -1,49 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define MASTER_LEFT |  | ||||||
| // #define MASTER_RIGHT
 |  | ||||||
| //#define EE_HANDS
 |  | ||||||
| 
 |  | ||||||
| // Mouse
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL       15 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX    60 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED   	3 |  | ||||||
| 
 |  | ||||||
| // RGB backlight
 |  | ||||||
| #undef WS2812_DI_PIN |  | ||||||
| #define WS2812_DI_PIN D3 |  | ||||||
| #undef RGBLED_NUM |  | ||||||
| #define RGBLED_NUM 30 |  | ||||||
| #define RGBLIGHT_EFFECT_BREATHING |  | ||||||
| #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
| #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
| #define RGBLIGHT_EFFECT_SNAKE |  | ||||||
| #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
| #define RGBLIGHT_EFFECT_CHRISTMAS |  | ||||||
| #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
| #define RGBLIGHT_EFFECT_RGB_TEST |  | ||||||
| #define RGBLIGHT_EFFECT_ALTERNATING |  | ||||||
| #define RGBLIGHT_EFFECT_TWINKLE |  | ||||||
| #define RGBLIGHT_LIMIT_VAL 95 |  | ||||||
| #define RGBLIGHT_SPLIT |  | ||||||
| @ -1,106 +0,0 @@ | |||||||
| /* A standard layout for the Dactyl Manuform 5x6 Keyboard */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum layer_names { |  | ||||||
|     _MAC, |  | ||||||
|     _WINDOWS, |  | ||||||
|     _MOUSE, |  | ||||||
|     _ARROWS, |  | ||||||
|     _SYMBOLS, |  | ||||||
|     _NUMBERS, |  | ||||||
|     _MEDIA, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define RAISE MO(_RAISE) |  | ||||||
| #define LOWER MO(_LOWER) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|   [_MAC] = LAYOUT_5x6( |  | ||||||
|      KC_ESC , KC_1  , KC_2  , KC_3  , KC_4  , KC_5  ,                         KC_6  , KC_7  , KC_8  , KC_9  , KC_0  ,KC_GRAVE, |  | ||||||
|      KC_TAB , KC_Q  , KC_W  , KC_E  , KC_R  , KC_T  ,                         KC_Y  , KC_U  , KC_I  , KC_O  , KC_P  ,KC_MINS, |  | ||||||
|      KC_BSPC, KC_A  , KC_S  , KC_D  , KC_F  , KC_G  ,                         KC_H  , KC_J  , KC_K  , KC_L  ,KC_SCLN,KC_QUOT, |  | ||||||
|      KC_LSFT, CTL_T(KC_Z)  , KC_X  , KC_C  , KC_V  , KC_B  ,                  KC_N  , KC_M  ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLS, |  | ||||||
|                       KC_LALT,KC_LCTL,                                                        KC_DEL, KC_PMNS, |  | ||||||
|                                       KC_SPC, MO(_ARROWS),                          MO(_MOUSE), KC_ENT, |  | ||||||
|                                       KC_LCMD, MO(_SYMBOLS),                        KC_EQL, KC_RALT, |  | ||||||
|                                       KC_LALT, MO(_NUMBERS),                        MO(_MEDIA), KC_EJCT |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_WINDOWS] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|    _______,_______, _______ ,_______,_______ ,_______,                        _______,_______,_______,_______,_______,_______, |  | ||||||
|    _______,_______,_______,_______,_______,_______,                        _______, _______ , _______ , _______ ,_______,_______, |  | ||||||
|    _______,_______,_______,_______,_______ ,_______,                        _______, _______ , _______ , _______ ,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                        _______, _______ , _______ , _______ ,_______ ,_______, |  | ||||||
|                           KC_LCMD,KC_LALT,                                                       _______, _______, |  | ||||||
|                                              _______,_______,            _______,_______, |  | ||||||
|                                              KC_LCTL,_______,            _______,_______, |  | ||||||
|                                              _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_MOUSE] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|                  KC_F11,KC_F1, KC_F2 ,KC_F3,KC_F4 ,KC_F5,                        KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F12, |  | ||||||
|                  _______,_______,_______,KC_WH_U,_______,_______,                        _______, _______ , KC_MS_U , _______ ,_______,_______, |  | ||||||
|                  _______,_______,KC_WH_L,KC_WH_D,KC_WH_R ,_______,                        KC_BTN1, KC_MS_L , KC_MS_D , KC_MS_R ,_______,_______, |  | ||||||
|                   _______,_______,KC_ACL0,KC_ACL1,KC_ACL2,_______,                        _______, KC_BTN2 , _______ , _______ ,_______ ,_______, |  | ||||||
|                                        _______,_______,                                                       _______, QK_BOOT, |  | ||||||
|                                                           KC_BTN1,KC_BTN2,            _______,_______, |  | ||||||
|                                                           _______,KC_BTN2,            _______,_______, |  | ||||||
|                                                           _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|                ), |  | ||||||
|   [_ARROWS] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|                    QK_BOOT,_______, _______ ,_______,_______ ,TG(_WINDOWS),                        _______,_______,_______,_______,_______,_______, |  | ||||||
|                    _______,_______,_______,_______,_______,_______,                        _______, KC_HOME , KC_UP , KC_END ,_______,_______, |  | ||||||
|                    _______,_______,_______,_______,_______ ,_______,                        KC_HOME, KC_LEFT , KC_DOWN , KC_RIGHT ,KC_END,_______, |  | ||||||
|                    _______,_______,_______,_______,_______,_______,                        _______, KC_PGDN ,   _______ , KC_PGUP ,_______ ,_______, |  | ||||||
|                                         QK_BOOT,_______,                                                       _______, _______, |  | ||||||
|                                                            _______,_______,            _______,_______, |  | ||||||
|                                                            _______,_______,            _______,_______, |  | ||||||
|                                                            _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|                 ), |  | ||||||
|   [_SYMBOLS] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|                     _______,_______, _______ ,_______,_______ ,_______,                        KC_CIRC,KC_CIRC,KC_LABK,KC_RABK,_______,_______, |  | ||||||
|                     _______,_______,_______,_______,_______,_______,                        KC_LABK, KC_AT , KC_LCBR , KC_RCBR ,KC_HASH,KC_RABK, |  | ||||||
|                     _______,_______,_______,_______,_______ ,_______,                        KC_PERC, KC_EQL , KC_LPRN , KC_RPRN ,KC_DLR,KC_AMPR, |  | ||||||
|                     _______,_______,_______,_______,_______,_______,                        KC_TILD, KC_GRAVE , KC_LBRC , KC_RBRC ,KC_PIPE ,KC_EXLM, |  | ||||||
|                                          _______,_______,                                                       KC_PPLS, KC_PMNS, |  | ||||||
|                                                             _______,_______,            _______,_______, |  | ||||||
|                                                             _______,_______,            _______,_______, |  | ||||||
|                                                             _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|                  ), |  | ||||||
|   [_NUMBERS] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|                     QK_BOOT,_______, _______ ,_______,_______ ,_______,                        KC_PSLS,KC_PAST,KC_PPLS,KC_PMNS,_______,_______, |  | ||||||
|                     _______,_______,_______,KC_PSLS,KC_PAST,_______,                        _______, KC_7 , KC_8 , KC_9 ,_______,_______, |  | ||||||
|                     _______,_______,_______,KC_PMNS,KC_PPLS ,_______,                        _______, KC_4 , KC_5 , KC_6 ,_______,_______, |  | ||||||
|                     _______,_______,_______,_______,_______,_______,                        _______, KC_1 , KC_2 , KC_3 ,_______ ,_______, |  | ||||||
|                                          _______,_______,                                                       KC_0, KC_DOT, |  | ||||||
|                                                             _______,_______,            _______,_______, |  | ||||||
|                                                             _______,_______,            _______,_______, |  | ||||||
|                                                             _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|                  ), |  | ||||||
|   [_MEDIA] = LAYOUT_5x6( |  | ||||||
| 
 |  | ||||||
|                   KC_MSTP,KC_MPRV, KC_MPLY ,KC_MNXT,_______ ,_______,                        _______,_______,_______,_______,_______,_______, |  | ||||||
|                   _______,_______,_______,_______,KC_VOLU,_______,                        RGB_SPI, _______ , _______ , _______ ,_______,_______, |  | ||||||
|                   _______,_______,_______,_______,KC_VOLD ,_______,                        RGB_TOG, RGB_MODE_FORWARD , RGB_HUI , RGB_SAI ,RGB_VAI,_______, |  | ||||||
|                   _______,_______,_______,_______,KC_MUTE,_______,                        RGB_SPD, RGB_MODE_REVERSE , RGB_HUD , RGB_SAD ,RGB_VAD ,_______, |  | ||||||
|                                        _______,_______,                                                       _______, _______, |  | ||||||
|                                                           _______,_______,            _______,_______, |  | ||||||
|                                                           _______,_______,            _______,_______, |  | ||||||
|                                                           _______,_______,            _______,_______ |  | ||||||
| 
 |  | ||||||
|                ), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @ -1 +0,0 @@ | |||||||
| RGBLIGHT_ENABLE = yes |  | ||||||
| @ -1,167 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2021 Raphael Megzari <raphael@megzari.com> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum custom_layers { |  | ||||||
|  _COLEMAK_DH, |  | ||||||
|  _LEFT, |  | ||||||
|  _LEFT_UP, |  | ||||||
|  _RIGHT, |  | ||||||
|  _RIGHT_UP, |  | ||||||
|  _QWERTY |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define COLMAK TO(_COLEMAK_DH) |  | ||||||
| #define QWERTY TO(_QWERTY) |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|   EQ_SUP = SAFE_RANGE, |  | ||||||
|   INF_EQ, |  | ||||||
|   SUP_EQ, |  | ||||||
|   INF_MIN, |  | ||||||
|   MIN_SUP, |  | ||||||
|   PIPE_R, |  | ||||||
|   SUP_SUP, |  | ||||||
|   INF_INF, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|   [_COLEMAK_DH] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      QWERTY ,KC_Q   ,KC_W   ,KC_F   ,KC_P   ,KC_K   ,                         KC_Z   ,KC_L   ,KC_U   ,KC_Y   ,KC_COLN,_______, |  | ||||||
|      _______,KC_A   ,KC_R   ,KC_S   ,KC_T   ,KC_G   ,                         KC_M   ,KC_N   ,KC_E   ,KC_I   ,KC_O   ,_______, |  | ||||||
|      KC_LSFT,KC_J   ,KC_B   ,KC_C   ,KC_D   ,KC_V   ,                         KC_X   ,KC_H   ,KC_COMM,KC_DOT ,KC_QUES,KC_RSFT, |  | ||||||
|                      KC_K   ,KC_V   ,                                                         KC_X   ,KC_Z   , |  | ||||||
|                      LT(_RIGHT_UP,KC_BSPC),LSFT_T(KC_ESC),            LT(_LEFT, KC_ENT),LT(_LEFT_UP,KC_SPC), |  | ||||||
|                                    _______,LCTL_T(KC_DEL),               LGUI_T(KC_TAB),_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_QWERTY] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      COLMAK ,KC_Q   ,KC_W   ,KC_E   ,KC_R   ,KC_T   ,                         KC_Y   ,KC_U   ,KC_I   ,KC_O   ,KC_P   ,_______, |  | ||||||
|      _______,KC_A   ,KC_S   ,KC_D   ,KC_F   ,KC_G   ,                         KC_H   ,KC_J   ,KC_K   ,KC_L   ,KC_COLN,_______, |  | ||||||
|      KC_LSFT,KC_Z   ,KC_X   ,KC_C   ,KC_V   ,KC_B   ,                         KC_N   ,KC_M   ,KC_COMM,KC_DOT ,KC_QUES,KC_RSFT, |  | ||||||
|                      _______,_______,                                                         _______,_______, |  | ||||||
|                      LT(_RIGHT_UP,KC_BSPC),LSFT_T(KC_ESC),            LT(_LEFT, KC_ENT),LT(_LEFT_UP,KC_SPC), |  | ||||||
|                                    _______,LCTL_T(KC_DEL),               LGUI_T(KC_TAB),_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_LEFT] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,KC_PLUS,KC_CIRC,KC_AMPR,_______,                         _______,KC_EQL ,KC_PERC,KC_HASH,_______,_______, |  | ||||||
|      _______,_______,KC_TILD,KC_DQUO,KC_PIPE,_______,                         _______,KC_LPRN,KC_LCBR,KC_LBRC,_______,_______, |  | ||||||
|      _______,_______,KC_BSLS,KC_ASTR,KC_SLSH,_______,                         _______,KC_RPRN,KC_RCBR,KC_RBRC,_______,_______, |  | ||||||
|                      _______,_______,                                                         _______,_______, |  | ||||||
|                                      _______,_______,                         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_LEFT_UP] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,KC_LABK,KC_MINS,KC_RABK,_______,                         _______,KC_7   ,KC_8   ,KC_9   ,_______,_______, |  | ||||||
|      _______,_______,KC_UNDS,KC_QUOT,KC_DLR ,KC_GRV ,                         _______,KC_4   ,KC_5   ,KC_6   ,KC_0   ,_______, |  | ||||||
|      _______,_______,KC_SCLN,KC_AT  ,KC_EXLM,_______,                         _______,KC_1   ,KC_2   ,KC_3   ,_______,_______, |  | ||||||
|                      _______,_______,                                                         _______,_______, |  | ||||||
|                                      _______,_______,                         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_RIGHT] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______,_______,_______,_______,_______, |  | ||||||
|                      _______,_______,                                                         _______,_______, |  | ||||||
|                                      _______,_______,                         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
|   [_RIGHT_UP] = LAYOUT_6x6( |  | ||||||
| 
 |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______      ,_______    ,_______      ,_______,_______, |  | ||||||
|      _______,_______,_______,_______,_______,_______,                         _______,_______      ,_______    ,_______      ,_______,_______, |  | ||||||
|      _______,_______,INF_INF,_______,SUP_SUP,_______,                         _______,LCTL(KC_LEFT),KC_UP      ,LCTL(KC_RGHT),_______,_______, |  | ||||||
|      _______,_______,MIN_SUP,EQ_SUP ,PIPE_R ,_______,                         _______,KC_LEFT      ,KC_DOWN    ,KC_RGHT      ,LGUI(KC_UP),_______, |  | ||||||
|      _______,_______,INF_MIN,INF_EQ ,_______,_______,                         _______,_______      ,KC_CAPS    ,_______      ,_______,_______, |  | ||||||
|                      _______,_______,                                                               _______    ,_______      , |  | ||||||
|                                      _______,_______,                         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______, |  | ||||||
|                                              _______,_______,         _______,_______ |  | ||||||
|   ), |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|   switch(keycode) { |  | ||||||
|     case PIPE_R: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("|> "); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case EQ_SUP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("=> "); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case INF_EQ: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("<= "); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case MIN_SUP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("-> "); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case INF_MIN: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("<- "); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case INF_INF: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING("<<"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case SUP_SUP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         SEND_STRING(">>"); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @ -1,61 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| //Tap Dance Declarations
 |  | ||||||
| enum { |  | ||||||
|   TD_DOT_COMMAS = 0 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| //Tap Dance Definitions
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|   //Tap once for Esc, twice for Caps Lock
 |  | ||||||
|   [TD_DOT_COMMAS]  = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMMA) |  | ||||||
| // Other declarations would go here, separated by commas, if you have them
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| //In Layer declaration, add tap dance item in place of a key code
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   /*
 |  | ||||||
|    * ,-------------------. |  | ||||||
|    * |bcsp| /  | *  | -  | |  | ||||||
|    * |----|----|----|----| |  | ||||||
|    * | 7  | 8  | 9  |    | |  | ||||||
|    * |----|----|----| +  | |  | ||||||
|    * | 4  | 5  | 6  |    | |  | ||||||
|    * |----|----|----|----| |  | ||||||
|    * | 1  | 2  | 3  |    | |  | ||||||
|    * |----|----|----| En | |  | ||||||
|    * |   FN/0  | .  |    | |  | ||||||
|    * `-------------------' |  | ||||||
|    */ |  | ||||||
| 
 |  | ||||||
|   [0] = LAYOUT_numpad_5x4( |  | ||||||
|     KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS,  |  | ||||||
|     KC_P7,   KC_P8,   KC_P9,    |  | ||||||
|     KC_P4,   KC_P5,   KC_P6,   KC_PPLS,  |  | ||||||
|     KC_P1,   KC_P2,   KC_P3,    |  | ||||||
|     LT(1, KC_P0), TD(TD_DOT_COMMAS),  KC_PENT   |  | ||||||
|   ), |  | ||||||
|   /*
 |  | ||||||
|    * ,-------------------. |  | ||||||
|    * | F10| F11| F12| -  | |  | ||||||
|    * |----|----|----|----| |  | ||||||
|    * | F7 | F8 | F9 |    | |  | ||||||
|    * |----|----|----| vol| |  | ||||||
|    * | F4 | F5 | F6 |  + | |  | ||||||
|    * |----|----|----|----| |  | ||||||
|    * | F1 | F2 | F3 | vol| |  | ||||||
|    * |----|----|----|  - | |  | ||||||
|    * |    FN   | .  |    | |  | ||||||
|    * `-------------------' |  | ||||||
|    */ |  | ||||||
|   [1] = LAYOUT_numpad_5x4( |  | ||||||
|     KC_F10, KC_F11, KC_F12, KC_NO,  |  | ||||||
|     KC_F7,   KC_F8,   KC_F9,    |  | ||||||
|     KC_F4,   KC_F5,   KC_F6, KC_VOLU,  |  | ||||||
|     KC_F1,   KC_F2,   KC_F3,    |  | ||||||
|     KC_NO, KC_PDOT,  KC_VOLD   |  | ||||||
|   ) |  | ||||||
| }; |  | ||||||
| @ -1 +0,0 @@ | |||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| /* Copyright 2020 Dimitris Papavasiliou <dpapavas@protonmail.ch>
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 3 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #undef TAPPING_TERM |  | ||||||
| #define TAPPING_TERM 175 |  | ||||||
| #define TAPPING_TERM_PER_KEY |  | ||||||
| #define PERMISSIVE_HOLD_PER_KEY |  | ||||||
| @ -1,202 +0,0 @@ | |||||||
| /* Copyright 2020 Dimitris Papavasiliou <dpapavas@protonmail.ch>
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 3 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| #define CAPS_SFT MT(MOD_LSFT, KC_CAPS) |  | ||||||
| #define QUOT_SFT MT(MOD_RSFT, KC_QUOT) |  | ||||||
| #define PSCR_SFT MT(MOD_LSFT, KC_PSCR) |  | ||||||
| #define PAUSE_SFT MT(MOD_RSFT, KC_PAUSE) |  | ||||||
| #define F_SFT MT(MOD_LSFT, KC_F) |  | ||||||
| #define J_SFT MT(MOD_RSFT, KC_J) |  | ||||||
| #define PGUP_GUI MT(MOD_LGUI, KC_PGUP) |  | ||||||
| #define END_GUI MT(MOD_LGUI, KC_END) |  | ||||||
| #define UP_GUI MT(MOD_RGUI, KC_UP) |  | ||||||
| #define LEFT_GUI MT(MOD_RGUI, KC_LEFT) |  | ||||||
| #define EQL_CTL MT(MOD_RCTL, KC_EQL) |  | ||||||
| #define MINS_CTL MT(MOD_LCTL, KC_MINS) |  | ||||||
| #define BSPC_ALT LALT_T(KC_BSPC) |  | ||||||
| #define ENT_ALT LALT_T(KC_ENT) |  | ||||||
| #define SPC_ALT RALT_T(KC_SPC) |  | ||||||
| #define DEL_ALT RALT_T(KC_DEL) |  | ||||||
| 
 |  | ||||||
| enum tapdance_keycodes { |  | ||||||
|     TD_LEFT, |  | ||||||
|     TD_RGHT, |  | ||||||
|     TD_C_X |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [0] = LAYOUT( |  | ||||||
|                            /* Left hand */                                                                                       /* Right hand */ |  | ||||||
| 
 |  | ||||||
|         KC_GRV,   KC_1,    KC_2,    KC_3,     KC_4,     KC_5,                                                   KC_6,    KC_7,    KC_8,     KC_9,     KC_0,    KC_ESC, |  | ||||||
|         KC_TAB,   KC_Q,    KC_W,    KC_E,     KC_R,     KC_T,                                                   KC_Y,    KC_U,    KC_I,     KC_O,     KC_P,    KC_BSLS, |  | ||||||
|         CAPS_SFT, KC_A,    KC_S,    KC_D,     F_SFT,    KC_G,                                                   KC_H,    J_SFT,   KC_K,     KC_L,     KC_SCLN, QUOT_SFT, |  | ||||||
|         PSCR_SFT, KC_Z,    KC_X,    KC_C,     KC_V,     KC_B,                                                   KC_N,    KC_M,    KC_COMM,  KC_DOT,   KC_SLSH, PAUSE_SFT, |  | ||||||
| 
 |  | ||||||
|         TD(TD_LEFT),       KC_INS,  KC_LBRC, MINS_CTL, BSPC_ALT, DEL_ALT, TD(TD_C_X),   TD(TD_C_X), ENT_ALT,  SPC_ALT,  EQL_CTL, KC_RBRC, KC_DEL,          TD(TD_RGHT), |  | ||||||
|                                              KC_HOME,  PGUP_GUI, END_GUI,                           LEFT_GUI, UP_GUI,   KC_RGHT, |  | ||||||
|                                                        KC_PGDN,                                               KC_DOWN |  | ||||||
|         ), |  | ||||||
| 
 |  | ||||||
|   [1] = LAYOUT( |  | ||||||
|                           /* Left hand */                                                                        /* Right hand */ |  | ||||||
| 
 |  | ||||||
|         KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                                     KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS, |  | ||||||
|         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, |  | ||||||
|         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, |  | ||||||
|         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
| 
 |  | ||||||
|         KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, |  | ||||||
|                                             KC_TRNS, KC_TRNS, KC_TRNS,                 KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|                                                      KC_TRNS,                                   KC_TRNS |  | ||||||
|         ), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* The following helper macros define tap dances that support
 |  | ||||||
|  * separated press, release, tap and double-tap functions. */ |  | ||||||
| 
 |  | ||||||
| #define STEPS(DANCE) [DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(            \ |  | ||||||
|         NULL,                                                           \ |  | ||||||
|         dance_ ## DANCE ## _finished,                                   \ |  | ||||||
|         dance_ ## DANCE ## _reset) |  | ||||||
| 
 |  | ||||||
| #define CHOREOGRAPH(DANCE, PRESS, RELEASE, TAP, DOUBLETAP)              \ |  | ||||||
|     static bool dance_ ## DANCE ## _pressed;                            \ |  | ||||||
|                                                                         \ |  | ||||||
|     void dance_ ## DANCE ## _finished(tap_dance_state_t *state, void *user_data) { \ |  | ||||||
|         if (state->count == 1) {                                        \ |  | ||||||
|             if (state->pressed) {                                       \ |  | ||||||
|                 dance_ ## DANCE ## _pressed = true;                     \ |  | ||||||
|                 PRESS;                                                  \ |  | ||||||
|             } else {                                                    \ |  | ||||||
|                 TAP;                                                    \ |  | ||||||
|             }                                                           \ |  | ||||||
|         } else if (state->count == 2) {                                 \ |  | ||||||
|             if (!state->pressed) {                                      \ |  | ||||||
|                 DOUBLETAP;                                              \ |  | ||||||
|             }                                                           \ |  | ||||||
|         }                                                               \ |  | ||||||
|     }                                                                   \ |  | ||||||
|                                                                         \ |  | ||||||
|     void dance_ ## DANCE ## _reset(tap_dance_state_t *state, void *user_data) { \ |  | ||||||
|         if (state->count == 1) {                                        \ |  | ||||||
|             if (dance_ ## DANCE ## _pressed) {                          \ |  | ||||||
|                 RELEASE;                                                \ |  | ||||||
|                 dance_ ## DANCE ## _pressed = false;                    \ |  | ||||||
|             }                                                           \ |  | ||||||
|         }                                                               \ |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| /* Define dance for left palm key. */ |  | ||||||
| 
 |  | ||||||
| CHOREOGRAPH(TD_LEFT, |  | ||||||
|             layer_invert(1),    /* Temporarily toggle layer when held. */ |  | ||||||
|             layer_invert(1), |  | ||||||
| 
 |  | ||||||
|             /* Press and release both shifts on tap, to change
 |  | ||||||
|              * keyboard layout (i.e. language). */ |  | ||||||
| 
 |  | ||||||
|             SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_RSFT) |  | ||||||
|                         SS_UP(X_LSFT) SS_UP(X_RSFT)), |  | ||||||
| 
 |  | ||||||
|             layer_invert(1));   /* Toggle layer (permanently) on
 |  | ||||||
|                                  * double-tap. */ |  | ||||||
| 
 |  | ||||||
| /* Define dance for right palm key. */ |  | ||||||
| 
 |  | ||||||
| CHOREOGRAPH(TD_RGHT, |  | ||||||
|             layer_invert(1),    /* Same as above */ |  | ||||||
|             layer_invert(1), |  | ||||||
|             /* Send a complex macro: C-x C-s Mod-t up.  (Save in
 |  | ||||||
|              * Emacs, switch to terminal and recall previous command, |  | ||||||
|              * hopefully a compile command.) */ |  | ||||||
|             SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X) SS_TAP(X_S) SS_UP(X_LCTL) |  | ||||||
|                         SS_DOWN(X_LGUI) SS_TAP(X_T) SS_UP(X_LGUI) SS_TAP(X_UP)), |  | ||||||
|             layer_invert(1)); |  | ||||||
| 
 |  | ||||||
| /* This facilitates C-x chords in Emacs.  Used as a modifier along
 |  | ||||||
|  * with, say, the s-key, it saves, by sending C-x C-s.  When tapped it |  | ||||||
|  * just sends C-x. */ |  | ||||||
| 
 |  | ||||||
| CHOREOGRAPH(TD_C_X, |  | ||||||
|             SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X)), |  | ||||||
|             SEND_STRING(SS_UP(X_LCTL)), |  | ||||||
|             SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X) SS_UP(X_LCTL)),); |  | ||||||
| 
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     STEPS(TD_LEFT), STEPS(TD_RGHT), STEPS(TD_C_X) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Set a longer tapping term for palm keys to allow comfortable
 |  | ||||||
|  * permanent layer toggle.  Also set an essentially infinite tapping |  | ||||||
|  * term for certain mod-tap keys one tends to keep pressed (such as |  | ||||||
|  * space, backspace, etc.).  This prevents sending the modifier |  | ||||||
|  * keycode by accident (allowing re-tap to get repeated key-press) |  | ||||||
|  * and, in combination with permissive hold, they can still be used |  | ||||||
|  * fine as modifiers. */ |  | ||||||
| 
 |  | ||||||
| uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case TD(TD_LEFT): |  | ||||||
|         case TD(TD_RGHT): |  | ||||||
|              return 250; |  | ||||||
|         case BSPC_ALT: |  | ||||||
|         case UP_GUI: |  | ||||||
|         case LEFT_GUI: |  | ||||||
|             return 5000; |  | ||||||
|         default: |  | ||||||
|             return TAPPING_TERM; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case TD(TD_LEFT): |  | ||||||
|         case TD(TD_RGHT): |  | ||||||
|         case BSPC_ALT: |  | ||||||
|         case UP_GUI: |  | ||||||
|         case LEFT_GUI: |  | ||||||
|             return true; |  | ||||||
|         default: |  | ||||||
|             return false; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* Use the first LED to indicate the active layer. */ |  | ||||||
| 
 |  | ||||||
| layer_state_t layer_state_set_user(layer_state_t state) { |  | ||||||
|     writePin(D0, (get_highest_layer(state) > 0)); |  | ||||||
| 
 |  | ||||||
|     return state; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* Cycle through the LEDs after initialization. */ |  | ||||||
| 
 |  | ||||||
| void keyboard_post_init_user(void) { |  | ||||||
|     const pin_t pins[] = {D0, D1, D2}; |  | ||||||
|     uint8_t i, j; |  | ||||||
| 
 |  | ||||||
|     for (i = 0 ; i < ARRAY_SIZE(pins) + 2 ; i += 1) { |  | ||||||
|         for (j = 0 ; j < ARRAY_SIZE(pins); j += 1) { |  | ||||||
|             setPinOutput(pins[j]); |  | ||||||
|             writePin(pins[j], (j == i || j == i - 1)); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         wait_ms(100); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| # Enable additional features.
 |  | ||||||
| 
 |  | ||||||
| DEBOUNCE_TYPE = sym_defer_pk |  | ||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| @ -1,199 +0,0 @@ | |||||||
| /* Copyright 2021 BB-66
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| bool is_alt_tab_active = false; |  | ||||||
| uint16_t alt_tab_timer = 0; |  | ||||||
| 
 |  | ||||||
| char wpm_str[4]; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     [0] = LAYOUT( |  | ||||||
|         KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,       KC_F5,   KC_F6,   KC_F7,   KC_F8,        KC_F9,   KC_F10,  KC_F11,  KC_F12,    KC_PAUS, KC_PSCR, KC_SCRL, KC_ESC, |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,            KC_NUM,  KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, |  | ||||||
|         KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,        KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, |  | ||||||
|         KC_CAPS,       KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                KC_KP_4, KC_KP_5, KC_KP_6, |  | ||||||
|         KC_LSFT,            KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,                   KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, |  | ||||||
|         KC_LCTL,     KC_LGUI, KC_LALT,                             KC_SPC,                                 KC_RALT,     KC_RGUI, KC_RCTL,        KC_KP_0,          KC_KP_DOT |  | ||||||
|     ), |  | ||||||
|     [1] = LAYOUT( |  | ||||||
|         KC_NO,           KC_NO,   KC_NO,   KC_NO,   KC_NO,       KC_NO,   KC_NO,   KC_NO,   KC_NO,        KC_NO,   KC_NO,  KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,      KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,       KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,              KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,            KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO, KC_NO,                     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,     KC_NO, KC_NO,                             KC_NO,                                 KC_NO,     KC_NO, KC_NO,                     KC_NO,        KC_NO |  | ||||||
|     ), |  | ||||||
|     [2] = LAYOUT( |  | ||||||
|         KC_NO,           KC_NO,   KC_NO,   KC_NO,   KC_NO,       KC_NO,   KC_NO,   KC_NO,   KC_NO,        KC_NO,   KC_NO,  KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,      KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,       KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,              KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,            KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO, KC_NO,                     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,     KC_NO, KC_NO,                             KC_NO,                                 KC_NO,     KC_NO, KC_NO,                     KC_NO,        KC_NO |  | ||||||
|     ), |  | ||||||
|     [3] = LAYOUT( |  | ||||||
|         KC_NO,           KC_NO,   KC_NO,   KC_NO,   KC_NO,       KC_NO,   KC_NO,   KC_NO,   KC_NO,        KC_NO,   KC_NO,  KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO,        KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,      KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,       KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO, KC_NO,              KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,            KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO, KC_NO,  KC_NO, KC_NO,                     KC_NO, KC_NO, KC_NO, KC_NO, |  | ||||||
|         KC_NO,     KC_NO, KC_NO,                             KC_NO,                                 KC_NO,     KC_NO, KC_NO,                     KC_NO,        KC_NO |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
| // WPM-responsive animation stuff here
 |  | ||||||
| #    define IDLE_FRAMES 5 |  | ||||||
| #    define IDLE_SPEED 20  // below this wpm value your animation will idle
 |  | ||||||
| 
 |  | ||||||
| // #define PREP_FRAMES 1 // uncomment if >1
 |  | ||||||
| 
 |  | ||||||
| #    define TAP_FRAMES 2 |  | ||||||
| #    define TAP_SPEED 40  // above this wpm value typing animation to trigger
 |  | ||||||
| 
 |  | ||||||
| #    define ANIM_FRAME_DURATION 200  // how long each frame lasts in ms
 |  | ||||||
| // #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
 |  | ||||||
| #    define ANIM_SIZE 610  // number of bytes in array, minimize for adequate firmware size, max is 1024
 |  | ||||||
| 
 |  | ||||||
| uint32_t anim_timer         = 0; |  | ||||||
| uint32_t anim_sleep         = 0; |  | ||||||
| uint8_t  current_idle_frame = 0; |  | ||||||
| // uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
 |  | ||||||
| uint8_t current_tap_frame = 0; |  | ||||||
| 
 |  | ||||||
| // Code containing pixel art, contains:
 |  | ||||||
| // 5 idle frames, 1 prep frame, and 2 tap frames
 |  | ||||||
| 
 |  | ||||||
| // To make your own pixel art:
 |  | ||||||
| // save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
 |  | ||||||
| // follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
 |  | ||||||
| // replace numbers in brackets with your own
 |  | ||||||
| // if you start getting errors when compiling make sure you didn't accedentally delete a bracket
 |  | ||||||
| static void render_anim(void) { |  | ||||||
|     static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|                                                               {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|                                                               {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|                                                               {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|                                                               {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; |  | ||||||
|     static const char PROGMEM prep[][ANIM_SIZE]            = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|                                                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|                                                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; |  | ||||||
|     static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE]   = { |  | ||||||
|         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     // assumes 1 frame prep stage
 |  | ||||||
|     void animation_phase(void) { |  | ||||||
|         if (get_current_wpm() <= IDLE_SPEED) { |  | ||||||
|             current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; |  | ||||||
|             oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); |  | ||||||
|         } |  | ||||||
|         if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { |  | ||||||
|             // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
 |  | ||||||
|             oled_write_raw_P(prep[0], ANIM_SIZE);  // remove if IDLE_FRAMES >1
 |  | ||||||
|         } |  | ||||||
|         if (get_current_wpm() >= TAP_SPEED) { |  | ||||||
|             current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; |  | ||||||
|             oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     if (get_current_wpm() != 000) { |  | ||||||
|         oled_on();  // not essential but turns on animation OLED with any alpha keypress
 |  | ||||||
|         if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|             anim_timer = timer_read32(); |  | ||||||
|             animation_phase(); |  | ||||||
|         } |  | ||||||
|         anim_sleep = timer_read32(); |  | ||||||
|     } else { |  | ||||||
|         if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { |  | ||||||
|             oled_off(); |  | ||||||
|         } else { |  | ||||||
|             if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|                 anim_timer = timer_read32(); |  | ||||||
|                 animation_phase(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Used to draw on to the oled screen
 |  | ||||||
| bool oled_task_user(void) { |  | ||||||
|     render_anim();  // renders pixelart
 |  | ||||||
| 
 |  | ||||||
|     oled_set_cursor(0, 0);                            // sets cursor to (row, column) using charactar spacing (4 rows, 21 full columns on a 128x32 screen, anything more will overflow back to the top)
 |  | ||||||
|     uint8_t n = get_current_wpm(); |  | ||||||
|     wpm_str[3] = '\0'; |  | ||||||
|     wpm_str[2] = '0' + n % 10; |  | ||||||
|     wpm_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; |  | ||||||
|     wpm_str[0] = n / 10 ? '0' + n / 10 : ' '; |  | ||||||
|     oled_write_P(PSTR("WPM:"), false); |  | ||||||
|     oled_write(wpm_str, false); |  | ||||||
| 
 |  | ||||||
|     led_t led_state = host_keyboard_led_state();  // caps lock stuff, prints CAPS on new line if caps led is on
 |  | ||||||
|     oled_set_cursor(0, 1); |  | ||||||
|     oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR("    "), false); |  | ||||||
|     oled_set_cursor(0, 2); |  | ||||||
|     oled_write_P(led_state.num_lock ? PSTR("NUM") : PSTR("   "), false); |  | ||||||
|     oled_set_cursor(4, 2); |  | ||||||
|     oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR("    "), false); |  | ||||||
|     oled_set_cursor(0, 3); |  | ||||||
|     switch (get_highest_layer(layer_state)) { |  | ||||||
|         case 0: |  | ||||||
|             oled_write_P(PSTR("Base Layer\n"), false); |  | ||||||
|             break; |  | ||||||
|         case 1: |  | ||||||
|             oled_write_P(PSTR("Base Enhanced\n"), false); |  | ||||||
|             break; |  | ||||||
|         case 2: |  | ||||||
|             oled_write_P(PSTR("Gaming\n"), false); |  | ||||||
|             break; |  | ||||||
|         case 3: |  | ||||||
|             oled_write_P(PSTR("Gaming Enh\n"), false); |  | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             oled_write_ln_P(PSTR("Undefined"), false); |  | ||||||
|     } |  | ||||||
|     oled_set_cursor(17, 3); |  | ||||||
|     oled_write_P(PSTR("NKRO"), keymap_config.nkro); |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| VIA_ENABLE = yes |  | ||||||
| OLED_ENABLE = yes |  | ||||||
| WPM_ENABLE = yes			# WPM counting Enable |  | ||||||
| @ -1,116 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum pteron_layers { |  | ||||||
|   _QWERTY, |  | ||||||
|   _LOWER, |  | ||||||
|   _RAISE, |  | ||||||
|   _ADJUST |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define LOWER MO(_LOWER) |  | ||||||
| #define RAISE MO(_RAISE) |  | ||||||
| 
 |  | ||||||
| // alt gr
 |  | ||||||
| #undef G |  | ||||||
| #define G(kc) RALT(kc) |  | ||||||
| 
 |  | ||||||
| // custom keycodes
 |  | ||||||
| // use F_ prefix to avoid problems
 |  | ||||||
| 
 |  | ||||||
| // NB! I use Norwegian keyboard layout on my machines, so the keymap probably
 |  | ||||||
| // doesn't make much sense for US/ANSI users
 |  | ||||||
| 
 |  | ||||||
| #define F_FSLH S(KC_7) // forward slash
 |  | ||||||
| #define F_BSLH KC_EQL // backward slash
 |  | ||||||
| #define F_EQL S(KC_0) // equals sign
 |  | ||||||
| #define F_APOS KC_BSLS // '
 |  | ||||||
| #define F_TIMES S(KC_BSLS) // *
 |  | ||||||
| #define F_PLUS KC_MINS // +
 |  | ||||||
| #define F_QUEST S(KC_MINS) // ?
 |  | ||||||
| #define F_HAT S(KC_RBRC) // ^
 |  | ||||||
| #define F_TILD G(KC_RBRC) // ~
 |  | ||||||
| #define F_UML KC_RBRC // ¨ (umlaut)
 |  | ||||||
| #define F_SECT S(KC_GRV) // section sign ("law sign") (shifted key below esc)
 |  | ||||||
| #define F_GRAVE S(KC_EQL) |  | ||||||
| #define F_ACUTE G(KC_EQL) |  | ||||||
| 
 |  | ||||||
| #define KC_AA KC_LBRC |  | ||||||
| #define KC_OE KC_SCLN |  | ||||||
| #define KC_AE KC_QUOT |  | ||||||
| 
 |  | ||||||
| // brackets
 |  | ||||||
| #define F_SBRL G(KC_8) // square bracket left
 |  | ||||||
| #define F_SBRR G(KC_9) // square bracket right
 |  | ||||||
| #define F_CBRL G(KC_7) // curly bracket left
 |  | ||||||
| #define F_CBRR G(KC_0) // curly bracket right
 |  | ||||||
| #define F_RBRL S(KC_8) // round bracket left
 |  | ||||||
| #define F_RBRR S(KC_9) // round bracket right
 |  | ||||||
| #define F_ABRL KC_NUBS // angle bracket left
 |  | ||||||
| #define F_ABRR S(KC_NUBS) // angle bracket right
 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
| /* QWERTY
 |  | ||||||
|  * +-----------------------------------------+                                +-----------------------------------------+ |  | ||||||
|  * | Esc  |   1  |   2  |   3  |   4  |   5  |                                |   6  |   7  |   8  |   9  |   0  | Bksp | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * | Tab  |   Q  |   W  |   E  |   R  |   T  |                                |   Y  |   U  |   I  |   O  |   P  |   Å  | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * | Ctrl |   A  |   S  |   D  |   F  |   G  |                                |   H  |   J  |   K  |   L  |   Ø  |   Æ  | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * | Shft |   Z  |   X  |   C  |   V  |   B  |                                |   N  |   M  |   ,  |   .  |   -  | Shft | |  | ||||||
|  * +---------------------------+------+------+-------------+    +-------------+------+------+---------------------------+ |  | ||||||
|  *                             | LOWR | Spc  | Alt  | Win  |    | Win  | Alt  | Spc  | RISE | |  | ||||||
|  *                             +---------------------------+    +---------------------------+ |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| [_QWERTY] = LAYOUT( |  | ||||||
|         KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,             KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,             KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_AA, |  | ||||||
|         KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,             KC_H,    KC_J,    KC_K,    KC_L,    KC_OE,   KC_AE, |  | ||||||
|         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,             KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, |  | ||||||
|                           LOWER,   KC_SPC,  KC_LALT, KC_LGUI,          KC_RGUI, KC_RALT, KC_ENT,  RAISE |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| /* LOWER
 |  | ||||||
|  * +-----------------------------------------+                                +-----------------------------------------+ |  | ||||||
|  * |      |      |      |      |      |      |                                |      |      |      |      |      |      | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * |      |      |      |      |      |      |                                |   \  |   /  |   [  |   ]  |   =  | Del  | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * |      |  F1  |  F2  |  F3  |  F4  |  F5  |                                |   <  |   >  |   (  |   )  |   *  |   ~  | |  | ||||||
|  * |------+------+------+------+------+------|                                |------+------+------+------+------+------| |  | ||||||
|  * |      |  F6  |  F7  |  F8  |  F9  |  F10 |                                |  F11 |  F12 |   {  |   }  |   +  |      | |  | ||||||
|  * +---------------------------+------+------+-------------+    +-------------+------+------+---------------------------+ |  | ||||||
|  *                             |      |      |      |      |    |      |      |      |      | |  | ||||||
|  *                             +---------------------------+    +---------------------------+ |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| [_LOWER] = LAYOUT( |  | ||||||
|         _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______,          F_BSLH,  F_FSLH,  F_SBRL,  F_SBRR,  F_EQL,   KC_DEL, |  | ||||||
|         KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,            F_ABRL,  F_ABRR,  F_RBRL,  F_RBRR,  F_TIMES, F_TILD, |  | ||||||
|         _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,           KC_F11,  KC_F12,  F_CBRL,  F_CBRR,  F_PLUS,  _______, |  | ||||||
|                           _______, _______, _______, _______,          _______, _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| [_RAISE] = LAYOUT( |  | ||||||
|         _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, |  | ||||||
|         _______, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,             KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_AA, |  | ||||||
|         F_SECT,  S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5),          F_QUEST, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, F_APOS, |  | ||||||
|         _______, S(KC_6), G(KC_2), G(KC_3), G(KC_4), G(KC_5),          F_HAT,   KC_HOME, KC_PGDN, KC_PGUP, KC_END,  _______, |  | ||||||
|                           _______, _______, _______, _______,          _______, _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
| [_ADJUST] = LAYOUT( |  | ||||||
|         _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, |  | ||||||
|         _______, F_UML,   F_GRAVE, F_ACUTE, _______, QK_BOOT,          _______, _______, _______, _______, KC_PSCR, _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______,          _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, |  | ||||||
|                           _______, _______, _______, _______,          _______, _______, _______, _______ |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| layer_state_t layer_state_set_user(layer_state_t state) { |  | ||||||
|   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); |  | ||||||
| } |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
|  /* Copyright 2021 Fidel Coria
 |  | ||||||
|   *  |  | ||||||
|   * This program is free software: you can redistribute it and/or modify  |  | ||||||
|   * it under the terms of the GNU General Public License as published by  |  | ||||||
|   * the Free Software Foundation, either version 2 of the License, or  |  | ||||||
|   * (at your option) any later version.  |  | ||||||
|   *  |  | ||||||
|   * This program is distributed in the hope that it will be useful,  |  | ||||||
|   * but WITHOUT ANY WARRANTY; without even the implied warranty of  |  | ||||||
|   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  |  | ||||||
|   * GNU General Public License for more details.  |  | ||||||
|   *  |  | ||||||
|   * You should have received a copy of the GNU General Public License  |  | ||||||
|   * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 |  | ||||||
|   */  |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| /* override diode direction from keyboard config */ |  | ||||||
| /* COL2ROW or ROW2COL */ |  | ||||||
| #undef DIODE_DIRECTION |  | ||||||
| #define DIODE_DIRECTION COL2ROW |  | ||||||
| @ -1,120 +0,0 @@ | |||||||
|  /* Copyright 2021 Fidel Coria
 |  | ||||||
|   *  |  | ||||||
|   * This program is free software: you can redistribute it and/or modify  |  | ||||||
|   * it under the terms of the GNU General Public License as published by  |  | ||||||
|   * the Free Software Foundation, either version 2 of the License, or  |  | ||||||
|   * (at your option) any later version.  |  | ||||||
|   *  |  | ||||||
|   * This program is distributed in the hope that it will be useful,  |  | ||||||
|   * but WITHOUT ANY WARRANTY; without even the implied warranty of  |  | ||||||
|   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  |  | ||||||
|   * GNU General Public License for more details.  |  | ||||||
|   *  |  | ||||||
|   * You should have received a copy of the GNU General Public License  |  | ||||||
|   * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 |  | ||||||
|   */  |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum pteron_layers { |  | ||||||
|   _QWERTY, |  | ||||||
|   _LOWER, |  | ||||||
|   _RAISE, |  | ||||||
|   _ADJUST |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #define LOWER MO(_LOWER) |  | ||||||
| #define RAISE MO(_RAISE) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
| /* Qwerty
 |  | ||||||
|  * +-----------------------------------------+      +-----------------------------------------+ |  | ||||||
|  * |   `  |   1  |   2  |   3  |   4  |   5  |      |   6  |   7  |   8  |   9  |   0  | Bksp | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * | Tab  |   Q  |   W  |   E  |   R  |   T  |      |   Y  |   U  |   I  |   O  |   P  | Del  | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * | Esc  |   A  |   S  |   D  |   F  |   G  |      |   H  |   J  |   K  |   L  |   ;  |  "   | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * | Shift|   Z  |   X  |   C  |   V  |   B  |      |   N  |   M  |   ,  |   .  |   /  |Enter | |  | ||||||
|  * +-------------+------+------+------+------|      |------+------+------+------+-------------+ |  | ||||||
|  *               |Lower | SPC  | Alt  | GUI  |      | Alt  | GUI  | SPC  |Raise | |  | ||||||
|  *               +---------------------------+      +---------------------------+ |  | ||||||
|  */ |  | ||||||
| [_QWERTY] = LAYOUT( |  | ||||||
|   KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, |  | ||||||
|   KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,            KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL, |  | ||||||
|   KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,            KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, |  | ||||||
|   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,            KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, |  | ||||||
|                     LOWER,   KC_SPC,  KC_LALT, KC_LGUI,         KC_RALT, KC_RGUI, KC_SPC,  RAISE |  | ||||||
| ), |  | ||||||
| 
 |  | ||||||
| /* Lower
 |  | ||||||
|  * +-----------------------------------------+      +-----------------------------------------+ |  | ||||||
|  * |   ~  |   !  |   @  |   #  |   $  |   %  |      |   ^  |   &  |   *  |   (  |   )  | Bksp | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |   ~  |   !  |   @  |   #  |   $  |   %  |      |   ^  |   &  |   *  |   (  |   )  | Del  | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |      |  F6  |   _  |   +  |   {  |   }  |  |   | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |      |  F12 |ISO ~ |ISO | |      |      |      | |  | ||||||
|  * +-------------+------+------+------+------|      |------+------+------+------+-------------+ |  | ||||||
|  *               |      |      |      |      |      | Next | Vol- | Vol+ | Play | |  | ||||||
|  *               +---------------------------+      +---------------------------+ |  | ||||||
|  */ |  | ||||||
| [_LOWER] = LAYOUT( |  | ||||||
|   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,         KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, |  | ||||||
|   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,         KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, |  | ||||||
|   KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,           KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, |  | ||||||
|   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,          KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, |  | ||||||
|                     _______, _______, _______, _______,         KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY |  | ||||||
| ), |  | ||||||
| 
 |  | ||||||
| /* Raise
 |  | ||||||
|  * +-----------------------------------------+      +-----------------------------------------+ |  | ||||||
|  * |   `  |   1  |   2  |   3  |   4  |   5  |      |   6  |   7  |   8  |   9  |   0  | Bksp | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |   `  |   1  |   2  |   3  |   4  |   5  |      |   6  |   7  |   8  |   9  |   0  | Del  | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |      |  F6  |   -  |   =  |   [  |   ]  |  \   | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |      |  F12 |ISO # |ISO / |      |      |      | |  | ||||||
|  * +-------------+------+------+------+------|      |------+------+------+------+-------------+ |  | ||||||
|  *               |      |      |      |      |      | Next | Vol- | Vol+ | Play | |  | ||||||
|  *               +---------------------------+      +---------------------------+ |  | ||||||
|  */ |  | ||||||
| [_RAISE] = LAYOUT( |  | ||||||
|   KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, |  | ||||||
|   KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL, |  | ||||||
|   KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,           KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, |  | ||||||
|   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,          KC_F12,  KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, |  | ||||||
|                     _______, _______, _______, _______,         KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY |  | ||||||
| ), |  | ||||||
| 
 |  | ||||||
| /* Adjust (Lower + Raise)
 |  | ||||||
|  * +-----------------------------------------+      +-----------------------------------------+ |  | ||||||
|  * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |      | Reset|      |      |      |      |      |      |      |      |      |      |  Del | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |      |      |      |Aud on|AudOff|AGnorm|      |AGswap|Qwerty|Colemk|Dvorak|      |      | |  | ||||||
|  * |------+------+------+------+------+------|      |------+------+------+------+------+------| |  | ||||||
|  * |      |Voice-|Voice+|Mus on|MusOff|MidiOn|      |MidOff|      |      |      |      |      | |  | ||||||
|  * +-------------+------+------+------+------|      |------+------+------+------+-------------+ |  | ||||||
|  *               |      |      |      |      |      |      |      |      |      |       |  | ||||||
|  *               +---------------------------+      +---------------------------+ |  | ||||||
|  */ |  | ||||||
| [_ADJUST] = LAYOUT( |  | ||||||
|   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,           KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, |  | ||||||
|   _______, QK_BOOT, DB_TOGG, _______, _______, _______,         _______, _______, _______, _______, _______, KC_DEL, |  | ||||||
|   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, |  | ||||||
|   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, |  | ||||||
|                     _______, _______, _______, _______,         _______, _______, _______, _______ |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| layer_state_t layer_state_set_user(layer_state_t state) { |  | ||||||
|   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); |  | ||||||
| } |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| # alzafacon pteron layout |  | ||||||
| 
 |  | ||||||
| This keymap is for builds with elite-c controllers. |  | ||||||
| Also notice `DIODE_DIRECTION COL2ROW`. I prefer to hand-wire this way. |  | ||||||
| @ -1,2 +0,0 @@ | |||||||
| # for elite-c
 |  | ||||||
| BOOTLOADER = atmel-dfu |  | ||||||
| @ -1,43 +0,0 @@ | |||||||
| /* Copyright 2020 Bpendragon
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|     DBL_0 = SAFE_RANGE, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case DBL_0: |  | ||||||
|             if(record->event.pressed) { |  | ||||||
|                 SEND_STRING("00"); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [0] = LAYOUT ( |  | ||||||
|     KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, |  | ||||||
|     KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, |  | ||||||
|     KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, |  | ||||||
|     KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, |  | ||||||
|     KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, |  | ||||||
|     KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, DBL_0, KC_PDOT |  | ||||||
|   ) |  | ||||||
| }; |  | ||||||
| @ -1,64 +0,0 @@ | |||||||
| /* Copyright 2019 John M Daly <jmdaly@gmail.com>
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them
 |  | ||||||
| // entirely and just use numbers.
 |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|   // Layers
 |  | ||||||
|   _L1, |  | ||||||
|   _L2, |  | ||||||
|   _L3, |  | ||||||
|   _L4, |  | ||||||
|   _L5 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [_L1] = LAYOUT_standard( /* Qwerty */ |  | ||||||
|     LT(_L5, KC_TAB),        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,     KC_P,    KC_BSPC, |  | ||||||
|     CTL_T(KC_ESC), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,     KC_SCLN, LT(_L2, KC_QUOT), |  | ||||||
|     SC_LSPO,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,   KC_SLSH, SC_RSPC, |  | ||||||
|     MO(_L2),       KC_LGUI, MO(_L3),          KC_ENT,  LT(_L2, KC_SPC),                    KC_RALT, KC_BSLS,           MO(_L4) |  | ||||||
|   ), |  | ||||||
|   [_L2] = LAYOUT_standard( /* LAYER 2 */ |  | ||||||
|     KC_GRV,  KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, |  | ||||||
|     _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL,  KC_LBRC, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, |  | ||||||
|     _______, KC_ESC,  _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_LBRC, KC_RBRC, KC_MNXT, _______, |  | ||||||
|     _______, KC_LGUI, _______,          _______, _______,                   _______, _______,          MO(_L4) |  | ||||||
|   ), |  | ||||||
|   [_L3] = LAYOUT_standard( /* LAYER 3 */ |  | ||||||
|     KC_MINS, KC_1,     KC_2,     KC_3,     KC_4,    KC_5,          KC_6,          KC_7,    KC_8,    KC_9,    KC_0,    _______, |  | ||||||
|     KC_EQL,  KC_PIPE,  KC_TILD,  KC_UNDS,  KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4,    KC_5,    KC_6,    KC_VOLU, KC_INS, |  | ||||||
|     _______, RGB_TOG,  RGB_MOD,  RGB_RMOD, KC_DQUO, _______,       KC_0,          KC_1,    KC_2,    KC_3,    KC_VOLD, _______, |  | ||||||
|     _______, _______,  _______,            _______, _______,                               _______, _______,          _______ |  | ||||||
|   ), |  | ||||||
|   [_L4] = LAYOUT_standard( /* LAYER 4 */ |  | ||||||
|     QK_BOOT, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,     KC_PGUP,   _______, |  | ||||||
|     KC_ESC,  _______, _______, _______, _______, _______, _______, KC_F5,   KC_F6,   KC_HOME,   KC_END,    _______, |  | ||||||
|     KC_LSFT, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_F9,   KC_F10,  KC_PGDN,   KC_F12,    _______, |  | ||||||
|     _______, KC_LSFT, KC_B,             KC_SPC,  KC_C,                      _______, _______,              _______ |  | ||||||
|   ), |  | ||||||
|   [_L5] = LAYOUT_standard( /* LAYER 5 */ |  | ||||||
|     _______,   LGUI(KC_1),   LGUI(KC_2),   LGUI(KC_3),   LGUI(KC_4),   LGUI(KC_5),   LGUI(KC_6),   LGUI(KC_7),   LGUI(KC_8),   LGUI(KC_9),     LGUI(KC_0),   LGUI(KC_MINS), |  | ||||||
|     KC_ESC,  _______, _______, _______, _______, _______, _______, KC_F5,   KC_F6,   KC_HOME,   KC_END,    _______, |  | ||||||
|     KC_LSFT, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_F9,   KC_F10,  KC_PGDN,   KC_F12,    _______, |  | ||||||
|     _______, KC_LSFT, KC_B,             KC_SPC,  KC_C,                      _______, _______,              _______ |  | ||||||
|   ) |  | ||||||
| }; |  | ||||||
| @ -1 +0,0 @@ | |||||||
| # jmdaly's keymap for the steamvan |  | ||||||
| @ -1,65 +0,0 @@ | |||||||
| /* Copyright 2020 DmNosachev
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // Defines names for use in layer keycodes and the keymap
 |  | ||||||
| enum layer_names { |  | ||||||
|     _BASE, |  | ||||||
|     _FN1 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| /*
 |  | ||||||
|  * ,---------------------------------------------------------------------------------------------------------------------------. |  | ||||||
|  * |  F1 |  F2 | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |Backspace| ~`  |  ScrLk |  FN1   | |  | ||||||
|  * |---------------------------------------------------------------------------------------------------------------------------| |  | ||||||
|  * |  F3 |  F4 |  Tab  |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]   |      |Home |  ↑  |PgUp |PrnSc| |  | ||||||
|  * |---------------------------------------------------------------------------------------------      ------------------------| |  | ||||||
|  * |  F5 |  F6 |  Ctrl  |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;: |  '" |     Enter  |  ←  |  ↓  |  →  | wh+ | |  | ||||||
|  * |---------------------------------------------------------------------------------------------------------------------------| |  | ||||||
|  * |  F7 |  F8 |   Shift   |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /? |  Shift  |  |\ |End  |     |PgDn | wh- | |  | ||||||
|  * |----------------------------------------------------------------------------------------------------------------------     | |  | ||||||
|  * |  F9 | F10 |  Alt   |FN1 |                        Space                            |  Alt    |    Ins    |   Del     |     | |  | ||||||
|  * `---------------------------------------------------------------------------------------------------------------------------' |  | ||||||
| */ |  | ||||||
|     [_BASE] = LAYOUT( |  | ||||||
|     KC_F1,  KC_F2, KC_ESC,   KC_1,    KC_2,   KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,   KC_GRV,   KC_SCRL,       MO(_FN1), |  | ||||||
|     KC_F3,  KC_F4, KC_TAB,   KC_Q,    KC_W,   KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,            KC_HOME, KC_UP,   KC_PGUP, KC_PSCR, |  | ||||||
|     KC_F5,  KC_F6, KC_LCTL,  KC_A,    KC_S,   KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,    KC_LEFT, KC_DOWN, KC_RGHT, KC_WH_U, |  | ||||||
|     KC_F7,  KC_F8, KC_LSFT,           KC_Z,   KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_BSLS,   KC_END,  KC_NO,   KC_PGDN, KC_WH_D, |  | ||||||
|     KC_F9,  KC_F10,KC_LALT,        MO(_FN1),                                KC_SPC,                                            KC_RALT,       KC_INS,            KC_DEL |  | ||||||
|     ), |  | ||||||
| /*
 |  | ||||||
|  * ,---------------------------------------------------------------------------------------------------------------------------. |  | ||||||
|  * |reset|     |    | F11 | F12 | au+ | au- | clk | clk+| clk-| clkr|     |     |     |     |  Delete  |NumLk|   /    |  FN1   | |  | ||||||
|  * |---------------------------------------------------------------------------------------------------------------------------| |  | ||||||
|  * |     |     |       |     | mlb | m↑  | mrb |     |     |     |     |     |     |     |      |      |  7  |  8  |  9  |  *  | |  | ||||||
|  * |---------------------------------------------------------------------------------------------      ------------------------| |  | ||||||
|  * |     |     |        |     | m←  | m↓  | m→  |     |     |     |     |     |     |     |            |  4  |  5  |  6  |  -  | |  | ||||||
|  * |---------------------------------------------------------------------------------------------------------------------------| |  | ||||||
|  * |     |     |           |     |     |     |     |     |     |     |     |     |     |         |     |  1  |  2  |  3  |  +  | |  | ||||||
|  * |----------------------------------------------------------------------------------------------------------------------     | |  | ||||||
|  * |     |     |        |FN1 |                                                         | CapsLock|   0 Ins   |    . Del  |     | |  | ||||||
|  * `---------------------------------------------------------------------------------------------------------------------------' |  | ||||||
| */ |  | ||||||
|     [_FN1] = LAYOUT( |  | ||||||
|     QK_BOOT, _______, _______,  KC_F11,  KC_F12,  AU_ON,   AU_OFF,  CK_TOGG, CK_UP,   CK_DOWN, CK_RST,  _______, _______, _______, _______, KC_DEL,    KC_NUM,     KC_PSLS,       _______, |  | ||||||
|     _______, _______, _______,  _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______,            KC_P7,   KC_P8,   KC_P9,   KC_PAST, |  | ||||||
|     _______, _______, _______ , _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,          _______,   KC_P4,   KC_P5,   KC_P6,   KC_PMNS, |  | ||||||
|     _______, _______, _______,           _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,   KC_P1,   KC_P2,   KC_P3,   KC_PPLS, |  | ||||||
|     _______, _______, _______,         _______,                                 _______,                                           KC_CAPS,       KC_P0,            KC_PDOT |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| @ -1,64 +0,0 @@ | |||||||
| /*
 |  | ||||||
| This is the c configuration file for the keymap |  | ||||||
| 
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| Copyright 2015 Jack Humbert |  | ||||||
| Copyright 2021 Franco Rosi <fraanrosi@gmail.com> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| // place overrides here
 |  | ||||||
| 
 |  | ||||||
| // If you need more program area, try select and reduce rgblight modes to use.
 |  | ||||||
| 
 |  | ||||||
| #ifndef LED_ANIMATIONS |  | ||||||
| #    define LED_ANIMATIONS |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    #define RGBLIGHT_EFFECT_BREATHING |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    #define RGBLIGHT_EFFECT_SNAKE |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    #define RGBLIGHT_EFFECT_CHRISTMAS |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    #define RGBLIGHT_EFFECT_RGB_TEST |  | ||||||
|    #define RGBLIGHT_EFFECT_ALTERNATING |  | ||||||
|    #define RGBLIGHT_EFFECT_TWINKLE |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #undef RGBLIGHT_HUE_STEP |  | ||||||
| #define RGBLIGHT_HUE_STEP 4 |  | ||||||
| 
 |  | ||||||
| #ifdef MOUSEKEY_ENABLE |  | ||||||
|    #undef MOUSEKEY_INTERVAL |  | ||||||
|    #define MOUSEKEY_INTERVAL 20 |  | ||||||
| 
 |  | ||||||
|    #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
|    #define MOUSEKEY_TIME_TO_MAX 40 |  | ||||||
| 
 |  | ||||||
|    #undef MOUSEKEY_MAX_SPEED |  | ||||||
|    #define MOUSEKEY_MAX_SPEED 6 |  | ||||||
| 
 |  | ||||||
|    #undef MOUSEKEY_MOVE_DELTA |  | ||||||
|    #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
|    #undef MOUSEKEY_DELAY |  | ||||||
|    #define MOUSEKEY_DELAY 0 |  | ||||||
| #endif |  | ||||||
| @ -1,288 +0,0 @@ | |||||||
| /*
 |  | ||||||
| This is the c configuration file for the keymap |  | ||||||
| 
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| Copyright 2015 Jack Humbert |  | ||||||
| Copyright 2021 Franco Rosi <fraanrosi@gmail.com> |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| // Following line allows macro to read current RGB settings
 |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| uint8_t                  RGB_current_mode; |  | ||||||
| HSV                      CURRENT_COLOR; |  | ||||||
| bool                     caps_is_active = false; |  | ||||||
| /*Here I set the first rgb mode*/ |  | ||||||
| void keyboard_post_init_user(void) { |  | ||||||
|     rgblight_enable();  // Enables RGB, without saving settings
 |  | ||||||
|     rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 3); |  | ||||||
|     RGB_current_mode = rgblight_get_mode(); |  | ||||||
|     rgblight_sethsv(HSV_RED); |  | ||||||
|     CURRENT_COLOR = rgblight_get_hsv(); |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| extern uint8_t is_master; |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them
 |  | ||||||
| // entirely and just use numbers.
 |  | ||||||
| enum layer_number { |  | ||||||
|     _QWERTY = 0, |  | ||||||
|     _LOWER, |  | ||||||
|     _RAISE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|     QWERTY = SAFE_RANGE, |  | ||||||
|     LOWER, |  | ||||||
|     RAISE, |  | ||||||
|     RGBRST, |  | ||||||
|     RGB_1, |  | ||||||
|     RGB_2, |  | ||||||
|     RGB_3, |  | ||||||
|     RGB_4, |  | ||||||
|     RGB_5, |  | ||||||
|     RGB_6, |  | ||||||
|     RGB_7, |  | ||||||
|     RGB_8, |  | ||||||
|     RGB_9 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define LOWER MO(1) |  | ||||||
| #define RAISE MO(2) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|     /* Qwerty
 |  | ||||||
|    * ,-----------------------------------------.             ,-----------------------------------------. |  | ||||||
|    * |   |  |   1  |   2  |   3  |   4  |   5  |             |   6  |   7  |   8  |   9  |   0  | Del  | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * | Tab  |   Q  |   W  |   E  |   R  |   T  |             |   Y  |   U  |   I  |   O  |   P  | Bksp | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * | CAPS |   A  |   S  |   D  |   F  |   G  |             |   H  |   J  |   K  |   L  |   Ñ  |Enter | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * |Shift |   Z  |   X  |   C  |   V  |   B  |   {  |   }  |   N  |   M  |   ,  |   .  |   -  |Shift | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * | Ctrl | Esc  | Win  | Alt  |Raise |Lower |Space |Space |Alt Gr| Left |  Up  | Down |Right | Ctrl | |  | ||||||
|    * `-------------------------------------------------------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|     [_QWERTY] = LAYOUT( |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, |  | ||||||
|         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_ENT, |  | ||||||
|         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_QUOT,  KC_NUHS, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, |  | ||||||
|         KC_LCTL, KC_ESC,  KC_LGUI, KC_LALT, MO(2),   MO(1),  KC_SPC,   KC_SPC,  KC_RALT, KC_LEFT, KC_UP,   KC_DOWN, KC_RGHT, KC_RCTL |  | ||||||
|         ), |  | ||||||
| 
 |  | ||||||
|     /*Lower
 |  | ||||||
|    * ,-----------------------------------------.             ,-----------------------------------------. |  | ||||||
|    * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |             |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * |      | Mute | Play |Mouse1|Mouse2|      |             |Print |      |Insert|' ? \ | ¿  ¡ |      | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * |      |Shine+|Shine-| Vol -| Vol +|      |             |      |Mouse↑|      | ´  ¨ |+ * ~ |      | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * |      | <  > |      |      |      |      |      |      |Mouse←|Mouse↓|Mouse→|      |      |      | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |      |      |      |      |      |      |      | Home |PageUp|PageDn| End  |      | |  | ||||||
|    * `-------------------------------------------------------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|     [_LOWER] = LAYOUT( |  | ||||||
|         KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, |  | ||||||
|         KC_TRNS, KC_MUTE, KC_MPLY, KC_BTN1, KC_BTN2, KC_TRNS,                   KC_PSCR, KC_TRNS, KC_INS,  KC_MINS, KC_EQL,  KC_TRNS, |  | ||||||
|         KC_NO,   KC_BRID, KC_BRIU, KC_VOLD, KC_VOLU, KC_TRNS,                   KC_TRNS, KC_MS_U, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, |  | ||||||
|         KC_TRNS, KC_NUBS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,  KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,  KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END,  KC_TRNS |  | ||||||
|         ), |  | ||||||
| 
 |  | ||||||
|     /* Raise
 |  | ||||||
|    * ,-----------------------------------------.             ,-----------------------------------------. |  | ||||||
|    * |      |      |      |      |      |      |             |      |      |      |      |      |      | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * | RGB1 | RGB2 | RGB3 | RGB4 |RGB ON|      |             |      | MODE+| MODE-|      |      |      | |  | ||||||
|    * |------+------+------+------+------+------|             |------+------+------+------+------+------| |  | ||||||
|    * | RGB5 | RGB6 | RGB7 | RGB8 | RGB9 |      |             |      | HUE+ | HUE- |      |      |      | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * |      | MODE+| MODE-| HUE+ | HUE- |      | Reset|      |      |      |      |      |      |      | |  | ||||||
|    * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |      |      |      |      |      |      |      |      |      |      |      |      | |  | ||||||
|    * `-------------------------------------------------------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|     [_RAISE] = LAYOUT( |  | ||||||
|         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,                     KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, |  | ||||||
|         RGB_1,   RGB_2,   RGB_3,   RGB_4,   RGB_TOG, KC_NO,                     KC_NO,   RGB_MOD, RGB_RMOD,KC_NO,   KC_NO,   KC_NO, |  | ||||||
|         RGB_5,   RGB_6,   RGB_7,   RGB_8,   RGB_9,   KC_NO,                     KC_NO,   RGB_HUI, RGB_HUD, KC_NO,   KC_NO,   KC_NO, |  | ||||||
|         KC_NO,   RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, KC_NO,  QK_BOOT,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, |  | ||||||
|         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS, KC_NO,  KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO |  | ||||||
|         ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // define variables for reactive RGB
 |  | ||||||
| bool TOG_STATUS = false; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case LOWER: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 // not sure how to have keyboard check mode and set it to a variable, so my work around
 |  | ||||||
|                 // uses another variable that would be set to true after the first time a reactive key is pressed.
 |  | ||||||
|                 if (TOG_STATUS) {  // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
 |  | ||||||
|                 } else { |  | ||||||
|                     TOG_STATUS = !TOG_STATUS; |  | ||||||
|                     #ifdef RGBLIGHT_ENABLE |  | ||||||
|                         if (!caps_is_active) { |  | ||||||
|                             RGB_current_mode = rgblight_get_mode(); |  | ||||||
|                             CURRENT_COLOR    = rgblight_get_hsv(); |  | ||||||
|                         } |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); |  | ||||||
|                         rgblight_sethsv(HSV_BLUE); |  | ||||||
|                     #endif |  | ||||||
|                 } |  | ||||||
|                 layer_on(_LOWER); |  | ||||||
|             } else { |  | ||||||
|                 #ifdef RGBLIGHT_ENABLE |  | ||||||
|                     if (!caps_is_active) { |  | ||||||
|                         rgblight_mode(RGB_current_mode); |  | ||||||
|                         rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v); |  | ||||||
|                     } else { |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_ALTERNATING); |  | ||||||
|                         rgblight_sethsv(HSV_WHITE); |  | ||||||
|                     } |  | ||||||
|                 #endif |  | ||||||
|                 TOG_STATUS = false; |  | ||||||
|                 layer_off(_LOWER); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case RAISE: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 // not sure how to have keyboard check mode and set it to a variable, so my work around
 |  | ||||||
|                 // uses another variable that would be set to true after the first time a reactive key is pressed.
 |  | ||||||
|                 if (TOG_STATUS) {  // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
 |  | ||||||
|                 } else { |  | ||||||
|                     TOG_STATUS = !TOG_STATUS; |  | ||||||
|                     #ifdef RGBLIGHT_ENABLE |  | ||||||
|                         if (!caps_is_active) { |  | ||||||
|                             RGB_current_mode = rgblight_get_mode(); |  | ||||||
|                             CURRENT_COLOR    = rgblight_get_hsv(); |  | ||||||
|                         } |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); |  | ||||||
|                         rgblight_sethsv(HSV_RED); |  | ||||||
|                     #endif |  | ||||||
|                 } |  | ||||||
|                 layer_on(_RAISE); |  | ||||||
|             } else { |  | ||||||
|                 #ifdef RGBLIGHT_ENABLE |  | ||||||
|                     if (!caps_is_active) { |  | ||||||
|                         rgblight_mode(RGB_current_mode); |  | ||||||
|                         rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v); |  | ||||||
|                     } else { |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_ALTERNATING); |  | ||||||
|                         rgblight_sethsv(HSV_WHITE); |  | ||||||
|                     } |  | ||||||
|                 #endif |  | ||||||
|                 layer_off(_RAISE); |  | ||||||
|                 TOG_STATUS = false; |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|             //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
 |  | ||||||
|         case RGB_1 ... RGB_9: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v); |  | ||||||
|                 //this to have each custom mode separately, but sharing logic
 |  | ||||||
|                 switch(keycode){ |  | ||||||
|                     case RGB_1: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD + 1); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_2: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_KNIGHT); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_3: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_SNAKE); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_4: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 3); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_5: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_TWINKLE + 5); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_6: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_BREATHING + 3); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_7: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_8: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 5); |  | ||||||
|                         break; |  | ||||||
|                     case RGB_9: |  | ||||||
|                         rgblight_mode(RGBLIGHT_MODE_CHRISTMAS); |  | ||||||
|                         break; |  | ||||||
|                 } |  | ||||||
|                 RGB_current_mode = rgblight_get_mode(); |  | ||||||
|                 CURRENT_COLOR = rgblight_get_hsv(); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case RGB_TOG ... RGB_HUD: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v); |  | ||||||
|                 rgblight_mode(RGB_current_mode); |  | ||||||
|                 process_rgb(keycode, record); |  | ||||||
|                 RGB_current_mode = rgblight_get_mode(); |  | ||||||
|                 CURRENT_COLOR = rgblight_get_hsv(); |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case KC_CAPS: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 register_code(KC_CAPS); |  | ||||||
|                 caps_is_active = !caps_is_active; |  | ||||||
|                 if (caps_is_active) { |  | ||||||
|                     CURRENT_COLOR    = rgblight_get_hsv(); |  | ||||||
|                     rgblight_mode(RGBLIGHT_MODE_ALTERNATING); |  | ||||||
|                     rgblight_sethsv(HSV_WHITE); |  | ||||||
|                 } else if (!caps_is_active) { |  | ||||||
|                     unregister_code(KC_CAPS); |  | ||||||
|                     rgblight_mode(RGB_current_mode); |  | ||||||
|                     rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             return false; |  | ||||||
|             break; |  | ||||||
|         case RGBRST: |  | ||||||
|             #ifdef RGBLIGHT_ENABLE |  | ||||||
|                 if (record->event.pressed) { |  | ||||||
|                     eeconfig_update_rgblight_default(); |  | ||||||
|                     rgblight_enable(); |  | ||||||
|                     RGB_current_mode = rgblight_get_mode(); |  | ||||||
|                 } |  | ||||||
|             #endif |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_init_user(void) { |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
|     RGB_current_mode = rgblight_get_mode(); |  | ||||||
|     CURRENT_COLOR    = rgblight_get_hsv(); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
|  <!---Copyright 2021 Franco Rosi <fraanrosi@gmail.com> --> |  | ||||||
| ## Fraanrosi |  | ||||||
| A **Latin American Spanish** keymap for Helix/rev2/under, 5 rows.    |  | ||||||
| Designed to be as simple and more touch typing oriented as possible.     |  | ||||||
| It was inspired by a DELL Latitude E5470. |  | ||||||
| 
 |  | ||||||
| ## Layers |  | ||||||
| 
 |  | ||||||
| The Helix obviously does not have enough keys compared to a typical keyboard.   |  | ||||||
| The keymap has multiple layers, moving extra keys to different layers. |  | ||||||
| 
 |  | ||||||
| |Priority|Layer ID|Layer Name|Contents| |  | ||||||
| | ---- | ---- | --- | --- | |  | ||||||
| ||0|Qwerty|Qwerty layout (Base)| |  | ||||||
| ||1|Lower|Symbols, media, function keys and mouse.(Blue)| |  | ||||||
| ||2|Raise|Underglow RGB config(Red)| |  | ||||||
| 
 |  | ||||||
| Keymap : http://www.keyboard-layout-editor.com/#/gists/4cd7b4ccda1de5cf9edc56d29b64da30 |  | ||||||
| ### First layer (qwerty). |  | ||||||
| 
 |  | ||||||
| It contains the "**Ñ**" letter.          |  | ||||||
| "Caps Lock" key toggle an RGB mode, to alert.            |  | ||||||
| @ is typed with AltGr+q  |  | ||||||
|  |  | ||||||
| ### Second layer (Lower). |  | ||||||
| 
 |  | ||||||
| While "Lower" key is pressed, the RBG mode remains BLUE.            |  | ||||||
| It has the "Symbols, media, function keys and mouse" features.               |  | ||||||
| It completes the rest of the needed qwerty and F keys.               |  | ||||||
|  |  | ||||||
| ### Third layer (Raise). |  | ||||||
| 
 |  | ||||||
| While "Raise" key is pressed, the RBG mode remains RED.              |  | ||||||
| This is the underglow RGB's layer , where can be controlled the modes and hue.                   |  | ||||||
| With reset button for the micros. |  | ||||||
|  |  | ||||||
| ### All the layers. |  | ||||||
|   |  | ||||||
|   |  | ||||||
|  <!--- --> |  | ||||||
| @ -1,24 +0,0 @@ | |||||||
| # QMK Standard Build Options
 |  | ||||||
| #   change to "no" to disable the options, or define them in the Makefile in
 |  | ||||||
| #   the appropriate keymap folder that will get included automatically
 |  | ||||||
| #
 |  | ||||||
| #   See TOP/keyboards/helix/rules.mk for a list of options that can be set.
 |  | ||||||
| #   See TOP/docs/config_options.md for more information.
 |  | ||||||
| #
 |  | ||||||
| SPLIT_KEYBOARD = yes |  | ||||||
| LTO_ENABLE = yes         # if firmware size over limit, try this option |  | ||||||
| MOUSEKEY_ENABLE = yes    # Mouse keys |  | ||||||
| EXTRAKEY_ENABLE = yes    # Audio control and System control |  | ||||||
| # AUDIO_ENABLE = yes       # Audio output on port C6
 |  | ||||||
| # Helix Spacific Build Options
 |  | ||||||
| # you can uncomment and edit follows 7 Variables
 |  | ||||||
| #  jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
 |  | ||||||
| # OLED_ENABLE = no            # OLED_ENABLE
 |  | ||||||
| # LOCAL_GLCDFONT = no         # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
 |  | ||||||
| # LED_BACK_ENABLE = no        # LED backlight (Enable WS2812 RGB underlight.)
 |  | ||||||
| # LED_UNDERGLOW_ENABLE = no   # LED underglow (Enable WS2812 RGB underlight.)
 |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| # IOS_DEVICE_ENABLE = no      # connect to IOS device (iPad,iPhone)
 |  | ||||||
| 
 |  | ||||||
| LED_BACK_ENABLE = no |  | ||||||
| LED_UNDERGLOW_ENABLE = yes |  | ||||||
| @ -1,50 +0,0 @@ | |||||||
| /*
 |  | ||||||
| This is the c configuration file for the keymap |  | ||||||
| 
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| Copyright 2015 Jack Humbert |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #ifndef CONFIG_USER_H |  | ||||||
| #define CONFIG_USER_H |  | ||||||
| 
 |  | ||||||
| #undef TAPPING_TERM |  | ||||||
| #define TAPPING_TERM 200 |  | ||||||
| #define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */ |  | ||||||
| #define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */ |  | ||||||
| 
 |  | ||||||
| // the froggy keymap does not use the right hand side, so sync_timer is not needed
 |  | ||||||
| #define DISABLE_SYNC_TIMER |  | ||||||
| // For the same reason, the following are also not needed
 |  | ||||||
| #undef SPLIT_LAYER_STATE_ENABLE |  | ||||||
| #undef SPLIT_LED_STATE_ENABLE |  | ||||||
| 
 |  | ||||||
| // If you need more program area, try select and reduce rgblight modes to use.
 |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    #define RGBLIGHT_EFFECT_BREATHING |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    #define RGBLIGHT_EFFECT_SNAKE |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    #define RGBLIGHT_EFFECT_CHRISTMAS |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #endif /* CONFIG_USER_H */ |  | ||||||
| @ -1,235 +0,0 @@ | |||||||
| // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
 |  | ||||||
| // See gfxfont.h for newer custom bitmap font info.
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include "progmem.h" |  | ||||||
| 
 |  | ||||||
| // Standard ASCII 5x7 font
 |  | ||||||
| 
 |  | ||||||
| static const unsigned char font[] PROGMEM = { |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,  |  | ||||||
| 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,  |  | ||||||
| 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,  |  | ||||||
| 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,  |  | ||||||
| 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,  |  | ||||||
| 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,  |  | ||||||
| 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,  |  | ||||||
| 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,  |  | ||||||
| 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,  |  | ||||||
| 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,  |  | ||||||
| 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,  |  | ||||||
| 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,  |  | ||||||
| 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,  |  | ||||||
| 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,  |  | ||||||
| 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,  |  | ||||||
| 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,  |  | ||||||
| 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,  |  | ||||||
| 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,  |  | ||||||
| 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,  |  | ||||||
| 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,  |  | ||||||
| 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,  |  | ||||||
| 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,  |  | ||||||
| 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,  |  | ||||||
| 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,  |  | ||||||
| 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,  |  | ||||||
| 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,  |  | ||||||
| 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,  |  | ||||||
| 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,  |  | ||||||
| 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,  |  | ||||||
| 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,  |  | ||||||
| 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,  |  | ||||||
| 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,  |  | ||||||
| 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,  |  | ||||||
| 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,  |  | ||||||
| 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,  |  | ||||||
| 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,  |  | ||||||
| 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,  |  | ||||||
| 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,  |  | ||||||
| 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,  |  | ||||||
| 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,  |  | ||||||
| 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,  |  | ||||||
| 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,  |  | ||||||
| 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,  |  | ||||||
| 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,  |  | ||||||
| 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,  |  | ||||||
| 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,  |  | ||||||
| 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,  |  | ||||||
| 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,  |  | ||||||
| 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,  |  | ||||||
| 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,  |  | ||||||
| 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,  |  | ||||||
| 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,  |  | ||||||
| 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,  |  | ||||||
| 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,  |  | ||||||
| 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,  |  | ||||||
| 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,  |  | ||||||
| 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,  |  | ||||||
| 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,  |  | ||||||
| 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,  |  | ||||||
| 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,  |  | ||||||
| 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,  |  | ||||||
| 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,  |  | ||||||
| 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,  |  | ||||||
| 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,  |  | ||||||
| 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,  |  | ||||||
| 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,  |  | ||||||
| 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,  |  | ||||||
| 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,  |  | ||||||
| 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,  |  | ||||||
| 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,  |  | ||||||
| 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,  |  | ||||||
| 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,  |  | ||||||
| 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,  |  | ||||||
| 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,  |  | ||||||
| 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,  |  | ||||||
| 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,  |  | ||||||
| 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,  |  | ||||||
| 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,  |  | ||||||
| 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,  |  | ||||||
| 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,  |  | ||||||
| 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,  |  | ||||||
| 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,  |  | ||||||
| 0xFC, 0xFE, 0x02, 0x82, 0x82, 0x82,  |  | ||||||
| 0x82, 0x82, 0x82, 0xC2, 0x82, 0x02,  |  | ||||||
| 0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0x02, 0x62, 0x62, 0x62, 0x62, 0xE2,  |  | ||||||
| 0x62, 0x62, 0xE2, 0x02, 0x02, 0xFC,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,  |  | ||||||
| 0x30, 0x40, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x40, 0x00, 0x00, 0x24, 0xA4,  |  | ||||||
| 0xA4, 0xBC, 0xA4, 0x24, 0x24, 0x00,  |  | ||||||
| 0x00, 0x00, 0x24, 0xA4, 0x24, 0x24,  |  | ||||||
| 0x3C, 0x04, 0x04, 0x00, 0x00, 0x00,  |  | ||||||
| 0xB8, 0xA4, 0xA4, 0xA4, 0xBC, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC,  |  | ||||||
| 0x00, 0x44, 0x44, 0x44, 0xDC, 0x44,  |  | ||||||
| 0x04, 0x3C, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFC, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x3E, 0x7E, 0xFE,  |  | ||||||
| 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0xFE, 0x9E, 0x9E, 0x9E, 0x9E, 0x1E,  |  | ||||||
| 0x9E, 0x9E, 0x1E, 0xFE, 0xFE, 0xFC,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,  |  | ||||||
| 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,  |  | ||||||
| 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,  |  | ||||||
| 0x7F, 0x7F, 0x40, 0x41, 0x41, 0x41,  |  | ||||||
| 0x41, 0x41, 0x41, 0x41, 0x41, 0x40,  |  | ||||||
| 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x40, 0x40, 0x40, 0x40, 0x40, 0x41,  |  | ||||||
| 0x40, 0x40, 0x43, 0x40, 0x40, 0x7F,  |  | ||||||
| 0x00, 0x00, 0x00, 0xF0, 0xFB, 0xFB,  |  | ||||||
| 0x00, 0x50, 0x60, 0xFF, 0xFC, 0x3C,  |  | ||||||
| 0x1E, 0x0E, 0x0C, 0xFC, 0xF8, 0xE8,  |  | ||||||
| 0xE8, 0xE8, 0x30, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x02, 0x02, 0x0D, 0x02,  |  | ||||||
| 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x57, 0x50,  |  | ||||||
| 0x57, 0x54, 0x57, 0x10, 0x50, 0x00,  |  | ||||||
| 0x00, 0x00, 0x97, 0x94, 0x97, 0x94,  |  | ||||||
| 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xE4, 0x14, 0xF4, 0x94, 0xF7, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,  |  | ||||||
| 0x00, 0x38, 0xA4, 0xA4, 0xA5, 0x3C,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,  |  | ||||||
| 0x7F, 0x7F, 0x7C, 0x7F, 0x7F, 0x7F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFE, 0xFE, 0x02, 0x62, 0x62, 0x62,  |  | ||||||
| 0xE2, 0x62, 0x62, 0x62, 0xC2, 0x02,  |  | ||||||
| 0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0x02, 0x82, 0xC2, 0xE2, 0xF2, 0x82,  |  | ||||||
| 0x82, 0x82, 0x82, 0x02, 0x02, 0xFE,  |  | ||||||
| 0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,  |  | ||||||
| 0x00, 0x05, 0x03, 0x7F, 0x1F, 0x1E,  |  | ||||||
| 0x3C, 0x38, 0x18, 0x1F, 0x0F, 0x0D,  |  | ||||||
| 0x0D, 0x0D, 0x06, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x20, 0x20, 0x50,  |  | ||||||
| 0x8C, 0x50, 0x20, 0x20, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,  |  | ||||||
| 0x40, 0x30, 0x40, 0x80, 0x89, 0x09,  |  | ||||||
| 0x06, 0x09, 0x09, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x1C, 0x12, 0x12, 0x12,  |  | ||||||
| 0x1E, 0x10, 0x10, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFF, 0x00, 0x73,  |  | ||||||
| 0x84, 0xE7, 0x94, 0x94, 0x94, 0x67,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFE, 0xFE, 0xFE, 0x9E, 0x9E, 0x9E,  |  | ||||||
| 0x1E, 0x9E, 0x9E, 0x9E, 0x3E, 0xFE,  |  | ||||||
| 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x3F, 0x7F, 0x40, 0x46, 0x46, 0x46,  |  | ||||||
| 0x47, 0x46, 0x46, 0x46, 0x43, 0x40,  |  | ||||||
| 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x40, 0x41, 0x43, 0x47, 0x4F, 0x41,  |  | ||||||
| 0x41, 0x41, 0x41, 0x40, 0x40, 0x3F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,  |  | ||||||
| 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x01, 0x06, 0x01, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,  |  | ||||||
| 0x36, 0x08, 0x08, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0E,  |  | ||||||
| 0x10, 0x1C, 0x12, 0x12, 0x12, 0x12,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x3F, 0x7F, 0x7F, 0x79, 0x79, 0x79,  |  | ||||||
| 0x78, 0x79, 0x79, 0x79, 0x7C, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x3F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |  | ||||||
| }; |  | ||||||
| @ -1,696 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include <string.h> |  | ||||||
| 
 |  | ||||||
| #define MIN(x, y) (((x) < (y)) ? (x) : (y)) |  | ||||||
| #define MAX(x, y) (((x) > (y)) ? (x) : (y)) |  | ||||||
| 
 |  | ||||||
| #define LAYOUT_half( \ |  | ||||||
|     L00, L01, L02, L03, L04, L05,       \ |  | ||||||
|     L10, L11, L12, L13, L14, L15,       \ |  | ||||||
|     L20, L21, L22, L23, L24, L25,       \ |  | ||||||
|     L30, L31, L32, L33, L34, L35, L36,  \ |  | ||||||
|     L40, L41, L42, L43, L44, L45, L46   \ |  | ||||||
| ) { \ |  | ||||||
|     { L00, L01, L02, L03, L04, L05, KC_NO }, \ |  | ||||||
|     { L10, L11, L12, L13, L14, L15, KC_NO }, \ |  | ||||||
|     { L20, L21, L22, L23, L24, L25, KC_NO }, \ |  | ||||||
|     { L30, L31, L32, L33, L34, L35, L36 }, \ |  | ||||||
|     { L40, L41, L42, L43, L44, L45, L46 }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, _______ }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, _______ } \ |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #define DELAY_TIME  75 |  | ||||||
| static uint16_t key_timer; |  | ||||||
| static uint16_t tap_timer; |  | ||||||
| static uint16_t delay_registered_code; |  | ||||||
| static uint8_t delay_mat_row; |  | ||||||
| static uint8_t delay_mat_col; |  | ||||||
| static bool delay_key_stat; |  | ||||||
| static bool delay_key_pressed; |  | ||||||
| static bool tapping_key; |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them
 |  | ||||||
| // entirely and just use numbers.
 |  | ||||||
| #define _BASE 0 |  | ||||||
| #define _OPT 1 |  | ||||||
| #define _FUNC 2 |  | ||||||
| #define _SYM 3 |  | ||||||
| #define _NUM 4 |  | ||||||
| 
 |  | ||||||
| bool RGBAnimation = false; //Flag for LED Layer color Refresh.
 |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|   QWERTY = SAFE_RANGE, |  | ||||||
|   EISU, |  | ||||||
|   KANA, |  | ||||||
|   RGBRST, |  | ||||||
|   RGBOFF, |  | ||||||
|   RGB1, |  | ||||||
|   RGB2, |  | ||||||
|   RGB3, |  | ||||||
|   OPT_TAP_SP, |  | ||||||
|   DESKTOP, |  | ||||||
|   MAC, |  | ||||||
|   WIN, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum macro_keycodes { |  | ||||||
|   KC_SAMPLEMACRO, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| //Macros
 |  | ||||||
| #define M_SAMPLE M(KC_SAMPLEMACRO) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|   /* Base
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  C+z |   ;  |   [  |   (  |   <  |   {  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | KANA |   P  |   K  |   R  |   A  |   F  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  BS  |   D  |   T  |   H  |   E  |   O  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * | Shift|   Y  |   S  |   N  |   I  |   U  |Space | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * | Ctrl | Alt  | Gui  | Sym  | Num  | OPT  | Ent  | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_BASE] = LAYOUT_half( |  | ||||||
|       LCTL(KC_Z),    KC_SCLN,       KC_LBRC,       KC_LPRN,   KC_LT,     KC_LCBR, |  | ||||||
|       KANA,          KC_P,          KC_K,          KC_R,      KC_A,      KC_F, |  | ||||||
|       KC_BSPC,       KC_D,          KC_T,          KC_H,      KC_E,      KC_O, |  | ||||||
|       OSM(MOD_LSFT), KC_Y,          KC_S,          KC_N,      KC_I,      KC_U,       KC_SPC, |  | ||||||
|       OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), MO(_SYM),  MO(_NUM),  OPT_TAP_SP, KC_ENT ), |  | ||||||
| 
 |  | ||||||
|   /* Opt
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  Esc |  :   |  ]   |  )   |  >   |  }   | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  EISU|   J  |   M  |   B  |   '  |  Tab | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |   .  |   V  |   C  |   L  |   Z  |  Q   | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |      |   X  |   G  |   W  |   -  |  Del | Esc  | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |      |   ,  | DTOP |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_OPT] = LAYOUT_half( |  | ||||||
|       KC_ESC,  KC_COLN,KC_RBRC, KC_RPRN,KC_GT,     KC_RCBR, |  | ||||||
|       EISU,    KC_J,   KC_M,    KC_B,   KC_QUOT,   KC_TAB, |  | ||||||
|       KC_DOT,  KC_V,   KC_C,    KC_L,   KC_Z,      KC_Q, |  | ||||||
|       _______, KC_X,   KC_G,    KC_W,   KC_MINUS,  KC_DEL,  KC_ESC, |  | ||||||
|       _______, _______,_______, KC_COMM,DESKTOP,   _______, _______ |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Func
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |RGBRST|  Hue |      |  RST |  Mac |  Win | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | RGB1 | VAL+ |  F7  |  F8  |  F9  |      | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | RGB2 | VAL- |  F4  |  F5  |  F6  | F12  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * | RGB3 |  F10 |  F1  |  F2  |  F3  | F11  |      | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |RGBOFF|      |      |      |      |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_FUNC] = LAYOUT_half( |  | ||||||
|       RGBRST,RGB_HUI, _______, QK_BOOT, MAC,     WIN, |  | ||||||
|       RGB1,  RGB_VAI, KC_F7,   KC_F8,   KC_F9,   _______, |  | ||||||
|       RGB2,  RGB_VAD, KC_F4,   KC_F5,   KC_F6,   KC_F12, |  | ||||||
|       RGB3,  KC_F10,  KC_F1,   KC_F2,   KC_F3,   KC_F11,   _______, |  | ||||||
|       RGBOFF,_______, _______, _______, _______, _______,  _______ |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Sym
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  Ins |  GRV |      |  PU  |  PD  |   ^  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   \  |   #  |   =  |   ?  |   %  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   $  |  upA |   @  |   !  |   |  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |  CL  |  <-  |  dwA |  ->  |   _  |   &  |      | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |  PS  |      |   ~  |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_SYM] = LAYOUT_half( |  | ||||||
|       KC_INS,  KC_GRV,  _______, KC_PGUP, KC_PGDN, KC_CIRC, |  | ||||||
|       _______, KC_BSLS, KC_HASH, KC_EQL,  KC_QUES, KC_PERC, |  | ||||||
|       _______, KC_DLR,  KC_UP,   KC_AT,   KC_EXLM, KC_PIPE, |  | ||||||
|       KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_UNDS, KC_AMPR, _______, |  | ||||||
|       _______, _______, KC_PSCR, _______, KC_TILD, _______, _______ |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Raise
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |      |      | Func | home |  End |      | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   *  |  7   |  8   |  9   |  -   | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  .   |   /  |  4   |  5   |  6   |  +   | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |  LN  |  0   |  1   |  2   |  3   |C+S+F1|      | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |      |  ,   |      |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_NUM] = LAYOUT_half( |  | ||||||
|       _______,  _______, OSL(_FUNC), KC_HOME, KC_END,  _______, |  | ||||||
|       _______,  KC_ASTR, KC_P7,      KC_P8,   KC_P9,   KC_MINS, |  | ||||||
|       KC_PDOT,  KC_SLSH, KC_P4,      KC_P5,   KC_P6,   KC_PLUS, |  | ||||||
|       KC_NUM,   KC_P0,   KC_P1,      KC_P2,   KC_P3,   LCTL(S(KC_F1)), _______, |  | ||||||
|       _______,  _______, KC_PDOT,    KC_COMM, _______, _______,        _______ |  | ||||||
|       ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #ifdef AUDIO_ENABLE |  | ||||||
| 
 |  | ||||||
| float tone_qwerty[][2]     = SONG(QWERTY_SOUND); |  | ||||||
| float tone_dvorak[][2]     = SONG(DVORAK_SOUND); |  | ||||||
| float tone_colemak[][2]    = SONG(COLEMAK_SOUND); |  | ||||||
| float tone_plover[][2]     = SONG(PLOVER_SOUND); |  | ||||||
| float tone_plover_gb[][2]  = SONG(PLOVER_GOODBYE_SOUND); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // define variables for reactive RGB
 |  | ||||||
| //bool TOG_STATUS = false;
 |  | ||||||
| int RGB_current_mode; |  | ||||||
| 
 |  | ||||||
| void persistent_default_layer_set(uint16_t default_layer) { |  | ||||||
|   eeconfig_update_default_layer(default_layer); |  | ||||||
|   default_layer_set(default_layer); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool find_mairix(uint16_t keycode, uint8_t *row, uint8_t *col){ |  | ||||||
|   for(uint8_t i=0; i<MATRIX_ROWS; i++){ |  | ||||||
|     for(uint8_t j=0; j<MATRIX_COLS; j++){ |  | ||||||
|       if( pgm_read_word(&(keymaps[_BASE][i][j]))==keycode){ |  | ||||||
|         *row = i; |  | ||||||
|         *col = j; |  | ||||||
|         return true; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void unregister_delay_code(void){ |  | ||||||
|   if(delay_registered_code){ |  | ||||||
|     unregister_code(delay_registered_code); |  | ||||||
|     if (delay_registered_code & QK_LSFT){ |  | ||||||
|       unregister_code(KC_LSFT); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LCTL){ |  | ||||||
|       unregister_code(KC_LCTL); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LALT){ |  | ||||||
|       unregister_code(KC_LALT); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LGUI){ |  | ||||||
|       unregister_code(KC_LGUI); |  | ||||||
|     } |  | ||||||
|     delay_registered_code=0; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void register_delay_code(uint8_t layer){ |  | ||||||
|   if(delay_key_stat){ |  | ||||||
|     unregister_delay_code(); |  | ||||||
| 
 |  | ||||||
|     uint16_t code = pgm_read_word(&(keymaps[layer][delay_mat_row][delay_mat_col])); |  | ||||||
|     if (code & QK_LSFT){ |  | ||||||
|       register_code(KC_LSFT); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LCTL){ |  | ||||||
|       register_code(KC_LCTL); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LALT){ |  | ||||||
|       register_code(KC_LALT); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LGUI){ |  | ||||||
|       register_code(KC_LGUI); |  | ||||||
|     } |  | ||||||
|     register_code(code); |  | ||||||
|     delay_registered_code = code; |  | ||||||
|     delay_key_stat = false; |  | ||||||
|     tapping_key = true; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| struct keybuf { |  | ||||||
|   char col, row; |  | ||||||
|   char frame; |  | ||||||
| }; |  | ||||||
| struct keybuf keybufs[256]; |  | ||||||
| unsigned char keybuf_begin, keybuf_end; |  | ||||||
| 
 |  | ||||||
| int col, row; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
| 
 |  | ||||||
|   #ifdef RGBLIGHT_ENABLE |  | ||||||
|     col = record->event.key.col; |  | ||||||
|     row = record->event.key.row; |  | ||||||
|     if (record->event.pressed && ((row < 5 && is_keyboard_master()) || (row >= 5 && !is_keyboard_master()))) { |  | ||||||
|       int end = keybuf_end; |  | ||||||
|       keybufs[end].col = col; |  | ||||||
|       keybufs[end].row = row % 5; |  | ||||||
|       keybufs[end].frame = 0; |  | ||||||
|       keybuf_end ++; |  | ||||||
|     } |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
|   if(tap_timer&&keycode!=OPT_TAP_SP){ |  | ||||||
|     tapping_key = true; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   if(keycode==delay_registered_code){ |  | ||||||
|       if (!record->event.pressed){ |  | ||||||
|         unregister_delay_code(); |  | ||||||
|       } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   switch (keycode) { |  | ||||||
|     case KC_SCLN: |  | ||||||
|     case KC_LBRC: |  | ||||||
|     case KC_LPRN: |  | ||||||
|     case KC_LT: |  | ||||||
|     case KC_LCBR: |  | ||||||
|     case KC_P: |  | ||||||
|     case KC_K: |  | ||||||
|     case KC_R: |  | ||||||
|     case KC_A: |  | ||||||
|     case KC_F: |  | ||||||
|     case KC_BSPC: |  | ||||||
|     case KC_D: |  | ||||||
|     case KC_T: |  | ||||||
|     case KC_H: |  | ||||||
|     case KC_E: |  | ||||||
|     case KC_O: |  | ||||||
|     case KC_Y: |  | ||||||
|     case KC_S: |  | ||||||
|     case KC_N: |  | ||||||
|     case KC_I: |  | ||||||
|     case KC_U: |  | ||||||
|     case LCTL(KC_Z): |  | ||||||
|     case KC_SPC: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         register_delay_code(_BASE); |  | ||||||
|         if(find_mairix(keycode, &delay_mat_row, &delay_mat_col)){ |  | ||||||
|           key_timer = timer_read(); |  | ||||||
|           delay_key_stat = true; |  | ||||||
|           delay_key_pressed = true; |  | ||||||
|         } |  | ||||||
|       }else{ |  | ||||||
|         delay_key_pressed = false; |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case OPT_TAP_SP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tapping_key = false; |  | ||||||
|         register_delay_code(_OPT); |  | ||||||
|         layer_on(_OPT); |  | ||||||
|         tap_timer = timer_read(); |  | ||||||
|       }else{ |  | ||||||
|         layer_off(_OPT); |  | ||||||
|         if(tapping_key==false && timer_elapsed(tap_timer) < TAPPING_TERM){ |  | ||||||
|           SEND_STRING(" "); |  | ||||||
|         } |  | ||||||
|         tap_timer = 0; |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|    case EISU: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(keymap_config.swap_lalt_lgui==false){ |  | ||||||
|           register_code(KC_LNG2); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LALT("`")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_LNG2); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case KANA: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(keymap_config.swap_lalt_lgui==false){ |  | ||||||
|           register_code(KC_LNG1); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LALT("`")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_LNG1); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case DESKTOP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(keymap_config.swap_lalt_lgui==false){ |  | ||||||
|           register_code(KC_F11); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LGUI("d")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_F11); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case RGBRST: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           eeconfig_update_rgblight_default(); |  | ||||||
|           rgblight_enable(); |  | ||||||
|           RGB_current_mode = rgblight_get_mode(); |  | ||||||
|           RGBAnimation = false; |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGBOFF: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           rgblight_disable(); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB1: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD); |  | ||||||
|           RGB_current_mode = rgblight_get_mode(); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB2: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 1); |  | ||||||
|           RGB_current_mode = rgblight_get_mode(); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB3: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_KNIGHT); |  | ||||||
|           RGB_current_mode = rgblight_get_mode(); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case MAC: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         keymap_config.swap_lalt_lgui = false; |  | ||||||
|         keymap_config.swap_ralt_rgui = false; |  | ||||||
|         #ifdef AUDIO_ENABLE |  | ||||||
|           PLAY_SONG(ag_norm_song); |  | ||||||
|         #endif |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case WIN: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         keymap_config.swap_lalt_lgui = true; |  | ||||||
|         keymap_config.swap_ralt_rgui = true; |  | ||||||
|         #ifdef AUDIO_ENABLE |  | ||||||
|           PLAY_SONG(ag_swap_song); |  | ||||||
|         #endif |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| //keyboard start-up code. Runs once when the firmware starts up.
 |  | ||||||
| void matrix_init_user(void) { |  | ||||||
|     #ifdef RGBLIGHT_ENABLE |  | ||||||
|       RGB_current_mode = rgblight_get_mode(); |  | ||||||
|     #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| //assign the right code to your layers for OLED display
 |  | ||||||
| #define L_BASE 0 |  | ||||||
| #define L_OPT 2 |  | ||||||
| #define L_FUNC 4 |  | ||||||
| #define L_SYM 8 |  | ||||||
| #define L_NUM 16 |  | ||||||
| #define L_FNLAYER 64 |  | ||||||
| #define L_NUMLAY 128 |  | ||||||
| #define L_NLOWER 136 |  | ||||||
| #define L_NFNLAYER 192 |  | ||||||
| #define L_MOUSECURSOR 256 |  | ||||||
| 
 |  | ||||||
| // LED Effect
 |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| unsigned char rgb[7][5][3]; |  | ||||||
| void led_ripple_effect(char r, char g, char b) { |  | ||||||
|     static int scan_count = -10; |  | ||||||
|     static int keys[] = { 6, 6, 6, 7, 7 }; |  | ||||||
|     static int keys_sum[] = { 0, 6, 12, 18, 25 }; |  | ||||||
| 
 |  | ||||||
|     if (scan_count == -1) { |  | ||||||
|       rgblight_enable_noeeprom(); |  | ||||||
|       rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); |  | ||||||
|     } else if (scan_count >= 0 && scan_count < 5) { |  | ||||||
|       for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) { |  | ||||||
|         int i = c; |  | ||||||
|         // FIXME:
 |  | ||||||
| 
 |  | ||||||
|         int y = scan_count; |  | ||||||
|         int dist_y = abs(y - keybufs[i].row); |  | ||||||
|         for (int x=0; x<keys[y]; x++) { |  | ||||||
|           int dist = abs(x - keybufs[i].col) + dist_y; |  | ||||||
|           if (dist <= keybufs[i].frame) { |  | ||||||
|             int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2; |  | ||||||
|             if (elevation) { |  | ||||||
|               if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); } |  | ||||||
|               if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); } |  | ||||||
|               if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); } |  | ||||||
|             } |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } else if (scan_count == 5) { |  | ||||||
|       for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) { |  | ||||||
|         int i = c; |  | ||||||
|         if (keybufs[i].frame < 18) { |  | ||||||
|           keybufs[i].frame ++; |  | ||||||
|         } else { |  | ||||||
|           keybuf_begin ++; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } else if (scan_count >= 6 && scan_count <= 10) { |  | ||||||
|       int y = scan_count - 6; |  | ||||||
|       for (int x=0; x<keys[y]; x++) { |  | ||||||
|         int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1)); |  | ||||||
|         led[at].r = rgb[x][y][0]; |  | ||||||
|         led[at].g = rgb[x][y][1]; |  | ||||||
|         led[at].b = rgb[x][y][2]; |  | ||||||
|       } |  | ||||||
|       rgblight_set(); |  | ||||||
|     } else if (scan_count == 11) { |  | ||||||
|       memset(rgb, 0, sizeof(rgb)); |  | ||||||
|     } |  | ||||||
|     scan_count++; |  | ||||||
|     if (scan_count >= 12) { scan_count = 0; } |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| uint8_t layer_state_old; |  | ||||||
| 
 |  | ||||||
| //runs every scan cycle (a lot)
 |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
|   if(delay_key_stat && (timer_elapsed(key_timer) > DELAY_TIME)){ |  | ||||||
|     register_delay_code(_BASE); |  | ||||||
|     if(!delay_key_pressed){ |  | ||||||
|       unregister_delay_code(); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   if(layer_state_old != layer_state){ |  | ||||||
|     switch (layer_state) { |  | ||||||
|       case L_BASE: |  | ||||||
|         break; |  | ||||||
|       case L_OPT: |  | ||||||
|         register_delay_code(_OPT); |  | ||||||
|         break; |  | ||||||
|       case L_NUM: |  | ||||||
|         register_delay_code(_NUM); |  | ||||||
|         break; |  | ||||||
|       case L_SYM: |  | ||||||
|         register_delay_code(_SYM); |  | ||||||
|         break; |  | ||||||
|       case L_FUNC: |  | ||||||
|         register_delay_code(_FUNC); |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|     layer_state_old = layer_state; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   #ifdef RGBLIGHT_ENABLE |  | ||||||
|     if(!RGBAnimation){ |  | ||||||
|       switch (layer_state) { |  | ||||||
|         case L_BASE: |  | ||||||
|           #ifdef RGBLED_BACK |  | ||||||
|             led_ripple_effect(0,112,127); |  | ||||||
|           #else |  | ||||||
|             rgblight_setrgb(0,112,127); |  | ||||||
|           #endif |  | ||||||
|           break; |  | ||||||
|         case L_OPT: |  | ||||||
|           #ifdef RGBLED_BACK |  | ||||||
|             led_ripple_effect(127,0,100); |  | ||||||
|           #else |  | ||||||
|             rgblight_setrgb(127,0,100); |  | ||||||
|           #endif |  | ||||||
|           break; |  | ||||||
|         case L_NUM: |  | ||||||
|           #ifdef RGBLED_BACK |  | ||||||
|             led_ripple_effect(127,23,0); |  | ||||||
|           #else |  | ||||||
|             rgblight_setrgb(127,23,0); |  | ||||||
|           #endif |  | ||||||
|           break; |  | ||||||
|         case L_SYM: |  | ||||||
|           #ifdef RGBLED_BACK |  | ||||||
|             led_ripple_effect(0,127,0); |  | ||||||
|           #else |  | ||||||
|             rgblight_setrgb(0,127,0); |  | ||||||
|           #endif |  | ||||||
|           break; |  | ||||||
|         case L_FUNC: |  | ||||||
|           #ifdef RGBLED_BACK |  | ||||||
|             led_ripple_effect(127,0,61); |  | ||||||
|           #else |  | ||||||
|             rgblight_setrgb(127,0,61); |  | ||||||
|           #endif |  | ||||||
|           break; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|   #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //OLED update loop
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
| 
 |  | ||||||
| oled_rotation_t oled_init_user(oled_rotation_t rotation) { |  | ||||||
|     return OLED_ROTATION_0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Render to OLED
 |  | ||||||
| void render_status(void) { |  | ||||||
| 
 |  | ||||||
|   // froggy logo
 |  | ||||||
|   static char logo[4][1][17]= |  | ||||||
|   { |  | ||||||
|     { |  | ||||||
|       {0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0} |  | ||||||
|     } |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   static char indctr[8][2][4]= |  | ||||||
|   { |  | ||||||
|     // white icon
 |  | ||||||
|     { |  | ||||||
|       {0x60,0x61,0x62,0}, |  | ||||||
|       {0x63,0x64,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0x80,0x81,0x82,0}, |  | ||||||
|       {0x83,0x84,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xa0,0xa1,0xa2,0}, |  | ||||||
|       {0xa3,0xa4,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xc0,0xc1,0xc2,0}, |  | ||||||
|       {0xc3,0xc4,0} |  | ||||||
|     }, |  | ||||||
|     // Black icon
 |  | ||||||
|     { |  | ||||||
|       {0x75,0x76,0x77,0}, |  | ||||||
|       {0x78,0x79,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0x95,0x96,0x97,0}, |  | ||||||
|       {0x98,0x99,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xb5,0xb6,0xb7,0}, |  | ||||||
|       {0xb8,0xb9,0} |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xd5,0xd6,0xd7,0}, |  | ||||||
|       {0xd8,0xd9,0} |  | ||||||
|     }, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   int rown = 0; |  | ||||||
|   int rowf = 0; |  | ||||||
|   int rowa = 0; |  | ||||||
|   int rows = 0; |  | ||||||
| 
 |  | ||||||
|   //Set Indicator icon
 |  | ||||||
|   led_t led_state = host_keyboard_led_state(); |  | ||||||
|   if (led_state.num_lock) { rown = 4; } else { rown = 0; } |  | ||||||
|   if (led_state.caps_lock) { rowa = 4; } else { rowa = 0; } |  | ||||||
|   if (led_state.scroll_lock) { rows = 4; } else { rows = 0; } |  | ||||||
|   if (layer_state == L_FUNC) { rowf = 4; } |  | ||||||
| 
 |  | ||||||
|   oled_write(indctr[rown]  [0], false); |  | ||||||
|   oled_write(indctr[rowf]  [1], false); |  | ||||||
|   oled_write(logo  [0]     [0], false); |  | ||||||
|   oled_write(indctr[rown+1][0], false); |  | ||||||
|   oled_write(indctr[rowf+1][1], false); |  | ||||||
|   oled_write(logo  [1]     [0], false); |  | ||||||
|   oled_write(indctr[rowa+2][0], false); |  | ||||||
|   oled_write(indctr[rows+2][1], false); |  | ||||||
|   oled_write(logo  [2]     [0], false); |  | ||||||
|   oled_write(indctr[rowa+3][0], false); |  | ||||||
|   oled_write(indctr[rows+3][1], false); |  | ||||||
|   oled_write(logo  [3]     [0], false); |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool oled_task_user(void) { |  | ||||||
| 
 |  | ||||||
| #if DEBUG_TO_SCREEN |  | ||||||
|   if (debug_enable) { |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   if (is_keyboard_master()) { |  | ||||||
|     render_status(); |  | ||||||
|   } |  | ||||||
|   return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // end of OLED_ENABLE
 |  | ||||||
| @ -1,83 +0,0 @@ | |||||||
| Froggy -one hand Helix- |  | ||||||
| ====== |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| ## Features |  | ||||||
| It is a one-handed keyboard with reference to Frogpad. Layout Designed by タクマ ([@humid](https://twitter.com/humid)). |  | ||||||
| 
 |  | ||||||
| ## Layout |  | ||||||
| ### Base |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  C+z |   ;  |   [  |   (  |   <  |   {  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | KANA |   P  |   K  |   R  |   A  |   F  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |  BS  |   D  |   T  |   H  |   E  |   O  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| | Shift|   Y  |   S  |   N  |   I  |   U  | Space| |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| | Ctrl |  Alt |  win |  Sym |  Num |  OPT |  Ent | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Opt |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  Esc |   :  |   ]  |   )  |   >  |   }  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | EISU |   J  |   M  |   B  |   '  |  Tab | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |   .  |   V  |   C  |   L  |   Z  |   Q  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |      |   X  |   G  |   W  |   -  |  Del |  Esc | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |      |   ,  | DTOP |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Num |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |      |      | Func | home |  End |      | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   *  |   7  |   8  |   9  |   -  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |   .  |   /  |   4  |   5  |   6  |   +  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |  LN  |   0  |   1  |   2  |   3  |C+S+F1|      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |      |   ,  |      |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Sym |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  Ins |  GRV |      |  PU  |  PD  |   ^  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   \  |   #  |   =  |   ?  |   %  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   $  |  upA |   @  |   !  |   |  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |  CL  |  <-  |  dwA |  ->  |   _  |   &  |      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |  PS  |      |   ~  |      |      | |  | ||||||
|  `-----------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Func |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |RGBRST|  Hue |      |  RST |  Mac |  Win | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | RGB1 | VAL+ |  F7  |  F8  |  F9  |      | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | RGB2 | VAL- |  F4  |  F5  |  F6  |  F12 | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| | RGB3 |  F10 |  F1  |  F2  |  F3  |  F11 |      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |RGBOFF|      |      |      |      |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| # QMK Standard Build Options
 |  | ||||||
| #   change to "no" to disable the options, or define them in the Makefile in
 |  | ||||||
| #   the appropriate keymap folder that will get included automatically
 |  | ||||||
| #
 |  | ||||||
| #   See TOP/keyboards/helix/rules.mk for a list of options that can be set.
 |  | ||||||
| #   See TOP/docs/config_options.md for more information.
 |  | ||||||
| #
 |  | ||||||
| LTO_ENABLE = no  # if firmware size over limit, try this option |  | ||||||
| SPLIT_KEYBOARD = yes |  | ||||||
| 
 |  | ||||||
| # Helix Spacific Build Options
 |  | ||||||
| # you can uncomment and edit follows 7 Variables
 |  | ||||||
| #  jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
 |  | ||||||
| OLED_ENABLE = yes           # OLED_ENABLE |  | ||||||
| LOCAL_GLCDFONT = yes        # use each keymaps "helixfont.h" insted of "common/glcdfont.c" |  | ||||||
| LED_BACK_ENABLE = yes       # LED backlight (Enable WS2812 RGB underlight.) |  | ||||||
| LED_UNDERGLOW_ENABLE = no   # LED underglow (Enable WS2812 RGB underlight.) |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| # IOS_DEVICE_ENABLE = no      # connect to IOS device (iPad,iPhone)
 |  | ||||||
| 
 |  | ||||||
| # OLED_ENABLE が yes のとき
 |  | ||||||
| #   OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
 |  | ||||||
| #   OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
 |  | ||||||
| # If OLED_ENABLE is 'yes'
 |  | ||||||
| #   If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
 |  | ||||||
| #   If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
 |  | ||||||
| OLED_SELECT = core |  | ||||||
| @ -1,47 +0,0 @@ | |||||||
| /*
 |  | ||||||
| This is the c configuration file for the keymap |  | ||||||
| 
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.com> |  | ||||||
| Copyright 2015 Jack Humbert |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #undef TAPPING_TERM |  | ||||||
| #define TAPPING_TERM 200 |  | ||||||
| #define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */ |  | ||||||
| #define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */ |  | ||||||
| 
 |  | ||||||
| // the froggy keymap does not use the right hand side, so sync_timer is not needed
 |  | ||||||
| #define DISABLE_SYNC_TIMER |  | ||||||
| // For the same reason, the following are also not needed
 |  | ||||||
| #undef SPLIT_LAYER_STATE_ENABLE |  | ||||||
| #undef SPLIT_LED_STATE_ENABLE |  | ||||||
| 
 |  | ||||||
| // If you need more program area, try select and reduce rgblight modes to use.
 |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    #define RGBLIGHT_EFFECT_BREATHING |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    #define RGBLIGHT_EFFECT_SNAKE |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    #define RGBLIGHT_EFFECT_CHRISTMAS |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| @ -1,235 +0,0 @@ | |||||||
| // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
 |  | ||||||
| // See gfxfont.h for newer custom bitmap font info.
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include "progmem.h" |  | ||||||
| 
 |  | ||||||
| // Standard ASCII 5x7 font
 |  | ||||||
| 
 |  | ||||||
| static const unsigned char font[] PROGMEM = { |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,  |  | ||||||
| 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,  |  | ||||||
| 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,  |  | ||||||
| 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,  |  | ||||||
| 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,  |  | ||||||
| 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,  |  | ||||||
| 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,  |  | ||||||
| 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,  |  | ||||||
| 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,  |  | ||||||
| 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,  |  | ||||||
| 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,  |  | ||||||
| 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,  |  | ||||||
| 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,  |  | ||||||
| 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,  |  | ||||||
| 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,  |  | ||||||
| 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,  |  | ||||||
| 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,  |  | ||||||
| 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,  |  | ||||||
| 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,  |  | ||||||
| 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,  |  | ||||||
| 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,  |  | ||||||
| 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,  |  | ||||||
| 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,  |  | ||||||
| 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,  |  | ||||||
| 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,  |  | ||||||
| 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,  |  | ||||||
| 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,  |  | ||||||
| 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,  |  | ||||||
| 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,  |  | ||||||
| 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,  |  | ||||||
| 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,  |  | ||||||
| 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,  |  | ||||||
| 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,  |  | ||||||
| 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,  |  | ||||||
| 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,  |  | ||||||
| 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,  |  | ||||||
| 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,  |  | ||||||
| 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,  |  | ||||||
| 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,  |  | ||||||
| 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,  |  | ||||||
| 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,  |  | ||||||
| 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,  |  | ||||||
| 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,  |  | ||||||
| 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,  |  | ||||||
| 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,  |  | ||||||
| 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,  |  | ||||||
| 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,  |  | ||||||
| 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,  |  | ||||||
| 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,  |  | ||||||
| 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,  |  | ||||||
| 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,  |  | ||||||
| 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,  |  | ||||||
| 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,  |  | ||||||
| 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,  |  | ||||||
| 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,  |  | ||||||
| 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,  |  | ||||||
| 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,  |  | ||||||
| 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,  |  | ||||||
| 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,  |  | ||||||
| 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,  |  | ||||||
| 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,  |  | ||||||
| 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,  |  | ||||||
| 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,  |  | ||||||
| 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,  |  | ||||||
| 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,  |  | ||||||
| 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,  |  | ||||||
| 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,  |  | ||||||
| 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,  |  | ||||||
| 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,  |  | ||||||
| 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,  |  | ||||||
| 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,  |  | ||||||
| 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,  |  | ||||||
| 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,  |  | ||||||
| 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,  |  | ||||||
| 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,  |  | ||||||
| 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,  |  | ||||||
| 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,  |  | ||||||
| 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,  |  | ||||||
| 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,  |  | ||||||
| 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,  |  | ||||||
| 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,  |  | ||||||
| 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,  |  | ||||||
| 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,  |  | ||||||
| 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,  |  | ||||||
| 0xFC, 0xFE, 0x02, 0x82, 0x82, 0x82,  |  | ||||||
| 0x82, 0x82, 0x82, 0xC2, 0x82, 0x02,  |  | ||||||
| 0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0x02, 0x62, 0x62, 0x62, 0x62, 0xE2,  |  | ||||||
| 0x62, 0x62, 0xE2, 0x02, 0x02, 0xFC,  |  | ||||||
| 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC,  |  | ||||||
| 0xFC, 0x00, 0xFC, 0xFC, 0xF0, 0x80,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,  |  | ||||||
| 0x30, 0x40, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x20, 0x00, 0x00, 0x24, 0xA4,  |  | ||||||
| 0xA4, 0xBC, 0xA4, 0x24, 0x24, 0x00,  |  | ||||||
| 0x00, 0x00, 0x24, 0xA4, 0x24, 0x24,  |  | ||||||
| 0x3C, 0x04, 0x04, 0x00, 0x00, 0x00,  |  | ||||||
| 0xB8, 0xA4, 0xA4, 0xA4, 0xBC, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC,  |  | ||||||
| 0x00, 0x44, 0x44, 0x44, 0xDC, 0x44,  |  | ||||||
| 0x04, 0x3C, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFC, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x3E, 0x7E, 0xFE,  |  | ||||||
| 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0xFE, 0x9E, 0x9E, 0x9E, 0x9E, 0x1E,  |  | ||||||
| 0x9E, 0x9E, 0x1E, 0xFE, 0xFE, 0xFC,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,  |  | ||||||
| 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,  |  | ||||||
| 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,  |  | ||||||
| 0x7F, 0x7F, 0x40, 0x41, 0x41, 0x41,  |  | ||||||
| 0x41, 0x41, 0x41, 0x41, 0x41, 0x40,  |  | ||||||
| 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x40, 0x40, 0x40, 0x40, 0x40, 0x41,  |  | ||||||
| 0x40, 0x40, 0x43, 0x40, 0x40, 0x7F,  |  | ||||||
| 0x00, 0x20, 0x3C, 0x3E, 0x3E, 0x3E,  |  | ||||||
| 0x3E, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,  |  | ||||||
| 0x38, 0x00, 0x00, 0xF0, 0xFB, 0xFB,  |  | ||||||
| 0x00, 0x50, 0x60, 0xFF, 0xFC, 0x3C,  |  | ||||||
| 0x1E, 0x0E, 0x0C, 0xFC, 0xF8, 0xE8,  |  | ||||||
| 0xE8, 0xE8, 0x30, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x04, 0x04, 0x1B, 0x04, 0x04,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x57, 0x50,  |  | ||||||
| 0x57, 0x54, 0x57, 0x10, 0x50, 0x00,  |  | ||||||
| 0x00, 0x00, 0x97, 0x94, 0x97, 0x94,  |  | ||||||
| 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xE4, 0x14, 0xF4, 0x94, 0xF7, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,  |  | ||||||
| 0x00, 0x38, 0xA4, 0xA4, 0xA5, 0x3C,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,  |  | ||||||
| 0x7F, 0x7F, 0x7C, 0x7F, 0x7F, 0x7F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFE, 0xFE, 0x02, 0x62, 0x62, 0x62,  |  | ||||||
| 0xE2, 0x62, 0x62, 0x62, 0xC2, 0x02,  |  | ||||||
| 0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0x02, 0x82, 0xC2, 0xE2, 0xF2, 0x82,  |  | ||||||
| 0x82, 0x82, 0x82, 0x02, 0x02, 0xFE,  |  | ||||||
| 0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,  |  | ||||||
| 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,  |  | ||||||
| 0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,  |  | ||||||
| 0x00, 0x05, 0x03, 0x7F, 0x1F, 0x1E,  |  | ||||||
| 0x3C, 0x38, 0x18, 0x1F, 0x0F, 0x0D,  |  | ||||||
| 0x0D, 0x0D, 0x06, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x20, 0x20, 0x50,  |  | ||||||
| 0x8C, 0x50, 0x20, 0x20, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x09, 0x09,  |  | ||||||
| 0x06, 0x09, 0x09, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x1C, 0x12, 0x12, 0x12,  |  | ||||||
| 0x1E, 0x10, 0x10, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0xFF, 0x00, 0x73,  |  | ||||||
| 0x84, 0xE7, 0x94, 0x94, 0x94, 0x67,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0xFE, 0xFE, 0xFE, 0x9E, 0x9E, 0x9E,  |  | ||||||
| 0x1E, 0x9E, 0x9E, 0x9E, 0x3E, 0xFE,  |  | ||||||
| 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,  |  | ||||||
| 0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE,  |  | ||||||
| 0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,  |  | ||||||
| 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,  |  | ||||||
| 0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,  |  | ||||||
| 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC,  |  | ||||||
| 0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0x80,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,  |  | ||||||
| 0x3F, 0x7F, 0x40, 0x46, 0x46, 0x46,  |  | ||||||
| 0x47, 0x46, 0x46, 0x46, 0x43, 0x40,  |  | ||||||
| 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x40, 0x41, 0x43, 0x47, 0x4F, 0x41,  |  | ||||||
| 0x41, 0x41, 0x41, 0x40, 0x40, 0x3F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x3E, 0x73, 0x60,  |  | ||||||
| 0x70, 0x3E, 0x07, 0x03, 0x67, 0x3E,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,  |  | ||||||
| 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,  |  | ||||||
| 0x36, 0x08, 0x08, 0x00, 0x00, 0x00,  |  | ||||||
| 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0E,  |  | ||||||
| 0x10, 0x1C, 0x12, 0x12, 0x12, 0x12,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  |  | ||||||
| 0x3F, 0x7F, 0x7F, 0x79, 0x79, 0x79,  |  | ||||||
| 0x78, 0x79, 0x79, 0x79, 0x7C, 0x7F,  |  | ||||||
| 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,  |  | ||||||
| 0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x7E,  |  | ||||||
| 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x3F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x03, 0x03, 0x03,  |  | ||||||
| 0x03, 0x3F, 0x63, 0x63, 0x63, 0x3F,  |  | ||||||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,  |  | ||||||
| 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x0F,  |  | ||||||
| 0x07, 0x0F, 0x3F, 0x3F, 0x0F, 0x00,  |  | ||||||
| 0x03, 0x06, 0x00, 0xF0, 0xFB, 0xFB,  |  | ||||||
| }; |  | ||||||
| @ -1,810 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "keymap_japanese.h" |  | ||||||
| #include <string.h> |  | ||||||
| 
 |  | ||||||
| #define LAYOUT_half( \ |  | ||||||
|     L00, L01, L02, L03, L04, L05,       \ |  | ||||||
|     L10, L11, L12, L13, L14, L15,       \ |  | ||||||
|     L20, L21, L22, L23, L24, L25,       \ |  | ||||||
|     L30, L31, L32, L33, L34, L35, L36,  \ |  | ||||||
|     L40, L41, L42, L43, L44, L45, L46   \ |  | ||||||
| ) { \ |  | ||||||
|     { L00, L01, L02, L03, L04, L05, KC_NO }, \ |  | ||||||
|     { L10, L11, L12, L13, L14, L15, KC_NO }, \ |  | ||||||
|     { L20, L21, L22, L23, L24, L25, KC_NO }, \ |  | ||||||
|     { L30, L31, L32, L33, L34, L35, L36 }, \ |  | ||||||
|     { L40, L41, L42, L43, L44, L45, L46 }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, KC_NO }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, _______ }, \ |  | ||||||
|     { _______, _______, _______, _______, _______, _______, _______ } \ |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #define DELAY_TIME  75 |  | ||||||
| static uint16_t key_timer; |  | ||||||
| static uint16_t tap_timer; |  | ||||||
| static uint16_t delay_registered_code; |  | ||||||
| static uint8_t delay_registered_layer; |  | ||||||
| static uint8_t delay_mat_row; |  | ||||||
| static uint8_t delay_mat_col; |  | ||||||
| static bool delay_key_stat; |  | ||||||
| static bool delay_key_pressed; |  | ||||||
| static bool tapping_key; |  | ||||||
| 
 |  | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 |  | ||||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 |  | ||||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them
 |  | ||||||
| // entirely and just use numbers.
 |  | ||||||
| enum layer_number { |  | ||||||
|   _BASE = 0, |  | ||||||
|   _BASE_106, |  | ||||||
|   _OPT, |  | ||||||
|   _OPT_106, |  | ||||||
|   _SYM, |  | ||||||
|   _SYM_106, |  | ||||||
|   _NUM, |  | ||||||
|   _NUM_106, |  | ||||||
|   _FUNC, |  | ||||||
|   _LAYER_NUM, |  | ||||||
| }; |  | ||||||
| bool RGBAnimation = false; //Flag for LED Layer color Refresh.
 |  | ||||||
| 
 |  | ||||||
| typedef union { |  | ||||||
|   uint32_t raw; |  | ||||||
|   struct { |  | ||||||
|     bool mac_mode:1; |  | ||||||
|   }; |  | ||||||
| } user_config_t; |  | ||||||
| user_config_t user_config; |  | ||||||
| 
 |  | ||||||
| #define IS_MODE_106()   ((default_layer_state & (1UL << _BASE_106)) != 0) |  | ||||||
| #define IS_MODE_MAC()   (user_config.mac_mode) |  | ||||||
| #ifndef MAX |  | ||||||
| #define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) |  | ||||||
| #endif |  | ||||||
| #ifndef MIN |  | ||||||
| #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| enum custom_keycodes { |  | ||||||
|   QWERTY = SAFE_RANGE, |  | ||||||
|   EISU, |  | ||||||
|   KANA, |  | ||||||
|   RGBRST, |  | ||||||
|   RGBOFF, |  | ||||||
|   RGB1, |  | ||||||
|   RGB2, |  | ||||||
|   RGB3, |  | ||||||
|   OPT_TAP_SP, |  | ||||||
|   DESKTOP, |  | ||||||
|   MAC, |  | ||||||
|   WIN, |  | ||||||
|   L_SYM, |  | ||||||
|   L_NUM, |  | ||||||
|   TO_106, |  | ||||||
|   TO_101, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum macro_keycodes { |  | ||||||
|   KC_SAMPLEMACRO, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| //Macros
 |  | ||||||
| #define M_SAMPLE M(KC_SAMPLEMACRO) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|   /* Base
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  C+z |   ;  |   [  |   (  |   <  |   {  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | KANA |   P  |   K  |   R  |   A  |   F  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  BS  |   D  |   T  |   H  |   E  |   O  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * | Shift|   Y  |   S  |   N  |   I  |   U  |Space | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * | Ctrl | Alt  | Gui  | Sym  | Num  | OPT  | Ent  | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_BASE] = LAYOUT_half( |  | ||||||
|       LCTL(KC_Z),    KC_SCLN,       KC_LBRC,       KC_LPRN,   KC_LT,     KC_LCBR, |  | ||||||
|       KANA,          KC_P,          KC_K,          KC_R,      KC_A,      KC_F, |  | ||||||
|       KC_BSPC,       KC_D,          KC_T,          KC_H,      KC_E,      KC_O, |  | ||||||
|       OSM(MOD_LSFT), KC_Y,          KC_S,          KC_N,      KC_I,      KC_U,       KC_SPC, |  | ||||||
|       OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM,     L_NUM,     OPT_TAP_SP, KC_ENT |  | ||||||
|       ), |  | ||||||
|   [_BASE_106] = LAYOUT_half( |  | ||||||
|       LCTL(KC_Z),    JP_SCLN,       JP_LBRC,       JP_LPRN,   JP_LABK,   JP_LCBR, |  | ||||||
|       KANA,          KC_P,          KC_K,          KC_R,      KC_A,      KC_F, |  | ||||||
|       KC_BSPC,       KC_D,          KC_T,          KC_H,      KC_E,      KC_O, |  | ||||||
|       OSM(MOD_LSFT), KC_Y,          KC_S,          KC_N,      KC_I,      KC_U,       KC_SPC, |  | ||||||
|       OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM,     L_NUM,     OPT_TAP_SP, KC_ENT |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Opt
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  Esc |  :   |  ]   |  )   |  >   |  }   | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  EISU|   J  |   M  |   B  |   '  |  Tab | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |   .  |   V  |   C  |   L  |   Z  |  Q   | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |      |   X  |   G  |   W  |   -  |  Del | Esc  | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |      |   ,  | DTOP |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_OPT] = LAYOUT_half( |  | ||||||
|       KC_ESC,  KC_COLN,KC_RBRC, KC_RPRN,KC_GT,     KC_RCBR, |  | ||||||
|       EISU,    KC_J,   KC_M,    KC_B,   KC_QUOT,   KC_TAB, |  | ||||||
|       KC_DOT,  KC_V,   KC_C,    KC_L,   KC_Z,      KC_Q, |  | ||||||
|       _______, KC_X,   KC_G,    KC_W,   KC_MINUS,  KC_DEL,  KC_ESC, |  | ||||||
|       _______, _______,_______, KC_COMM,DESKTOP,   _______, _______ |  | ||||||
|       ), |  | ||||||
|   [_OPT_106] = LAYOUT_half( |  | ||||||
|       KC_ESC,  JP_COLN,JP_RBRC, JP_RPRN,JP_RABK,   JP_RCBR, |  | ||||||
|       EISU,    KC_J,   KC_M,    KC_B,   JP_QUOT,   KC_TAB, |  | ||||||
|       KC_DOT,  KC_V,   KC_C,    KC_L,   KC_Z,      KC_Q, |  | ||||||
|       _______, KC_X,   KC_G,    KC_W,   JP_MINS,   KC_DEL,  KC_ESC, |  | ||||||
|       _______, _______,_______, KC_COMM,DESKTOP,   _______, _______ |  | ||||||
|       ), |  | ||||||
| 
 |  | ||||||
|   /* Sym
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |  Ins |  GRV |      |  PU  |  PD  |   ^  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   \  |   #  |   =  |   ?  |   %  | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   $  |  upA |   @  |   !  |   |  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |  CL  |  <-  |  dwA |  ->  |   _  |   &  |      | |  | ||||||
|    * |------+------+------+------+------+------+------+ |  | ||||||
|    * |      |      |  PS  |      |   ~  |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_SYM] = LAYOUT_half( |  | ||||||
|       KC_INS,  KC_GRV,  _______, KC_PGUP, KC_PGDN, KC_CIRC, |  | ||||||
|       _______, KC_BSLS, KC_HASH, KC_EQL,  KC_QUES, KC_PERC, |  | ||||||
|       _______, KC_DLR,  KC_UP,   KC_AT,   KC_EXLM, KC_PIPE, |  | ||||||
|       KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_UNDS, KC_AMPR, _______, |  | ||||||
|       _______, _______, KC_PSCR, _______, KC_TILD, _______, _______ |  | ||||||
|       ), |  | ||||||
|   [_SYM_106] = LAYOUT_half( |  | ||||||
|       KC_INS,  JP_GRV,  _______, KC_PGUP, KC_PGDN, JP_CIRC, |  | ||||||
|       _______, JP_BSLS, JP_HASH, JP_EQL,  JP_QUES, JP_PERC, |  | ||||||
|       _______, JP_DLR,  KC_UP,   JP_AT,   JP_EXLM, JP_PIPE, |  | ||||||
|       KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,JP_UNDS, JP_AMPR, _______, |  | ||||||
|       _______, _______, KC_PSCR, _______, JP_TILD, _______, _______ |  | ||||||
|       ), |  | ||||||
|    |  | ||||||
|   /* Raise
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |      |      | Func | home |  End |      | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |      |   *  |  7   |  8   |  9   |  -   | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * |  .   |   /  |  4   |  5   |  6   |  +   | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * |  LN  |  0   |  1   |  2   |  3   |C+S+F1|      | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |      |      |  .   |  ,   |      |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_NUM] = LAYOUT_half( |  | ||||||
|       _______,  _______, OSL(_FUNC), KC_HOME, KC_END,  _______, |  | ||||||
|       _______,  KC_ASTR, KC_P7,      KC_P8,   KC_P9,   KC_MINS, |  | ||||||
|       KC_DOT,   KC_SLSH, KC_P4,      KC_P5,   KC_P6,   KC_PLUS, |  | ||||||
|       KC_NUM,   KC_P0,   KC_P1,      KC_P2,   KC_P3,   LCTL(S(KC_F1)), _______, |  | ||||||
|       _______,  _______, KC_PDOT,    KC_COMM, _______, _______,        _______ |  | ||||||
|       ), |  | ||||||
|   [_NUM_106] = LAYOUT_half( |  | ||||||
|       _______,  _______, OSL(_FUNC), KC_HOME, KC_END,  _______, |  | ||||||
|       _______,  JP_ASTR, KC_P7,      KC_P8,   KC_P9,   JP_MINS, |  | ||||||
|       KC_DOT,   JP_SLSH, KC_P4,      KC_P5,   KC_P6,   JP_PLUS, |  | ||||||
|       KC_NUM,   KC_P0,   KC_P1,      KC_P2,   KC_P3,   LCTL(S(KC_F1)), _______, |  | ||||||
|       _______,  _______, KC_PDOT,    JP_COMM, _______, _______,        _______ |  | ||||||
|       ), |  | ||||||
|    |  | ||||||
|   /* Func
 |  | ||||||
|    * ,-----------------------------------------. |  | ||||||
|    * |RGBRST|  Hue |To101 |  RST |  Mac |  Win | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | RGB1 | VAL+ |  F7  |  F8  |  F9  |To106 | |  | ||||||
|    * |------+------+------+------+------+------| |  | ||||||
|    * | RGB2 | VAL- |  F4  |  F5  |  F6  | F12  | |  | ||||||
|    * |------+------+------+------+------+------+------. |  | ||||||
|    * | RGB3 |  F10 |  F1  |  F2  |  F3  | F11  |      | |  | ||||||
|    * |------+------+------+------+------+------+------| |  | ||||||
|    * |RGBOFF|      |      |      |      |      |      | |  | ||||||
|    * `------------------------------------------------' |  | ||||||
|    */ |  | ||||||
|   [_FUNC] = LAYOUT_half( |  | ||||||
|       RGBRST,RGB_HUI, TO_101,  QK_BOOT, MAC,     WIN, |  | ||||||
|       RGB1,  RGB_VAI, KC_F7,   KC_F8,   KC_F9,   TO_106, |  | ||||||
|       RGB2,  RGB_VAD, KC_F4,   KC_F5,   KC_F6,   KC_F12, |  | ||||||
|       RGB3,  KC_F10,  KC_F1,   KC_F2,   KC_F3,   KC_F11,   _______, |  | ||||||
|       RGBOFF,_______, _______, _______, _______, _______,  _______ |  | ||||||
|       ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void set_mac_mode(bool enable) { |  | ||||||
|   if(enable){ |  | ||||||
|     user_config.mac_mode = true; |  | ||||||
|     keymap_config.swap_lalt_lgui = false; |  | ||||||
|     keymap_config.swap_ralt_rgui = false; |  | ||||||
|   }else{ |  | ||||||
|     user_config.mac_mode = false; |  | ||||||
|     keymap_config.swap_lalt_lgui = true; |  | ||||||
|     keymap_config.swap_ralt_rgui = true; |  | ||||||
|   } |  | ||||||
|   eeconfig_update_user(user_config.raw); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void eeconfig_init_user(void) { |  | ||||||
|   user_config.raw = 0; |  | ||||||
|   eeconfig_update_user(user_config.raw); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void keyboard_post_init_user(void) { |  | ||||||
|   user_config.raw = eeconfig_read_user(); |  | ||||||
|   set_mac_mode(user_config.mac_mode); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool find_mairix(uint16_t keycode, uint8_t *row, uint8_t *col){ |  | ||||||
|   int base_keymap = IS_MODE_106() ? _BASE_106 : _BASE; |  | ||||||
|   for(uint8_t i=0; i<MATRIX_ROWS; i++){ |  | ||||||
|     for(uint8_t j=0; j<MATRIX_COLS; j++){ |  | ||||||
|       if( pgm_read_word(&(keymaps[base_keymap][i][j]))==keycode){ |  | ||||||
|         *row = i; |  | ||||||
|         *col = j; |  | ||||||
|         return true; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void unregister_delay_code(void){ |  | ||||||
|   if(delay_registered_code){ |  | ||||||
|     unregister_code(delay_registered_code); |  | ||||||
|     if (delay_registered_code & QK_LSFT){ |  | ||||||
|       unregister_code(KC_LSFT); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LCTL){ |  | ||||||
|       unregister_code(KC_LCTL); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LALT){ |  | ||||||
|       unregister_code(KC_LALT); |  | ||||||
|     } |  | ||||||
|     if (delay_registered_code & QK_LGUI){ |  | ||||||
|       unregister_code(KC_LGUI); |  | ||||||
|     } |  | ||||||
|     delay_registered_code=0; |  | ||||||
|     delay_registered_layer=0; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void register_delay_code(uint8_t layer){ |  | ||||||
|   if(delay_key_stat){ |  | ||||||
|     unregister_delay_code(); |  | ||||||
| 
 |  | ||||||
|     uint16_t code = pgm_read_word(&(keymaps[layer][delay_mat_row][delay_mat_col])); |  | ||||||
|     if (code & QK_LSFT){ |  | ||||||
|       register_code(KC_LSFT); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LCTL){ |  | ||||||
|       register_code(KC_LCTL); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LALT){ |  | ||||||
|       register_code(KC_LALT); |  | ||||||
|     } |  | ||||||
|     if (code & QK_LGUI){ |  | ||||||
|       register_code(KC_LGUI); |  | ||||||
|     } |  | ||||||
|     register_code(code); |  | ||||||
|     delay_registered_code = code; |  | ||||||
|     delay_registered_layer = layer; |  | ||||||
|     delay_key_stat = false; |  | ||||||
|     tapping_key = true; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| struct keybuf { |  | ||||||
|   char col, row; |  | ||||||
|   char frame; |  | ||||||
| }; |  | ||||||
| struct keybuf keybufs[256]; |  | ||||||
| unsigned char keybuf_begin, keybuf_end; |  | ||||||
| 
 |  | ||||||
| int col, row; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
| 
 |  | ||||||
|   #ifdef RGBLIGHT_ENABLE |  | ||||||
|     col = record->event.key.col; |  | ||||||
|     row = record->event.key.row; |  | ||||||
|     if (record->event.pressed && ((row < 5 && is_keyboard_master()) || (row >= 5 && !is_keyboard_master()))) { |  | ||||||
|       int end = keybuf_end; |  | ||||||
|       keybufs[end].col = col; |  | ||||||
|       keybufs[end].row = row % 5; |  | ||||||
|       keybufs[end].frame = 0; |  | ||||||
|       keybuf_end ++; |  | ||||||
|     } |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
|   if(tap_timer&&keycode!=OPT_TAP_SP){ |  | ||||||
|     tapping_key = true; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   if(keycode==delay_registered_code){ |  | ||||||
|     if (!record->event.pressed){ |  | ||||||
|       unregister_delay_code(); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   switch (keycode) { |  | ||||||
|     case KC_SCLN: |  | ||||||
|     case KC_LBRC: |  | ||||||
|     case KC_LPRN: |  | ||||||
|     case KC_LT: |  | ||||||
|     case KC_LCBR: |  | ||||||
|     case KC_P: |  | ||||||
|     case KC_K: |  | ||||||
|     case KC_R: |  | ||||||
|     case KC_A: |  | ||||||
|     case KC_F: |  | ||||||
|     case KC_BSPC: |  | ||||||
|     case KC_D: |  | ||||||
|     case KC_T: |  | ||||||
|     case KC_H: |  | ||||||
|     case KC_E: |  | ||||||
|     case KC_O: |  | ||||||
|     case KC_Y: |  | ||||||
|     case KC_S: |  | ||||||
|     case KC_N: |  | ||||||
|     case KC_I: |  | ||||||
|     case KC_U: |  | ||||||
|     case LCTL(KC_Z): |  | ||||||
|     case KC_SPC: |  | ||||||
|     //case JP_SCLN: // == KC_SCLN
 |  | ||||||
|     case JP_LBRC: |  | ||||||
|     case JP_LPRN: |  | ||||||
|     //case JP_LABK: // == KC_LT
 |  | ||||||
|     case JP_LCBR: |  | ||||||
|       if (IS_MODE_106()) { |  | ||||||
|           if (keycode == KC_LBRC || keycode == KC_LPRN || keycode == KC_LCBR) |  | ||||||
|             break; |  | ||||||
|       }else{ |  | ||||||
|           if (keycode == JP_LBRC || keycode == JP_LPRN || keycode == JP_LCBR) |  | ||||||
|             break; |  | ||||||
|       } |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if (IS_MODE_106()) |  | ||||||
|           register_delay_code(_BASE_106); |  | ||||||
|         else |  | ||||||
|           register_delay_code(_BASE); |  | ||||||
|         if(find_mairix(keycode, &delay_mat_row, &delay_mat_col)){ |  | ||||||
|           key_timer = timer_read(); |  | ||||||
|           delay_key_stat = true; |  | ||||||
|           delay_key_pressed = true; |  | ||||||
|         } |  | ||||||
|       }else{ |  | ||||||
|         delay_key_pressed = false; |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case L_SYM: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if (IS_MODE_106()) { |  | ||||||
|           register_delay_code(_SYM_106); |  | ||||||
|           layer_on(_SYM_106); |  | ||||||
|         }else{ |  | ||||||
|           register_delay_code(_SYM); |  | ||||||
|           layer_on(_SYM); |  | ||||||
|         } |  | ||||||
|       }else{ |  | ||||||
|         layer_off(_SYM); |  | ||||||
|         layer_off(_SYM_106); |  | ||||||
|         if(delay_registered_layer == _SYM || delay_registered_layer == _SYM_106) { |  | ||||||
|           unregister_delay_code(); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case L_NUM: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if (IS_MODE_106()) { |  | ||||||
|           register_delay_code(_NUM_106); |  | ||||||
|           layer_on(_NUM_106); |  | ||||||
|         }else{ |  | ||||||
|           register_delay_code(_NUM); |  | ||||||
|           layer_on(_NUM); |  | ||||||
|         } |  | ||||||
|       }else{ |  | ||||||
|         layer_off(_NUM); |  | ||||||
|         layer_off(_NUM_106); |  | ||||||
|         if(delay_registered_layer == _NUM || delay_registered_layer == _NUM_106) { |  | ||||||
|           unregister_delay_code(); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case OPT_TAP_SP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         tapping_key = false; |  | ||||||
|         if (IS_MODE_106()) { |  | ||||||
|           register_delay_code(_OPT_106); |  | ||||||
|           layer_on(_OPT_106); |  | ||||||
|         }else{ |  | ||||||
|           register_delay_code(_OPT); |  | ||||||
|           layer_on(_OPT); |  | ||||||
|         } |  | ||||||
|         tap_timer = timer_read(); |  | ||||||
|       }else{ |  | ||||||
|         layer_off(_OPT); |  | ||||||
|         layer_off(_OPT_106); |  | ||||||
|         if(tapping_key==false && timer_elapsed(tap_timer) < TAPPING_TERM){ |  | ||||||
|           SEND_STRING(" "); |  | ||||||
|         }else if(delay_registered_layer == _OPT || delay_registered_layer == _OPT_106) { |  | ||||||
|           unregister_delay_code(); |  | ||||||
|         } |  | ||||||
|         tap_timer = 0; |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|    case EISU: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(IS_MODE_MAC()){ |  | ||||||
|           register_code(KC_LNG2); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LALT("`")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_LNG2); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case KANA: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(IS_MODE_MAC()){ |  | ||||||
|           register_code(KC_LNG1); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LALT("`")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_LNG1); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case DESKTOP: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if(IS_MODE_MAC()){ |  | ||||||
|           register_code(KC_F11); |  | ||||||
|         }else{ |  | ||||||
|           SEND_STRING(SS_LGUI("d")); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         unregister_code(KC_F11); |  | ||||||
|       } |  | ||||||
|       return false; |  | ||||||
|       break; |  | ||||||
|     case RGBRST: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           eeconfig_update_rgblight_default(); |  | ||||||
|           rgblight_enable(); |  | ||||||
|           RGBAnimation = false; |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGBOFF: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           rgblight_disable(); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB1: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB2: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 1); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case RGB3: |  | ||||||
|       #ifdef RGBLIGHT_ENABLE |  | ||||||
|         if (record->event.pressed) { |  | ||||||
|           RGBAnimation = true; |  | ||||||
|           rgblight_mode(RGBLIGHT_MODE_KNIGHT); |  | ||||||
|         } |  | ||||||
|       #endif |  | ||||||
|       break; |  | ||||||
|     case MAC: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         set_mac_mode(true); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case WIN: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         set_mac_mode(false); |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TO_101: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if (IS_MODE_106()) { |  | ||||||
|           set_single_persistent_default_layer(_BASE); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|     case TO_106: |  | ||||||
|       if (record->event.pressed) { |  | ||||||
|         if (!IS_MODE_106()) { |  | ||||||
|           set_single_persistent_default_layer(_BASE_106); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       break; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // LED Effect
 |  | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| unsigned char rgb[7][5][3]; |  | ||||||
| void led_ripple_effect(char r, char g, char b) { |  | ||||||
|     static int scan_count = -10; |  | ||||||
|     static int keys[] = { 6, 6, 6, 7, 7 }; |  | ||||||
|     static int keys_sum[] = { 0, 6, 12, 18, 25 }; |  | ||||||
| 
 |  | ||||||
|     if (scan_count == -1) { |  | ||||||
|       rgblight_enable_noeeprom(); |  | ||||||
|       rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); |  | ||||||
|     } else if (scan_count >= 0 && scan_count < 5) { |  | ||||||
|       for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) { |  | ||||||
|         int i = c; |  | ||||||
|         // FIXME:
 |  | ||||||
| 
 |  | ||||||
|         int y = scan_count; |  | ||||||
|         int dist_y = abs(y - keybufs[i].row); |  | ||||||
|         for (int x=0; x<keys[y]; x++) { |  | ||||||
|           int dist = abs(x - keybufs[i].col) + dist_y; |  | ||||||
|           if (dist <= keybufs[i].frame) { |  | ||||||
|             int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2; |  | ||||||
|             if (elevation) { |  | ||||||
|               if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); } |  | ||||||
|               if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); } |  | ||||||
|               if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); } |  | ||||||
|             } |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } else if (scan_count == 5) { |  | ||||||
|       for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) { |  | ||||||
|         int i = c; |  | ||||||
|         if (keybufs[i].frame < 18) { |  | ||||||
|           keybufs[i].frame ++; |  | ||||||
|         } else { |  | ||||||
|           keybuf_begin ++; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } else if (scan_count >= 6 && scan_count <= 10) { |  | ||||||
|       int y = scan_count - 6; |  | ||||||
|       for (int x=0; x<keys[y]; x++) { |  | ||||||
|         int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1)); |  | ||||||
|         led[at].r = rgb[x][y][0]; |  | ||||||
|         led[at].g = rgb[x][y][1]; |  | ||||||
|         led[at].b = rgb[x][y][2]; |  | ||||||
|       } |  | ||||||
|       rgblight_set(); |  | ||||||
|     } else if (scan_count == 11) { |  | ||||||
|       memset(rgb, 0, sizeof(rgb)); |  | ||||||
|     } |  | ||||||
|     scan_count++; |  | ||||||
|     if (scan_count >= 12) { scan_count = 0; } |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| layer_state_t layer_state_old; |  | ||||||
| 
 |  | ||||||
| //runs every scan cycle (a lot)
 |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
|   if(delay_key_stat && (timer_elapsed(key_timer) > DELAY_TIME)){ |  | ||||||
|     if (IS_MODE_106()) |  | ||||||
|       register_delay_code(_BASE_106); |  | ||||||
|     else |  | ||||||
|       register_delay_code(_BASE); |  | ||||||
|     if(!delay_key_pressed){ |  | ||||||
|       unregister_delay_code(); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   if(layer_state_old != layer_state){ |  | ||||||
|     for (int8_t i = _LAYER_NUM-1; i > _BASE_106; i--) { |  | ||||||
|       if(IS_LAYER_ON(i)){ |  | ||||||
|         register_delay_code(i); |  | ||||||
|         break; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     layer_state_old = layer_state; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   #ifdef RGBLIGHT_ENABLE |  | ||||||
|     if(!RGBAnimation){ |  | ||||||
|       if(IS_LAYER_ON(_FUNC)){ |  | ||||||
|         #ifdef RGBLED_BACK |  | ||||||
|           led_ripple_effect(127,23,0); |  | ||||||
|         #else |  | ||||||
|           rgblight_setrgb(127,23,0); |  | ||||||
|         #endif |  | ||||||
|       }else if(IS_LAYER_ON(_NUM)||IS_LAYER_ON(_NUM_106)){ |  | ||||||
|         #ifdef RGBLED_BACK |  | ||||||
|           led_ripple_effect(127,0,61); |  | ||||||
|         #else |  | ||||||
|           rgblight_setrgb(127,0,61); |  | ||||||
|         #endif |  | ||||||
|       }else if(IS_LAYER_ON(_SYM)||IS_LAYER_ON(_SYM_106)){ |  | ||||||
|         #ifdef RGBLED_BACK |  | ||||||
|           led_ripple_effect(0,127,0); |  | ||||||
|         #else |  | ||||||
|           rgblight_setrgb(0,127,0); |  | ||||||
|         #endif |  | ||||||
|       }else if(IS_LAYER_ON(_OPT)||IS_LAYER_ON(_OPT_106)){ |  | ||||||
|         #ifdef RGBLED_BACK |  | ||||||
|           led_ripple_effect(127,0,100); |  | ||||||
|         #else |  | ||||||
|           rgblight_setrgb(127,0,100); |  | ||||||
|         #endif |  | ||||||
|       } else { |  | ||||||
|         #ifdef RGBLED_BACK |  | ||||||
|           led_ripple_effect(0,112,127); |  | ||||||
|         #else |  | ||||||
|           rgblight_setrgb(0,112,127); |  | ||||||
|         #endif |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //OLED update loop
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
| 
 |  | ||||||
| // Render to OLED
 |  | ||||||
| void render_status(void) { |  | ||||||
| 
 |  | ||||||
|   // froggy logo
 |  | ||||||
|   static char logo[4][17]= |  | ||||||
|   { |  | ||||||
|     {0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0}, |  | ||||||
|     {0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0}, |  | ||||||
|     {0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0}, |  | ||||||
|     {0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0}, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   static char modectl[4][2][4]= |  | ||||||
|   { |  | ||||||
|     { |  | ||||||
|       {0x65,0x66,0x67,0}, //WIN
 |  | ||||||
|       {0x85,0x86,0x87,0}, //WIN
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xa5,0xa6,0xa7,0}, //US(101)
 |  | ||||||
|       {0xc5,0xc6,0xc7,0}, //US(101)
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xbd,0xbe,0xbf,0}, //MAC
 |  | ||||||
|       {0xdd,0xde,0xdf,0}, //MAC
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xba,0xbb,0xbc,0}, //JP(106)
 |  | ||||||
|       {0xda,0xdb,0xdc,0}, //JP(106)
 |  | ||||||
|     }, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   static char indctr[8][2][4]= |  | ||||||
|   { |  | ||||||
|     // white icon
 |  | ||||||
|     { |  | ||||||
|       {0x60,0x61,0x62,0}, //NUM
 |  | ||||||
|       {0x63,0x64,0}       //FUNC
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0x80,0x81,0x82,0}, //NUM
 |  | ||||||
|       {0x83,0x84,0}       //FUNC
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xa0,0xa1,0xa2,0}, //CAPS
 |  | ||||||
|       {0xa3,0xa4,0}       //SCLK
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xc0,0xc1,0xc2,0}, //CAPS
 |  | ||||||
|       {0xc3,0xc4,0}       //SCLK
 |  | ||||||
|     }, |  | ||||||
|     // Black icon
 |  | ||||||
|     { |  | ||||||
|       {0x75,0x76,0x77,0}, //NUM
 |  | ||||||
|       {0x78,0x79,0}       //FUNC
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0x95,0x96,0x97,0}, //NUM
 |  | ||||||
|       {0x98,0x99,0}       //FUNC
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       {0xb5,0xb6,0xb7,0}, //CAPS
 |  | ||||||
|       {0xb8,0xb9,0}       //SCLK
 |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|      {0xd5,0xd6,0xd7,0}, //CAPS
 |  | ||||||
|      {0xd8,0xd9,0}       //SCLK
 |  | ||||||
|     }, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   int rown = 0; |  | ||||||
|   int rowf = 0; |  | ||||||
|   int rowa = 0; |  | ||||||
|   int rows = 0; |  | ||||||
|   int rowm = 0; |  | ||||||
|   int rowj = 1; |  | ||||||
| 
 |  | ||||||
|   //Set Indicator icon
 |  | ||||||
|   led_t led_state = host_keyboard_led_state(); |  | ||||||
|   if (led_state.num_lock) { rown = 4; } |  | ||||||
|   if (led_state.caps_lock) { rowa = 4; } |  | ||||||
|   if (led_state.scroll_lock) { rows = 4; } |  | ||||||
|   if (IS_LAYER_ON(_FUNC)) { rowf = 4; } |  | ||||||
| 
 |  | ||||||
|   //Set Mode icon
 |  | ||||||
|   if (IS_MODE_MAC()) { rowm = 2; } |  | ||||||
|   if (IS_MODE_106()) { rowj = 3; } |  | ||||||
| 
 |  | ||||||
|   oled_write(indctr[rown]  [0], false); |  | ||||||
|   oled_write(indctr[rowf]  [1], false); |  | ||||||
|   oled_write(modectl[rowm] [0], false); |  | ||||||
|   oled_write(logo[0],           false); |  | ||||||
|   oled_write(indctr[rown+1][0], false); |  | ||||||
|   oled_write(indctr[rowf+1][1], false); |  | ||||||
|   oled_write(modectl[rowm] [1], false); |  | ||||||
|   oled_write(logo[1],           false); |  | ||||||
|   oled_write(indctr[rowa+2][0], false); |  | ||||||
|   oled_write(indctr[rows+2][1], false); |  | ||||||
|   oled_write(modectl[rowj] [0], false); |  | ||||||
|   oled_write(logo[2],           false); |  | ||||||
|   oled_write(indctr[rowa+3][0], false); |  | ||||||
|   oled_write(indctr[rows+3][1], false); |  | ||||||
|   oled_write(modectl[rowj] [1], false); |  | ||||||
|   oled_write(logo[3],           false); |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool oled_task_user(void) { |  | ||||||
| 
 |  | ||||||
| #if DEBUG_TO_SCREEN |  | ||||||
|   if (debug_enable) { |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   if (is_keyboard_master()) { |  | ||||||
|     render_status(); |  | ||||||
|   } |  | ||||||
|   return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // end of OLED_ENABLE
 |  | ||||||
| 
 |  | ||||||
| // Local Variables:
 |  | ||||||
| // mode: c++
 |  | ||||||
| // truncate-lines: t
 |  | ||||||
| // indent-tabs-mode: nil
 |  | ||||||
| // End:
 |  | ||||||
| @ -1,85 +0,0 @@ | |||||||
| Froggy -one hand Helix- with 106-key mode |  | ||||||
| ====== |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| ## Features |  | ||||||
| It is a one-handed keyboard with reference to Frogpad. Layout Designed by タクマ ([@humid](https://twitter.com/humid)). |  | ||||||
| 
 |  | ||||||
| This keymap has 106-key mode, This is usable when keyboard setting of OS is OADG 106/109 keyboard. |  | ||||||
| 
 |  | ||||||
| ## Layout |  | ||||||
| ### Base |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  C+z |   ;  |   [  |   (  |   <  |   {  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | KANA |   P  |   K  |   R  |   A  |   F  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |  BS  |   D  |   T  |   H  |   E  |   O  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| | Shift|   Y  |   S  |   N  |   I  |   U  | Space| |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| | Ctrl |  Alt |  win |  Sym |  Num |  OPT |  Ent | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Opt |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  Esc |   :  |   ]  |   )  |   >  |   }  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | EISU |   J  |   M  |   B  |   '  |  Tab | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |   .  |   V  |   C  |   L  |   Z  |   Q  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |      |   X  |   G  |   W  |   -  |  Del |  Esc | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |      |   ,  | DTOP |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Num |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |      |      | Func | home |  End |      | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   *  |   7  |   8  |   9  |   -  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |   .  |   /  |   4  |   5  |   6  |   +  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |  LN  |   0  |   1  |   2  |   3  |C+S+F1|      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |      |   ,  |      |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Sym |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |  Ins |  GRV |      |  PU  |  PD  |   ^  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   \  |   #  |   =  |   ?  |   %  | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| |      |   $  |  upA |   @  |   !  |   |  | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| |  CL  |  <-  |  dwA |  ->  |   _  |   &  |      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |      |      |  PS  |      |   ~  |      |      | |  | ||||||
|  `-----------------------------------------------' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Func |  | ||||||
| ``` |  | ||||||
| ,-----------------------------------------. |  | ||||||
| |RGBRST|  Hue | to101|  RST |  Mac |  Win | |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | RGB1 | VAL+ |  F7  |  F8  |  F9  | to106| |  | ||||||
| |------+------+------+------+------+------| |  | ||||||
| | RGB2 | VAL- |  F4  |  F5  |  F6  |  F12 | |  | ||||||
| |------+------+------+------+------+------+------. |  | ||||||
| | RGB3 |  F10 |  F1  |  F2  |  F3  |  F11 |      | |  | ||||||
| |------+------+------+------+------+------+------| |  | ||||||
| |RGBOFF|      |      |      |      |      |      | |  | ||||||
| `------------------------------------------------' |  | ||||||
| ``` |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| # QMK Standard Build Options
 |  | ||||||
| #   change to "no" to disable the options, or define them in the Makefile in
 |  | ||||||
| #   the appropriate keymap folder that will get included automatically
 |  | ||||||
| #
 |  | ||||||
| #   See TOP/keyboards/helix/rules.mk for a list of options that can be set.
 |  | ||||||
| #   See TOP/docs/config_options.md for more information.
 |  | ||||||
| #
 |  | ||||||
| LTO_ENABLE = yes  # if firmware size over limit, try this option |  | ||||||
| SPLIT_KEYBOARD = yes |  | ||||||
| 
 |  | ||||||
| # Helix Spacific Build Options
 |  | ||||||
| # you can uncomment and edit follows 7 Variables
 |  | ||||||
| #  jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
 |  | ||||||
| OLED_ENABLE = yes           # OLED_ENABLE |  | ||||||
| LOCAL_GLCDFONT = yes        # use each keymaps "helixfont.h" insted of "common/glcdfont.c" |  | ||||||
| LED_BACK_ENABLE = yes       # LED backlight (Enable WS2812 RGB underlight.) |  | ||||||
| LED_UNDERGLOW_ENABLE = no   # LED underglow (Enable WS2812 RGB underlight.) |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| # IOS_DEVICE_ENABLE = no      # connect to IOS device (iPad,iPhone)
 |  | ||||||
| 
 |  | ||||||
| # OLED_ENABLE が yes のとき
 |  | ||||||
| #   OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
 |  | ||||||
| #   OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
 |  | ||||||
| # If OLED_ENABLE is 'yes'
 |  | ||||||
| #   If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
 |  | ||||||
| #   If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
 |  | ||||||
| OLED_SELECT = core |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| // Copyright 2023 Travis Reed (@dancxjo)
 |  | ||||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| #define DYNAMIC_KEYMAP_LAYER_COUNT 5 |  | ||||||
| #define EE_HANDS |  | ||||||
| @ -1,177 +0,0 @@ | |||||||
| // Copyright 2023 Travis Reed (@dancxjo)
 |  | ||||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum layer { |  | ||||||
|     _ENGRAM = 0, |  | ||||||
|     _QWERTY, |  | ||||||
|     _ENGRAM_SHIFT, |  | ||||||
|     _FUNCTION, |  | ||||||
|     _MEDIA |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Combines the compose key (right super) and the AltGr */ |  | ||||||
| #define KC_COMP MT(MOD_RALT, KC_RGUI) |  | ||||||
| #define KC_SCMP MT(MOD_RSFT | MOD_RALT, KC_RGUI) |  | ||||||
| 
 |  | ||||||
| #define KC_STAB MT(MOD_LSFT, KC_TAB) |  | ||||||
| 
 |  | ||||||
| /* Use a fake shift layer since Engram switches level 2 assignments */ |  | ||||||
| #define KC_PSFT MO(_ENGRAM_SHIFT) |  | ||||||
| 
 |  | ||||||
| #define KC_FUNC TT(_FUNCTION) |  | ||||||
| #define KC_MEDI TT(_MEDIA) |  | ||||||
| 
 |  | ||||||
| /* Easily switch between MacOS & other OSes*/ |  | ||||||
| #define KC_HLM1 LM(1, MOD_LCTL) |  | ||||||
| #define KC_HLM2 LM(1, MOD_LGUI) |  | ||||||
| #define KC_SHM1 LM(1, MOD_LCTL | MOD_LSFT) |  | ||||||
| #define KC_SHM2 LM(1, MOD_LGUI | MOD_LSFT) |  | ||||||
| #define KC_STRN RSFT(KC_TRNS) |  | ||||||
| 
 |  | ||||||
| #define KC_FORW LGUI(KC_TAB) |  | ||||||
| #define KC_BACK LGUI(LSFT(KC_TAB)) |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|         /* Differs slightly from official Engram in that {} are the level 1 and [] are the level 2 */ |  | ||||||
|         [_ENGRAM] = LAYOUT_ergodox_pretty( |  | ||||||
|             KC_LCBR, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    CG_NORM, KC_PAUSE, KC_6,    KC_7,    KC_8,    KC_9,   KC_0,    KC_RCBR, |  | ||||||
|             KC_TAB,  KC_B,    KC_Y,    KC_O,    KC_U,    KC_QUOT, KC_AT,   KC_HASH,  KC_DQUO, KC_L,    KC_D,    KC_W,   KC_V,    KC_Z, |  | ||||||
|             KC_CAPS, KC_C,    KC_I,    KC_E,    KC_A,    KC_COMM,                    KC_DOT,  KC_H,    KC_T,    KC_S,   KC_N,    KC_Q, |  | ||||||
|             KC_PSFT, KC_G,    KC_X,    KC_J,    KC_K,    KC_MINS, KC_SLSH, KC_PSCR,  KC_QUES, KC_R,    KC_M,    KC_F,   KC_P,    KC_PSFT, |  | ||||||
|             KC_HLM1, KC_FUNC, KC_MEDI, KC_LALT, KC_HLM2,                             KC_RGUI, KC_RALT, KC_MEDI, KC_FUNC,KC_HLM1, |  | ||||||
|                                        KC_INS,  KC_HOME,                             KC_END,  KC_DEL, |  | ||||||
|                                                 KC_PGUP,                             KC_PGDN, |  | ||||||
|                                        KC_ENT,  KC_ESC,  KC_LSFT,                    KC_RSFT, KC_BSPC, KC_SPC |  | ||||||
|         ), |  | ||||||
|         [_ENGRAM_SHIFT] = LAYOUT_ergodox_pretty( |  | ||||||
|             KC_LBRC, KC_PIPE,    KC_EQL,     KC_TILD,    KC_PLUS,    KC_LT,   CG_SWAP, KC_STRN, KC_GT,   KC_CIRC,    KC_AMPR,    KC_PERC,    KC_ASTR,    KC_RBRC, |  | ||||||
|             KC_STRN, RSFT(KC_B), RSFT(KC_Y), RSFT(KC_O), RSFT(KC_U), KC_LPRN, KC_GRV,  KC_DLR,  KC_RPRN, RSFT(KC_L), RSFT(KC_D), RSFT(KC_W), RSFT(KC_V), RSFT(KC_Z), |  | ||||||
|             KC_STRN, RSFT(KC_C), RSFT(KC_I), RSFT(KC_E), RSFT(KC_A), KC_SCLN,                   KC_COLN, RSFT(KC_H), RSFT(KC_T), RSFT(KC_S), RSFT(KC_N), RSFT(KC_Q), |  | ||||||
|             KC_TRNS, RSFT(KC_G), RSFT(KC_X), RSFT(KC_J), RSFT(KC_K), KC_UNDS, KC_BSLS, KC_STRN, KC_EXLM, RSFT(KC_R), RSFT(KC_M), RSFT(KC_F), RSFT(KC_P), KC_TRNS, |  | ||||||
|             KC_SHM1, KC_STRN,    KC_STRN,    KC_STRN,    KC_SHM2,                               KC_STRN, KC_STRN,    KC_STRN,    KC_STRN,    KC_SHM1, |  | ||||||
|                                              KC_STRN,    KC_STRN,                               KC_HYPR, KC_STRN, |  | ||||||
|                                                          KC_STRN,                               KC_STRN, |  | ||||||
|                                              KC_SHM1,    KC_STRN,    KC_STRN,                   KC_SHM2, KC_STRN, KC_STRN |  | ||||||
|         ), |  | ||||||
|         [_QWERTY] = LAYOUT_ergodox_pretty( |  | ||||||
|             KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS, KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, |  | ||||||
|             KC_TRNS, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_LBRC, KC_RBRC, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS, |  | ||||||
|             KC_TRNS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, |  | ||||||
|             KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_EQL, KC_TRNS,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, |  | ||||||
|             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |  | ||||||
|                                        KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, |  | ||||||
|                                                 KC_TRNS,                            KC_TRNS, |  | ||||||
|                                        KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS |  | ||||||
|         ), |  | ||||||
|         [_FUNCTION] = LAYOUT_ergodox_pretty( |  | ||||||
|             KC_PSCR, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_BRID, KC_BRIU, KC_F6,   KC_F7,   KC_F8,   KC_F9,    KC_F10, KC_PWR, |  | ||||||
|             KC_APP,  KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  TG(1),   TG(1),   KC_F16,  KC_F17,  KC_F18,  KC_F19,   KC_F20, KC_SLEP, |  | ||||||
|             KC_SCRL, KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_NO,                     KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,  KC_WAKE, |  | ||||||
|             KC_PAUS, KC_UNDO, KC_CUT,  KC_COPY, KC_PSTE, KC_NO,   CG_SWAP, CG_NORM, KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,  QK_BOOT, |  | ||||||
|             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,                                   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS,   KC_TRNS, |  | ||||||
|                                        RGB_SAD, RGB_HUD,                                     RGB_HUI, RGB_SAI, |  | ||||||
|                                                 RGB_RMOD,                                     RGB_MOD, |  | ||||||
|                                        RGB_SPD, RGB_VAD, KC_TRNS,                  KC_TRNS, RGB_VAI, RGB_SPI |  | ||||||
|         ), |  | ||||||
|         [_MEDIA] = LAYOUT_ergodox_pretty( |  | ||||||
|             KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_WREF, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO, |  | ||||||
|             KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_WREF, KC_NO,   KC_NO, KC_NO, KC_NO,   KC_PGUP, KC_UP,   KC_PGDN, KC_MSEL, KC_NO, |  | ||||||
|             KC_NO,   KC_NO, KC_WSTP, KC_MYCM, KC_WSCH, KC_FIND,               KC_WHOM, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO,   KC_NO, |  | ||||||
|             KC_LSFT, KC_NO, KC_NO,   KC_CALC, KC_NO,   KC_WFAV, KC_NO, KC_NO, KC_NO,   KC_HOME, KC_MAIL, KC_END, KC_NO,   KC_NO, |  | ||||||
|             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,                                   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS,   KC_TRNS, |  | ||||||
|                                    KC_MUTE, KC_EJCT,                                 KC_MSTP, KC_MPLY, |  | ||||||
|                                             KC_MPRV,                                 KC_MNXT, |  | ||||||
|                                    KC_MRWD, KC_VOLD, KC_TRNS,                        KC_TRNS, KC_VOLU, KC_MFFD |  | ||||||
|         ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| char* get_layer_name(uint8_t layer, bool capitalized) { |  | ||||||
|     char *layer_name = "Unknown "; |  | ||||||
| 
 |  | ||||||
|     switch (layer) { |  | ||||||
|         case _ENGRAM: |  | ||||||
|         case _ENGRAM_SHIFT: |  | ||||||
|             if (capitalized) { |  | ||||||
|                 layer_name = "ENGRAM  "; |  | ||||||
|             } else { |  | ||||||
|                 layer_name = "engram  "; |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|         case _QWERTY: |  | ||||||
|             if (capitalized) { |  | ||||||
|                 layer_name = "QWERTY  "; |  | ||||||
|             } else { |  | ||||||
|                 layer_name = "qwerty  "; |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|         case _MEDIA: |  | ||||||
|             layer_name = "Media+  "; |  | ||||||
|             break; |  | ||||||
|         case _FUNCTION: |  | ||||||
|             layer_name = "Function"; |  | ||||||
|             break; |  | ||||||
|     } |  | ||||||
|     return layer_name; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void render_locks(led_t led_state) { |  | ||||||
|     oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false); |  | ||||||
|     oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false); |  | ||||||
|     oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void render_mods(uint8_t modifiers, uint8_t layer) { |  | ||||||
|     oled_write_P(modifiers & MOD_MASK_GUI ? PSTR("Super") : PSTR("     "), false); |  | ||||||
|     oled_write_P(PSTR(" "), false); |  | ||||||
|     oled_write_P(modifiers & MOD_MASK_ALT ? PSTR("Alt") : PSTR("   "), false); |  | ||||||
|     oled_write_P(PSTR(" "), false); |  | ||||||
|     oled_write_P(modifiers & MOD_MASK_CTRL ? PSTR("Ctl") : PSTR("   "), false); |  | ||||||
|     oled_write_P(PSTR(" "), false); |  | ||||||
| 
 |  | ||||||
|     if (layer == _ENGRAM_SHIFT) { |  | ||||||
|         oled_write_P(PSTR("Pseudo"), false); |  | ||||||
|     } else { |  | ||||||
|         oled_write_P(modifiers & MOD_MASK_SHIFT ? PSTR("Shift ") : PSTR("      "), false); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| char* get_helm_key(void) { |  | ||||||
|     if (keymap_config.swap_lctl_lgui) { |  | ||||||
|         return "Super"; |  | ||||||
|     } else { |  | ||||||
|         return "Control"; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool oled_task_user(void) { |  | ||||||
|     uint8_t layer = get_highest_layer(layer_state); |  | ||||||
|     uint8_t modifiers = get_mods()|get_oneshot_mods(); |  | ||||||
|     led_t led_state = host_keyboard_led_state(); |  | ||||||
| 
 |  | ||||||
|     bool real_shifted = modifiers & MOD_MASK_SHIFT; |  | ||||||
|     bool pseudo_shifted = layer == _ENGRAM_SHIFT; |  | ||||||
|     bool shifted = real_shifted || pseudo_shifted; |  | ||||||
|     bool caps = led_state.caps_lock; |  | ||||||
|     bool capitalized = (caps && !shifted) || (!caps && shifted); |  | ||||||
| 
 |  | ||||||
|     oled_write_P(PSTR("Layer: "), false); |  | ||||||
|     oled_write(get_layer_name(layer, capitalized), false); |  | ||||||
|     oled_write_P(PSTR("\n"), false); |  | ||||||
| 
 |  | ||||||
|     // Only the master knows if we've swapped the gui and ctl key
 |  | ||||||
|     if (is_keyboard_master()) { |  | ||||||
|         oled_write_P(PSTR(" Helm: "), false); |  | ||||||
|         oled_write(get_helm_key(), false); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     oled_write_P(PSTR("\n"), false); |  | ||||||
| 
 |  | ||||||
|     render_mods(modifiers, layer); |  | ||||||
|     oled_write_P(PSTR("\n"), false); |  | ||||||
| 
 |  | ||||||
|     render_locks(led_state); |  | ||||||
| 
 |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| COMMAND_ENABLE = yes |  | ||||||
| VIA_ENABLE = yes |  | ||||||
| EXTRAKEY_ENABLE = no |  | ||||||
| MOUSEKEY_ENABLE = no |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2018 Yiancar |  | ||||||
| 
 |  | ||||||
| This program is free software: you can redistribute it and/or modify |  | ||||||
| it under the terms of the GNU General Public License as published by |  | ||||||
| the Free Software Foundation, either version 2 of the License, or |  | ||||||
| (at your option) any later version. |  | ||||||
| 
 |  | ||||||
| This program is distributed in the hope that it will be useful, |  | ||||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| GNU General Public License for more details. |  | ||||||
| 
 |  | ||||||
| You should have received a copy of the GNU General Public License |  | ||||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| /* Include overwrites for specific keymap */ |  | ||||||
| 
 |  | ||||||
| #undef RGB_BACKLIGHT_CAPS_LOCK_INDICATOR |  | ||||||
| #define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 255 }, .index = 3-1 } //red
 |  | ||||||
| @ -1,71 +0,0 @@ | |||||||
| /* Copyright 2018 Yiancar
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| //This is the HHKB version of the PCB
 |  | ||||||
| 
 |  | ||||||
| enum macro_keys { |  | ||||||
| 	KC_EML = SAFE_RANGE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| [0] = LAYOUT_60_hhkb( /* Base */ |  | ||||||
|     KC_ESC,   KC_1,     KC_2,  KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,  KC_9,     KC_0,     KC_MINS,  KC_EQL,  KC_GRV,  KC_BSLS, |  | ||||||
|     KC_TAB,   KC_Q,     KC_W,  KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,  KC_O,     KC_P,     KC_LBRC,  KC_RBRC,          KC_BSPC, |  | ||||||
|     KC_LCTL,  KC_A,     KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,  KC_L,     KC_SCLN,  KC_QUOT,           KC_ENT, |  | ||||||
|     KC_LSFT,            KC_Z,  KC_X,  KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,            MO(1), |  | ||||||
|     KC_LCTL,  KC_LGUI,  KC_LALT,                KC_SPC,                            KC_RALT,  KC_RGUI,          KC_RCTL          ), |  | ||||||
| 
 |  | ||||||
| [1] = LAYOUT_60_hhkb( /* FN */ |  | ||||||
|     QK_BOOT, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,    KC_F9,   KC_F10,   KC_F11,   KC_F12,  KC_TRNS,  KC_TRNS, |  | ||||||
|     KC_TRNS, EF_DEC,  EF_INC,  H1_DEC,  H1_INC,  H2_DEC,  H2_INC,  BR_DEC,  BR_INC,   ES_DEC,  ES_INC,   KC_UP,    KC_TRNS,           KC_DEL, |  | ||||||
|     KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,  KC_PGUP, KC_LEFT,  KC_RGHT,            KC_TRNS, |  | ||||||
|     KC_TRNS,          KC_TRNS, S1_DEC,  S1_INC,  S2_DEC,  S2_INC,  KC_TRNS, KC_TRNS,  KC_END,  KC_PGDN,  KC_DOWN,  KC_TRNS,           KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS,                 KC_TRNS,                                        KC_TRNS,  KC_TRNS,            KC_TRNS         ), |  | ||||||
| 
 |  | ||||||
| [2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */ |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS,                 KC_TRNS,                                        KC_TRNS,  KC_TRNS,            KC_TRNS          ), |  | ||||||
| 
 |  | ||||||
| [3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */ |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS, |  | ||||||
|     KC_TRNS, KC_TRNS, KC_TRNS,                 KC_TRNS,                                        KC_TRNS,  KC_TRNS,            KC_TRNS          ), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void matrix_init_user(void) { |  | ||||||
|   //user initialization
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
|   //user matrix
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|   switch (keycode) { |  | ||||||
|   case KC_EML: //use "KC_EML" as keycode in layers above to call macro
 |  | ||||||
|     if (!record->event.pressed) { |  | ||||||
|       send_string_with_delay_P(PSTR("example@email.com"), 10); //change email value here
 |  | ||||||
|     } |  | ||||||
|   break; |  | ||||||
|   } |  | ||||||
|   return true; |  | ||||||
| } |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| The default keymap for HHKB HS60 V2. VIA support enabled. |  | ||||||
| ========================================================= |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| Default layer is normal HHKB with 7U space. Fn layer is used for RGB functions, Volume control and arrow cluster |  | ||||||
| @ -1 +0,0 @@ | |||||||
| VIA_ENABLE = yes |  | ||||||
| @ -1,23 +0,0 @@ | |||||||
| /* Copyright 2021 LAZYDESIGNERS
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 	[0] = LAYOUT(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT(KC_SLSH), KC_DEL, KC_ESC, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RGUI, KC_LCTL), |  | ||||||
| 	[1] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, QK_BOOT, RGB_SPI, RGB_SPD, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_SCLN, KC_NO, KC_LSFT, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, MO(2), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT), |  | ||||||
| 	[2] = LAYOUT(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO) |  | ||||||
| }; |  | ||||||
| @ -1,136 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum keymap_layout { |  | ||||||
|     VANILLA = 0,  // matches MF68 layout
 |  | ||||||
|     CS_GO,        // 0x08
 |  | ||||||
|     FUNC,         // 0x10
 |  | ||||||
|     SETTINGS,     // 0x20
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     TD_ESC_FUNC = 0, |  | ||||||
|     TD_ESC_CTRL, |  | ||||||
|     TD_SPC_SPAM |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool spam_space = false; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Keymap BASE: (Base Layer) Default Layer
 |  | ||||||
|      * ,---------.  ,------------------------------------------------------------.  ,---------. |  | ||||||
|      * |Vol-|Vol+|  |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa|  | Ins|PgUp| |  | ||||||
|      * |---------|  |------------------------------------------------------------|  |---------| |  | ||||||
|      * | F3 | F4 |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     \|  | Del|PgDn| |  | ||||||
|      * |---------|  |------------------------------------------------------------|  `---------' |  | ||||||
|      * | F5 | F6 |  |Control |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | |  | ||||||
|      * |---------|  |------------------------------------------------------------|  ,----. |  | ||||||
|      * | F7 | F8 |  |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|  Shift    |  | Up | |  | ||||||
|      * |---------|  |-------------------------------------------------------------------------. |  | ||||||
|      * | F9 | F10|  |Func|Alt |Cmd |      Space            |Cmd |Alt |Func |    |Lft| Dn |Rig | |  | ||||||
|      * `---------'  `------------------------------------------------------'    `-------------' |  | ||||||
|      */ |  | ||||||
|     [VANILLA] = LAYOUT_split_rshift( |  | ||||||
|         KC_VOLD, KC_VOLU, QK_GESC,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,       KC_BSPC,            LALT(KC_F5), KC_PGUP, |  | ||||||
|         KC_F3,   KC_F4,   KC_TAB,          KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,      KC_BSLS,            KC_DEL,      KC_PGDN, |  | ||||||
|         KC_F5,   KC_F6,   TD(TD_ESC_FUNC), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,               KC_ENT, |  | ||||||
|         KC_F7,   KC_F8,   KC_LSFT,         KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          KC_RSFT,      MO(CS_GO),          KC_UP, |  | ||||||
|         KC_F9,   KC_F10,  KC_LCTL,         KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RCTL, MO(FUNC),                KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [CS_GO] = LAYOUT_split_rshift( |  | ||||||
|         _______, _______, QK_GESC,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______,            _______,     _______, |  | ||||||
|         _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______,            _______,     _______, |  | ||||||
|         _______, _______, KC_LCTL,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,               _______, |  | ||||||
|         _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                          _______, |  | ||||||
|         _______, _______, _______,         _______, _______,                            _______,                            _______, _______, _______,                 _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap FUNCTION: Function Layer
 |  | ||||||
|      * ,---------.  ,-------------------------------------------------------------.  ,---------. |  | ||||||
|      * | V- | V+ |  | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  | Ins|Home| |  | ||||||
|      * |---------|  |-------------------------------------------------------------|  |---------| |  | ||||||
|      * |    |    |  |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  | Del|End | |  | ||||||
|      * |---------|  |-------------------------------------------------------------|  `---------' |  | ||||||
|      * |    |    |  |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         | |  | ||||||
|      * |---------|  |-------------------------------------------------------------|  ,----. |  | ||||||
|      * |    |    |  |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|  | Up | |  | ||||||
|      * |---------|  |--------------------------------------------------------------------------. |  | ||||||
|      * |    | F10|  |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |     |Lft| Dn |Rig | |  | ||||||
|      * `---------'  `------------------------------------------------------'     `-------------' |  | ||||||
|      */ |  | ||||||
|     [FUNC] = LAYOUT_split_rshift( |  | ||||||
|         _______, _______, KC_GRV,          KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,       KC_DEL,             TO(CS_GO),   KC_HOME, |  | ||||||
|         _______, _______, XXXXXXX,         KC_PGUP, KC_UP,   KC_PGDN, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,            _______,     KC_END, |  | ||||||
|         _______, _______, _______,         KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,               XXXXXXX, |  | ||||||
|         _______, _______, _______,         XXXXXXX, KC_DEL,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX,          TG(SETTINGS), XXXXXXX,            _______, |  | ||||||
|         _______, _______, _______,         _______, _______,                            KC_PGDN,                            _______, _______, _______,                 _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap SETTINGS: Settings Layer
 |  | ||||||
|      * ,---------.  ,-----------------------------------------------------------.  ,-------------. |  | ||||||
|      * |    |    |  |FN0 |BL0|BL1|BL2|BL3|   |   |   |   |  |   |BL-|BL+|BL Togl|  |RGB Tog |Val+| |  | ||||||
|      * |---------|  |-----------------------------------------------------------|  |-------------| |  | ||||||
|      * |    |    |  |Debug|   |   |   |   |   |   |   |   |   |   |   |  |RGBTst|  |RGB Mode|Val-| |  | ||||||
|      * |---------|  |-----------------------------------------------------------|  `-------------' |  | ||||||
|      * |    |    |  |LayrClr|Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  | |  | ||||||
|      * |---------|  |-----------------------------------------------------------|  ,----. |  | ||||||
|      * |    |    |  |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |  |Hue+| |  | ||||||
|      * |---------|  |------------------------------------------------------------------------. |  | ||||||
|      * |    |    |  |    |    |    |      Print Debug      |    |    |     |  |Sat-|Hue-|Sat+| |  | ||||||
|      * `---------'  `------------------------------------------------------'  `--------------' |  | ||||||
|      */ |  | ||||||
|     [SETTINGS] = LAYOUT_split_rshift( |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP,        BL_TOGG,            RGB_TOG,     RGB_VAI, |  | ||||||
|         XXXXXXX, XXXXXXX, DB_TOGG,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,            RGB_MOD,     RGB_VAD, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,               QK_BOOT, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,      XXXXXXX,            RGB_HUI, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, XXXXXXX, XXXXXXX,                 RGB_SAD, RGB_HUD, RGB_SAI |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void tap_space_spam_finished(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     if (get_mods() & (MOD_BIT(KC_LGUI))) { |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     if (state->pressed) { |  | ||||||
|         spam_space = true; |  | ||||||
|     } |  | ||||||
|     tap_code(KC_SPC); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void tap_space_spam_reset(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     spam_space = false; |  | ||||||
|     unregister_code(KC_SPC); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     if (state->pressed) { |  | ||||||
|         layer_on(FUNC); |  | ||||||
|     } else { |  | ||||||
|         tap_code(KC_ESC); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     layer_off(FUNC); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset), |  | ||||||
|     [TD_SPC_SPAM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_space_spam_finished, tap_space_spam_reset), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
|     if (spam_space && !(get_mods() & (MOD_BIT(KC_LGUI)))) { |  | ||||||
|         tap_code(KC_SPC); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     if ((layer_state & (1 << CS_GO)) && (keycode == 44)) { |  | ||||||
|         if (get_mods() & (MOD_BIT(KC_LGUI))) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| @ -1 +0,0 @@ | |||||||
| # The default keymap for bluepad |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| AUDIO_ENABLE = no |  | ||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| WATCHDOG_ENABLE = yes		# Resets keyboard if matrix_scan isn't run every 250ms |  | ||||||
| @ -1,170 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum keymap_layout { |  | ||||||
|     VANILLA = 0,  // matches MF68 layout
 |  | ||||||
|     DEFAULT_WKL,  // 0x02 Function in CapsLock location, gui key disabled
 |  | ||||||
|     DEFAULT_OSX,  // 0x04 Function in CapsLock location, gui/alt swapped for OSX
 |  | ||||||
|     CS_GO,        // 0x08 Function in CapsLock location, gui/alt swapped for OSX
 |  | ||||||
|     FUNC,         // 0x10
 |  | ||||||
|     SETTINGS,     // 0x20
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     TD_ESC_FUNC = 0, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Keymap VANILLA: (Base Layer) Default Layer
 |  | ||||||
|      * ,-----------------------------------------------------------------------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn| |  | ||||||
|      * |-----------------------------------------------------------|  `--------------' |  | ||||||
|      * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | |  | ||||||
|      * |-----------------------------------------------------------|        ,----. |  | ||||||
|      * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | |  | ||||||
|      * |-----------------------------------------------------------|   ,-------------. |  | ||||||
|      * |Ctrl|Gui |Alt |      Space            |ALT |GUI |CTRL |Func|   |Lft| Dn |Rig | |  | ||||||
|      * `-----------------------------------------------------------'   `-------------' |  | ||||||
|      */ |  | ||||||
|     [VANILLA] = LAYOUT_tkl_ansi( |  | ||||||
|         KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_0,    KC_1,     KC_2,              KC_3,    KC_4,    KC_5, |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,   KC_BSPC,           KC_INS,  KC_HOME, KC_PGUP, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,  KC_BSLS,           KC_DEL,  KC_END,  KC_PGDN, |  | ||||||
|         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,           KC_ENT, |  | ||||||
|         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                    KC_RSFT,                    KC_UP, |  | ||||||
|         KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RCTL, MO(FUNC), MO(SETTINGS),      KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap DEFAULT_TKL: (Base Layer) Default Layer
 |  | ||||||
|      * ,-----------------------------------------------------------------------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn| |  | ||||||
|      * |-----------------------------------------------------------|  `--------------' |  | ||||||
|      * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | |  | ||||||
|      * |-----------------------------------------------------------|       ,----. |  | ||||||
|      * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |       | Up | |  | ||||||
|      * |-----------------------------------------------------------|   ,-------------. |  | ||||||
|      * |Ctrl|    |Alt |      Space            |ALT |    |CTRL |Func|   |Lft| Dn |Rig | |  | ||||||
|      * `-----------------------------------------------------------'   `-------------' |  | ||||||
|      */ |  | ||||||
|     [DEFAULT_WKL] = LAYOUT_tkl_ansi( |  | ||||||
|         KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,        KC_PSCR, KC_SCRL, KC_PAUS, |  | ||||||
|         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,       KC_INS,  KC_HOME, KC_PGUP, |  | ||||||
|         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,       KC_DEL,  KC_END,  KC_PGDN, |  | ||||||
|         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT, |  | ||||||
|         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                   KC_RSFT,                KC_UP, |  | ||||||
|         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_RGUI, KC_RCTL, MO(FUNC),      KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap DEFAULT_OSX: (Base Layer) Default Layer
 |  | ||||||
|      * ,-----------------------------------------------------------------------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn| |  | ||||||
|      * |-----------------------------------------------------------|  `--------------' |  | ||||||
|      * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | |  | ||||||
|      * |-----------------------------------------------------------|        ,----. |  | ||||||
|      * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | |  | ||||||
|      * |-----------------------------------------------------------|   ,-------------. |  | ||||||
|      * |Ctrl| Opt |Cmd |      Space           |Cmd |Opt |CTRL |Func|   |Lft| Dn |Rig | |  | ||||||
|      * `-----------------------------------------------------------'   `-------------' |  | ||||||
|      */ |  | ||||||
|     [DEFAULT_OSX] = LAYOUT_tkl_ansi( |  | ||||||
|         KC_ESC,                   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,   KC_F12,             KC_SCRL, KC_PAUS, LALT(KC_F5), |  | ||||||
|         KC_GRV,          KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,   KC_BSPC,            KC_INS,  KC_HOME, KC_PGUP, |  | ||||||
|         KC_TAB,          KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,  KC_BSLS,            KC_DEL,  KC_END,  KC_PGDN, |  | ||||||
|         TD(TD_ESC_FUNC), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,           KC_ENT, |  | ||||||
|         KC_LSFT,         KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                    KC_RSFT,                     KC_UP, |  | ||||||
|         KC_LCTL,         KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RCTL, MO(FUNC), MO(SETTINGS),       KC_LEFT, KC_DOWN, KC_RGHT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     [CS_GO] = LAYOUT_tkl_ansi( |  | ||||||
|         _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, |  | ||||||
|         KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,               _______, |  | ||||||
|         _______, _______, _______,                            _______,                            _______, _______, _______, _______,      _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap FUNCTION: Function Layer
 |  | ||||||
|      * ,-------------------------------------------------------------.  ,--------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus| |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    | |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    | |  | ||||||
|      * |-------------------------------------------------------------|  `--------------' |  | ||||||
|      * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         | |  | ||||||
|      * |-------------------------------------------------------------|       ,----. |  | ||||||
|      * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up | |  | ||||||
|      * |-------------------------------------------------------------'   ,-------------. |  | ||||||
|      * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig | |  | ||||||
|      * `------------------------------------------------------'          `-------------' |  | ||||||
|      */ |  | ||||||
|     [FUNC] = LAYOUT_tkl_ansi( |  | ||||||
|         KC_ESC,           _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           KC_PSCR,   KC_SCRL, KC_PAUS, |  | ||||||
|         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,            TO(CS_GO), _______, _______, |  | ||||||
|         XXXXXXX, KC_PGUP, KC_UP,   KC_PGDN, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,           _______,   _______, _______, |  | ||||||
|         _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,          XXXXXXX, |  | ||||||
|         _______, XXXXXXX, KC_DEL,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX,                   TG(SETTINGS),                 _______, |  | ||||||
|         _______, _______, _______,                            KC_PGDN,                            _______, _______, _______, _______,             _______, _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap SETTINGS: Settings Layer
 |  | ||||||
|      * ,-----------------------------------------------------------.     ,-------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus| |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * |LayClr|   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+| |  | ||||||
|      * |-----------------------------------------------------------|    |-------------| |  | ||||||
|      * |Debug|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-| |  | ||||||
|      * |-----------------------------------------------------------|    `-------------' |  | ||||||
|      * |AU_TOGG|Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  | |  | ||||||
|      * |-----------------------------------------------------------|  ,----. |  | ||||||
|      * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |  |Hue+| |  | ||||||
|      * |------------------------------------------------------------------------. |  | ||||||
|      * |    |    |    |      Print Debug      |    |    |     |  |Sat-|Hue-|Sat+| |  | ||||||
|      * `------------------------------------------------------'  `--------------' |  | ||||||
|      */ |  | ||||||
|     [SETTINGS] = LAYOUT_tkl_ansi( |  | ||||||
|         XXXXXXX,          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN,      XXXXXXX, XXXXXXX, XXXXXXX, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP,   BL_TOGG,      RGB_TOG, RGB_VAI, XXXXXXX, |  | ||||||
|         MU_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      RGB_MOD, RGB_VAD, XXXXXXX, |  | ||||||
|         AU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          QK_BOOT, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX,               RGB_HUI, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, XXXXXXX, XXXXXXX, _______,      RGB_SAD, RGB_HUD, RGB_SAI |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     if (state->pressed) { |  | ||||||
|         layer_on(FUNC); |  | ||||||
|     } else { |  | ||||||
|         tap_code(KC_ESC); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     layer_off(FUNC); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     if ((layer_state & (1 << CS_GO)) && (keycode == 44)) { |  | ||||||
|         if (get_mods() & (MOD_BIT(KC_LGUI))) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| @ -1 +0,0 @@ | |||||||
| # The default keymap for LFK87 |  | ||||||
| @ -1,2 +0,0 @@ | |||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| WATCHDOG_ENABLE = yes		# Resets keyboard if matrix_scan isn't run every 250ms |  | ||||||
| @ -1,108 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum keymap_layout { |  | ||||||
|     VANILLA = 0,  // matches MF68 layout
 |  | ||||||
|     FUNC,         // 0x08
 |  | ||||||
|     SETTINGS,     // 0x10
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     TD_ESC_FUNC = 0, |  | ||||||
|     TD_ESC_CTRL, |  | ||||||
|     TD_SPC_SPAM |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     /* Keymap VANILLA: (Base Layer) Default Layer
 |  | ||||||
|      * ,-----------------------------------------------------------------------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| |  | ||||||
|      * |-----------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn| |  | ||||||
|      * |-----------------------------------------------------------|  `--------------' |  | ||||||
|      * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | |  | ||||||
|      * |-----------------------------------------------------------|        ,----. |  | ||||||
|      * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | |  | ||||||
|      * |-----------------------------------------------------------|   ,-------------. |  | ||||||
|      * |Ctrl|Gui |Alt |      Space            |ALT |GUI |Func|CTRL |   |Lft| Dn |Rig | |  | ||||||
|      * `-----------------------------------------------------------'   `-------------' |  | ||||||
|      */ |  | ||||||
|     [VANILLA] = LAYOUT( |  | ||||||
|         QK_GESC,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,   KC_BSPC,                  KC_NUM,  KC_PSLS, KC_PAST, KC_PMNS, |  | ||||||
|         KC_TAB,          KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,  KC_BSLS,                  KC_P7,   KC_P8,   KC_P9,   KC_PPLS, |  | ||||||
|         TD(TD_ESC_FUNC), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,           KC_ENT,                   KC_P4,   KC_P5,   KC_P6,   LALT(KC_F5), |  | ||||||
|         KC_LSFT,         KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                    KC_RSFT,     KC_UP,       KC_P1,   KC_P2,   KC_P3,   KC_PENT, |  | ||||||
|         KC_LCTL,         KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RCTL, MO(FUNC),     KC_LEFT, KC_DOWN, KC_RGHT,     KC_P0,   KC_PDOT |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap FUNCTION: Function Layer
 |  | ||||||
|      * ,-------------------------------------------------------------.  ,--------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus| |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    | |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    | |  | ||||||
|      * |-------------------------------------------------------------|  `--------------' |  | ||||||
|      * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         | |  | ||||||
|      * |-------------------------------------------------------------|       ,----. |  | ||||||
|      * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up | |  | ||||||
|      * |-------------------------------------------------------------'   ,-------------. |  | ||||||
|      * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig | |  | ||||||
|      * `------------------------------------------------------'          `-------------' |  | ||||||
|      */ |  | ||||||
|     [FUNC] = LAYOUT( |  | ||||||
|         KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,                        _______, _______, _______, _______, |  | ||||||
|         XXXXXXX, KC_HOME, KC_UP,   KC_END,  KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                       _______, _______, _______, _______, |  | ||||||
|         _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, XXXXXXX, XXXXXXX,          XXXXXXX,                       _______, _______, _______, _______, |  | ||||||
|         _______, XXXXXXX, KC_DEL,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX,                   TG(SETTINGS),     _______,     _______, _______, _______, _______, |  | ||||||
|         _______, _______, _______,                            KC_PGDN,                            _______, _______, _______,          _______, _______, _______,     _______, _______ |  | ||||||
|     ), |  | ||||||
| 
 |  | ||||||
|     /* Keymap SETTINGS: Settings Layer
 |  | ||||||
|      * ,-----------------------------------------------------------.     ,-------------. |  | ||||||
|      * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus| |  | ||||||
|      * |-------------------------------------------------------------|  |--------------| |  | ||||||
|      * |FN0 |   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+| |  | ||||||
|      * |-----------------------------------------------------------|    |-------------| |  | ||||||
|      * |MuMode|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-| |  | ||||||
|      * |-----------------------------------------------------------|    `-------------' |  | ||||||
|      * |AudTgl |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  | |  | ||||||
|      * |-----------------------------------------------------------|      ,----. |  | ||||||
|      * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |      |Hue+| |  | ||||||
|      * |--------------------------------------------------------------------------. |  | ||||||
|      * |    |    |    |                       |    |    |    |     | |Sat-|Hue-|Sat+| |  | ||||||
|      * `----------------------------------------------------------------------------' |  | ||||||
|      */ |  | ||||||
|     [SETTINGS] = LAYOUT( |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP,   BL_TOGG,                  RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, |  | ||||||
|         MU_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                  RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, |  | ||||||
|         AU_TOGG, KC_F1,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          QK_BOOT,                  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX,     RGB_HUI,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, |  | ||||||
|         XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, XXXXXXX, XXXXXXX,     RGB_SAD, RGB_HUD, RGB_SAI,     XXXXXXX, XXXXXXX |  | ||||||
|     ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     if (state->pressed) { |  | ||||||
|         layer_on(FUNC); |  | ||||||
|     } else { |  | ||||||
|         tap_code(KC_ESC); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) { |  | ||||||
|     layer_off(FUNC); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void matrix_init_user(void) { |  | ||||||
|     // This keymap only has a single base layer, so reset the default if needed
 |  | ||||||
|     if (eeconfig_read_default_layer() > 1) { |  | ||||||
|         eeconfig_update_default_layer(1); |  | ||||||
|         default_layer_set(1); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1 +0,0 @@ | |||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
| /* Copyright 2022 Fearless Spiff
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define TAPPING_TERM 180 |  | ||||||
| 
 |  | ||||||
| #define MK_KINETIC_SPEED |  | ||||||
| #define MOUSEKEY_DELAY 8 |  | ||||||
| #define MOUSEKEY_INTERVAL 5 |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 1 |  | ||||||
| #define MOUSEKEY_INITIAL_SPEED 3 |  | ||||||
| #define MOUSEKEY_BASE_SPEED 120 |  | ||||||
| #define MOUSEKEY_DECELERATED_SPEED 100 |  | ||||||
| #define MOUSEKEY_ACCELERATED_SPEED 1000 |  | ||||||
| @ -1,301 +0,0 @@ | |||||||
| /* Copyright 2021 Kyle McCreery
 |  | ||||||
|  * Copyright 2021 Jonavin Eng |  | ||||||
|  * Copyright 2022 Fearless Spiff |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "keymap_german.h" |  | ||||||
| 
 |  | ||||||
| // OLED setup for bongocat
 |  | ||||||
| #define IDLE_FRAMES 5 |  | ||||||
| #define IDLE_SPEED 30 |  | ||||||
| #define TAP_FRAMES 2 |  | ||||||
| #define TAP_SPEED 40 |  | ||||||
| #define ANIM_FRAME_DURATION 200 |  | ||||||
| #define ANIM_SIZE 512 |  | ||||||
| 
 |  | ||||||
| #define LABEL_LENGTH 8 |  | ||||||
| 
 |  | ||||||
| #define KC_CAD	        LALT(LCTL(KC_DEL)) |  | ||||||
| #define KC_TEAMS_CAM	C(S(KC_O)) |  | ||||||
| #define KC_TEAMS_MUTE	C(S(KC_M)) |  | ||||||
| 
 |  | ||||||
| enum layers { |  | ||||||
|   QWERT, |  | ||||||
|   FN_1, |  | ||||||
|   FN_2, |  | ||||||
|   FN_MOUSE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum custom_user_keycodes { |  | ||||||
|   KC_ENC = SAFE_RANGE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| static long int oled_timeout = 1800000; //  30 minutes
 |  | ||||||
| bool gui_on = true; |  | ||||||
| char wpm_str[10]; |  | ||||||
| uint32_t anim_timer = 0; |  | ||||||
| uint32_t anim_sleep = 0; |  | ||||||
| uint8_t current_idle_frame = 0; |  | ||||||
| uint8_t current_tap_frame = 0; |  | ||||||
| 
 |  | ||||||
| // Tap Dance declarations
 |  | ||||||
| enum { |  | ||||||
|     TD_TAB_ESC, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Tap Dance definitions
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     // Tap once for Tab, twice for Esc
 |  | ||||||
|     [TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| typedef struct { |  | ||||||
|     char label_top[LABEL_LENGTH]; |  | ||||||
|     char label_mid[LABEL_LENGTH]; |  | ||||||
|     char label_bottom[LABEL_LENGTH]; |  | ||||||
|     uint16_t keycode; |  | ||||||
| } encoder_key; |  | ||||||
| 
 |  | ||||||
| static const encoder_key PROGMEM encoder_keys[] = { |  | ||||||
|     // list of key codes that will be scrolled through by encoder and description
 |  | ||||||
|     // Be aware that it only works when using one char less than defined. In this case 7 max. No idea why?
 |  | ||||||
|     {"Teams", "Toggle", "Mic", KC_TEAMS_MUTE}, |  | ||||||
|     {"Teams", "Toggle", "Cam", KC_TEAMS_CAM}, |  | ||||||
|     {"Ctrl", "Alt", "Del", KC_CAD}, |  | ||||||
|     {"Caps", "Lock", "", KC_CAPS_LOCK}, |  | ||||||
|     {"Pause", "", "", KC_PAUSE}, |  | ||||||
|     {"PrtScr", "", "", KC_PSCR}, |  | ||||||
|     {"Insert", "", "", KC_INS}, |  | ||||||
|     {"Play", "", "", KC_MEDIA_PLAY_PAUSE} |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define NUMBER_OF_ENCODER_KEYS ARRAY_SIZE(encoder_keys) |  | ||||||
| 
 |  | ||||||
| static uint8_t selected_encoder_key_id = 0; |  | ||||||
| static encoder_key selected_encoder_key; |  | ||||||
| 
 |  | ||||||
| static void set_selected_encoder_key(uint8_t idx) { |  | ||||||
|     // make a copy from PROGMEM
 |  | ||||||
|     memcpy_P (&selected_encoder_key, &encoder_keys[idx], sizeof selected_encoder_key); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case KC_ENC: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 tap_code16(selected_encoder_key.keycode); |  | ||||||
|             } |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|     [QWERT] = LAYOUT_all( |  | ||||||
|                                                                                                                       KC_ENC, |  | ||||||
|           TD(TD_TAB_ESC),   KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    DE_Z,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, |  | ||||||
|           MO(FN_1), KC_A,   KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    DE_PLUS,          KC_ENT, |  | ||||||
|           KC_LSFT, DE_LABK, DE_Y,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,           KC_RSFT, |  | ||||||
|           KC_LCTL, KC_LGUI, KC_LALT,   LT(FN_2,KC_SPC),   LT(FN_2,KC_SPC),     LT(FN_2,KC_SPC),      KC_RALT, DE_MINS,          KC_RCTL ), |  | ||||||
| 
 |  | ||||||
|     [FN_1] = LAYOUT_all( |  | ||||||
|                                                                                                                        KC_MUTE, |  | ||||||
|     	  QK_GESC,          _______, _______, _______, DE_LCBR, DE_RCBR, _______, DE_UDIA, KC_UP,    DE_ODIA, DE_QUES, KC_DEL, |  | ||||||
|     	  _______,          DE_ADIA, DE_SS,   _______, DE_LPRN, DE_RPRN, _______, KC_LEFT, KC_DOWN, KC_RIGHT, DE_HASH, _______, |  | ||||||
|     	  _______, _______, DE_CIRC, DE_ACUT, _______, DE_LBRC, DE_RBRC, KC_HOME, KC_END,  DE_QUOT,  DE_DQUO,          DE_EQL, |  | ||||||
|     	  _______,   _______, _______,    MO(FN_MOUSE),   MO(FN_MOUSE),       MO(FN_MOUSE),          DE_BSLS, DE_SLSH,         DE_TILD ), |  | ||||||
| 
 |  | ||||||
|     [FN_2] = LAYOUT_all( |  | ||||||
|                                                                                                                       _______, |  | ||||||
|     	  KC_F1,            KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_BSPC, |  | ||||||
|     	  KC_1,             KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______, _______, |  | ||||||
|     	  _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT,           _______, |  | ||||||
|     	  _______, _______, _______,          _______, _______,          _______,          _______, _______,          _______ ), |  | ||||||
| 
 |  | ||||||
|     [FN_MOUSE] = LAYOUT_all( |  | ||||||
|                                                                                                                       _______, |  | ||||||
|           _______,          _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, _______, |  | ||||||
|           _______,          _______, _______, _______, KC_ACL0, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, |  | ||||||
|           _______, _______, _______, _______, _______, _______, _______, _______, _______,  _______,  _______,          _______, |  | ||||||
|           _______,   _______, _______,        _______,   _______,        _______,          _______, _______,         _______ ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #ifdef ENCODER_ENABLE |  | ||||||
|     bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|         if (clockwise) { |  | ||||||
|             if (IS_LAYER_ON(QWERT) && selected_encoder_key_id  < NUMBER_OF_ENCODER_KEYS-1) { |  | ||||||
|                selected_encoder_key_id ++; |  | ||||||
|                set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_1)) { |  | ||||||
|                 tap_code16(KC_PGDN); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_2)) { |  | ||||||
|                 tap_code(KC_VOLU); |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             if (IS_LAYER_ON(QWERT) && selected_encoder_key_id  > 0) { |  | ||||||
|                 selected_encoder_key_id --; |  | ||||||
|                 set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_1)) { |  | ||||||
|                 tap_code16(KC_PGUP); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_2)) { |  | ||||||
|                 tap_code(KC_VOLD); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
|     oled_rotation_t oled_init_user(oled_rotation_t rotation) { |  | ||||||
|         set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
| 
 |  | ||||||
|         return OLED_ROTATION_180;  // flips the display 180 degrees
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     static void render_anim(void) { |  | ||||||
| 
 |  | ||||||
|         // Idle animation
 |  | ||||||
|         static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, |  | ||||||
|                 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32, |  | ||||||
|                 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, |  | ||||||
|                 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64, |  | ||||||
|                 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Prep animation
 |  | ||||||
|         static const char PROGMEM prep[][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Typing animation
 |  | ||||||
|         static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159, |  | ||||||
|                 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1, |  | ||||||
|                 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32, |  | ||||||
|                 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         void animation_phase(void) { |  | ||||||
|             if (get_current_wpm() <= IDLE_SPEED) { |  | ||||||
|                 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; |  | ||||||
|                 oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { |  | ||||||
|                 oled_write_raw_P(prep[0], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (get_current_wpm() >= TAP_SPEED) { |  | ||||||
|                 current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; |  | ||||||
|                 oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (get_current_wpm() != 000) { |  | ||||||
|             oled_on(); |  | ||||||
| 
 |  | ||||||
|             if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|                 anim_timer = timer_read32(); |  | ||||||
|                 animation_phase(); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             anim_sleep = timer_read32(); |  | ||||||
|         } else { |  | ||||||
|             if (timer_elapsed32(anim_sleep) > oled_timeout) { |  | ||||||
|                 oled_off(); |  | ||||||
|             } else { |  | ||||||
|                 if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|                     anim_timer = timer_read32(); |  | ||||||
|                     animation_phase(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     bool oled_task_user(void) { |  | ||||||
| 
 |  | ||||||
|             render_anim(); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,0); |  | ||||||
|             oled_write(selected_encoder_key.label_top, false); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,1); |  | ||||||
|             oled_write(selected_encoder_key.label_mid, false); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,2); |  | ||||||
|             oled_write(selected_encoder_key.label_bottom, false); |  | ||||||
| 
 |  | ||||||
|     /* hide wpm display for now
 |  | ||||||
|             oled_set_cursor(13,3); |  | ||||||
|             oled_write_P(PSTR("WPM: "), false); |  | ||||||
|             oled_write(get_u8_str(get_current_wpm(), ' '), false); |  | ||||||
|     */ |  | ||||||
| 
 |  | ||||||
|       return false; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     void suspend_power_down_user(void) { |  | ||||||
|           oled_off(); |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| Fearless Spiff's Custom Mercutio Keymap |  | ||||||
|   - "Programmer"-centric and German layout based keymap |  | ||||||
|   - Based on Bongocat and Jonavin keymap |  | ||||||
| 
 |  | ||||||
| Features |  | ||||||
|   - Fancy Bongocat! Yay! (borrowed from bongocat obviously) |  | ||||||
|   - Encoder selectable key codes and displayed on OLED (borrowed and multi-line-enhanced from Jonavin) |  | ||||||
|     - Change encoder_keys in keymap.c to assign your desired key selection |  | ||||||
|   - Additional encoder functionality  |  | ||||||
|     - While holding FN_1, page up and down |  | ||||||
|     - While holding FN_2, volume up and down |  | ||||||
|   - Mouse controls by holding Caps-Space |  | ||||||
|   - Use my templates for your own layout overview at [Keyboard Layout Editor](http://www.keyboard-layout-editor.com) using my gist [here](https://gist.github.com/FearlessSpiff) |  | ||||||
|   - Shout out to [KMonad](https://github.com/kmonad/kmonad) which enabled my laptop keyboard to behave like my Mercutio! |  | ||||||
| 
 |  | ||||||
| QWERT Layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| FN_1 Layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| FN_2 layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| FN_MOUSE layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @ -1,7 +0,0 @@ | |||||||
| WPM_ENABLE = yes |  | ||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| VIA_ENABLE = no |  | ||||||
| MOUSEKEY_ENABLE = yes |  | ||||||
| EXTRAKEY_ENABLE = yes # Audio control and System control |  | ||||||
| KEY_LOCK_ENABLE = no |  | ||||||
| CONSOLE_ENABLE = no |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| /* Copyright 2022 Fearless Spiff
 |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #define TAPPING_TERM 180 |  | ||||||
| @ -1,293 +0,0 @@ | |||||||
| /* Copyright 2021 Kyle McCreery
 |  | ||||||
|  * Copyright 2021 Jonavin Eng |  | ||||||
|  * Copyright 2022 Fearless Spiff |  | ||||||
|  * |  | ||||||
|  * This program is free software: you can redistribute it and/or modify |  | ||||||
|  * it under the terms of the GNU General Public License as published by |  | ||||||
|  * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|  * (at your option) any later version. |  | ||||||
|  * |  | ||||||
|  * This program is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| #include "keymap_german.h" |  | ||||||
| 
 |  | ||||||
| // OLED setup for bongocat
 |  | ||||||
| #define IDLE_FRAMES 5 |  | ||||||
| #define IDLE_SPEED 30 |  | ||||||
| #define TAP_FRAMES 2 |  | ||||||
| #define TAP_SPEED 40 |  | ||||||
| #define ANIM_FRAME_DURATION 200 |  | ||||||
| #define ANIM_SIZE 512 |  | ||||||
| 
 |  | ||||||
| #define LABEL_LENGTH 8 |  | ||||||
| 
 |  | ||||||
| #define KC_CAD	        LALT(LCTL(KC_DEL)) |  | ||||||
| #define KC_TEAMS_CAM	C(S(KC_O)) |  | ||||||
| #define KC_TEAMS_MUTE	C(S(KC_M)) |  | ||||||
| 
 |  | ||||||
| enum layers { |  | ||||||
|   QWERT, |  | ||||||
|   FN_1, |  | ||||||
|   FN_2 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum custom_user_keycodes { |  | ||||||
|   KC_ENC = SAFE_RANGE |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| static long int oled_timeout = 1800000; //  30 minutes
 |  | ||||||
| bool gui_on = true; |  | ||||||
| char wpm_str[10]; |  | ||||||
| uint32_t anim_timer = 0; |  | ||||||
| uint32_t anim_sleep = 0; |  | ||||||
| uint8_t current_idle_frame = 0; |  | ||||||
| uint8_t current_tap_frame = 0; |  | ||||||
| 
 |  | ||||||
| // Tap Dance declarations
 |  | ||||||
| enum { |  | ||||||
|     TD_TAB_ESC, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Tap Dance definitions
 |  | ||||||
| tap_dance_action_t tap_dance_actions[] = { |  | ||||||
|     // Tap once for Tab, twice for Esc
 |  | ||||||
|     [TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| typedef struct { |  | ||||||
|     char label_top[LABEL_LENGTH]; |  | ||||||
|     char label_mid[LABEL_LENGTH]; |  | ||||||
|     char label_bottom[LABEL_LENGTH]; |  | ||||||
|     uint16_t keycode; |  | ||||||
| } encoder_key; |  | ||||||
| 
 |  | ||||||
| static const encoder_key PROGMEM encoder_keys[] = { |  | ||||||
|     // list of key codes that will be scrolled through by encoder and description
 |  | ||||||
|     // Be aware that it only works when using one char less than defined. In this case 7 max. No idea why?
 |  | ||||||
|     {"Teams", "Toggle", "Mic", KC_TEAMS_MUTE}, |  | ||||||
|     {"Teams", "Toggle", "Cam", KC_TEAMS_CAM}, |  | ||||||
|     {"Ctrl", "Alt", "Del", KC_CAD}, |  | ||||||
|     {"Caps", "Lock", "", KC_CAPS_LOCK}, |  | ||||||
|     {"Pause", "", "", KC_PAUSE}, |  | ||||||
|     {"PrtScr", "", "", KC_PSCR}, |  | ||||||
|     {"Insert", "", "", KC_INS}, |  | ||||||
|     {"Play", "", "", KC_MEDIA_PLAY_PAUSE} |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define NUMBER_OF_ENCODER_KEYS ARRAY_SIZE(encoder_keys) |  | ||||||
| 
 |  | ||||||
| static uint8_t selected_encoder_key_id = 0; |  | ||||||
| static encoder_key selected_encoder_key; |  | ||||||
| 
 |  | ||||||
| static void set_selected_encoder_key(uint8_t idx) { |  | ||||||
|     // make a copy from PROGMEM
 |  | ||||||
|     memcpy_P (&selected_encoder_key, &encoder_keys[idx], sizeof selected_encoder_key); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
|     switch (keycode) { |  | ||||||
|         case KC_ENC: |  | ||||||
|             if (record->event.pressed) { |  | ||||||
|                 tap_code16(selected_encoder_key.keycode); |  | ||||||
|             } |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [QWERT] = LAYOUT_all( |  | ||||||
|                                                                                                                       KC_ENC, |  | ||||||
|           TD(TD_TAB_ESC),   KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, |  | ||||||
|           LT(1,KC_CAPS),   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_PLUS,          KC_ENT, |  | ||||||
|           KC_LSFT, KC_LABK, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,           KC_RSFT, |  | ||||||
|           KC_LCTL, KC_LGUI, LT(2,KC_LALT),   KC_SPC,  KC_SPC,   KC_SPC,        KC_RALT, MO(2),          KC_RCTL ), |  | ||||||
| 
 |  | ||||||
|     [FN_1] = LAYOUT_all( |  | ||||||
|                                                                                                                        KC_MUTE, |  | ||||||
|     	  QK_GESC,          _______, KC_UP, _______, KC_LCBR, KC_RCBR, _______, _______, KC_UP,    _______, KC_QUES, KC_DEL, |  | ||||||
|     	  _______,          KC_LEFT, KC_DOWN,   KC_RIGHT, KC_LPRN, KC_RPRN, KC_QUES, KC_LEFT, KC_DOWN, KC_LABK, KC_RABK, _______, |  | ||||||
|     	  _______, KC_BSLS, KC_SLSH, KC_PIPE, _______, KC_LBRC, KC_RBRC, KC_HOME, KC_END,  KC_QUOT,  KC_DQUO,          KC_EQL, |  | ||||||
|     	  _______,   _______, _______,          _______, _______,          _______,          KC_BSLS, KC_SLSH,         KC_TILD ), |  | ||||||
| 
 |  | ||||||
|     [FN_2] = LAYOUT_all( |  | ||||||
|                                                                                                                       _______, |  | ||||||
|     	  KC_ESC,            KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,  KC_0,  KC_BSPC, |  | ||||||
|     	  _______,             KC_EXLM,    KC_AT,    KC_HASH,    KC_DLR,    KC_AMPR,    KC_PERC,    KC_ASTR,    KC_LPRN,    KC_RPRN,  _______, _______, |  | ||||||
|     	  _______, _______, KC_MINS, KC_PLUS, KC_BSLS, KC_SLSH, KC_SCLN, KC_COLN, KC_QUES, KC_LBRC, KC_RBRC, KC_DOT, |  | ||||||
|     	  KC_DQUO, KC_QUOT, KC_DQUO,          _______, _______,          _______,          _______, _______,          KC_PIPE ) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #ifdef ENCODER_ENABLE |  | ||||||
|     bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|         if (clockwise) { |  | ||||||
|             if (IS_LAYER_ON(QWERT) && selected_encoder_key_id  < NUMBER_OF_ENCODER_KEYS-1) { |  | ||||||
|                selected_encoder_key_id ++; |  | ||||||
|                set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_1)) { |  | ||||||
|                 tap_code16(KC_PGDN); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_2)) { |  | ||||||
|                 tap_code(KC_VOLU); |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             if (IS_LAYER_ON(QWERT) && selected_encoder_key_id  > 0) { |  | ||||||
|                 selected_encoder_key_id --; |  | ||||||
|                 set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_1)) { |  | ||||||
|                 tap_code16(KC_PGUP); |  | ||||||
|             } |  | ||||||
|             if (IS_LAYER_ON(FN_2)) { |  | ||||||
|                 tap_code(KC_VOLD); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
|     oled_rotation_t oled_init_user(oled_rotation_t rotation) { |  | ||||||
|         set_selected_encoder_key(selected_encoder_key_id); |  | ||||||
| 
 |  | ||||||
|         return OLED_ROTATION_180;  // flips the display 180 degrees
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     static void render_anim(void) { |  | ||||||
| 
 |  | ||||||
|         // Idle animation
 |  | ||||||
|         static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, |  | ||||||
|                 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32, |  | ||||||
|                 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, |  | ||||||
|                 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64, |  | ||||||
|                 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Prep animation
 |  | ||||||
|         static const char PROGMEM prep[][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64, |  | ||||||
|                 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Typing animation
 |  | ||||||
|         static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159, |  | ||||||
|                 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1, |  | ||||||
|                 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             { |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32, |  | ||||||
|                 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128, |  | ||||||
|                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         void animation_phase(void) { |  | ||||||
|             if (get_current_wpm() <= IDLE_SPEED) { |  | ||||||
|                 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; |  | ||||||
|                 oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { |  | ||||||
|                 oled_write_raw_P(prep[0], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (get_current_wpm() >= TAP_SPEED) { |  | ||||||
|                 current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; |  | ||||||
|                 oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (get_current_wpm() != 000) { |  | ||||||
|             oled_on(); |  | ||||||
| 
 |  | ||||||
|             if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|                 anim_timer = timer_read32(); |  | ||||||
|                 animation_phase(); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             anim_sleep = timer_read32(); |  | ||||||
|         } else { |  | ||||||
|             if (timer_elapsed32(anim_sleep) > oled_timeout) { |  | ||||||
|                 oled_off(); |  | ||||||
|             } else { |  | ||||||
|                 if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { |  | ||||||
|                     anim_timer = timer_read32(); |  | ||||||
|                     animation_phase(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     bool oled_task_user(void) { |  | ||||||
| 
 |  | ||||||
|             render_anim(); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,0); |  | ||||||
|             oled_write(selected_encoder_key.label_top, false); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,1); |  | ||||||
|             oled_write(selected_encoder_key.label_mid, false); |  | ||||||
| 
 |  | ||||||
|             oled_set_cursor(0,2); |  | ||||||
|             oled_write(selected_encoder_key.label_bottom, false); |  | ||||||
| 
 |  | ||||||
|     /* hide wpm display for now
 |  | ||||||
|             oled_set_cursor(13,3); |  | ||||||
|             oled_write_P(PSTR("WPM: "), false); |  | ||||||
|             oled_write(get_u8_str(get_current_wpm(), ' '), false); |  | ||||||
|     */ |  | ||||||
| 
 |  | ||||||
|       return false; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     void suspend_power_down_user(void) { |  | ||||||
|           oled_off(); |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| Fearless Spiff's Custom Mercutio Keymap |  | ||||||
|   - "Programmer"-centric and German layout based keymap |  | ||||||
|   - Based on Bongocat and Jonavin keymap |  | ||||||
| 
 |  | ||||||
| Features |  | ||||||
|   - Fancy Bongocat! Yay! (borrowed from bongocat obviously) |  | ||||||
|   - Encoder selectable key codes and displayed on OLED (borrowed and multi-line-enhanced from Jonavin) |  | ||||||
|     - Change encoder_keys in keymap.c to assign your desired key selection |  | ||||||
|   - Additional encoder functionality  |  | ||||||
|     - While holding FN_1, page up and down |  | ||||||
|     - While holding FN_2, volume up and down |  | ||||||
|   - Use my templates for your own layout overview at [Keyboard Layout Editor](http://www.keyboard-layout-editor.com) using my gist [here](https://gist.github.com/FearlessSpiff) |  | ||||||
| 
 |  | ||||||
| QWERT Layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| FN_1 Layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| FN_2 layer |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| WPM_ENABLE = yes |  | ||||||
| TAP_DANCE_ENABLE = yes |  | ||||||
| MOUSEKEY_ENABLE = no |  | ||||||
| @ -1,80 +0,0 @@ | |||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
| 
 |  | ||||||
|   /* Layer 0, default layer
 |  | ||||||
| ____________________________________________________________________________________________________________________________________________________________________________ |  | ||||||
| |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        | |  | ||||||
| | ESC*   |   F1   |   F2   |   F3   |   F4   |   F5   |   F6   |   F7   |   F8   |   F9   |  F10   |  F11   |  F12   | P SCN  |  HOME  |   DEL  | INSERT |  P Up  | P Down | |  | ||||||
| |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| |  | ||||||
| |        |        |        |        |        |        |        |        |        |        |        |        |        |        | BACK   |  NUM   |        |        | Play   | |  | ||||||
| |  ~`    |   1    |   2    |   3    |   4    |   5    |   6    |   7    |   8    |   9    |   0    |  _ -   | =  +   |   \    | SPACE  |  LOCK  |   /    |  *     | Pause  | |  | ||||||
| |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| |  | ||||||
| |            |        |        |        |        |        |        |        |        |        |        |  [     |   ]    |             |        |        |        |        | |  | ||||||
| |    TAB     |   Q    |   W    |   E    |   R    |   T    |   Y    |   U    |   I    |   O    |   P    |  {     |   }    |  |   \      |   7    |   8    |   9    |  Next  | |  | ||||||
| |____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________| |  | ||||||
| |              |        |        |        |        |        |        |        |        |        |   ;    |   '    |                    |        |        |        |        | |  | ||||||
| |   CAPS LOCK  |   A    |   S    |   D    |   F    |   G    |   H    |   J    |   K    |   L    |   :    |   "    |       ENTER        |   4    |   5    |   6    |   -    | |  | ||||||
| |______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________| |  | ||||||
| |                  |        |        |        |        |        |        |        |   ,    |    .   |   /    |                |        |        |        |        |        | |  | ||||||
| |  SHIFT           |   Z    |   X    |   C    |   V    |   B    |   N    |   M    |   <    |    >   |   ?    |       SHIFT    |   UP   |   1    |   2    |   3    |   +    | |  | ||||||
| |__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________| |  | ||||||
| |          |          |          |                                                        |        |        |   MO   |        |        |        |        |        |        | |  | ||||||
| | CTRL     |   LGUI   | L ALT    |                      SPACE                             | R ALT  |  RGUI  |  _FN   |  LEFT  |  DOWN  | RIGHT  |   0    |   .    | ENTER  | |  | ||||||
| |__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________| |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 	LAYOUT( |  | ||||||
|     KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_DEL,  KC_INS,  KC_PGUP, KC_PGDN, |  | ||||||
|     KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,           KC_BSPC, KC_NUM,  KC_PSLS, KC_PAST, KC_MPLY, |  | ||||||
|     KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,   KC_MNXT, |  | ||||||
|     KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PMNS, |  | ||||||
|     KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PPLS, |  | ||||||
|     KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_RGUI, MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT), |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   /* Layer 1, function layer
 |  | ||||||
| ____________________________________________________________________________________________________________________________________________________________________________ |  | ||||||
| |        |        |        |        |        |        |        |        |        |        |        |        |        |        |  VOL   |  VOL   |        |        |        | |  | ||||||
| | QK_BOOT  |        |        |        |        |        |        |        |        |        |        |        |        | MUTE   |  DOWN  |   UP   |        |        |        | |  | ||||||
| |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| |  | ||||||
| |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        | |  | ||||||
| |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        | |  | ||||||
| |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| |  | ||||||
| |            |  RGB   |        |  RGB   |  HUE   |  HUE   | SATUR. | SATUR. | VALUE  | VALUE  |        |        |        |             |        |        |        |        | |  | ||||||
| |            | TOGGLE |        |  MODE  |INCREASE| DCRSE  |INCREASE| DCRSE  |INCREASE| DCRSE  |        |        |        |             |        |        |        |        | |  | ||||||
| |____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________| |  | ||||||
| | BACKLIGHT    |        |        |        |        |        |        |        |        |        |        |        |                    |        |        |        |        | |  | ||||||
| | TOGGLE       |        |        |        |        |        |        |        |        |        |        |        |                    |        |        |        |        | |  | ||||||
| |______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________| |  | ||||||
| |         |        |        |        |BACKLHT |BACKLHT |BACKLHT |        |        |        |        |        |                |        |        |        |        |        | |  | ||||||
| |         |        |        |        | DCRSE  |TOGGLE  |INCREASE|        |        |        |        |        |                |        |        |        |        |        | |  | ||||||
| |_________|________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________| |  | ||||||
| |          |          |          |                                                        |        |        |        |        |        |        |        |        |        | |  | ||||||
| |          |          |          |                                                        |        |        |        |        |        |        |        |        |        | |  | ||||||
| |__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________| |  | ||||||
| BL_TOGG, BL_DOWN,BL_UP changes the in-switch LEDs |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 	LAYOUT( |  | ||||||
|     QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, |  | ||||||
|     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, |  | ||||||
|     _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, _______, |  | ||||||
|     BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, |  | ||||||
|     _______         , _______, _______, BL_DOWN, BL_TOGG, BL_UP,   _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, |  | ||||||
|     _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void matrix_init_user(void) { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
| 	return true; |  | ||||||
| } |  | ||||||
| @ -1,63 +0,0 @@ | |||||||
| /* Copyright 2020 dezlidezlidezli
 |  | ||||||
|   * |  | ||||||
|   * This program is free software: you can redistribute it and/or modify |  | ||||||
|   * it under the terms of the GNU General Public License as published by |  | ||||||
|   * the Free Software Foundation, either version 2 of the License, or |  | ||||||
|   * (at your option) any later version. |  | ||||||
|   * |  | ||||||
|   * This program is distributed in the hope that it will be useful, |  | ||||||
|   * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|   * GNU General Public License for more details. |  | ||||||
|   * |  | ||||||
|   * You should have received a copy of the GNU General Public License |  | ||||||
|   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|   */ |  | ||||||
| 
 |  | ||||||
| #include QMK_KEYBOARD_H |  | ||||||
| 
 |  | ||||||
| enum layers { |  | ||||||
|      _MAIN, |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| bool encoder_update_user(uint8_t index, bool clockwise) { |  | ||||||
|   if (index == 0) { /* First encoder*/ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_VOLU); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_VOLD); |  | ||||||
|     } |  | ||||||
|   } else if (index == 1) { /* Second encoder*/ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_3); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_4); |  | ||||||
|     } |  | ||||||
|   } else if (index == 2) { /* Third encoder*/ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_5); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_6); |  | ||||||
|     } |  | ||||||
|   } else if (index == 3) { /* Fourth encoder*/ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_7); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_8); |  | ||||||
|     } |  | ||||||
|   } else if (index == 4) { /* Fifth encoder*/ |  | ||||||
|     if (clockwise) { |  | ||||||
|       tap_code(KC_VOLU); |  | ||||||
|     } else { |  | ||||||
|       tap_code(KC_VOLD); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| //
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |  | ||||||
|   [_MAIN] = LAYOUT_ortho_1x5( |  | ||||||
|      KC_CAPS, KC_MNXT, KC_MPLY, KC_MPRV, KC_CAPS |  | ||||||
|   ) |  | ||||||
| }; |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user