aboutsummaryrefslogtreecommitdiffstats
path: root/layouts/community/ergodox/bocaj/keymap.c
blob: fbe0fca65386af3639bb43b05d49397793063f8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/*
Copyright 2018 Jacob Jerrell jacob.jerrell@gmail.com @JacobJerrell

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 "bocaj.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Hardware Workman - http://www.keyboard-layout-editor.com/#/gists/7a07cb982ec3597ba3e3d947554225f1
            .---------------------------------------------.                                              .---------------------------------------------.
            |  ESC  |  1  |  2  |  3  |  4  |  5  |   ->  |                                              !   -   |  6  |  7  |  8  |  9  |  0  |   =   |
            !-------+-----+-----+-----+-----+-------------!                                              !-------+-----+-----+-----+-----+-----+-------!
            |  DEL  |  Q  |  D  |  R  |  W  |  B  |   (   |                                              !   )   |  J  |  F  |  U  |  P  |  ;  |   \   |
            !-------+-----+-----+-----x-----x-----!       !                                              !       !-----x-----x-----+-----+-----+-------!
            |  NUMS |  A  |  S  |  H  |  T  |  G  |-------!                                              !-------!  Y  |  N  |  E  |  O  |  I  |   '   |
            !-------+-----+-----+-----x-----x-----!  HYP  !                                              !  MEH  !-----x-----x-----+-----+-----+-------!
            | SHIFT |  Z  |  X  |  M  |  C  |  V  |   [   |                                              !   ]   |  K  |  L  |  ,  |  .  |  /  | SHIFT |
            '-------+-----+-----+-----+-----+-------------'                                              '-------------+-----+-----+-----+-----+-------'
             | GAME | NUM | LWR |  UP | LFT | .---------------.                                      .---------------. ! RGT | DWN |     |     | ADJ  |
             '------------------------------' |   APP | HOME  |                                      !  PGUP |  ESC  | '------------------------------'
                                      .-------+-------+-------!                                      !-------+-------+-------.
                                      !       !       |  END  |                                      !  PGDN |       ! ENTER !
                                      ! SPACE ! BSPCE !-------!                                      !-------!  TAB  !   /   !
                                      |       |       | COPY  |                                      ! PASTE |       | LOWER |
                                      '-----------------------'                                      '-----------------------'
*/
  [_HWRKMN] = LAYOUT_ergodox_pretty_wrapper(
    KC_ESC, _______________________NUMBER_LEFT_______________________, JJ_ARRW,   KC_MINUS,_______________________NUMBER_RIGHT______________________, KC_EQUAL,
    KC_DEL, _______________________HWORKMAN_L1_______________________, KC_LPRN,   KC_RPRN, _______________________HWORKMAN_R1_______________________, KC_BSLS,
    KC_NUMS,_______________________HWORKMAN_L2_______________________,                     _______________________HWORKMAN_R2_______________________, KC_QUOTE,
    KC_LSFT,_______________________HWORKMAN_L3_______________________, HYP_LBK,   MEH_RBK, _______________________HWORKMAN_R3_______________________, KC_RSFT,
      ___________________ERGODOX_BOTTOM_LEFT___________________,                                  ___________________ERGODOX_BOTTOM_RIGHT__________________,
                                                   ______________________ERGODOX_THUMBS_____________________
  ),
