keymap.c 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include QMK_KEYBOARD_H
  2. extern keymap_config_t keymap_config;
  3. enum layer_names {
  4. _QWERTY,
  5. _COLEMAK,
  6. _LOWER,
  7. _RAISE,
  8. _ADJUST
  9. };
  10. enum custom_keycodes {
  11. QWERTY = SAFE_RANGE,
  12. COLEMAK,
  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 shift as a left key too - makes perfect sense
  22. #define KC_LESF LSFT_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. LCTL, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
  31. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  32. LESF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
  33. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  34. LGUI,LOWR,ENT , SPC ,RASE,RALT
  35. // `----+----+----' `----+----+----'
  36. ),
  37. [_COLEMAK] = LAYOUT_kc(
  38. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  39. GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
  40. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  41. TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,BSLS,
  42. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  43. LCTL, A , R , S , T , D , H , N , E , I , O ,QUOT,
  44. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  45. LESF, Z , X , C , V , B ,LBRC, RBRC, K , M ,COMM,DOT ,SLSH,RGHT,
  46. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  47. LGUI,LOWR,ENT , SPC ,RASE,RALT
  48. // `----+----+----' `----+----+----'
  49. ),
  50. [_LOWER] = LAYOUT_kc(
  51. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  52. GRV ,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 , , ,DOWN, , , , , ,
  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. , , , , , , , , , , , , , ,
  72. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  73. , , , , ,
  74. // `----+----+----' `----+----+----'
  75. ),
  76. [_ADJUST] = LAYOUT(
  77. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  78. _______,_______,_______,_______,_______, QWERTY, COLEMAK,_______,_______,_______,_______,_______,
  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. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  91. switch (keycode) {
  92. case QWERTY:
  93. if (record->event.pressed) {
  94. set_single_persistent_default_layer(_QWERTY);
  95. }
  96. return false;
  97. case COLEMAK:
  98. if (record->event.pressed) {
  99. set_single_persistent_default_layer(_COLEMAK);
  100. }
  101. return false;
  102. case LOWER:
  103. if (record->event.pressed) {
  104. layer_on(_LOWER);
  105. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  106. } else {
  107. layer_off(_LOWER);
  108. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  109. }
  110. return false;
  111. case RAISE:
  112. if (record->event.pressed) {
  113. layer_on(_RAISE);
  114. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  115. } else {
  116. layer_off(_RAISE);
  117. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  118. }
  119. return false;
  120. }
  121. return true;
  122. }