logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

keymap.c (6758B)


  1. #include QMK_KEYBOARD_H
  2. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  3. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  4. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  5. // entirely and just use numbers.
  6. enum layers {
  7. _QWERTY,
  8. _LOWER,
  9. _RAISE,
  10. _ADJUST
  11. };
  12. enum custom_keycodes {
  13. LOWER = SAFE_RANGE,
  14. RAISE,
  15. ADJUST,
  16. };
  17. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  18. [_QWERTY] = LAYOUT(
  19. // |------------------------------------------. ,---------------------------------------------,
  20. KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P,
  21. //|------+------+------+------+------+------+-------| |------+------+------+-------+--------+-------+--------,
  22. KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  23. //|------+------+------+------+------+------+-------| |------+------+------+-------+-------+--------+--------,
  24. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
  25. //|------+------+------+------+------+------+-------| |------+------+------+-------+-------+--------+--------|
  26. KC_NO, KC_NO, KC_NO, LOWER, KC_SPC, KC_ENT, RAISE, KC_NO, KC_NO, KC_NO,
  27. //|------+------| //|-------+------+-------| |------+------+------| |-------+--------|
  28. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
  29. //`----------------------' `--------------------'
  30. ),
  31. [_LOWER] = LAYOUT(
  32. // |-----------------------------------------------. ,--------------------------------------------------------,
  33. KC_1, KC_2, KC_3, KC_3, KC_4, KC_ESC, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
  34. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+---------+---------+---------+--------,
  35. KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_BSPC,
  36. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+---------+---------+---------+--------,
  37. KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  38. //|------+------+------+---+----+-------+------+---------| |--------+--------+--------+---------+---------+---------+--------|
  39. KC_NO, KC_NO, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_NO, KC_NO,
  40. //|------+------| //|------+------+----------| |--------+------+----------| |---------+---------|
  41. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
  42. //`------------------------' `--------------------------'
  43. ),
  44. [_RAISE] = LAYOUT(
  45. // |------------------------------------------------. ,-----------------------------------------------------,
  46. KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_ESC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
  47. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------,
  48. KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
  49. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------,
  50. KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
  51. //|------+------+------+---+----+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------|
  52. KC_NO, KC_NO, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_NO, KC_NO,
  53. //|------+------| //|------+------+----------| |--------+------+----------| |--------+--------|
  54. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
  55. //`------------------------' `--------------------------'
  56. ),
  57. [_ADJUST] = LAYOUT(
  58. // |------------------------------------------------. ,-----------------------------------------------------,
  59. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  60. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------,
  61. KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  62. //|------+------+------+--------+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------,
  63. KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  64. //|------+------+------+---+----+-------+------+---------| |--------+--------+--------+--------+--------+--------+--------|
  65. KC_NO, KC_NO, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_NO, KC_NO,
  66. //|------+------| //|------+------+----------| |--------+------+----------| |--------+--------|
  67. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
  68. //`------------------------' `--------------------------'
  69. )
  70. };
  71. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  72. switch (keycode) {
  73. case LOWER:
  74. if (record->event.pressed) {
  75. layer_on(_LOWER);
  76. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  77. } else {
  78. layer_off(_LOWER);
  79. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  80. }
  81. return false;
  82. case RAISE:
  83. if (record->event.pressed) {
  84. layer_on(_RAISE);
  85. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  86. } else {
  87. layer_off(_RAISE);
  88. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  89. }
  90. return false;
  91. case ADJUST:
  92. if (record->event.pressed) {
  93. layer_on(_ADJUST);
  94. } else {
  95. layer_off(_ADJUST);
  96. }
  97. return false;
  98. }
  99. return true;
  100. }