keymap.c 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include QMK_KEYBOARD_H
  2. extern keymap_config_t keymap_config;
  3. enum layer_names {
  4. _QWERTY,
  5. _WORKMAN,
  6. _LOWER,
  7. _RAISE,
  8. _ADJUST
  9. };
  10. enum custom_keycodes {
  11. QWERTY = SAFE_RANGE,
  12. WORKMAN,
  13. LOWER,
  14. RAISE
  15. };
  16. #define KC_ KC_TRNS
  17. #define KC_LOWR LOWER
  18. #define KC_RASE RAISE
  19. #define KC_RST RESET
  20. #define KC_BL_S BL_STEP
  21. // left control as a left key too - makes perfect sense
  22. #define KC_LECL LCTL_T(KC_LEFT)
  23. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  24. [_QWERTY] = LAYOUT_kc(
  25. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  26. GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
  27. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  28. TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
  29. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  30. LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
  31. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  32. LECL, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
  33. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  34. LGUI,LOWR,ENT , SPC ,RASE,RALT
  35. // `----+----+----' `----+----+----'
  36. ),
  37. [_WORKMAN] = LAYOUT_kc(
  38. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  39. GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
  40. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  41. TAB , Q , D , R , W , B , J , F , U , P ,SCLN,BSLS,
  42. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  43. LSFT, A , S , H , T , G , Y , N , E , O ,I ,QUOT,
  44. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  45. LECL, Z , X , M , C , V ,LBRC, RBRC, K , L ,COMM,DOT ,SLSH,RGHT,
  46. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  47. LGUI,LOWR,ENT , SPC ,RASE,RALT
  48. // `----+----+----' `----+----+----'
  49. ),
  50. [_LOWER] = LAYOUT_kc(
  51. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  52. TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
  53. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  54. , , , , , , , ,BTN1, , , ,
  55. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  56. , , , , , , MS_L,MS_D,MS_U,MS_R, , ,
  57. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  58. , , , , , UP , , , , , , , , ,
  59. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  60. , , , , ,
  61. // `----+----+----' `----+----+----'
  62. ),
  63. [_RAISE] = LAYOUT_kc(
  64. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  65. F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,
  66. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  67. , ,VOLU, , ,LBRC, RBRC,UNDS,PLUS, , ,MUTE,
  68. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  69. ,MPLY,VOLD,MNXT, ,LPRN, RPRN,MINS,EQL , , , ,
  70. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  71. , , , , , , , ,DOWN, , , , , ,
  72. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  73. , , , , ,
  74. // `----+----+----' `----+----+----'
  75. ),
  76. [_ADJUST] = LAYOUT(
  77. //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
  78. _______, _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______,
  79. //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
  80. RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
  81. //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
  82. RESET , DEBUG , RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
  83. //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------|
  84. BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  85. //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------'
  86. _______, _______, _______, _______, _______, _______
  87. // `--------+--------+--------' `--------+--------+--------'
  88. )
  89. };
  90. #ifdef AUDIO_ENABLE
  91. float tone_qwerty[][2] = SONG(QWERTY_SOUND);
  92. #endif
  93. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  94. switch (keycode) {
  95. case QWERTY:
  96. if (record->event.pressed) {
  97. set_single_persistent_default_layer(_QWERTY);
  98. }
  99. return false;
  100. case WORKMAN:
  101. if (record->event.pressed) {
  102. set_single_persistent_default_layer(_WORKMAN);
  103. }
  104. return false;
  105. case LOWER:
  106. if (record->event.pressed) {
  107. layer_on(_LOWER);
  108. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  109. } else {
  110. layer_off(_LOWER);
  111. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  112. }
  113. return false;
  114. case RAISE:
  115. if (record->event.pressed) {
  116. layer_on(_RAISE);
  117. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  118. } else {
  119. layer_off(_RAISE);
  120. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  121. }
  122. return false;
  123. }
  124. return true;
  125. }