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.

95 lines
3.9 KiB

  1. #pragma once
  2. #include "quantum.h"
  3. #include "abstraction.h"
  4. // enum for combos.
  5. enum combos {
  6. // left hand combinations.
  7. R_U_PINKY_RING,
  8. R_U_RING_MIDDLE,
  9. R_U_RING_INDEX,
  10. R_U_MIDDLE_INDEX,
  11. R_U_MIDDLE_INNER_INDEX,
  12. R_U_INDEX_INNER_INDEX,
  13. R_L_PINKY_RING,
  14. R_L_RING_MIDDLE,
  15. R_L_RING_INDEX,
  16. R_L_MIDDLE_INDEX,
  17. R_L_INDEX_INNER_INDEX,
  18. // right hand combinations.
  19. L_U_PINKY_RING,
  20. L_U_RING_MIDDLE,
  21. L_U_RING_INDEX,
  22. L_U_MIDDLE_INDEX,
  23. L_U_MIDDLE_INNER_INDEX,
  24. L_U_INNER_INNER_INDEX,
  25. L_L_PINKY_RING,
  26. L_L_RING_MIDDLE,
  27. L_L_MIDDLE_INDEX,
  28. L_L_RING_INDEX,
  29. L_L_INDEX_INNER_INDEX,
  30. // both hands combinations.
  31. B_L_MIDDLE_MIDDLE,
  32. };
  33. // left hand combinations.
  34. const uint16_t PROGMEM lu_p_r_combo[] = {LUP, LUR, COMBO_END};
  35. const uint16_t PROGMEM lu_r_m_combo[] = {LUR, LUM, COMBO_END};
  36. const uint16_t PROGMEM lu_r_i_combo[] = {LUR, LUI, COMBO_END};
  37. const uint16_t PROGMEM lu_m_i_combo[] = {LUM, LUI, COMBO_END};
  38. const uint16_t PROGMEM lu_m_ii_combo[] = {LUM, LUII, COMBO_END};
  39. const uint16_t PROGMEM lu_i_ii_combo[] = {LUI, LUII, COMBO_END};
  40. const uint16_t PROGMEM ll_p_r_combo[] = {LLP, LLR, COMBO_END};
  41. const uint16_t PROGMEM ll_r_m_combo[] = {LLR, LLM, COMBO_END};
  42. const uint16_t PROGMEM ll_r_i_combo[] = {LLR, LLI, COMBO_END};
  43. const uint16_t PROGMEM ll_m_i_combo[] = {LLM, LLI, COMBO_END};
  44. const uint16_t PROGMEM ll_i_ii_combo[] = {LLI, LLII, COMBO_END};
  45. // right hand combinations.
  46. const uint16_t PROGMEM ru_p_r_combo[] = {RUP, RUR, COMBO_END};
  47. const uint16_t PROGMEM ru_r_m_combo[] = {RUR, RUM, COMBO_END};
  48. const uint16_t PROGMEM ru_r_i_combo[] = {RUR, RUI, COMBO_END};
  49. const uint16_t PROGMEM ru_m_i_combo[] = {RUM, RUI, COMBO_END};
  50. const uint16_t PROGMEM ru_m_ii_combo[] = {RUM, RUII, COMBO_END};
  51. const uint16_t PROGMEM ru_i_ii_combo[] = {RUI, RUII, COMBO_END};
  52. const uint16_t PROGMEM rl_p_r_combo[] = {RLP, RLR, COMBO_END};
  53. const uint16_t PROGMEM rl_r_m_combo[] = {RLR, RLM, COMBO_END};
  54. const uint16_t PROGMEM rl_r_i_combo[] = {RLR, RLI, COMBO_END};
  55. const uint16_t PROGMEM rl_m_i_combo[] = {RLM, RLI, COMBO_END};
  56. const uint16_t PROGMEM rl_i_ii_combo[] = {RLI, RLII, COMBO_END};
  57. // both hand combinations.
  58. const uint16_t PROGMEM bl_m_m_combo[] = {LLM, RLM, COMBO_END};
  59. combo_t key_combos[COMBO_COUNT] = {
  60. // left hand combinations.
  61. [R_U_PINKY_RING] = COMBO(lu_p_r_combo, KC_TAB),
  62. [R_U_RING_MIDDLE] = COMBO(lu_r_m_combo, KC_QUES),
  63. [R_U_RING_INDEX] = COMBO(lu_r_i_combo, PRVTAB),
  64. [R_U_MIDDLE_INDEX] = COMBO(lu_m_i_combo, KC_UNDS),
  65. [R_U_MIDDLE_INNER_INDEX] = COMBO(lu_m_ii_combo, KC_ENT),
  66. [R_U_INDEX_INNER_INDEX] = COMBO(lu_i_ii_combo, KC_PIPE),
  67. [R_L_PINKY_RING] = COMBO(ll_p_r_combo, KC_ENT),
  68. [R_L_RING_MIDDLE] = COMBO(ll_r_m_combo, LCTL(KC_W)),
  69. [R_L_RING_INDEX] = COMBO(ll_r_i_combo, KC_TAB),
  70. [R_L_MIDDLE_INDEX] = COMBO(ll_m_i_combo, KC_DELT),
  71. [R_L_INDEX_INNER_INDEX] = COMBO(ll_i_ii_combo, KC_TILD),
  72. // right hand combinations.
  73. [L_U_PINKY_RING] = COMBO(ru_p_r_combo, KC_BSPC),
  74. [L_U_RING_MIDDLE] = COMBO(ru_r_m_combo, KC_SLSH),
  75. [L_U_RING_INDEX] = COMBO(ru_r_i_combo, NXTTAB),
  76. [L_U_MIDDLE_INDEX] = COMBO(ru_m_i_combo, KC_MINS),
  77. [L_U_MIDDLE_INNER_INDEX] = COMBO(ru_m_ii_combo, KC_ENT),
  78. [L_U_INNER_INNER_INDEX] = COMBO(ru_i_ii_combo, KC_BSLS),
  79. [L_L_PINKY_RING] = COMBO(rl_p_r_combo, KC_BSLS),
  80. [L_L_RING_MIDDLE] = COMBO(rl_r_m_combo, KC_APP),
  81. [L_L_RING_INDEX] = COMBO(rl_r_i_combo, LSFT(KC_TAB)),
  82. [L_L_MIDDLE_INDEX] = COMBO(rl_m_i_combo, KC_DELT),
  83. [L_L_INDEX_INNER_INDEX] = COMBO(rl_i_ii_combo, KC_GRV),
  84. // both hand combinations.
  85. [B_L_MIDDLE_MIDDLE] = COMBO(bl_m_m_combo, KC_ENT),
  86. };