keymap.c (11535B)
1 /* Copyright 2019 Max Rumpf (@Maxr1998) 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 #include "keymap_german.h" 19 #include "sendstring_german.h" 20 21 enum layers { 22 _QWERTZ, 23 _SC, 24 _FN, 25 _GAMING 26 }; 27 28 #define KC_SC MO(_SC) 29 #define KC_FN MO(_FN) 30 #define G_1 TO(_GAMING) 31 #define G_0 TG(_GAMING) 32 33 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 34 35 /* QWERTZ 36 * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 37 * │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ? │ 38 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 39 * │ ^ ° │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │Bkspc│ 40 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 41 * │ Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ +*~ │Enter│ 42 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 43 * │Shift│ Y │ X │ C │ V │ B │ N │ M │ , │ . │ ↑ │Shift│ 44 * ├─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┼─────┼─────┼─────┼─────┤ 45 * │ Ctl │ Sup │ Alt │LeadK│SpcCh│ Space │AltGr│ Fun │ ← │ ↓ │ → │ 46 * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ 47 */ 48 [_QWERTZ] = LAYOUT( 49 KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_QUES, 50 KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 51 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT, 52 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SC_RSPC, 53 KC_LCTL, KC_LGUI, KC_LALT, MS_BTN1, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT 54 ), 55 56 /* Special characters 57 * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 58 * │ │ │ │ │ │ │ │ │ │ │ │ │ 59 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 60 * │ ´ ` │ │ │ │ │ │ │ │ │ │ │ │ 61 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 62 * │ │ │ │ │ │ │ │ │ │ │ # ' │ │ 63 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 64 * │ │ <>| │ │ │ │ │ │ │ │ │ - _ │ │ 65 * ├─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┼─────┼─────┼─────┼─────┤ 66 * │ │ │ │ X │ │ │ │ X │ │ │ │ 67 * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ 68 */ 69 [_SC] = LAYOUT( 70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 71 DE_ACUT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 72 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DE_HASH, _______, 73 _______, DE_LABK, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______, 74 _______, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, _______, _______, _______ 75 ), 76 77 /* Function layer 78 * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 79 * │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F10 │ F11 │ F12 │ 80 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 81 * │ │ │ │ │ │ │ │ Ü │ F9 │ Ö │ Pscr│ Del │ 82 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 83 * │ Lck │ Ä │ ß │ │ │ GAME│ │RGB S│RGB B│RGB S│ │ │ 84 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 85 * │ │ │ │ │ │ │ │RGBH-│RGB T│RGBH+│ Pg↑ │ │ 86 * ├─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┼─────┼─────┼─────┼─────┤ 87 * │ X │ │ X │ X │ X │ │ X │ X │ Home│ Pg↓ │ End │ 88 * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ 89 */ 90 [_FN] = LAYOUT( 91 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F10, KC_F11, KC_F12, 92 _______, _______, _______, _______, _______, _______, _______, DE_UDIA, KC_F9, DE_ODIA, KC_PSCR, KC_DEL, 93 QK_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______, 94 _______, _______, _______, _______, _______, _______, _______, UG_HUED, UG_TOGG, UG_HUEU, KC_PGUP, _______, 95 XXXXXXX, _______, XXXXXXX, MS_BTN2, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END 96 ), 97 98 /* Gaming 99 * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 100 * │ │ │ │ │ │ │ │ │ │ │ │ │ 101 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 102 * │ │ │ │ │ │ │ │ │ │ │ │ │ 103 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 104 * │ │ │ │ │ │ │ │ │ │ │ │ │ 105 * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 106 * │ │ │ │ │ │ │ │ │ │ │ │ │ 107 * ├─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┼─────┼─────┼─────┼─────┤ 108 * │Space│ │ │ │ │ Ctl │ │Leave│ │ │ │ 109 * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ 110 */ 111 [_GAMING] = LAYOUT( 112 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 113 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 115 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 116 KC_SPC, XXXXXXX, _______, _______, _______, KC_LCTL, _______, G_0, _______, _______, _______ 117 ) 118 }; 119 120 #define MODS_ALGR_MASK (MOD_BIT(KC_ALGR)) 121 122 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 123 switch (keycode) { 124 case DE_QUES: 125 if (get_mods() & MODS_ALGR_MASK) { 126 if (record->event.pressed) { 127 register_code(DE_SS); 128 } else { 129 unregister_code(DE_SS); 130 } 131 return false; 132 } 133 break; 134 case KC_Z: 135 if (get_mods() & MODS_ALGR_MASK) { 136 if (record->event.pressed) { 137 register_code(DE_LABK); 138 } else { 139 unregister_code(DE_LABK); 140 } 141 return false; 142 } 143 break; 144 } 145 return true; 146 }