qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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 }