]> git.donarmstrong.com Git - qmk_firmware.git/blob - layouts/community/ortho_4x12/symbolic/keymap.c
Update KBD67 readme so that it mentions the KBD65 PCB (#5143)
[qmk_firmware.git] / layouts / community / ortho_4x12 / symbolic / keymap.c
1 #include QMK_KEYBOARD_H
2
3 extern keymap_config_t keymap_config;
4
5 // Each layer gets a name for readability, which is then used in the keymap matrix below.
6 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
7 // Layer names don't all need to be of the same length, obviously, and you can also skip them
8 // entirely and just use numbers.
9 #define _QWERTY  0
10 #define _LOWER   1
11 #define _RAISE   2
12 #define _NEUTRAL 3
13
14 enum custom_keycodes {
15   QWERTY = SAFE_RANGE,
16   L_LOWER,
17   R_LOWER,
18   L_RAISE,
19   R_RAISE
20 };
21
22
23 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24
25 /* Qwerty
26  * ,------------------------------------------------------------------------------------.
27  * |      |      |      |      |      |      ||      |      |      |      |      |      |
28  * | Esc  |   Q  |   W  |   E  |   R  |   T  ||   Y  |   U  |   I  |   O  |   P  | Bksp |
29  * |------+------+------+------+------+------++------+------+------+------+------+------|
30  * |LCTL_T|      |      |      |      |      ||      |      |      |      |      |      |
31  * | Tab  |   A  |   S  |   D  |   F  |   G  ||   H  |   J  |   K  |   L  |   ;  |Enter |
32  * |------+------+------+------+------+------++------+------+------+------+------+------|
33  * |      |      |      |      |      |      ||      |      |      |      |      |      |
34  * |Shift |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   !  |Shift |
35  * |------+------+------+------+------+------++------+------+------+------+------+------|
36  * |      |      |      |      |      |      ||      |      |      |      |      |      |
37  * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
38  * `------------------------------------------------------------------------------------'
39  */
40 [_QWERTY] = LAYOUT_ortho_4x12( \
41   KC_ESC,         KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_BSPC, \
42   LCTL_T(KC_TAB), KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_ENT,  \
43   KC_LSFT,        KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,     KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_EXLM,  KC_RSFT, \
44   L_RAISE,        KC_LALT,  KC_LGUI,  XXXXXXX,  L_LOWER,  KC_SPC,   KC_SPC,   R_LOWER,  XXXXXXX,  KC_RGUI,  KC_DEL,   R_RAISE  \
45 ),
46
47 /* Raise
48  * ,------------------------------------------------------------------------------------.
49  * |      |      |      |      |      |      ||      |      |      |      |      |      |
50  * | Esc  |      |   &  |   {  |   }  |   %  ||   \  |   [  |   ]  |   #  |      | Bksp |
51  * |------+------+------+------+------+------++------+------+------+------+------+------|
52  * |LCTL_T|      |      |      |      |      ||      |      |      |      |      |      |
53  * | Tab  |   ~  |   |  |   (  |   )  |   *  ||   /  |   <  |   >  |   '  |   :  |Enter |
54  * |------+------+------+------+------+------++------+------+------+------+------+------|
55  * |      |      |      |      |      |      ||      |      |      |      |      |      |
56  * |Shift |   `  |   ^  |   @  |   $  |   +  ||   -  |   =  |   _  |   "  |   ?  |Shift |
57  * |------+------+------+------+------+------++------+------+------+------+------+------|
58  * |      |      |      |      |      |      ||      |      |      |      |      |      |
59  * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
60  * `------------------------------------------------------------------------------------'
61  */
62 [_RAISE] = LAYOUT_ortho_4x12( \
63   _______,  XXXXXXX,  KC_AMPR,  KC_LCBR,  KC_RCBR,  KC_PERC,  KC_BSLS,  KC_LBRC,  KC_RBRC,  KC_HASH,  XXXXXXX,  _______, \
64   _______,  KC_TILD,  KC_PIPE,  KC_LPRN,  KC_RPRN,  KC_ASTR,  KC_SLSH,  KC_LABK,  KC_RABK,  KC_DQUO,  KC_COLN,  _______, \
65   _______,  KC_GRV,   KC_CIRC,  KC_AT,    KC_DLR,   KC_PLUS,  KC_MINS,  KC_EQL,   KC_UNDS,  KC_QUOT,  KC_QUES,  _______, \
66   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______  \
67 ),
68 /* Lower
69  * ,------------------------------------------------------------------------------------.
70  * |      |      |      |      |      |      ||      |      |      |      |      |      |
71  * | Esc  |   1  |   2  |   3  |   4  |   5  ||   6  |   7  |   8  |   9  |   0  | Bksp |
72  * |------+------+------+------+------+------++------+------+------+------+------+------|
73  * |LCTL_T|      |      |      |      |      ||      |      |      |      |      |      |
74  * | Tab  |      |VolDn |VolUp | Mute |      || Left | Down |  Up  |Right |      |Enter |
75  * |------+------+------+------+------+------++------+------+------+------+------+------|
76  * |      |      |      |      |      |      ||      |      |      |      |      |      |
77  * |Shift |      |      |      |      | PrSc || Home | PgDn | PgUp | End  |      |Shift |
78  * |------+------+------+------+------+------++------+------+------+------+------+------|
79  * |      |      |      |      |      |      ||      |      |      |      |      |      |
80  * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
81  * `------------------------------------------------------------------------------------'
82  */
83 [_LOWER] = LAYOUT_ortho_4x12( \
84   _______,  KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     _______, \
85   _______,  XXXXXXX,  KC_VOLD,  KC_VOLU,  KC_MUTE,  XXXXXXX,  KC_LEFT,  KC_DOWN,  KC_UP,    KC_RGHT,  XXXXXXX,  _______, \
86   _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_PSCR,  KC_HOME,  KC_PGDN,  KC_PGUP,  KC_END,   XXXXXXX,  _______, \
87   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______  \
88 ),
89
90 /* Neutral
91  * ,------------------------------------------------------------------------------------.
92  * |      |      |      |      |      |      ||      |      |      |      |      |      |
93  * | Esc  |  F1  |  F2  |  F3  |  F4  |      ||   +  |   -  |   1  |   2  |   3  | Bksp |
94  * |------+------+------+------+------+------++------+------+------+------+------+------|
95  * |LCTL_T|      |      |      |      |      ||      |      |      |      |      |      |
96  * | Tab  |  F5  |  F6  |  F7  |  F8  |      ||   *  |   /  |   4  |   5  |   6  |Enter |
97  * |------+------+------+------+------+------++------+------+------+------+------+------|
98  * |      |      |      |      |      |      ||      |      |      |      |      |      |
99  * |Shift |  F9  |  F10 |  F11 |  F12 |      ||   .  |   ,  |   7  |   8  |   9  |Shift |
100  * |------+------+------+------+------+------++------+------+------+------+------+------|
101  * |      |      |      |      |      |      ||      |      |      |      |      |      |
102  * |LRaise| Alt  | GUI  |Reset |LLower|Space ||Space |RLower|Reset |   0  | Del  |RRaise|
103  * `------------------------------------------------------------------------------------'
104  */
105 [_NEUTRAL] = LAYOUT_ortho_4x12( \
106   _______,  KC_F1,    KC_F2,    KC_F3,    KC_F4,    XXXXXXX,  KC_PPLS,  KC_PMNS,  KC_P1,    KC_P2,    KC_P3,     _______, \
107   _______,  KC_F5,    KC_F6,    KC_F7,    KC_F8,    XXXXXXX,  KC_PAST,  KC_PSLS,  KC_P4,    KC_P5,    KC_P6,     _______, \
108   _______,  KC_F9,    KC_F10,   KC_F11,   KC_F12,   XXXXXXX,  KC_PDOT,  KC_COMM,  KC_P7,    KC_P8,    KC_P9,     _______, \
109   _______,  _______,  _______,  RESET,    _______,  _______,  _______,  _______,  RESET,    KC_P0,    _______,   _______  \
110 )
111
112
113 };
114
115
116
117 /****  Raise Layer functions *****/
118
119   /* RaisePressed function */
120     /* called RaiseSwitch  */
121 void RaisePressed ( keyevent_t *event, bool brother_state ){ 
122   
123   if( brother_state ) { return; }
124
125   layer_on( _RAISE );
126   update_tri_layer( _LOWER, _RAISE, _NEUTRAL );
127   return;
128
129 }
130
131
132   /* RaiseReleased function */
133     /* called RaiseSwitch   */
134 void RaiseReleased ( bool brother_state ){ 
135   
136   if( brother_state ) { return; }
137
138   layer_off( _RAISE );
139   update_tri_layer( _LOWER, _RAISE, _NEUTRAL );
140   return;
141 }
142
143
144   /* RaiseSwitch function         */
145     /* called process_record_user */
146 bool RaiseSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ 
147
148   if( record -> event.pressed ) {
149     *key_state = true;
150     RaisePressed( &(record -> event), brother );
151   } else {
152     *key_state = false;
153     RaiseReleased( brother );
154   }
155   return false;
156
157 }
158
159
160
161
162
163
164 /**** Lower layer functions ****/
165
166   /* LowerPressed function   */
167     /* call from LowerSwitch */
168 void LowerPressed ( bool brother_state ){
169
170   if( brother_state ) { return; }
171
172   layer_on( _LOWER );
173   update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
174   return;
175 }
176
177   /* LowerReleased function  */
178     /* call from LowerSwitch */
179 void LowerReleased ( bool brother_state ){ 
180
181   if( brother_state ) { return; }
182
183   layer_off( _LOWER );
184   update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
185   return ;
186 }
187
188   /* LowerSwitch function            */
189     /* call from process_record_user */
190 bool LowerSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ 
191   if ( record -> event.pressed ) {
192     *key_state = true;
193     LowerPressed( brother );
194   } else {
195     *key_state = false;
196     LowerReleased( brother );
197   }
198
199   return false;
200
201 }
202
203
204
205 /**** process_record_user ****/
206 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
207
208   static bool l_lower = false;
209   static bool r_lower = false;
210
211   static bool l_raise = false;
212   static bool r_raise = false;
213
214   switch (keycode) {
215
216
217     case L_LOWER : return LowerSwitch( record, &l_lower, r_lower ); break;
218     case R_LOWER : return LowerSwitch( record, &r_lower, l_lower ); break;
219     case L_RAISE : return RaiseSwitch( record, &l_raise, r_raise ); break;
220     case R_RAISE : return RaiseSwitch( record, &r_raise, l_raise ); break;
221
222     default: break;
223
224   }
225   return true;
226 }
227
228
229