keymap.c (23172B)
1 /* Copyright 2020 Thys de Wet 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 2 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 #include QMK_KEYBOARD_H 17 18 //This keymap is HEAVILY inspired by sofle 19 20 enum grandiceps_layers { 21 _QWERTY, 22 _COLEMAK, 23 _LOWER, 24 _RAISE, 25 _ADJUST, 26 }; 27 28 enum custom_keycodes { 29 KC_LOWER = SAFE_RANGE, 30 KC_RAISE, 31 KC_ADJUST, 32 KC_PRVWD, 33 KC_NXTWD, 34 KC_LSTRT, 35 KC_LEND, 36 KC_DLINE, 37 KC_TEAMS 38 }; 39 40 #define KC_QWERTY PDF(_QWERTY) 41 #define KC_COLEMAK PDF(_COLEMAK) 42 43 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 44 /* 45 * QWERTY 46 * ,-----------------------------------------. ,-----------------------------------------. 47 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | 48 * |------+------+------+------+------+------| |------+------+------+------+------+------| 49 * | DEL | Q | W | E | R | T | | Y | U | I | O | P | Bspc | 50 * |------+------+------+------+------+------| |------+------+------+------+------+------| 51 * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | 52 * |------+------+------+------+------+------| | | |------+------+------+------+------+------| 53 * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| 54 * `-----------------------------------------/ / \ \-----------------------------------------' 55 * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | RGUI | 56 * | | | | |/ / \ \ | | | | | 57 * `----------------------------------' '------''---------------------------' 58 */ 59 60 [_QWERTY] = LAYOUT( 61 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 62 KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 63 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 64 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_TEAMS,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 65 KC_LGUI,KC_LALT,KC_LCTL, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTL, KC_RALT, KC_RGUI 66 ), 67 /* 68 * COLEMAK 69 * ,-----------------------------------------. ,-----------------------------------------. 70 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | 71 * |------+------+------+------+------+------| |------+------+------+------+------+------| 72 * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc | 73 * |------+------+------+------+------+------| |------+------+------+------+------+------| 74 * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | 75 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| 76 * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift| 77 * `-----------------------------------------/ / \ \-----------------------------------------' 78 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | 79 * | | | | |/ / \ \ | | | | | 80 * `----------------------------------' '------''---------------------------' 81 */ 82 83 [_COLEMAK] = LAYOUT( 84 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, 85 KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, 86 KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, 87 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 88 KC_LGUI,KC_LALT,KC_LCTL,KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTL, KC_RALT, KC_RGUI 89 ), 90 /* LOWER 91 * ,-----------------------------------------. ,-----------------------------------------. 92 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | 93 * |------+------+------+------+------+------| |------+------+------+------+------+------| 94 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | 95 * |------+------+------+------+------+------| |------+------+------+------+------+------| 96 * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | | 97 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| 98 * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift| 99 * `-----------------------------------------/ / \ \-----------------------------------------' 100 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | 101 * | | | | |/ / \ \ | | | | | 102 * `----------------------------------' '------''---------------------------' 103 */ 104 [_LOWER] = LAYOUT( 105 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 106 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NUBS, 107 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, 108 _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, 109 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 110 ), 111 /* RAISE 112 * ,----------------------------------------. ,-----------------------------------------. 113 * | | | | | | | | | | | | | | 114 * |------+------+------+------+------+------| |------+------+------+------+------+------| 115 * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc | 116 * |------+------+------+------+------+------| |------+------+------+------+------+------| 117 * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc | 118 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| 119 * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift| 120 * `-----------------------------------------/ / \ \-----------------------------------------' 121 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | 122 * | | | | |/ / \ \ | | | | | 123 * `----------------------------------' '------''---------------------------' 124 */ 125 [_RAISE] = LAYOUT( 126 _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______, 127 _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD, KC_DLINE, KC_BSPC, 128 _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, 129 _______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, 130 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 131 ), 132 /* ADJUST 133 * ,-----------------------------------------. ,-----------------------------------------. 134 * | | | | | | | | | | | | | | 135 * |------+------+------+------+------+------| |------+------+------+------+------+------| 136 * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | | 137 * |------+------+------+------+------+------| |------+------+------+------+------+------| 138 * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | | 139 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| 140 * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | | 141 * `-----------------------------------------/ / \ \-----------------------------------------' 142 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | 143 * | | | | |/ / \ \ | | | | | 144 * `----------------------------------' '------''---------------------------' 145 */ 146 [_ADJUST] = LAYOUT( 147 XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UG_NEXT, UG_VALU, UG_SATU, UG_HUEU, XXXXXXX, UG_TOGG, 148 QK_BOOT , XXXXXXX, KC_QWERTY,KC_COLEMAK,CG_TOGG, XXXXXXX, UG_PREV, UG_VALD, UG_SATD, UG_HUED, XXXXXXX, XXXXXXX, 149 XXXXXXX , XXXXXXX, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, 150 XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, 151 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 152 ) 153 }; 154 155 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 156 switch (keycode) { 157 case KC_LOWER: 158 if (record->event.pressed) { 159 layer_on(_LOWER); 160 update_tri_layer(_LOWER, _RAISE, _ADJUST); 161 } else { 162 layer_off(_LOWER); 163 update_tri_layer(_LOWER, _RAISE, _ADJUST); 164 } 165 return false; 166 case KC_RAISE: 167 if (record->event.pressed) { 168 layer_on(_RAISE); 169 update_tri_layer(_LOWER, _RAISE, _ADJUST); 170 } else { 171 layer_off(_RAISE); 172 update_tri_layer(_LOWER, _RAISE, _ADJUST); 173 } 174 return false; 175 case KC_ADJUST: 176 if (record->event.pressed) { 177 layer_on(_ADJUST); 178 } else { 179 layer_off(_ADJUST); 180 } 181 return false; 182 case KC_PRVWD: 183 if (record->event.pressed) { 184 if (keymap_config.swap_lctl_lgui) { 185 register_mods(mod_config(MOD_LALT)); 186 register_code(KC_LEFT); 187 } else { 188 register_mods(mod_config(MOD_LCTL)); 189 register_code(KC_LEFT); 190 } 191 } else { 192 if (keymap_config.swap_lctl_lgui) { 193 unregister_mods(mod_config(MOD_LALT)); 194 unregister_code(KC_LEFT); 195 } else { 196 unregister_mods(mod_config(MOD_LCTL)); 197 unregister_code(KC_LEFT); 198 } 199 } 200 break; 201 case KC_NXTWD: 202 if (record->event.pressed) { 203 if (keymap_config.swap_lctl_lgui) { 204 register_mods(mod_config(MOD_LALT)); 205 register_code(KC_RIGHT); 206 } else { 207 register_mods(mod_config(MOD_LCTL)); 208 register_code(KC_RIGHT); 209 } 210 } else { 211 if (keymap_config.swap_lctl_lgui) { 212 unregister_mods(mod_config(MOD_LALT)); 213 unregister_code(KC_RIGHT); 214 } else { 215 unregister_mods(mod_config(MOD_LCTL)); 216 unregister_code(KC_RIGHT); 217 } 218 } 219 break; 220 case KC_LSTRT: 221 if (record->event.pressed) { 222 if (keymap_config.swap_lctl_lgui) { 223 //CMD-arrow on Mac, but we have CTL and GUI swapped 224 register_mods(mod_config(MOD_LCTL)); 225 register_code(KC_LEFT); 226 } else { 227 register_code(KC_HOME); 228 } 229 } else { 230 if (keymap_config.swap_lctl_lgui) { 231 unregister_mods(mod_config(MOD_LCTL)); 232 unregister_code(KC_LEFT); 233 } else { 234 unregister_code(KC_HOME); 235 } 236 } 237 break; 238 case KC_LEND: 239 if (record->event.pressed) { 240 if (keymap_config.swap_lctl_lgui) { 241 //CMD-arrow on Mac, but we have CTL and GUI swapped 242 register_mods(mod_config(MOD_LCTL)); 243 register_code(KC_RIGHT); 244 } else { 245 register_code(KC_END); 246 } 247 } else { 248 if (keymap_config.swap_lctl_lgui) { 249 unregister_mods(mod_config(MOD_LCTL)); 250 unregister_code(KC_RIGHT); 251 } else { 252 unregister_code(KC_END); 253 } 254 } 255 break; 256 case KC_DLINE: 257 if (record->event.pressed) { 258 register_mods(mod_config(MOD_LCTL)); 259 register_code(KC_BSPC); 260 } else { 261 unregister_mods(mod_config(MOD_LCTL)); 262 unregister_code(KC_BSPC); 263 } 264 break; 265 case KC_COPY: 266 if (record->event.pressed) { 267 register_mods(mod_config(MOD_LCTL)); 268 register_code(KC_C); 269 } else { 270 unregister_mods(mod_config(MOD_LCTL)); 271 unregister_code(KC_C); 272 } 273 return false; 274 case KC_PASTE: 275 if (record->event.pressed) { 276 register_mods(mod_config(MOD_LCTL)); 277 register_code(KC_V); 278 } else { 279 unregister_mods(mod_config(MOD_LCTL)); 280 unregister_code(KC_V); 281 } 282 return false; 283 case KC_CUT: 284 if (record->event.pressed) { 285 register_mods(mod_config(MOD_LCTL)); 286 register_code(KC_X); 287 } else { 288 unregister_mods(mod_config(MOD_LCTL)); 289 unregister_code(KC_X); 290 } 291 return false; 292 break; 293 case KC_UNDO: 294 if (record->event.pressed) { 295 register_mods(mod_config(MOD_LCTL)); 296 register_code(KC_Z); 297 } else { 298 unregister_mods(mod_config(MOD_LCTL)); 299 unregister_code(KC_Z); 300 } 301 return false; 302 303 case KC_TEAMS: 304 if (record->event.pressed) { 305 register_mods(mod_config(MOD_LCTL)); 306 register_mods(mod_config(MOD_LSFT)); 307 register_code(KC_M); 308 } else { 309 unregister_mods(mod_config(MOD_LCTL)); 310 unregister_mods(mod_config(MOD_LSFT)); 311 unregister_code(KC_M); 312 } 313 return false; 314 } 315 return true; 316 } 317 318 #ifdef OLED_ENABLE 319 static void render_logo(void) { 320 static const char PROGMEM my_logo[] = { 321 // 'protea', 128x32px 322 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 323 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 324 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 325 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 326 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x38, 0x1c, 0x0c, 0x06, 0x82, 0x80, 0xc0, 0xc0, 327 0x40, 0x00, 0x80, 0x90, 0xd0, 0xd8, 0xc8, 0xc8, 0x44, 0x44, 0x00, 0x88, 0xb8, 0xb8, 0xd8, 0xd8, 328 0xc0, 0xc0, 0x80, 0x20, 0x60, 0x60, 0x50, 0xd0, 0xb0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 329 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 330 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 332 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x30, 333 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 334 0x20, 0x20, 0x20, 0x20, 0x20, 0x08, 0x07, 0x01, 0x90, 0x90, 0x90, 0x99, 0x99, 0x90, 0x84, 0x22, 335 0x6b, 0xe9, 0xf5, 0xf5, 0xf5, 0xe5, 0xc5, 0x10, 0x1e, 0x1e, 0x4e, 0x60, 0xf1, 0xf9, 0xf9, 0xf9, 336 0xf8, 0x78, 0x7a, 0x7b, 0x33, 0x37, 0xc6, 0xee, 0xcc, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 337 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 338 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 339 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 342 0x00, 0x01, 0x02, 0x0c, 0x30, 0xc0, 0x80, 0x00, 0x06, 0x0c, 0x18, 0x31, 0x71, 0x61, 0x69, 0x40, 343 0x42, 0x86, 0x0d, 0x1d, 0x19, 0x39, 0x31, 0x76, 0x67, 0x6f, 0x4f, 0x0f, 0x0e, 0xce, 0xc0, 0xc0, 344 0xd2, 0xd6, 0xd7, 0xb7, 0x37, 0x3b, 0xda, 0xc0, 0xcb, 0x08, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 348 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 351 0x0e, 0x1c, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x06, 0x04, 0x05, 0x01, 352 0x01, 0x01, 0x01, 0x05, 0x04, 0x06, 0x06, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 353 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 354 }; 355 356 oled_write_raw_P(my_logo, sizeof(my_logo)); 357 } 358 359 static void print_status_narrow(void) { 360 // Print current mode 361 oled_write_P(PSTR("\n\n"), false); 362 oled_write_ln_P(PSTR("MODE"), false); 363 oled_write_ln_P(PSTR("\n"), false); 364 if (keymap_config.swap_lctl_lgui) { 365 oled_write_ln_P(PSTR("MAC\n"), false); 366 } else { 367 oled_write_ln_P(PSTR("WIN\n"), false); 368 } 369 370 switch (get_highest_layer(default_layer_state)) { 371 case _QWERTY: 372 oled_write_ln_P(PSTR("Qwrt"), false); 373 break; 374 case _COLEMAK: 375 oled_write_ln_P(PSTR("Clmk"), false); 376 break; 377 default: 378 oled_write_P(PSTR("Undef"), false); 379 } 380 oled_write_P(PSTR("\n\n"), false); 381 // Print current layer 382 oled_write_ln_P(PSTR("LAYER"), false); 383 switch (get_highest_layer(layer_state)) { 384 case _COLEMAK: 385 case _QWERTY: 386 oled_write_P(PSTR("Base\n"), false); 387 break; 388 case _RAISE: 389 oled_write_P(PSTR("Raise"), false); 390 break; 391 case _LOWER: 392 oled_write_P(PSTR("Lower"), false); 393 break; 394 case _ADJUST: 395 oled_write_P(PSTR("Adj\n"), false); 396 break; 397 default: 398 oled_write_ln_P(PSTR("Undef"), false); 399 } 400 oled_write_P(PSTR("\n\n"), false); 401 led_t led_usb_state = host_keyboard_led_state(); 402 oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); 403 oled_write_P(PSTR("\n\n"), false); 404 } 405 406 bool oled_task_user(void) { 407 if (is_keyboard_master()) { 408 print_status_narrow(); 409 } else { 410 render_logo(); 411 } 412 return false; 413 } 414 415 oled_rotation_t oled_init_user(oled_rotation_t rotation) { 416 if (is_keyboard_master()) { 417 return OLED_ROTATION_270; 418 } else { 419 return rotation; 420 } 421 } 422 #endif 423 424 #ifdef ENCODER_ENABLE 425 bool encoder_update_user(uint8_t index, bool clockwise){ 426 427 if (index == 0) { 428 switch (get_highest_layer(layer_state)) { 429 case _QWERTY: 430 // Move whole words. Hold shift to select while moving. 431 if (clockwise) { 432 tap_code(KC_VOLU); 433 } else { 434 tap_code(KC_VOLD); 435 } 436 break; 437 default: 438 // History scrubbing. For Adobe products, hold shift while moving 439 // backward to go forward instead. 440 if (clockwise) { 441 tap_code16(C(KC_Z)); 442 } else { 443 tap_code16(C(KC_Y)); 444 } 445 break; 446 } 447 } else if (index == 1) { 448 switch (get_highest_layer(layer_state)) { 449 case _QWERTY: 450 // Scrolling with PageUp and PgDn. 451 if (!clockwise) { 452 tap_code16(KC_PGDN); 453 } else { 454 tap_code16(KC_PGUP); 455 } 456 break; 457 default: 458 if (clockwise) { 459 tap_code16(A(KC_TAB)); 460 } else { 461 tap_code16(A(S(KC_TAB))); 462 } 463 break; 464 } 465 } 466 467 return true; 468 } 469 #endif