keymap.c 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. /*
  2. Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
  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. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #include "keymap_bepo.h"
  15. #include "ericgebhart.h"
  16. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  17. [DVORAK] = LAYOUT_ergodox_wrapper(
  18. // left hand
  19. KC_GRV, ___NUMBER_L___, OSL(LAYERS),
  20. KC_LOCK, ___DVORAK_L1___, LCTL(KC_C),
  21. TAB_BKTAB, ___DVORAK_L2___,
  22. KC_LSFT, ___DVORAK_L3___, TO(MDIA),
  23. ___BOTTOM_LEFT___,
  24. ___ERGODOX_THUMB_LEFT___,
  25. // right hand
  26. MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
  27. LCTL(KC_V), ___DVORAK_R1___, KC_SLASH,
  28. /* */ ___DVORAK_R2___, KC_MINUS,
  29. TO(KEYPAD), ___DVORAK_R3___, KC_RSFT,
  30. ___BOTTOM_RIGHT___,
  31. ___ERGODOX_THUMB_RIGHT___
  32. ),
  33. [XMONAD] = LAYOUT_ergodox_wrapper(
  34. // left hand
  35. ___, ___FUNC_L___, ___,
  36. ___, ___DVORAK_L1___, ___,
  37. ___, ___DVORAK_L2___,
  38. ___, ___DVORAK_L3___, ___,
  39. ___BOTTOM_LEFT___,
  40. ___ERGODOX_THUMB_LEFT___,
  41. // right hand
  42. ___, ___FUNC_R___, ___,
  43. ___, ___DVORAK_R1___, ___,
  44. /**/ ___DVORAK_R2___, ___,
  45. ___, ___DVORAK_R3___, ___,
  46. ___BOTTOM_RIGHT___,
  47. ___ERGODOX_THUMB_RIGHT___
  48. ),
  49. [QWERTY] = LAYOUT_ergodox_wrapper(
  50. // left hand
  51. KC_GRV, ___NUMBER_L___, OSL(LAYERS),
  52. KC_LOCK, ___QWERTY_L1___, LCTL(KC_C),
  53. TAB_BKTAB, ___QWERTY_L2___,
  54. KC_LSFT, ___QWERTY_L3___, TO(MDIA),
  55. ___BOTTOM_LEFT___,
  56. ___ERGODOX_THUMB_LEFT___,
  57. // right hand
  58. MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
  59. LCTL(KC_V), ___QWERTY_R1___, KC_SLASH,
  60. /* */ ___QWERTY_R2___, KC_MINUS,
  61. TO(KEYPAD), ___QWERTY_R3___, KC_RSFT,
  62. ___BOTTOM_RIGHT___,
  63. ___ERGODOX_THUMB_RIGHT___
  64. ),
  65. [COLEMAK] = LAYOUT_ergodox_wrapper(
  66. // left hand
  67. KC_GRV, ___NUMBER_L___, OSL(LAYERS),
  68. KC_LOCK, ___COLEMAK_L1___, LCTL(KC_C),
  69. TAB_BKTAB, ___COLEMAK_L2___,
  70. KC_LSFT, ___COLEMAK_L3___, TO(MDIA),
  71. ___BOTTOM_LEFT___,
  72. ___ERGODOX_THUMB_LEFT___,
  73. // right hand
  74. MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
  75. LCTL(KC_V), ___COLEMAK_R1___, KC_SLASH,
  76. /* */ ___COLEMAK_R2___, KC_MINUS,
  77. TO(KEYPAD), ___COLEMAK_R3___, KC_RSFT,
  78. ___BOTTOM_RIGHT___,
  79. ___ERGODOX_THUMB_RIGHT___
  80. ),
  81. [WORKMAN] = LAYOUT_ergodox_wrapper(
  82. // left hand
  83. KC_GRV, ___NUMBER_L___, OSL(LAYERS),
  84. KC_LOCK, ___WORKMAN_L1___, LCTL(KC_C),
  85. TAB_BKTAB, ___WORKMAN_L2___,
  86. KC_LSFT, ___WORKMAN_L3___, TO(MDIA),
  87. ___BOTTOM_LEFT___,
  88. ___ERGODOX_THUMB_LEFT___,
  89. // right hand
  90. MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
  91. LCTL(KC_V), ___WORKMAN_R1___, KC_SLASH,
  92. /* */ ___WORKMAN_R2___, KC_MINUS,
  93. TO(KEYPAD), ___WORKMAN_R3___, KC_RSFT,
  94. ___BOTTOM_RIGHT___,
  95. ___ERGODOX_THUMB_RIGHT___
  96. ),
  97. [NORMAN] = LAYOUT_ergodox_wrapper(
  98. // left hand
  99. KC_GRV, ___NUMBER_L___, OSL(LAYERS),
  100. KC_LOCK, ___NORMAN_L1___, LCTL(KC_C),
  101. TAB_BKTAB, ___NORMAN_L2___,
  102. KC_LSFT, ___NORMAN_L3___, TO(MDIA),
  103. ___BOTTOM_LEFT___,
  104. ___ERGODOX_THUMB_LEFT___,
  105. // right hand
  106. MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
  107. LCTL(KC_V), ___NORMAN_R1___, KC_SLASH,
  108. /* */ ___NORMAN_R2___, KC_MINUS,
  109. TO(KEYPAD), ___NORMAN_R3___, KC_RSFT,
  110. ___BOTTOM_RIGHT___,
  111. ___ERGODOX_THUMB_RIGHT___
  112. ),
  113. [DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper(
  114. // left hand
  115. DB_GRV, ___NUMBER_BEPO_L___, OSL(LAYERS),
  116. KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
  117. TAB_BKTAB, ___DVORAK_FR_L2___,
  118. KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
  119. ___BOTTOM_LEFT_FR___,
  120. ___ERGODOX_THUMB_LEFT_BP___,
  121. // right hand
  122. MDIA_SYMB_KP_LAYERS, ___NUMBER_BEPO_R___, DB_EQL,
  123. DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH,
  124. /* */ ___DVORAK_FR_R2___, DB_MINUS,
  125. DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT,
  126. ___BOTTOM_RIGHT_FR___,
  127. ___ERGODOX_THUMB_RIGHT_BP___
  128. ),
  129. [BEPO] = LAYOUT_ergodox_wrapper(
  130. // Left hand
  131. BP_DLR, ___SYMBOL_BEPO_L___, OSL(LAYERS),
  132. KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
  133. TAB_BKTAB, ___BEPO_FR_L2___,
  134. BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
  135. ___5___,
  136. ___6___,
  137. // Right hand
  138. MDIA_SYMB_KP_LAYERS, ___SYMBOL_BEPO_R___, BP_EQL,
  139. BP_DCIR, ___BEPO_FR_R1___, BP_W,
  140. /* */ ___BEPO_FR_R2___, BP_CCED,
  141. BP_C, ___BEPO_FR_R3___, KC_RSFT,
  142. ___5___,
  143. ___6___
  144. ),
  145. [XMONAD_FR] = LAYOUT_ergodox_wrapper(
  146. // left hand
  147. ___, ___FUNC_L___, ___,
  148. ___, ___DVORAK_FR_L1___, ___,
  149. ___, ___DVORAK_FR_L2___,
  150. ___, ___DVORAK_FR_L3___, ___,
  151. ___BOTTOM_LEFT_FR___,
  152. ___ERGODOX_THUMB_LEFT_BP___,
  153. // right hand
  154. ___, ___FUNC_R___, ___,
  155. ___, ___DVORAK_FR_R1___, ___,
  156. /**/ ___DVORAK_FR_R2___, ___,
  157. ___, ___DVORAK_FR_R3___, ___,
  158. ___BOTTOM_RIGHT_FR___,
  159. ___ERGODOX_THUMB_RIGHT_BP___
  160. ),
  161. // SYMBOLS
  162. [SYMB] = LAYOUT_ergodox_wrapper(
  163. // left hand
  164. ___FUNC_1_6___, ___,
  165. ___SYMBOLS6_1___, ___,
  166. ___SYMBOLS6_2___,
  167. ___SYMBOLS6_3___, ___,
  168. ___SYMBOLS5_4___,
  169. ___6___,
  170. // right hand
  171. ___, ___FUNC_7_12___,
  172. ___, ___SYMPAD_1___,
  173. /**/ ___SYMPAD_2___,
  174. ___, ___SYMPAD_3___,
  175. /**/ ___5_SYMPAD_4___,
  176. ___6___
  177. ),
  178. [SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper(
  179. // left hand
  180. ___FUNC_1_6___, ___,
  181. ___SYMBOLS6_1_BP___, ___,
  182. ___SYMBOLS6_2_BP___,
  183. ___SYMBOLS6_3_BP___, ___,
  184. ___SYMBOLS5_4_BP___,
  185. ___6___,
  186. // right hand
  187. ___, ___FUNC_7_12___,
  188. ___, ___SYMPAD_1_BP___,
  189. /**/ ___SYMPAD_2_BP___,
  190. ___, ___SYMPAD_3_BP___,
  191. /**/ ___5_SYMPAD_4_BP___,
  192. ___6___
  193. ),
  194. [KEYPAD] = LAYOUT_ergodox_wrapper(
  195. ___FUNC_1_6___, ___,
  196. ___2___, ___FUNCPAD_T___, ___, ___,
  197. ___2___, ___FUNCPAD_1___, ___,
  198. ___2___, ___FUNCPAD_2___, ___, ___,
  199. ___2___, ___FUNCPAD_3___,
  200. ___6___,
  201. // right hand
  202. ___, ___FUNC_7_12___,
  203. ___, ___, ___KEYPAD_1___, ___,
  204. /**/ ___, ___KEYPAD_2___, ___,
  205. ___, ___, ___KEYPAD_3___, ___,
  206. /* */ ___KEYPAD_4___, ___,
  207. ___6___
  208. ),
  209. [KEYPAD_ON_BEPO] = LAYOUT_ergodox_wrapper(
  210. ___FUNC_1_6___, ___,
  211. ___2___, ___FUNCPAD_T___, ___, ___,
  212. ___2___, ___FUNCPAD_1___, ___,
  213. ___2___, ___FUNCPAD_2___, ___, ___,
  214. ___2___, ___FUNCPAD_3___,
  215. ___6___,
  216. // right hand
  217. ___, ___FUNC_7_12___,
  218. ___, ___, ___KEYPAD_1_BP___, ___,
  219. /**/ ___, ___KEYPAD_2_BP___, ___,
  220. ___, ___, ___KEYPAD_3_BP___, ___,
  221. /* */ ___KEYPAD_4_BP___, ___,
  222. ___6___
  223. ),
  224. // MEDIA AND MOUSE
  225. [MDIA] = LAYOUT_ergodox_wrapper(
  226. // left hand
  227. ___FUNC_1_6___, ___,
  228. ___MOUSE_BTNS_L___, ___, ___,
  229. ___, ___MOUSE_LDUR___, ___,
  230. ___, ___MWHEEL_LDUR___, XXX, ___,
  231. ___, ___, ___MOUSE_ACCL_012___,
  232. ___6___,
  233. // right hand
  234. ___, ___FUNC_7_12___,
  235. ___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___,
  236. /**/ KC_VOLD, ___VI_ARROWS___, ___,
  237. ___, ___, ___MOUSE_BTNS_R___,
  238. /* */ KC_PGDN, KC_PGUP, ___3___,
  239. ___6___
  240. ),
  241. [LAYERS] = LAYOUT_ergodox_wrapper(
  242. // left hand
  243. ___FUNC_1_6___, ___,
  244. XXX, XXX, XXX, ___2_LAYERS_B1___, XXX, ___,
  245. XXX, XXX, XXX, ___2_LAYERS_B2___, XXX,
  246. XXX, XXX, ___3_LAYERS_B3___, XXX, ___,
  247. ___5___,
  248. ___6___,
  249. // right hand
  250. ___, ___FUNC_7_12___,
  251. ___, XXX, ___3_LAYERS_T_BP___, ___2___,
  252. /**/ XXX, ___3_LAYERS_T___, ___2___,
  253. ___, XXX, ___3_LAYERS_T_CTL___, ___2___,
  254. ___5___,
  255. ___6___
  256. ),
  257. };
  258. // Runs constantly in the background, in a loop.
  259. void matrix_scan_user(void) {
  260. uint8_t layer = biton32(layer_state);
  261. ergodox_board_led_off();
  262. ergodox_right_led_1_off();
  263. ergodox_right_led_2_off();
  264. ergodox_right_led_3_off();
  265. if(!on_qwerty())
  266. ergodox_right_led_1_on();
  267. switch (layer) {
  268. //case DVORAK:
  269. //ergodox_right_led_1_off();
  270. //break;
  271. // first led on for a bepo software keyboard layer
  272. case DVORAK_ON_BEPO:
  273. ergodox_right_led_2_on();
  274. break;
  275. case BEPO:
  276. ergodox_right_led_1_on();
  277. ergodox_right_led_1_off();
  278. ergodox_right_led_1_on();
  279. ergodox_right_led_1_off();
  280. ergodox_right_led_1_on();
  281. break;
  282. case SYMB:
  283. ergodox_right_led_3_on();
  284. break;
  285. case MDIA:
  286. ergodox_right_led_3_on();
  287. break;
  288. case LAYERS:
  289. ergodox_right_led_1_on();
  290. ergodox_right_led_2_on();
  291. ergodox_right_led_3_on();
  292. break;
  293. default:
  294. ergodox_board_led_off();
  295. break;
  296. /* default: */
  297. /* // none */
  298. /* break; */
  299. }
  300. }
  301. /*
  302. clear_oneshot_mods();
  303. set_oneshot_locked_mods(mods);
  304. register_mods(mods);
  305. register_code(action.key.code);
  306. unregister_code(action.key.code);
  307. layer_on(action.layer_tap.val);
  308. layer_off(action.layer_tap.val);
  309. clear_oneshot_locked_mods();
  310. clear_oneshot_mods();
  311. unregister_mods(mods);
  312. */