keymap.c 5.5 KB

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