]> git.donarmstrong.com Git - qmk_firmware.git/blob - layouts/community/ortho_4x12/bakingpy/keymap.c
Move hexwire layout into 4x12 layout folder
[qmk_firmware.git] / layouts / community / ortho_4x12 / bakingpy / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "action_layer.h"
3 #include "eeconfig.h"
4
5 extern keymap_config_t keymap_config;
6
7 #define _QWERTY 0
8 #define _COLEMAK 1
9 #define _DVORAK 2
10 #define _LOWER 3
11 #define _RAISE 4
12 #define _FKEYS 5
13 #define _ADJUST 16
14
15 enum custom_keycodes {
16   QWERTY = SAFE_RANGE,
17   COLEMAK,
18   DVORAK,
19   LOWER,
20   RAISE,
21   ADJUST,
22 };
23
24 #define KC_ KC_TRNS
25 #define _______ KC_TRNS
26
27 #define KC_CAPW LGUI(LSFT(KC_3))        // Capture whole screen
28 #define KC_CPYW LGUI(LSFT(LCTL(KC_3)))  // Copy whole screen
29 #define KC_CAPP LGUI(LSFT(KC_4))        // Capture portion of screen
30 #define KC_CPYP LGUI(LSFT(LCTL(KC_4)))  // Copy portion of screen
31 #define KC_ESCC MT(MOD_LCTL, KC_ESC)
32 #define KC_LOWR LOWER
33 #define KC_RASE RAISE
34 #define KC_GRVF LT(_FKEYS, KC_GRV)
35 #define KC_ENTS MT(MOD_LSFT, KC_ENT)
36 #define KC_BL_S BL_STEP
37
38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39
40   [_QWERTY] = KC_LAYOUT_ortho_4x12(
41   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
42      TAB , Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,MINS,
43   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
44      ESCC, A  , S  , D  , F  , G  ,      H  , J  , K  , L  ,SCLN,QUOT,
45   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
46      LSFT, Z  , X  , C  , V  , B  ,      N  , M  ,COMM,DOT ,SLSH,ENTS,
47   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
48      GRVF,LCTL,LALT,LGUI,LOWR,SPC ,     BSPC,RASE,LEFT,DOWN, UP ,RGHT
49   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
50   ),
51
52   [_COLEMAK] = KC_LAYOUT_ortho_4x12(
53   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
54      TAB , Q  , W  , F  , P  , G  ,      J  , L  , U  , Y  ,SCLN,MINS,
55   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
56      ESCC, A  , R  , S  , T  , D  ,      H  , N  , E  , I  , O  ,QUOT,
57   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
58      LSFT, Z  , X  , C  , V  , B  ,      K  , M  ,COMM,DOT ,SLSH,ENTS,
59   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
60      GRVF,LCTL,LALT,LGUI,LOWR,SPC ,     BSPC,RASE,LEFT,DOWN, UP ,RGHT
61   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
62   ),
63
64   [_DVORAK] = KC_LAYOUT_ortho_4x12(
65   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
66      TAB ,QUOT,COMM,DOT , P  , Y  ,      F  , G  , C  , R  , L  ,MINS,
67   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
68      ESCC, A  , O  , E  , U  , I  ,      D  , H  , T  , N  , S  ,SLSH,
69   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
70      LSFT,SCLN, Q  , J  , K  , X  ,      B  , M  , W  , V  , Z  ,ENTS,
71   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
72      GRVF,LCTL,LALT,LGUI,LOWR,SPC ,     BSPC,RASE,LEFT,DOWN, UP ,RGHT
73   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
74   ),
75
76   [_LOWER] = KC_LAYOUT_ortho_4x12(
77   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
78          , 1  , 2  , 3  , 4  , 5  ,      6  , 7  , 8  , 9  , 0  ,    ,
79   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
80      DEL ,CAPP,LEFT,RGHT, UP ,LBRC,     RBRC, P4 , P5 , P6 ,PLUS,PIPE,
81   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
82          ,CPYP,    ,    ,DOWN,LCBR,     RCBR, P1 , P2 , P3 ,MINS,    ,
83   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
84      BL_S,    ,    ,    ,    ,DEL ,     DEL ,    , P0 ,PDOT,    ,
85   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
86   ),
87
88   [_RAISE] = KC_LAYOUT_ortho_4x12(
89   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
90          ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,    ,
91   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
92      DEL ,MPRV,MNXT,VOLU,PGUP,UNDS,     EQL ,HOME,    ,    ,    ,BSLS,
93   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
94      MUTE,MSTP,MPLY,VOLD,PGDN,MINS,     PLUS,END ,    ,    ,    ,    ,
95   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
96          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,
97   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
98   ),
99
100   [_FKEYS] = KC_LAYOUT_ortho_4x12(
101   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
102      F12 , F1 , F2 , F3 , F4 , F5 ,      F6 , F7 , F8 , F9 ,F10 ,F11 ,
103   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
104          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    ,
105   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
106          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    ,
107   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
108          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,
109   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
110   ),
111
112 /* Adjust (Lower + Raise)
113  * ,-----------------------------------------------------------------------------------.
114  * |      | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn|      |      |
115  * |------+------+------+------+------+-------------+------+------+------+------+------|
116  * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
117  * |------+------+------+------+------+------|------+------+------+------+------+------|
118  * |      |      |      |      |      |      |      |      |      |      |      |      |
119  * |------+------+------+------+------+------+------+------+------+------+------+------|
120  * |      |      |      |      |      |             |      |      |      |      |      |
121  * `-----------------------------------------------------------------------------------'
122  */
123   [_ADJUST] = LAYOUT_ortho_4x12( \
124     _______, RESET  , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
125     _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
126     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
127     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
128   )
129
130
131 };
132
133 #ifdef AUDIO_ENABLE
134 float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
135 float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
136 float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
137 #endif
138
139 void persistent_default_layer_set(uint16_t default_layer) {
140   eeconfig_update_default_layer(default_layer);
141   default_layer_set(default_layer);
142 }
143
144 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
145   switch (keycode) {
146     case QWERTY:
147       if (record->event.pressed) {
148         #ifdef AUDIO_ENABLE
149           PLAY_SONG(tone_qwerty);
150         #endif
151         persistent_default_layer_set(1UL<<_QWERTY);
152       }
153       return false;
154       break;
155     case COLEMAK:
156       if (record->event.pressed) {
157         #ifdef AUDIO_ENABLE
158           PLAY_SONG(tone_colemak);
159         #endif
160         persistent_default_layer_set(1UL<<_COLEMAK);
161       }
162       return false;
163       break;
164     case DVORAK:
165       if (record->event.pressed) {
166         #ifdef AUDIO_ENABLE
167           PLAY_SONG(tone_dvorak);
168         #endif
169         persistent_default_layer_set(1UL<<_DVORAK);
170       }
171       return false;
172       break;
173     case LOWER:
174       if (record->event.pressed) {
175         layer_on(_LOWER);
176         update_tri_layer(_LOWER, _RAISE, _ADJUST);
177       } else {
178         layer_off(_LOWER);
179         update_tri_layer(_LOWER, _RAISE, _ADJUST);
180       }
181       return false;
182       break;
183     case RAISE:
184       if (record->event.pressed) {
185         layer_on(_RAISE);
186         update_tri_layer(_LOWER, _RAISE, _ADJUST);
187       } else {
188         layer_off(_RAISE);
189         update_tri_layer(_LOWER, _RAISE, _ADJUST);
190       }
191       return false;
192       break;
193     case ADJUST:
194       if (record->event.pressed) {
195         layer_on(_ADJUST);
196       } else {
197         layer_off(_ADJUST);
198       }
199       return false;
200       break;
201   }
202   return true;
203 }