lucas.c 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. This is the keymap of /u/deepshitgoeshere!
  3. Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german.
  4. The second layer has all the german umlauts I need and with capital and small letters on the
  5. same layer there is no need to press shift+lower.
  6. This keymap is made to work with software implemented QWERTZ.
  7. The "Gaming" layer is mainly customized for CS:GO.
  8. If you have any question about this keymap feel free to shoot me a message on reddit!
  9. */
  10. #include "keymap_common.h"
  11. #include "keymap_extras/keymap_german.h"
  12. #include "backlight.h"
  13. #include "debug.h"
  14. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  15. [0] = { /* Colemak
  16. * ,-----------------------------------------------------------------------.
  17. * | Esc | q | w | f | p | g | j | l | u | y | ; | - |
  18. * |-----------------------------------------------------------------------|
  19. * | BS | a | r | s | t | d | h | n | e | i | o | ' |
  20. * |-----------------------------------------------------------------------|
  21. * | SFT | z | x | c | v | b | k | m | , | . | / | Ent |
  22. * |-----------------------------------------------------------------------|
  23. * | CTL | GUI | Tab | ALT |Lower| Space |Raise|Left |Down | Up |Right|
  24. * `-----------------------------------------------------------------------'
  25. */
  26. {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS},
  27. {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT},
  28. {M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT},
  29. {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
  30. },
  31. [1] = { /* Symbols
  32. * ,-----------------------------------------------------------------------.
  33. * | | | | | | | | | | | : | |
  34. * |-----------------------------------------------------------------------|
  35. * | | | | | | | | | | | | " |
  36. * |-----------------------------------------------------------------------|
  37. * | | | | | | | | | < | > | ? | |
  38. * |-----------------------------------------------------------------------|
  39. * | | | | | | | | | | | |
  40. * `-----------------------------------------------------------------------'
  41. */
  42. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS},
  43. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT},
  44. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS},
  45. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
  46. },
  47. [2] = { /* Raise
  48. * ,-----------------------------------------------------------------------.
  49. * | | Ä | | | | | | | Ü | Ö | |Game |
  50. * |-----------------------------------------------------------------------|
  51. * | Del | ä | | ß | | | | | ü | ö | |FVol+|
  52. * |-----------------------------------------------------------------------|
  53. * | | | | | | | | |Stop | Prv | Nxt |FVol-|
  54. * |-----------------------------------------------------------------------|
  55. * |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P |
  56. * `-----------------------------------------------------------------------'
  57. */
  58. {KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, F(4)},
  59. {KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12)},
  60. {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11)},
  61. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
  62. },
  63. [3] = { /* Lower
  64. * ,-----------------------------------------------------------------------.
  65. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | + |
  66. * |-----------------------------------------------------------------------|
  67. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = |
  68. * |-----------------------------------------------------------------------|
  69. * | | | | | | [ | ] | { | } | € | | \ | Ent |
  70. * |-----------------------------------------------------------------------|
  71. * |LCTL |LGUI | Tab |LALT | | Space |Raise|Home |PgDn |PgUp | End |
  72. * `-----------------------------------------------------------------------'
  73. */
  74. {DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS},
  75. {DE_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_EQL},
  76. {KC_NO, KC_NO, KC_NO, DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR, DE_RCBR, DE_EURO, KC_NO, DE_BSLS, KC_ENT},
  77. {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
  78. },
  79. [4] = { /* Function
  80. * ,-----------------------------------------------------------------------.
  81. * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
  82. * |-----------------------------------------------------------------------|
  83. * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
  84. * |-----------------------------------------------------------------------|
  85. * | | | | | | KP- | KP+ | | | | |Reset|
  86. * |-----------------------------------------------------------------------|
  87. * | |Light|BL DN|BL UP| | | | |Mute |Vol- |Vol+ | P/P |
  88. * `-----------------------------------------------------------------------'
  89. */
  90. {KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24},
  91. {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
  92. {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO},
  93. {KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
  94. },
  95. [5] = { /* Gaming
  96. * ,-----------------------------------------------------------------------.
  97. * | Buy | ESC | q | w | e | r | t | y | u | i | o | p |
  98. * |-----------------------------------------------------------------------|
  99. * | ENT | BS | a | s | d | f | g | h | j | k | l | ; |
  100. * |-----------------------------------------------------------------------|
  101. * | CTL | SFT | z | x | c | v | b | n | m | , | Up | / |
  102. * |-----------------------------------------------------------------------|
  103. * | | | Tab | ALT | | Space |CrJmp| GUI |Left |Down |Right|
  104. * `-----------------------------------------------------------------------'
  105. */
  106. {MO(6), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, F(4)},
  107. {KC_ENT, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN},
  108. {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_DOT, KC_UP, DE_SLSH},
  109. {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT}
  110. },
  111. [6] = { /* Gaming
  112. /* CS:GO buy binds
  113. * ,-----------------------------------------------------------------------.
  114. * | | | | | | | | | 7 | 8 | 9 | |
  115. * |-----------------------------------------------------------------------|
  116. * | BS | | | | | | | | 6 | 5 | 4 | End |
  117. * |-----------------------------------------------------------------------|
  118. * | CTL | SFT | | | | | | | 1 | 2 | 3 |Pgdn |
  119. * |-----------------------------------------------------------------------|
  120. * | | | Tab | ALT | | Space |CrJmp| | 0 | KP+ |PEnt |
  121. * `-----------------------------------------------------------------------'
  122. */
  123. {KC_TRNS, KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_P7, KC_P8, KC_P9, KC_NO},
  124. {KC_BSPC, KC_NO, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_P4, KC_P5, KC_P6, KC_END},
  125. {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_P1, KC_P2, KC_P3, KC_PGDN},
  126. {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT}
  127. },
  128. };
  129. const uint16_t PROGMEM fn_actions[] = {
  130. [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
  131. [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
  132. [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function
  133. [4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming
  134. [5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap
  135. };
  136. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  137. {
  138. switch(id) {
  139. case 0: // M(0)
  140. if (record->event.pressed) {
  141. register_code(KC_LSFT);
  142. layer_on(1);
  143. } else {
  144. layer_off(1);
  145. unregister_code(KC_LSFT);
  146. }
  147. break;
  148. case 1: // M(1)
  149. if (record->event.pressed) {
  150. unregister_code(KC_LSFT);
  151. register_code(DE_MORE);
  152. } else {
  153. unregister_code(DE_MORE);
  154. }
  155. break;
  156. }
  157. return MACRO_NONE;
  158. };