keymap.c 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #include QMK_KEYBOARD_H
  2. extern keymap_config_t keymap_config;
  3. enum layer_names {
  4. _DVORAK,
  5. _QWERTY,
  6. _COLEMAK,
  7. _WOW,
  8. _LOWER,
  9. _RAISE,
  10. _ADJUST
  11. };
  12. enum custom_keycodes {
  13. DVORAK = SAFE_RANGE,
  14. QWERTY,
  15. COLEMAK,
  16. WOW,
  17. LOWER,
  18. RAISE,
  19. ADJUST
  20. };
  21. #define KC_____ KC_TRNS
  22. #define KC_LOWR LOWER
  23. #define KC_RASE RAISE
  24. #define KC_RST RESET
  25. #define KC_BL_S BL_STEP
  26. #define KC_QWRT QWERTY
  27. #define KC_CLMK COLEMAK
  28. #define KC_DVRK DVORAK
  29. #define KC_WOW WOW
  30. #define KC_BSLT ALT_T(KC_BSPC)
  31. #define ADJUST MO(_ADJUST)
  32. #define LOWER MO(_LOWER)
  33. #define RAISE MO(_RAISE)
  34. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  35. [_DVORAK] = LAYOUT_kc (
  36. GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSLS,
  37. TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,SLSH,
  38. ESC , A , O , E , U , I , D , H , T , N , S ,MINS,
  39. LSFT,SCLN, Q , J , K , X ,LOWR, RASE, B , M , W , V , Z ,RSFT,
  40. LCTL,BSLT,LGUI, ENT ,SPC ,LALT
  41. ),
  42. [_QWERTY] = LAYOUT_kc (
  43. EQL , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,
  44. TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
  45. ESC , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
  46. LSFT, Z , X , C , V , B ,LOWR, RASE, N , M ,COMM,DOT ,SLSH,RSFT,
  47. LCTL,BSPC,LGUI, ENT ,SPC ,LALT
  48. ),
  49. [_COLEMAK] = LAYOUT_kc (
  50. EQL , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,
  51. TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,BSPC,
  52. ESC , A , R , S , T , D , H , N , E , I , O ,QUOT,
  53. LSFT, Z , X , C , V , B ,LOWR, RASE, K , M ,COMM,DOT ,SLSH,RSFT,
  54. LCTL,BSPC,LGUI, ENT ,SPC ,LALT
  55. ),
  56. [_WOW] = LAYOUT_kc (
  57. GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSLS,
  58. TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,SLSH,
  59. ESC , A , O , E , U , I , D , H , T , N , S ,MINS,
  60. LSFT,SCLN, Q , J , K , X ,LALT, RGUI, B , M , W , V , Z ,RSFT,
  61. LOWR,BSPC,LCTL, ENT ,SPC ,RASE
  62. ),
  63. [_LOWER] = LAYOUT_kc (
  64. F11 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F12 ,
  65. TILD,____,____, UP ,____,____, ____,____,____,____,____,____,
  66. CAPS,____,LEFT,DOWN,RGHT,HOME, PGUP,UNDS,PLUS,LCBR,RCBR,PIPE,
  67. BL_S,____,MUTE,VOLD,VOLU,END ,____, ____,PGDN,MPRV,MPLY,MNXT,____,____,
  68. ____,DEL ,____, ____,INS ,____
  69. ),
  70. [_RAISE] = LAYOUT_kc (
  71. F11 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F12 ,
  72. GRV ,____,____, UP ,____,____, ____,____,____,____,____,____,
  73. CAPS,____,LEFT,DOWN,RGHT,HOME, PGUP,MINS,EQL ,LBRC,RBRC,BSLS,
  74. BL_S,____,MUTE,VOLD,VOLU,END ,____, ____,PGDN,MPRV,MPLY,MNXT,____,____,
  75. ____,DEL ,____, ____,INS ,____
  76. ),
  77. [_ADJUST] = LAYOUT_kc (
  78. F11 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F12 ,
  79. ____,RST ,____,____,____,____, ____,____,____,____,____,____,
  80. ____,____,____,____,____,____, ____,QWRT,CLMK,DVRK,WOW ,____,
  81. ____,____,____,____,____,____,____, ____,____,____,____,____,____,____,
  82. ____,____,____, ____,____,____
  83. )
  84. };
  85. #ifdef AUDIO_ENABLE
  86. float tone_qwerty[][2] = SONG(QWERTY_SOUND);
  87. #endif
  88. void matrix_init_user(void) {
  89. // This will disable the red LEDs on the ProMicros
  90. setPinOutput(D5);
  91. writePinLow(D5);
  92. setPinOutput(B0);
  93. writePinLow(B0);
  94. };
  95. layer_state_t layer_state_set_user(layer_state_t state) {
  96. return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
  97. }
  98. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  99. switch (keycode) {
  100. case DVORAK:
  101. if (record->event.pressed) {
  102. set_single_persistent_default_layer(_DVORAK);
  103. }
  104. return false;
  105. case COLEMAK:
  106. if (record->event.pressed) {
  107. set_single_persistent_default_layer(_COLEMAK);
  108. }
  109. return false;
  110. case QWERTY:
  111. if (record->event.pressed) {
  112. set_single_persistent_default_layer(_QWERTY);
  113. }
  114. return false;
  115. case WOW:
  116. if (record->event.pressed) {
  117. set_single_persistent_default_layer(_WOW);
  118. }
  119. return false;
  120. }
  121. return true;
  122. }