You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.7 KiB

  1. #include QMK_KEYBOARD_H
  2. // Defines names for use in layer keycodes and the keymap
  3. enum layer_names {
  4. _RSTHD,
  5. _LOWER,
  6. _RAISE,
  7. _ADJUST
  8. };
  9. enum combo_events {
  10. TOP_L,
  11. TOP_R,
  12. MID_L,
  13. MID_R,
  14. BOT_L,
  15. BOT_R,
  16. HN_QUOT,
  17. TOP_CTR,
  18. MID_CTR,
  19. BOT_CTR,
  20. };
  21. const uint16_t PROGMEM fk_combo[] = {KC_F, KC_K, COMBO_END};
  22. const uint16_t PROGMEM zl_combo[] = {KC_Z, KC_L, COMBO_END};
  23. const uint16_t PROGMEM hd_combo[] = {KC_H, KC_D, COMBO_END};
  24. const uint16_t PROGMEM mn_combo[] = {KC_M, KC_N, COMBO_END};
  25. const uint16_t PROGMEM pb_combo[] = {KC_P, KC_B, COMBO_END};
  26. const uint16_t PROGMEM xw_combo[] = {KC_X, KC_W, COMBO_END};
  27. const uint16_t PROGMEM hn_combo[] = {KC_H, KC_N, COMBO_END};
  28. const uint16_t PROGMEM kz_combo[] = {KC_K, KC_Z, COMBO_END};
  29. const uint16_t PROGMEM dm_combo[] = {KC_D, KC_M, COMBO_END};
  30. const uint16_t PROGMEM bx_combo[] = {KC_B, KC_X, COMBO_END};
  31. combo_t key_combos[] = {
  32. [TOP_L] = COMBO(fk_combo, KC_ESC),
  33. [TOP_R] = COMBO(zl_combo, KC_AT),
  34. [MID_L] = COMBO(hd_combo, KC_TAB),
  35. [MID_R] = COMBO_ACTION(mn_combo),
  36. [BOT_L] = COMBO(pb_combo, KC_HASH),
  37. [BOT_R] = COMBO(xw_combo, KC_AMPR),
  38. [HN_QUOT] = COMBO(hn_combo, KC_QUOT),
  39. [TOP_CTR] = COMBO_ACTION(kz_combo),
  40. [MID_CTR] = COMBO_ACTION(dm_combo),
  41. [BOT_CTR] = COMBO_ACTION(bx_combo),
  42. };
  43. void process_combo_event(uint16_t combo_index, bool pressed) {
  44. switch(combo_index) {
  45. case MID_R:
  46. if (pressed) {
  47. tap_code16(LALT(KC_3));
  48. }
  49. break;
  50. case TOP_CTR:
  51. if (pressed) {
  52. set_oneshot_mods(MOD_LGUI);
  53. }
  54. break;
  55. case MID_CTR:
  56. if (pressed) {
  57. set_oneshot_mods(MOD_LALT);
  58. }
  59. break;
  60. case BOT_CTR:
  61. if (pressed) {
  62. set_oneshot_mods(MOD_LCTL);
  63. }
  64. break;
  65. }
  66. }
  67. // Defines for task manager and such
  68. // For insertion in keymap
  69. #define KILL LGUI(LALT(KC_ESC)) //Force quit controls
  70. #define SCRCAP LCTL(LSFT(LGUI(KC_5))) //Screen capture controls
  71. #define DSK_LFT LGUI(LCTL(KC_LEFT))
  72. #define DSK_RT LGUI(LCTL(KC_RIGHT))
  73. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  74. [_RSTHD] = LAYOUT(
  75. KC_J, KC_C, KC_Y, KC_F, KC_K, KC_Z, KC_L, KC_COMM, KC_U, KC_Q,
  76. KC_R, KC_S, KC_T, KC_H, KC_D, KC_M, KC_N, KC_A, KC_I , KC_O,
  77. LCTL_T(KC_SLSH), LALT_T(KC_V), LGUI_T(KC_G), KC_P, KC_B, KC_X, KC_W, RGUI_T(KC_DOT), RALT_T(KC_SCLN),RCTL_T(KC_MINS),
  78. OSM(MOD_LSFT), LT(_LOWER, KC_BSPC), KC_E, KC_SPC, LT(_RAISE, KC_ENT), OSM(MOD_LSFT)
  79. ),
  80. [_RAISE] = LAYOUT(
  81. KC_PAST, KC_7, KC_8, KC_9, KC_PLUS, KC_NUBS, LALT(KC_2), _______, LALT(KC_4), KC_DLR,
  82. KC_CIRC, KC_4, KC_5, KC_6, KC_EQL, LSFT(KC_NUBS), KC_GRV, KC_TILD, KC_PIPE, KC_BSLS,
  83. _______, RALT_T(KC_1), KC_2, KC_3,KC_PERC, _______, _______, _______, _______, _______,
  84. _______, MO(_ADJUST), KC_0, _______, _______, _______
  85. ),
  86. [_LOWER] = LAYOUT(
  87. _______, KC_LBRC, KC_QUES, KC_RBRC, KC_BRMU, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU,
  88. KC_ESC, KC_LPRN, KC_EXLM, KC_RPRN, KC_BRMD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_VOLD,
  89. _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE,
  90. _______, _______, _______, KC_DEL, MO(_ADJUST), _______
  91. ),
  92. [_ADJUST] = LAYOUT(
  93. _______, KC_F7, KC_F8, KC_F9, SCRCAP, _______, KC_F10, KC_F11, KC_F12, _______,
  94. _______, KC_F1, KC_F2, KC_F3, _______, _______, KC_F4, KC_F5, KC_F6, _______,
  95. OSM(MOD_LCTL),_______, _______, _______, QK_BOOT, KILL, _______, _______, _______, OSM(MOD_RCTL),
  96. _______, _______, _______, _______, _______, _______
  97. )
  98. };