keymap.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  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___, DEF_OS_LAYER_SW,
  20. KC_LOCK, ___DVORAK_L1___, KC_LBRC,
  21. TAB_BKTAB, ___DVORAK_L2___,
  22. KC_LSFT, ___DVORAK_L3___, KC_LPRN,
  23. ___ERGODOX_BOTTOM_LEFT___,
  24. ___ERGODOX_THUMB_LEFT___,
  25. // right hand
  26. MDIA_SYMB, ___NUMBER_R___, KC_EQL,
  27. KC_RBRC, ___DVORAK_R1___, KC_SLASH,
  28. /* */ ___DVORAK_R2___, KC_MINUS,
  29. KC_RPRN, ___DVORAK_R3___, KC_RSFT,
  30. ___ERGODOX_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. ___ERGODOX_BOTTOM_LEFT___,
  40. ___ERGODOX_THUMB_LEFT___,
  41. // right hand
  42. ___, ___FUNC_R___, ___,
  43. ___, ___DVORAK_R1___, ___,
  44. /**/ ___DVORAK_R2___, ___,
  45. ___, ___DVORAK_R3___, ___,
  46. ___ERGODOX_BOTTOM_RIGHT___,
  47. ___ERGODOX_THUMB_RIGHT___
  48. ),
  49. [QWERTY] = LAYOUT_ergodox_wrapper(
  50. // left hand
  51. KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
  52. KC_LOCK, ___QWERTY_L1___, KC_LBRC,
  53. TAB_BKTAB, ___QWERTY_L2___,
  54. KC_LSFT, ___QWERTY_L3___, KC_LPRN,
  55. ___ERGODOX_BOTTOM_LEFT___,
  56. ___ERGODOX_THUMB_LEFT___,
  57. // right hand
  58. MDIA_SYMB, ___NUMBER_R___, KC_EQL,
  59. KC_RBRC, ___QWERTY_R1___, KC_SLASH,
  60. /* */ ___QWERTY_R2___, KC_MINUS,
  61. KC_RPRN, ___QWERTY_R3___, KC_RSFT,
  62. ___ERGODOX_BOTTOM_RIGHT___,
  63. ___ERGODOX_THUMB_RIGHT___
  64. ),
  65. [COLEMAK] = LAYOUT_ergodox_wrapper(
  66. // left hand
  67. KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
  68. KC_LOCK, ___COLEMAK_L1___, KC_LBRC,
  69. TAB_BKTAB, ___COLEMAK_L2___,
  70. KC_LSFT, ___COLEMAK_L3___, KC_LPRN,
  71. ___ERGODOX_BOTTOM_LEFT___,
  72. ___ERGODOX_THUMB_LEFT___,
  73. // right hand
  74. MDIA_SYMB, ___NUMBER_R___, KC_EQL,
  75. KC_RBRC, ___COLEMAK_R1___, KC_SLASH,
  76. /* */ ___COLEMAK_R2___, KC_MINUS,
  77. KC_RPRN, ___COLEMAK_R3___, KC_RSFT,
  78. ___ERGODOX_BOTTOM_RIGHT___,
  79. ___ERGODOX_THUMB_RIGHT___
  80. ),
  81. [WORKMAN] = LAYOUT_ergodox_wrapper(
  82. // left hand
  83. KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
  84. KC_LOCK, ___WORKMAN_L1___, KC_LBRC,
  85. TAB_BKTAB, ___WORKMAN_L2___,
  86. KC_LSFT, ___WORKMAN_L3___, KC_LPRN,
  87. ___ERGODOX_BOTTOM_LEFT___,
  88. ___ERGODOX_THUMB_LEFT___,
  89. // right hand
  90. MDIA_SYMB, ___NUMBER_R___, KC_EQL,
  91. KC_RBRC, ___WORKMAN_R1___, KC_SLASH,
  92. /* */ ___WORKMAN_R2___, KC_MINUS,
  93. KC_RPRN, ___WORKMAN_R3___, KC_RSFT,
  94. ___ERGODOX_BOTTOM_RIGHT___,
  95. ___ERGODOX_THUMB_RIGHT___
  96. ),
  97. [NORMAN] = LAYOUT_ergodox_wrapper(
  98. // left hand
  99. KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
  100. KC_LOCK, ___NORMAN_L1___, KC_LBRC,
  101. TAB_BKTAB, ___NORMAN_L2___,
  102. KC_LSFT, ___NORMAN_L3___, KC_LPRN,
  103. ___ERGODOX_BOTTOM_LEFT___,
  104. ___ERGODOX_THUMB_LEFT___,
  105. // right hand
  106. MDIA_SYMB, ___NUMBER_R___, KC_EQL,
  107. KC_RBRC, ___NORMAN_R1___, KC_SLASH,
  108. /* */ ___NORMAN_R2___, KC_MINUS,
  109. KC_RPRN, ___NORMAN_R3___, KC_RSFT,
  110. ___ERGODOX_BOTTOM_RIGHT___,
  111. ___ERGODOX_THUMB_RIGHT___
  112. ),
  113. [DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper(
  114. // left hand
  115. DB_GRV, ___NUMBER_BEPO_L___, DEF_OS_LAYER_SW,
  116. KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
  117. TAB_BKTAB, ___DVORAK_FR_L2___,
  118. KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
  119. ___ERGODOX_BOTTOM_LEFT___,
  120. ___ERGODOX_THUMB_LEFT___,
  121. // right hand
  122. MDIA_SYMB, ___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. ___ERGODOX_BOTTOM_RIGHT_FR___,
  127. ___ERGODOX_THUMB_RIGHT___
  128. ),
  129. [XMONAD_FR] = LAYOUT_ergodox_wrapper(
  130. // left hand
  131. ___, ___FUNC_L___, ___,
  132. ___, ___DVORAK_FR_L1___, ___,
  133. ___, ___DVORAK_FR_L2___,
  134. ___, ___DVORAK_FR_L3___, ___,
  135. ___ERGODOX_BOTTOM_LEFT___,
  136. ___ERGODOX_THUMB_LEFT___,
  137. // right hand
  138. ___, ___FUNC_R___, ___,
  139. ___, ___DVORAK_FR_R1___, ___,
  140. /**/ ___DVORAK_FR_R2___, ___,
  141. ___, ___DVORAK_FR_R3___, ___,
  142. ___ERGODOX_BOTTOM_RIGHT_FR___,
  143. ___ERGODOX_THUMB_RIGHT___
  144. ),
  145. [BEPO] = LAYOUT_ergodox_wrapper(
  146. // Left hand
  147. BP_DLR, ___SYMBOL_BEPO_L___, DEF_OS_LAYER_SW,
  148. KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
  149. TAB_BKTAB, ___BEPO_FR_L2___,
  150. BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
  151. ___ERGODOX_BOTTOM_LEFT___,
  152. ___ERGODOX_THUMB_LEFT___,
  153. // Right hand
  154. MDIA_SYMB, ___SYMBOL_BEPO_R___, BP_EQL,
  155. BP_DCRC, ___BEPO_FR_R1___, BP_W,
  156. /* */ ___BEPO_FR_R2___, BP_CCED,
  157. BP_C, ___BEPO_FR_R3___, KC_RSFT,
  158. ___ERGODOX_BOTTOM_RIGHT___,
  159. ___ERGODOX_THUMB_RIGHT___
  160. ),
  161. // SYMBOLS
  162. [SYMB] = LAYOUT_ergodox_wrapper(
  163. // left hand
  164. ___, ___FUNC_L___, ___,
  165. ___, ___SYMBOLS_1___, ___,
  166. ___, ___SYMBOLS_2___,
  167. ___, ___SYMBOLS_3___, ___,
  168. ___ERGODOX_TRANS_BOTTOM___,
  169. ___ERGODOX_TRANS_THUMBS___,
  170. // right hand
  171. ___, ___FUNC_R___, KC_F11,
  172. ___, KC_UP, ___KEYPAD_1___, KC_F12,
  173. /**/ KC_DOWN, ___KEYPAD_2___, KC_TRNS,
  174. ___, KC_AMPR, ___KEYPAD_3___, KC_PENT,
  175. /* */ ___KEYPAD_4___, ___,
  176. ___ERGODOX_TRANS_THUMBS___
  177. ),
  178. [SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper(
  179. // left hand
  180. ___, ___FUNC_L___, ___,
  181. ___, ___SYMBOLS_1_BP___, ___,
  182. ___, ___SYMBOLS_2_BP___,
  183. ___, ___SYMBOLS_3_BP___, ___,
  184. ___ERGODOX_TRANS_BOTTOM___,
  185. ___ERGODOX_TRANS_THUMBS___,
  186. // right hand
  187. ___, ___FUNC_R___, KC_F11,
  188. ___, KC_UP, ___KEYPAD_1_BP___, KC_F12,
  189. /**/ KC_DOWN, ___KEYPAD_2_BP___, KC_TRNS,
  190. ___, KC_AMPR, ___KEYPAD_3_BP___, KC_PENT,
  191. /* */ ___KEYPAD_4_BP___, ___,
  192. ___ERGODOX_TRANS_THUMBS___
  193. ),
  194. // MEDIA AND MOUSE
  195. [MDIA] = LAYOUT_ergodox_wrapper(
  196. // left hand
  197. ___, ___FUNC_L___, ___,
  198. ___MOUSE_BTNS_L___, ___, ___,
  199. ___, ___MOUSE_LDUR___, ___,
  200. ___, ___MWHEEL_LDUR___, XXX, ___,
  201. ___, ___, ___MOUSE_ACCL_012___,
  202. ___ERGODOX_TRANS_THUMBS___,
  203. // right hand
  204. ___, ___FUNC_R___, KC_F11,
  205. KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
  206. /* */ KC_PGUP, ___VI_ARROWS___, ___,
  207. KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
  208. ___ERGODOX_TRANS_BOTTOM___,
  209. ___ERGODOX_TRANS_THUMBS___
  210. ),
  211. [LAYERS] = LAYOUT_ergodox_wrapper(
  212. // left hand
  213. ___, ___FUNC_L___, ___,
  214. XXX, XXX, XXX, ___LAYERS_L1___, XXX, XXX,
  215. XXX, XXX, XXX, ___LAYERS_L2___, XXX,
  216. XXX, XXX, ___LAYERS_L3___, XXX, XXX,
  217. ___, ___, ___LAYERS_L4___,
  218. ___ERGODOX_TRANS_THUMBS___,
  219. // right hand
  220. ___, ___FUNC_R___, KC_F11,
  221. KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
  222. /* */ KC_PGUP, ___VI_ARROWS___, ___,
  223. KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
  224. ___ERGODOX_TRANS_BOTTOM___,
  225. ___ERGODOX_TRANS_THUMBS___
  226. ),
  227. };
  228. // Runs constantly in the background, in a loop.
  229. void matrix_scan_user(void) {
  230. uint8_t layer = biton32(layer_state);
  231. ergodox_board_led_off();
  232. ergodox_right_led_1_off();
  233. ergodox_right_led_2_off();
  234. ergodox_right_led_3_off();
  235. if(!on_qwerty())
  236. ergodox_right_led_1_on();
  237. switch (layer) {
  238. //case DVORAK:
  239. //ergodox_right_led_1_off();
  240. //break;
  241. // first led on for a bepo software keyboard layer
  242. case DVORAK_ON_BEPO:
  243. ergodox_right_led_2_on();
  244. break;
  245. case BEPO:
  246. ergodox_right_led_1_on();
  247. ergodox_right_led_1_off();
  248. ergodox_right_led_1_on();
  249. ergodox_right_led_1_off();
  250. ergodox_right_led_1_on();
  251. break;
  252. case SYMB:
  253. ergodox_right_led_3_on();
  254. break;
  255. case MDIA:
  256. ergodox_right_led_3_on();
  257. break;
  258. case LAYERS:
  259. ergodox_right_led_1_on();
  260. ergodox_right_led_2_on();
  261. ergodox_right_led_3_on();
  262. break;
  263. default:
  264. ergodox_board_led_off();
  265. break;
  266. /* default: */
  267. /* // none */
  268. /* break; */
  269. }
  270. }
  271. /*
  272. clear_oneshot_mods();
  273. set_oneshot_locked_mods(mods);
  274. register_mods(mods);
  275. register_code(action.key.code);
  276. unregister_code(action.key.code);
  277. layer_on(action.layer_tap.val);
  278. layer_off(action.layer_tap.val);
  279. clear_oneshot_locked_mods();
  280. clear_oneshot_mods();
  281. unregister_mods(mods);
  282. */