keymap.c 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. enum custom_keycodes {
  7. QWERTY = SAFE_RANGE,
  8. LOWER,
  9. RAISE,
  10. };
  11. #define KC_ KC_TRNS
  12. #define _______ KC_TRNS
  13. #define KC_LOWR LOWER
  14. #define KC_RASE RAISE
  15. #define KC_RST RESET
  16. #define KC_DBUG DEBUG
  17. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  18. [_QWERTY] = LAYOUT_kc(
  19. /*
  20. * ,-----+-----+-----+-----+-----+-----+ ,-----+-----+-----+-----+-----+-----+
  21. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
  22. * |-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  23. * | TAB | Q | W | E | R | T | | Y | U | I | O | P | BSPC|
  24. * +-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  25. * | LCTL| A | S | D | F | G | | H | J | K | L | ; | ' |
  26. * +-----+-----+-----+-----+-----+-----+-----. ,-----+-----+-----+-----+-----+-----+-----+
  27. * | LSFT| Z | X | C | V | B | / \ | N | M | , | . | / | RSFT|
  28. * +-----+-----+-----+--+--+-----+-----+ SPC/ \ ENT+-----+-----+--+--+-----+-----+-----+
  29. * \ LGUI| LOWR| / \ | RASE| LALT/
  30. * `-----+-----+-----' `-----+-----+----'
  31. */
  32. ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , GRV,
  33. TAB , Q , W , E , R , T , Y , U , I , O , P ,BSPC,
  34. LCTL, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
  35. LSFT, Z , X , C , V , B , , , N , M ,COMM,DOT ,SLSH,RSFT,
  36. LGUI,LOWR, SPC , ENT ,RASE,LALT
  37. ),
  38. [_LOWER] = LAYOUT_kc(
  39. /*
  40. * ,-----+-----+-----+-----+-----+-----+ ,-----+-----+-----+-----+-----+-----+
  41. * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BSPC|
  42. * |-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  43. * | RST | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
  44. * +-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  45. * | DEL | | LEFT| RGHT| UP | [ | | ] | 4 | 5 | 6 | + | | |
  46. * +-----+-----+-----+-----+-----+-----+-----. ,-----+-----+-----+-----+-----+-----+-----+
  47. * | | | | | DOWN| { | / \ | } | 1 | 2 | 3 | - | |
  48. * +-----+-----+-----+--+--+-----+-----+ DEL/ \ DEL+-----+-----+--+--+-----+-----+-----+
  49. * \ | | / \ | | 0 /
  50. * `-----+-----+-----' `-----+-----+----'
  51. */
  52. TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,BSPC,
  53. RST , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
  54. DEL , ,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE,
  55. , , , ,DOWN,LCBR, , ,RCBR, P1 , P2 , P3 ,MINS, ,
  56. , ,DEL , DEL , , P0
  57. ),
  58. [_RAISE] = LAYOUT_kc(
  59. /*
  60. * ,-----+-----+-----+-----+-----+-----+ ,-----+-----+-----+-----+-----+-----+
  61. * | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  62. * |-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  63. * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
  64. * +-----+-----+-----+-----+-----+-----+ +-----+-----+-----+-----+-----+-----+
  65. * | | Prev| Next| Vol+| PgUp| _ | | = | Home| | | + | \ |
  66. * +-----+-----+-----+-----+-----+-----+-----. ,-----+-----+-----+-----+-----+-----+-----+
  67. * | Mute| Stop| Play| Vol-| PgDn| - | / \ | + | End | | | |Debug|
  68. * +-----+-----+-----+--+--+-----+-----+ / \ +-----+-----+--+--+-----+-----+-----+
  69. * \ | | / \ | | 0 /
  70. * `-----+-----+-----' `-----+-----+----'
  71. */
  72. F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,
  73. ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
  74. ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS,
  75. MUTE,MSTP,MPLY,VOLD,PGDN,MINS, , ,PLUS,END , , , ,DBUG,
  76. , , , , ,
  77. )
  78. };
  79. void persistent_default_layer_set(uint16_t default_layer) {
  80. eeconfig_update_default_layer(default_layer);
  81. default_layer_set(default_layer);
  82. }
  83. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  84. switch (keycode) {
  85. case QWERTY:
  86. if (record->event.pressed) {
  87. persistent_default_layer_set(1UL<<_QWERTY);
  88. }
  89. return false;
  90. break;
  91. case LOWER:
  92. if (record->event.pressed) {
  93. layer_on(_LOWER);
  94. update_tri_layer(_LOWER, _RAISE, _QWERTY);
  95. } else {
  96. layer_off(_LOWER);
  97. update_tri_layer(_LOWER, _RAISE, _QWERTY);
  98. }
  99. return false;
  100. break;
  101. case RAISE:
  102. if (record->event.pressed) {
  103. layer_on(_RAISE);
  104. update_tri_layer(_LOWER, _RAISE, _QWERTY);
  105. } else {
  106. layer_off(_RAISE);
  107. update_tri_layer(_LOWER, _RAISE, _QWERTY);
  108. }
  109. return false;
  110. break;
  111. }
  112. return true;
  113. }