/* Software Workman / QWERTY - http://www.keyboard-layout-editor.com/#/gists/b6c016a22a9d31381a276a603a42fe5f
            .---------------------------------------------.                                              .---------------------------------------------.
            |  ESC  |  1  |  2  |  3  |  4  |  5  |   ->  |                                              !   -   |  6  |  7  |  8  |  9  |  0  |   =   |
            !-------+-----+-----+-----+-----+-------------!                                              !-------+-----+-----+-----+-----+-----+-------!
            |  DEL  |  Q  |  W  |  E  |  R  |  T  |   (   |                                              !   )   |  Y  |  U  |  I  |  O  |  P  |   \   |
            !-------+-----+-----+-----x-----x-----!       !                                              !       !-----x-----x-----+-----+-----+-------!
            |  NUMS |  A  |  S  |  D  |  F  |  G  |-------!                                              !-------!  H  |  J  |  K  |  L  |  ;  |   '   |
            !-------+-----+-----+-----x-----x-----!  HYP  !                                              !  MEH  !-----x-----x-----+-----+-----+-------!
            | SHIFT |  Z  |  X  |  C  |  V  |  B  |   [   |                                              !   ]   |  N  |  M  |  ,  |  .  |  /  | SHIFT |
            '-------+-----+-----+-----+-----+-------------'                                              '-------------+-----+-----+-----+-----+-------'
             | GAME | NUM | LWR |  UP | LFT | .---------------.                                      .---------------. ! RGT | DWN |     |     | ADJ  |
             '------------------------------' |   APP | HOME  |                                      !  PGUP |  ESC  | '------------------------------'
                                      .-------+-------+-------!                                      !-------+-------+-------.
                                      !       !       |  END  |                                      !  PGDN |       ! ENTER !
                                      ! SPACE ! BSPCE !-------!                                      !-------!  TAB  !   /   !
                                      |       |       | COPY  |                                      ! PASTE |       | LOWER |
                                      '-----------------------'                                      '-----------------------'
*/
  [_SWRKMN] = LAYOUT_ergodox_pretty_wrapper(
    KC_ESC, _______________________NUMBER_LEFT_______________________, JJ_ARRW,   KC_MINUS,_______________________NUMBER_RIGHT______________________, KC_EQUAL,
    KC_DEL, _______________________SWORKMAN_L1_______________________, KC_LPRN,   KC_RPRN, _______________________SWORKMAN_R1_______________________, KC_BSLS,
    KC_NUMS,_______________________SWORKMAN_L2_______________________,                     _______________________SWORKMAN_R2_______________________, KC_QUOTE,
    KC_LSFT,_______________________SWORKMAN_L3_______________________, HYP_LBK,   MEH_RBK, _______________________SWORKMAN_R3_______________________, KC_RSFT,
      ___________________ERGODOX_BOTTOM_LEFT___________________,                                  ___________________ERGODOX_BOTTOM_RIGHT__________________,
                                                   ______________________ERGODOX_THUMBS_____________________
  ),
