You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
4.6 KiB

  1. #include QMK_KEYBOARD_H
  2. extern keymap_config_t keymap_config;
  3. #define _QWERTY 0
  4. #define _LOWER 1
  5. #define _RAISE 2
  6. #define _ADJUST 16
  7. enum custom_keycodes {
  8. QWERTY = SAFE_RANGE,
  9. LOWER,
  10. RAISE,
  11. ADJUST,
  12. };
  13. #define KC_ KC_TRNS
  14. #define KC_LOWR LOWER
  15. #define KC_RASE RAISE
  16. #define KC_ADJT ADJUST
  17. #define KC_RST RESET
  18. #define KC_BL_S BL_STEP
  19. #define KC_DBUG DEBUG
  20. #define KC_RTOG RGB_TOG
  21. #define KC_RMOD RGB_MOD
  22. #define KC_RHUI RGB_HUI
  23. #define KC_RHUD RGB_HUD
  24. #define KC_RSAI RGB_SAI
  25. #define KC_RSAD RGB_SAD
  26. #define KC_RVAI RGB_VAI
  27. #define KC_RVAD RGB_VAD
  28. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  29. [_QWERTY] = LAYOUT_kc(
  30. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  31. ESC , Q , W , E , R , T ,LBRC, RBRC, Y , U , I , O , P ,BSPC,
  32. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  33. TAB , A , S , D , F , G , A, A, H , J , K , L ,SCLN,QUOT,
  34. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  35. LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT ,
  36. //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
  37. LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT
  38. //`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
  39. ),
  40. [_LOWER] = LAYOUT_kc(
  41. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  42. GRAVE, 1 , 2 , 3 , 4 , 5 , A, B, 6 , 7 , 8 , 9 , 0 ,DEL,
  43. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  44. TAB , F1 , F2 , F3 , F4 , F5 , F6 , D, Y ,MINS, EQL,LBRC,RBRC,BSLS,
  45. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  46. LSFT, F7 , F8 , F9 , F10, F11, F12, SPC, N , M ,COMM,DOT ,SLSH,ENT ,
  47. //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
  48. LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT
  49. //`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
  50. ),
  51. [_RAISE] = LAYOUT_kc(
  52. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  53. ESC , 1 , 2 , 3 , 4 , 5 , A, B, 6 , 7 , 8 , 9 , 0 ,BSPC,
  54. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  55. TAB , Q , W , E , R , T , C , D, Y , U , I , O , P ,DEL ,
  56. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  57. LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT ,
  58. //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
  59. LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT
  60. //`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
  61. ),
  62. [_ADJUST] = LAYOUT_kc(
  63. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  64. ESC , F1 , F2 , F3 , F4 , F5 , F6, F7, F8, F9 ,F10 , F11, F12,BSPC,
  65. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  66. TAB , Q , W , E , R , T , C , D, Y , U , I , O , P ,DEL ,
  67. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  68. LSFT, Z , X , C , V , B , A, SPC, N , M ,COMM,DOT ,SLSH,ENT ,
  69. //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
  70. LCTL,LGUI,LALT,ADJT,LOWR,SPC, SPC, RASE,LEFT, UP ,DOWN,RIGHT
  71. //`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
  72. )
  73. };
  74. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  75. switch (keycode) {
  76. case QWERTY:
  77. if (record->event.pressed) {
  78. set_single_persistent_default_layer(_QWERTY);
  79. }
  80. return false;
  81. break;
  82. case LOWER:
  83. if (record->event.pressed) {
  84. layer_on(_LOWER);
  85. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  86. } else {
  87. layer_off(_LOWER);
  88. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  89. }
  90. return false;
  91. break;
  92. case RAISE:
  93. if (record->event.pressed) {
  94. layer_on(_RAISE);
  95. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  96. } else {
  97. layer_off(_RAISE);
  98. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  99. }
  100. return false;
  101. break;
  102. case ADJUST:
  103. if (record->event.pressed) {
  104. layer_on(_ADJUST);
  105. } else {
  106. layer_off(_ADJUST);
  107. }
  108. return false;
  109. break;
  110. }
  111. return true;
  112. }