keymap.c 4.6 KB

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