/* Lower - http://www.keyboard-layout-editor.com/#/gists/f1d745a88d1c48ab55e095efd9e7a43a
            .---------------------------------------------.                                              .---------------------------------------------.
            |  ESC  |     |     |     |     |     |   ->  |                                              !   -   |     |     |     |     |     |   =   |
            !-------+-----+-----+-----+-----+-------------!                                              !-------+-----+-----+-----+-----+-----+-------!
            |  DEL  |  !  |  @  |  #  |  $  |  %  |   (   |                                              !   )   |  ^  |  &  |  *  |  (  |  )  |   \   |
            !-------+-----+-----+-----x-----x-----!       !                                              !       !-----x-----x-----+-----+-----+-------!
            |   `   |  1  |  2  |  3  |  4  |  5  |-------!                                              !-------!   6 |  7  |  8  |  9  |  0  |   '   |
            !-------+-----+-----+-----x-----x-----!  HYP  !                                              !  MEH  !-----x-----x-----+-----+-----+-------!
            | SHIFT |     |     |     |     |     |   [   |                                              !   ]   |     |     |     |     |     | SHIFT |
            '-------+-----+-----+-----+-----+-------------'                                              '-------------+-----+-----+-----+-----+-------'
             | GAME | NUM | LWR |  UP | LFT | .---------------.                                      .---------------. ! RGT | DWN |     |     | ADJ  |
             '------------------------------' |   APP | HOME  |                                      !  PGUP |  ESC  | '------------------------------'
                                      .-------+-------+-------!                                      !-------+-------+-------.
                                      !       !       |  END  |                                      !  PGDN |       ! ENTER !
                                      ! SPACE ! BSPCE !-------!                                      !-------!  TAB  !   /   !
                                      |       |       | COPY  |                                      ! PASTE |       | LOWER |
                                      '-----------------------'                                      '-----------------------'
*/
  [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
    _______,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, _______,    _______, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, _______,
    _______,_______________________SPECIAL_LEFT______________________, _______,    _______, _______________________SPECIAL_RIGHT_____________________, _______,
    KC_GRV ,_______________________NUMBER_LEFT_______________________,                      _______________________NUMBER_RIGHT______________________, _______,
    _______,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, _______,    _______, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, _______,
    _________________________________________________________,                                       _________________________________________________________,
                                                      ______________________ERGODOX_THUMBS_____________________
  ),
  /* Adjust - http://www.keyboard-layout-editor.com/#/gists/dedeae17b35a5d5f745a42aaea78f007
            .---------------------------------------------.                                              .---------------------------------------------.
            |       |     |     |     |     |     | EPRM  |                                              !  EPRM |     |     |     |     |     |       |
            !-------+-----+-----+-----+-----+-------------!                                              !-------+-----+-----+-----+-----+-----+-------!
            |       |     |     |     |     |     |       |                                              !       |     |     |     |     |     |       |
            !-------+-----+-----+-----x-----x-----!       !                                              !       !-----x-----x-----+-----+-----+-------!
            |       | 🔇  |  🔉  | 🔊  | LCK |     |-------!                                              !-------!     |     |     |     |     | SWRKM |
            !-------+-----+-----+-----x-----x-----!       !                                              !       !-----x-----x-----+-----+-----+-------!
            |       |     |     |     |     |     |       |                                              !       |     |     |     |     |     | HWRKM |
            '-------+-----+-----+-----+-----+-------------'                                              '-------------+-----+-----+-----+-----+-------'
             |      |     |     |     |     | .---------------.                                      .---------------. !     |     |     |     |      |
             '------------------------------' |       |       |                                      !       |       | '------------------------------'
                                      .-------+-------+-------!                                      !-------+-------+-------.
                                      !       !       |       |                                      !       |       !       !
                                      !       !       !-------!                                      !-------!       !       !
                                      |       |       |       |                                      !       |       |       |
                                      '-----------------------'                                      '-----------------------'
*/
  [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
    XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, KC_EPRM,    KC_EPRM, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,
    XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,    XXXXXXX,  XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
    XXXXXXX,KC__MUTE,  KC__VOLDOWN,   KC__VOLUP,   MC_LOCK,   XXXXXXX,                       XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, KC_SWRK,
    XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,    XXXXXXX,  XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, KC_HWRK,
    XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,                                                             XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, _______,
                                                     ______________________ERGODOX_THUMBS_____________________
  ),
  [_NUMS] = LAYOUT_ergodox_pretty_wrapper(
    XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,
    XXXXXXX,XXXXXXX,  XXXXXXX,   KC_UP,     XXXXXXX,    XXXXXXX,       XXXXXXX,    XXXXXXX,  XXXXXXX,    KC_KP_7,    KC_KP_8,    KC_KP_9,     KC_PAST, XXXXXXX,
    _______,XXXXXXX,  KC_LEFT,   KC_DOWN,   KC_RIGHT,   XXXXXXX,                             XXXXXXX,    KC_KP_4,    KC_KP_5,    KC_KP_6,     KC_PPLS, XXXXXXX,
    LM_SHFT,XXXXXXX,  XXXXXXX,   XXXXXXX,   JJ_COPY,   JJ_PSTE,        XXXXXXX,    XXXXXXX,  XXXXXXX,    KC_KP_1,    KC_KP_2,    KC_KP_3,     KC_PMNS, XXXXXXX,
    XXXXXXX,_______,XXXXXXX,XXXXXXX,XXXXXXX,                                                             KC_KP_0,    KC_PDOT,    KC_COMM,     KC_PEQL, XXXXXXX,
                                                              _______, _______,    _______,_______,
                                                                       _______,    _______,
                                                       KC_LALT,KC_LGUI,_______,    _______,_______,_______
  ),
  [_NMOD] = LAYOUT_ergodox_pretty_wrapper(
    XXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,
    XXXXXXX,XXXXXXX,  XXXXXXX,   _______,   XXXXXXX,    XXXXXXX,       XXXXXXX,    XXXXXXX,  XXXXXXX,    _______,    _______,    _______,     _______, XXXXXXX,
    XXXXXXX,XXXXXXX,  _______,   _______,   _______,    XXXXXXX,                             XXXXXXX,    _______,    _______,    _______,     _______, XXXXXXX,
    LM_SHFT,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, XXXXXXX,    XXXXXXX,  XXXXXXX,    _______,    _______,    _______,     _______, XXXXXXX,
    XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,                                                             _______,    _______,    _______,     _______, XXXXXXX,
                                                              XXXXXXX, XXXXXXX,    XXXXXXX,XXXXXXX,
                                                                       XXXXXXX,    XXXXXXX,
                                                       KC_LALT,KC_LGUI,XXXXXXX,    XXXXXXX,XXXXXXX,XXXXXXX
  ),
