]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/lets_split/keymaps/normacos/keymap.c
Remove redundant KC_TRNS and KC_NO fillers in remaining keymaps (#5154)
[qmk_firmware.git] / keyboards / lets_split / keymaps / normacos / 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 _NORMAN 0
10 #define _LOWER 1
11 #define _RAISE 2
12 #define _ADJUST 3
13
14 // To be used in process_record_user
15 enum custom_keycodes {
16   NORMAN = SAFE_RANGE,
17   LOWER,
18   RAISE,
19   ADJUST,
20   SH_LOG,
21   SH_GOUP,
22   SH_TERM,
23   SPOT,
24   SLACK,
25   OUTLOOK,
26   CHROME
27 };
28
29 // Mod taps
30 #define SFT_ENT    SFT_T(KC_ENT)        // Tap for Enter, hold for Shift
31 #define CTL_ESC    CTL_T(KC_ESC)        // Tap for Escape, hold for Control
32
33 // Custom macros
34 #define SCN_SHT    LSFT(LGUI(KC_4))     // Take a screenshot (MacOS)
35 #define SCN_LCK    LCTL(LGUI(KC_Q))     // Lock screen (MacOS)
36 #define SH_HOME    LCTL(KC_A)           // Go to start of line
37 #define SH_END     LCTL(KC_E)           // Go to end of line
38 #define SH_RSCH    LCTL(KC_R)           // Search command history
39 #define SH_CLRH    LCTL(KC_U)           // Erase to beginning of line
40 #define SH_CLRE    LCTL(KC_K)           // Erase to end of line
41
42 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43
44 /* Norman
45  * ,-----------------------------------------. ,-----------------------------------------.
46  * |  Tab |   Q  |   W  |   D  |   F  |   K  | |   J  |   U  |   R  |   L  |   ;  | Bksp |
47  * |------+------+------+------+------+------| |------+------+------+------+------+------|
48  * |CtlEsc|   A  |   S  |   E  |   T  |   G  | |   Y  |   N  |   I  |   O  |   H  |  '   |
49  * |------+------+------+------+------+------| |------+------+------+------+------+------|
50  * | Shift|   Z  |   X  |   C  |   V  |   B  | |   P  |   M  |   ,  |   .  |   /  |SftEnt|
51  * |------+------+------+------+------+------| |------+------+------+------+------+------|
52  * | Lock | Home |  End | Alt  | Lower| GUI  | | Space| Raise| Left | Down |  Up  | Right|
53  * `-----------------------------------------' `-----------------------------------------'
54  */
55 [_NORMAN] = LAYOUT_ortho_4x12( \
56   KC_TAB,  KC_Q,    KC_W,    KC_D,    KC_F,  KC_K,    KC_J,   KC_U,  KC_R,    KC_L,    KC_SCLN, KC_BSPC, \
57   CTL_ESC, KC_A,    KC_S,    KC_E,    KC_T,  KC_G,    KC_Y,   KC_N,  KC_I,    KC_O,    KC_H,    KC_QUOT, \
58   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,    KC_P,   KC_M,  KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT, \
59   SCN_LCK, KC_HOME, KC_END,  KC_LALT, LOWER, KC_LGUI, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
60 ),
61
62 /* Lower
63  * ,-----------------------------------------. ,-----------------------------------------.
64  * |  Tab |  F1  |  F2  |  F3  |  F4  |      | |NumLck|   7  |   8  |   9  |   =  | Bksp |
65  * |------+------+------+------+------+------| |------+------+------+------+------+------|
66  * |CtlEsc|  F5  |  F6  |  F7  |  F8  |      | |   *  |   4  |   5  |   6  |   +  |  Del |
67  * |------+------+------+------+------+------| |------+------+------+------+------+------|
68  * | Shift|  F9  |  F10 |  F11 |  F12 |      | |   /  |   1  |   2  |   3  |   -  |SftEnt|
69  * |------+------+------+------+------+------| |------+------+------+------+------+------|
70  * | Lock | Home |  End |  Alt | Lower|  GUI | |   .  | Raise|   0  | Spot |Chrome|      |
71  * `-----------------------------------------' `-----------------------------------------'
72  */
73 [_LOWER] = LAYOUT_ortho_4x12( \
74   _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   XXXXXXX, KC_NLCK, KC_P7,   KC_P8, KC_P9, KC_PEQL, _______, \
75   _______, KC_F5,   KC_F6,   KC_F8,   KC_F9,   XXXXXXX, KC_PAST, KC_P4,   KC_P5, KC_P6, KC_PPLS, KC_DEL,  \
76   _______, KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, KC_PSLS, KC_P1,   KC_P2, KC_P3, KC_PMNS, _______, \
77   _______, _______, _______, _______, _______, _______, KC_PDOT, _______, KC_P0, SPOT,  CHROME,  XXXXXXX
78 ),
79
80 /* Raise
81  * ,-----------------------------------------. ,-----------------------------------------.
82  * |  Tab |   !  |   @  |   #  |   $  |   %  | |   ^  |   &  |   *  |   (  |   )  |  Del |
83  * |------+------+------+------+------+------| |------+------+------+------+------+------|
84  * |CtlEsc|  Log | UpDir| Slack| Term | OutLk| |   =  |   -  |   \  |   [  |   ]  |   `  |
85  * |------+------+------+------+------+------| |------+------+------+------+------+------|
86  * | Shift|ClrHom|ClrEnd|ShHome| ShEnd|Search| | Play | Mute | VolDn| VolUp|ScnSht|SftEnt|
87  * |------+------+------+------+------+------| |------+------+------+------+------+------|
88  * | Lock | Home |  End |  Alt | Lower|  GUI | | Space| Raise| Left | Down |  Up  | Right|
89  * `-----------------------------------------' `-----------------------------------------'
90  */
91 [_RAISE] = LAYOUT_ortho_4x12( \
92   _______, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,  \
93   _______, SH_LOG,  SH_GOUP, SLACK,   SH_TERM, OUTLOOK,  KC_EQL, KC_MINS, KC_BSLS, KC_LBRC, KC_RBRC, KC_GRV,  \
94   _______, SH_CLRH, SH_CLRE, SH_HOME, SH_END,  SH_RSCH, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, SCN_SHT, _______, \
95   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
96 ),
97
98 /* Adjust (Lower + Raise)
99  * ,-----------------------------------------. ,-----------------------------------------.
100  * |      |      |      |      |      |      | |      |      |      |      | Reset|      |
101  * |------+------+------+------+------+------| |------+------+------+------+------+------|
102  * |      |      |      |      | AudOn|AudOff| |      |Norman|      |      |      |      |
103  * |------+------+------+------+------+------| |------+------+------+------+------+------|
104  * |      |      |      |      |      |      | |      |      |      |      |      |      |
105  * |------+------+------+------+------+------| |------+------+------+------+------+------|
106  * |      |      |      |      | Lower|      | |      | Raise|      |      |      |      |
107  * `-----------------------------------------' `-----------------------------------------'
108  */
109 [_ADJUST] = LAYOUT_ortho_4x12( \
110   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,   XXXXXXX, \
111   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON,   AU_OFF,  XXXXXXX, NORMAN,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
112   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
113   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
114 )
115
116 };
117
118 #ifdef AUDIO_ENABLE
119 float tone_norman[][2] = SONG(QWERTY_SOUND);
120 #endif
121
122 void persistent_default_layer_set(uint16_t default_layer) {
123   eeconfig_update_default_layer(default_layer);
124   default_layer_set(default_layer);
125 }
126
127 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
128   if (record->event.pressed) {
129     switch(keycode) {
130       case NORMAN:
131         #ifdef AUDIO_ENABLE
132           PLAY_SONG(tone_norman);
133         #endif
134         persistent_default_layer_set(1UL<<_NORMAN);
135         return false;
136       case LOWER:
137         layer_on(_LOWER);
138         update_tri_layer(_LOWER, _RAISE, _ADJUST);
139         return false;
140       case RAISE:
141         layer_on(_RAISE);
142         update_tri_layer(_LOWER, _RAISE, _ADJUST);
143         return false;
144       case ADJUST:
145         layer_on(_ADJUST);
146         return false;
147       case SH_LOG:  // Open Jira log work window
148         SEND_STRING(SS_TAP(X_DOT));
149         _delay_ms(100);
150         SEND_STRING("log work");
151         _delay_ms(100);
152         SEND_STRING(SS_TAP(X_ENTER));
153         return false;
154       case SH_GOUP:  // Go up a directory
155         SEND_STRING("cd .."SS_TAP(X_ENTER));
156         return false;
157       case SH_TERM:  // Open Terminal
158         SEND_STRING(SS_LGUI(SS_TAP(X_SPACE)));
159         _delay_ms(100);
160         SEND_STRING("terminal");
161         _delay_ms(100);
162         SEND_STRING(SS_TAP(X_ENTER));
163         return false;
164       case SPOT:  // Open Spotify
165         SEND_STRING(SS_LGUI(SS_TAP(X_SPACE)));
166         _delay_ms(100);
167         SEND_STRING("spotify app");
168         _delay_ms(100);
169         SEND_STRING(SS_TAP(X_ENTER));
170         return false;
171       case SLACK:  // Open Slack
172         SEND_STRING(SS_LGUI(SS_TAP(X_SPACE)));
173         _delay_ms(100);
174         SEND_STRING("slack");
175         _delay_ms(100);
176         SEND_STRING(SS_TAP(X_ENTER));
177         return false;
178       case OUTLOOK:  // Open MS Outlook
179         SEND_STRING(SS_LGUI(SS_TAP(X_SPACE)));
180         _delay_ms(100);
181         SEND_STRING("outlook");
182         _delay_ms(100);
183         SEND_STRING(SS_TAP(X_ENTER));
184         return false;
185       case CHROME:  // Open Chrome
186         SEND_STRING(SS_LGUI(SS_TAP(X_SPACE)));
187         _delay_ms(100);
188         SEND_STRING("chrome");
189         _delay_ms(100);
190         SEND_STRING(SS_TAP(X_ENTER));
191         return false;
192     }
193   } else {
194     switch(keycode) {
195       case LOWER:
196         layer_off(_LOWER);
197         update_tri_layer(_LOWER, _RAISE, _ADJUST);
198         return false;
199       case RAISE:
200         layer_off(_RAISE);
201         update_tri_layer(_LOWER, _RAISE, _ADJUST);
202         return false;
203       case ADJUST:
204         layer_off(_ADJUST);
205         return false;
206     }
207   }
208   return true;
209 }