keymap.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #include QMK_KEYBOARD_H
  2. #include "spacebarracecar.h"
  3. #define LOWER MO(_LOWER)
  4. #define RAISE MO(_RAISE)
  5. enum layers {
  6. _BASE,
  7. _RAISE,
  8. _LOWER,
  9. _GAME = _NAV+1
  10. };
  11. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  12. /* Base
  13. ,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
  14. |- |* |/ |Backspace|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |
  15. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  16. | |7 |8 |9 |Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
  17. |+ |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  18. | |4 |5 |6 |Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |
  19. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  20. | |1 |2 |3 |(/LShift |Y |X |C |V |B |N |M |, |. |/ |)/RShift |
  21. |Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  22. | |. |0 |00 |RCtrl | |Alt |Win |Lower |Space |Enter |Raise |Win |AltGr | |LCtrl |
  23. `---------------------------------------------------------------------------------------------------------------------------------------------------------------'
  24. */
  25. [_BASE] = LAYOUT(
  26. KC_PMNS, KC_PAST, KC_PSLS, KC_BSPC, CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_BSLS,
  27. KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
  28. KC_PPLS, KC_P4, KC_P5, KC_P6, CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT,
  29. KC_PENT, KC_P1, KC_P2, KC_P3, CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT,
  30. KC_PENT, KC_PDOT, KC_P0, KC_P00, KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, CTLENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
  31. ),
  32. /* Lower
  33. ,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
  34. |- |* |/ |Backspace|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
  35. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  36. | |7 |8 |9 |~ |! |" |# |$ |% |^ |& |* |( |) | |
  37. |+ |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  38. | |4 |5 |6 | |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |
  39. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  40. | |1 |2 |3 | |? | | | | | | | | | | |
  41. |Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  42. | |. |0 |00 | | | | | | | | | | | | |
  43. `---------------------------------------------------------------------------------------------------------------------------------------------------------------'
  44. */
  45. [_LOWER] = LAYOUT(
  46. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  47. _______, _______, _______, _______, DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______,
  48. _______, _______, _______, _______, _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE,
  49. _______, _______, _______, _______, _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, _______,
  50. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  51. ),
  52. /* Raise
  53. ,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
  54. |- |* |/ |Backspace|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
  55. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  56. | |7 |8 |9 |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
  57. |+ |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  58. | |4 |5 |6 | |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |
  59. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  60. | |1 |2 |3 | |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |
  61. |Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  62. | |. |0 |00 | | | | | | | | | | | | |
  63. `---------------------------------------------------------------------------------------------------------------------------------------------------------------'
  64. */
  65. [_RAISE] = LAYOUT(
  66. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  67. _______, _______, _______, _______, CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______,
  68. _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS,
  69. _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, _______, _______,
  70. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  71. ),
  72. /* Deadkey
  73. ,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
  74. |- |* |/ |Backspace| | | | | | | | | | | | |
  75. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  76. | |7 |8 |9 | | | | | | | |Ü | |Ö | | |
  77. |+ |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  78. | |4 |5 |6 | |Ä |ß | | | | | | | | | |
  79. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  80. | |1 |2 |3 | | | | | | | | | | | | |
  81. |Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  82. | |. |0 |00 | | | | | |" |" | | | | | |
  83. `---------------------------------------------------------------------------------------------------------------------------------------------------------------'
  84. */
  85. [_DEADKEY] = LAYOUT(
  86. _______, _______, _______, _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED,
  87. _______, _______, _______, _______, KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, _______,
  88. _______, _______, _______, _______, _______, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ,
  89. _______, _______, _______, _______, _______, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, _______,
  90. _______, _______, _______, _______, _______, _______, _______, _______, _______, CU_DDQ, CU_DDQ, _______, _______, _______, _______, _______
  91. ),
  92. /* Navigation
  93. ,---------------------------------------------------------------------------------------------------------------------------------------------------------------.
  94. |- |* |/ |Numlock |Escape | | | | | | | | | | | |
  95. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  96. | |7 |8 |9 |ALT F4 |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
  97. |= |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  98. | |4 |5 |6 | |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
  99. |---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  100. | |1 |2 |3 | |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
  101. |Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
  102. | |. |0 |00 |RESET |ESCT | | | | | | | | | |Game |
  103. `---------------------------------------------------------------------------------------------------------------------------------------------------------------'
  104. */
  105. [_NAV] = LAYOUT(
  106. _______, _______, _______, KC_NLCK, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  107. CU_EQL, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
  108. CU_EQL, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
  109. _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  110. _______, _______, _______, _______, RESET, ALTF4, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
  111. ),
  112. // Can be used to place macros on the numpad
  113. [_GAME] = LAYOUT(
  114. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  115. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  116. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  117. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  118. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  119. )
  120. };
  121. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  122. switch (keycode) {
  123. case MO(_LOWER):
  124. if (game){
  125. if(record->event.pressed) {
  126. register_code(KC_SPC);
  127. } else {
  128. unregister_code(KC_SPC);
  129. }
  130. return false;
  131. } else {
  132. return true;
  133. }
  134. case KC_LALT:
  135. if (game) {
  136. if (record->event.pressed){
  137. layer_on(_RAISE);
  138. } else {
  139. layer_off(_RAISE);
  140. }
  141. return false;
  142. } else {
  143. return true;
  144. }
  145. case CU_GAME:
  146. if(record->event.pressed) {
  147. if (game)
  148. layer_on(_GAME);
  149. else
  150. layer_off(_GAME);
  151. }
  152. return false;
  153. default:
  154. return true;
  155. }
  156. }