// Diablo - http://www.keyboard-layout-editor.com/#/gists/28476e4237e77d4835ac8a9d7e5f9b2c
  [_DIABLO] = LAYOUT_ergodox_pretty_wrapper(
    KC_ESC , XXXXXXX  , XXXXXXX   ,XXXXXXX   ,XXXXXXX   ,XXXXXXX   ,XXXXXXX,    XXXXXXX,  XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
    KC_TAB , KC_Q     ,ALT_T(KC_S), KC_I     , KC_F     , KC_J     ,KC_MINS,    XXXXXXX,  XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
    KC_LOCK, KC_1     , KC_2      , KC_3     , KC_4     ,KC_DCLR   ,                      XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
    KC_LSFT, KC_D3_1  , KC_D3_2   , KC_D3_3  , KC_D3_4  , KC_T     ,KC_MINS,    XXXXXXX,  XXXXXXX,    XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
    _______, XXXXXXX  , XXXXXXX   , XXXXXXX  , KC_M     ,                                             XXXXXXX,    XXXXXXX,    XXXXXXX,     XXXXXXX, XXXXXXX,
                                                              XXXXXXX, XXXXXXX,    XXXXXXX,XXXXXXX,
                                                                       XXXXXXX,    XXXXXXX,
                                                      KC_BTN1,KC_BTN2,KC_ENTER,    XXXXXXX,XXXXXXX,XXXXXXX
  )
};

bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  uint8_t default_layer = 0;
  default_layer = eeconfig_read_default_layer();
  switch (keycode) {
    case KC_SWRK:
      if (!record->event.pressed) {
        set_single_persistent_default_layer(_SWRKMN);
        layer_move(default_layer);
        ergodox_blink_all_leds();
        ergodox_blink_all_leds();
      }
      return false;
      break;
    case KC_HWRK:
      if (!record->event.pressed) {
        set_single_persistent_default_layer(_HWRKMN);
        layer_move(default_layer);
        ergodox_blink_all_leds();
        ergodox_blink_all_leds();
      }
      return false;
      break;
    case KC_EPRM:
      if (!record->event.pressed) {
        ergodox_blink_all_leds();
        eeconfig_init();
      }
      return false;
      break;
    case MC_LOCK:
      if (!record->event.pressed) {
        layer_move(default_layer);
        SEND_STRING(SS_LCTRL(SS_LGUI("q")));
      }
      return false;
      break;
  }
  return true;
}

void matrix_init_keymap(void) {};

void matrix_scan_keymap(void) {
  uint8_t layer = biton32(layer_state);
  ergodox_board_led_off();
  ergodox_right_led_1_off();
  ergodox_right_led_2_off();
  ergodox_right_led_3_off();
  switch (layer) {
  /*
    Lights are treated as binary here for easy identification.
    LED1 = 4; LED2 = 2; LED1 = 1
    This allows for up to 8 identified layers (default layers being no lights on)
    Which is way more than I should ever need
  */
    case _LOWER:
      ergodox_right_led_3_on();
      ergodox_right_led_3_set(10); // Default brightness is deadly in a dark room
      break;
    case _ADJUST:
      ergodox_right_led_2_on();
      ergodox_right_led_2_set(10);
      break;
    case _NUMS:
      ergodox_right_led_2_on();
      ergodox_right_led_2_set(10);
      ergodox_right_led_3_on();
      ergodox_right_led_3_set(10);
      break;
    case _NMOD:
      ergodox_right_led_1_on();
      ergodox_right_led_1_set(10);
      ergodox_right_led_2_on();
      ergodox_right_led_2_set(10);
      ergodox_right_led_3_on();
      ergodox_right_led_3_set(10);
      break;
    case _DIABLO:
      ergodox_right_led_1_on();
      ergodox_right_led_1_set(10);
      break;
    default:
      // none
      break;
  }
  /* #ifdef TAP_DANCE_ENABLE
    run_diablo_macro_check();
  #endif */
};