keymap.c 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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_LOWR LOWER
  17. #define KC_RASE RAISE
  18. #define KC_RST QK_BOOT
  19. #define KC_BL_S BL_STEP
  20. // left shift as a left key too - makes perfect sense
  21. #define KC_LESF LSFT_T(KC_LEFT)
  22. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  23. [_QWERTY] = LAYOUT(
  24. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  25. QK_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC,
  26. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  27. KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSLS,
  28. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  29. KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
  30. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  31. KC_LESF, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_LBRC, KC_RBRC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RGHT,
  32. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  33. KC_LGUI,KC_LOWR,KC_ENT , KC_SPC ,KC_RASE,KC_RALT
  34. // `----+----+----' `----+----+----'
  35. ),
  36. [_COLEMAK] = LAYOUT(
  37. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  38. QK_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC,
  39. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  40. KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y ,KC_SCLN,KC_BSLS,
  41. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  42. KC_LCTL, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,KC_QUOT,
  43. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  44. KC_LESF, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_LBRC, KC_RBRC, KC_K , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RGHT,
  45. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  46. KC_LGUI,KC_LOWR,KC_ENT , KC_SPC ,KC_RASE,KC_RALT
  47. // `----+----+----' `----+----+----'
  48. ),
  49. [_LOWER] = LAYOUT(
  50. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  51. KC_GRV ,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL ,
  52. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  53. _______,_______,_______,_______,_______,_______, _______,_______,KC_BTN1,_______,_______,_______,
  54. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  55. _______,_______,_______,_______,_______,_______, KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,
  56. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  57. _______,_______,_______,_______,_______, KC_UP ,_______, _______,KC_DOWN,_______,_______,_______,_______,_______,
  58. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  59. _______,_______,_______, _______,_______, _______
  60. // `----+----+----' `----+----+----'
  61. ),
  62. [_RAISE] = LAYOUT(
  63. //,----+----+----+----+----+----. ,----+----+----+----+----+----.
  64. KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
  65. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  66. _______,_______,KC_VOLU,_______,_______,KC_LBRC, KC_RBRC,KC_UNDS,KC_PLUS,_______,_______,KC_MUTE,
  67. //|----+----+----+----+----+----| |----+----+----+----+----+----|
  68. _______,KC_MPLY,KC_VOLD,KC_MNXT,_______,KC_LPRN, KC_RPRN,KC_MINS,KC_EQL ,_______,_______,_______,
  69. //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
  70. _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
  71. //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
  72. _______,_______,_______, _______,_______, _______
  73. // `----+----+----' `----+----+----'
  74. ),
  75. [_ADJUST] = LAYOUT(
  76. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  77. _______,_______,_______,_______,_______, QWERTY, COLEMAK,_______,_______,_______,_______,_______,
  78. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  79. _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_SAI,RGB_VAI, _______,_______,_______,_______,_______,_______,
  80. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  81. QK_BOOT,DB_TOGG,_______,RGB_HUD,RGB_SAD,RGB_VAD, _______,_______,_______,_______,_______,_______,
  82. //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------|
  83. BL_STEP,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
  84. //`--------+-------+-------+----+--+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------'
  85. _______,_______,_______, _______,_______,_______
  86. // `-------+-------+-------' `-------+-------+-------'
  87. )
  88. };
  89. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  90. switch (keycode) {
  91. case QWERTY:
  92. if (record->event.pressed) {
  93. set_single_persistent_default_layer(_QWERTY);
  94. }
  95. return false;
  96. case COLEMAK:
  97. if (record->event.pressed) {
  98. set_single_persistent_default_layer(_COLEMAK);
  99. }
  100. return false;
  101. case LOWER:
  102. if (record->event.pressed) {
  103. layer_on(_LOWER);
  104. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  105. } else {
  106. layer_off(_LOWER);
  107. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  108. }
  109. return false;
  110. case RAISE:
  111. if (record->event.pressed) {
  112. layer_on(_RAISE);
  113. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  114. } else {
  115. layer_off(_RAISE);
  116. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  117. }
  118. return false;
  119. }
  120. return true;
  121. }