keymap.c 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. // Copyright 2022 Ulrich Spörlein (@uqs)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. // vi:et sw=4 cc=5,15,25,35,45,55,65:
  4. #include "uqs.h"
  5. /*
  6. * My custom layout macro that allows for easy diff(1) operations between
  7. * various keyboards. It probably doesn't make sense to you.
  8. */
  9. #define LAYOUT_uqs( \
  10. L00, L01, L02, L03, L04, L05, \
  11. L12, L13, L14, L15, L16, L17, \
  12. L24, L25, L26, L27, L28, L29, \
  13. L40, L41, \
  14. L42, L43, L44, \
  15. L30, L31, \
  16. R06, R07, R08, R09, R10, R11, \
  17. R18, R19, R20, R21, R22, R23, \
  18. R34, R35, R36, R37, R38, R39, \
  19. R48, R49, \
  20. R45, R46, R47, \
  21. R32, R33 \
  22. ) \
  23. LAYOUT_stack( \
  24. L00, L01, L02, L03, L04, L05, \
  25. L12, L13, L14, L15, L16, L17, \
  26. L24, L25, L26, L27, L28, L29, L30, L31, \
  27. L40, L41, L42, L43, L44, \
  28. \
  29. R06, R07, R08, R09, R10, R11, \
  30. R18, R19, R20, R21, R22, R23, \
  31. R32, R33, R34, R35, R36, R37, R38, R39, \
  32. R45, R46, R47, R48, R49 \
  33. )
  34. // clang-format off
  35. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  36. [L_QWER] = LAYOUT_uqs(
  37. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
  38. KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
  39. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
  40. KC_LBRC, KC_RBRC,
  41. /*thumb*/ LT_EXTD_ESC, KC_SPC, LT_MOUSE_ALT_SHIFT_INS,
  42. /*aux*/ OSM_GUI, KC_LALT,
  43. KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  44. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  45. KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
  46. KC_MINS, KC_EQL,
  47. /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
  48. /*aux*/ KC_RALT, KC_APP
  49. ),
  50. [L_WASD] = LAYOUT_uqs(
  51. KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R,
  52. KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F,
  53. KC_B, KC_GRV, KC_Z, KC_X, KC_C, KC_V,
  54. KC_LBRC, KC_RBRC,
  55. /*thumb*/ KC_LCTL, KC_SPC, KC_R,
  56. /*aux*/ OSM_GUI, KC_LALT,
  57. KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  58. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  59. KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
  60. KC_MINS, KC_EQL,
  61. /*thumb*/ DF(L_COLM), KC_ENT, KC_BSPC,
  62. /*aux*/ KC_RALT, KC_APP
  63. ),
  64. [L_COLM] = LAYOUT_uqs(
  65. KC_BTN2, KC_Q, KC_W, KC_F, KC_P, KC_B,
  66. KC_BTN1, KC_G_A, KC_A_R, KC_S_S, KC_C_T, KC_G,
  67. KC_BTN3, KC_Z, KC_X, KC_C, KC_D, KC_V,
  68. MS_WHUP, MS_WHDN,
  69. /*thumb*/ LT_EXTD_ESC, SFT_T(KC_SPC), LT(L_MOUSE, KC_TAB),
  70. /*aux*/ OSM_GUI, KC_LALT,
  71. KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_NO,
  72. KC_M, KC_C_N, KC_S_E, KC_A_I, KC_G_O, KC_NO,
  73. KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
  74. KC_NO, KC_NO,
  75. /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
  76. /*aux*/ KC_RALT, KC_APP
  77. ),
  78. // Updated with inspiration from https://forum.colemak.com/topic/2014-extend-extra-extreme/
  79. // I like the AltGr trick from https://stevep99.github.io/seniply/ and should probably incorporate some stuff from it.
  80. [L_EXTD] = LAYOUT_uqs(
  81. _______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, QK_LEAD,
  82. _______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT,
  83. _______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD,
  84. _______, _______,
  85. /*thumb*/ _______, _______, _______,
  86. /*aux*/ _______, _______,
  87. /* ^^^^ can't be used */
  88. KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO,
  89. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
  90. WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO, // KC_PSTE works in XTerm to emulate middle-click
  91. _______, _______,
  92. /*thumb*/ _______, _______, KC_BSPC,
  93. /*aux*/ _______, _______
  94. /* ^^^^ use these */
  95. ),
  96. // TODO: maybe swap # with ;, that way I can roll :w or :wq which I need
  97. // often ... probably better to add a combo?
  98. [L_NUM] = LAYOUT_uqs(
  99. _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
  100. _______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC,
  101. _______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC,
  102. KC_GRV, KC_TILDE,
  103. /*thumb*/ KC_ESC, KC_SPC, KC_0,
  104. /*aux*/ _______,_______,
  105. /* ^^^^ use these */
  106. KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______,
  107. KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______,
  108. KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied
  109. KC_0, KC_KP_DOT,
  110. /*thumb*/ _______, _______, _______,
  111. /*aux*/ _______, _______
  112. /* ^^^^ can't be used */
  113. ),
  114. [L_FUNC] = LAYOUT_uqs(
  115. _______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, DF(L_WASD),
  116. _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(L_QWER),
  117. _______, KC_NO, KC_NO, KC_NO, KC_NO, DF(L_COLM),
  118. KC_NO, KC_NO,
  119. /*thumb*/ KC_NO, KC_NO, KC_NO,
  120. /*aux*/ _______, _______,
  121. /* ^^^^ use these */
  122. KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
  123. KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
  124. KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO,
  125. KC_NO, KC_NO,
  126. /*thumb*/ _______, _______, _______,
  127. /*aux*/ _______, _______
  128. /* ^^^^ can't be used */
  129. ),
  130. [L_MOUSE] = LAYOUT_uqs(
  131. _______, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU,
  132. _______, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD,
  133. _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
  134. KC_NO, KC_NO,
  135. /*thumb*/ _______, _______, _______,
  136. /*aux*/ _______, _______,
  137. /* ^^^^ can't be used */
  138. _______, _______, KC_MS_UP, MS_WHUP, _______, _______,
  139. MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______,
  140. _______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______,
  141. KC_NO, KC_NO,
  142. /*thumb*/ KC_NO, KC_BTN1, KC_BTN2,
  143. /*aux*/ _______, _______
  144. /* use these ^^^^ */
  145. ),
  146. };