nav.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /*
  2. Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. /********************************************************************************/
  15. /* NAVIGATION - MOUSE, Scroll, Buttons, Arrows, Tab, Home, page up/down, End */
  16. /* Navigation layers: */
  17. /* 3 row Layer */
  18. /* 4 Row Layer with repeated and swapped VI arrows, and Scroll wheel. */
  19. /********************************************************************************/
  20. /* */
  21. /* Navigation layer with optional 4th Row.... */
  22. /* */
  23. /* M = Mouse */
  24. /* B = Button */
  25. /* W = Wheel */
  26. /* AC = Acceleration */
  27. /* CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V */
  28. /* CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N */
  29. /* CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q */
  30. /* HOME = TAB & PGDN */
  31. /* END = BKTAB & PGUP -- See combos. */
  32. /* */
  33. /* MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 */
  34. /* TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB */
  35. /* WLeft WDown WUp WRight MAC2 | CWCQ TAB PGDN PGUP BKTAB */
  36. /* */
  37. /* Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight */
  38. /* */
  39. /********************************************************************************/
  40. #ifdef MOUSEKEY_ENABLE
  41. #define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
  42. #define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
  43. // really BTN 1, 2, 3, 8, 9 - according to xev.
  44. #define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5
  45. #define ___4MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4
  46. #define ___3MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2
  47. // really BTN 9, 8, 3, 2, 1 - according to xev
  48. #define ___4MOUSE_BTNS_L___ KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
  49. #define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
  50. #define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
  51. #define ___MACCL___ ___MOUSE_ACCL_012___
  52. #endif
  53. #define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
  54. #define ___HOME_PGDN_PGUP_END___ KC_HOME, KC_PGDN, KC_PGUP, KC_END
  55. #define ___TAB_PGDN_PGUP_BKTAB___ KC_TAB, KC_PGDN, KC_PGUP, KC_BKTAB
  56. // home and end are combos. tab/pgdn = home, bktab/pgup = end.
  57. #define ___REDO_CUT_COPY_PASTE_UNDO___ S_REDO, S_CUT, S_COPY, S_PASTE, S_UNDO
  58. #ifdef MOUSEKEY_ENABLE
  59. #define ___NAV_La_1___ ___SML_MODS_L___, KC_ACL0
  60. #define ___NAV_L_1___ ___4MOUSE_BTNS_L___, KC_ACL0
  61. #define ___NAV_L_2___ ___MOUSE_LDUR___, KC_ACL1
  62. #define ___NAV_L_3___ ___MWHEEL_LDUR___, KC_ACL2
  63. #define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV
  64. #define ___NAV_R_1___ KC_CTCN, ___4MOUSE_BTNS_R___
  65. #define ___NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___
  66. #else
  67. #define ___NAV_La_1___ ___NAV_L_1___
  68. #define ___NAV_L_1___ ___OS_MODS_L___
  69. #define ___NAV_L_2___ ___SML_MODS_L___, ___
  70. #define ___NAV_L_3___ ___5___
  71. #define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV
  72. #define ___NAV_R_1___ KC_CTCN, ___SML_MODS_R___
  73. #define ___NAV_R_4___ KC_CCCV, ___4___
  74. #endif // end mousekey
  75. #define ___NAV_R_2___ KC_CCCV, ___VI_ARROWS___
  76. #define ___NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___
  77. #define ___NAV_Ra_3___ KC_CWCQ, ___TAB_PGDN_PGUP_BKTAB___
  78. #ifdef MOUSEKEY_ENABLE
  79. #define ___6NAV_L_1___ ___MOUSE_BTNS_L___, KC_ACL0
  80. #define ___6NAV_L_2___ TAB_BKTAB, ___MOUSE_LDUR___, KC_ACL1
  81. #define ___6NAV_L_3___ ___, ___MWHEEL_LDUR___, KC_ACL2
  82. #define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
  83. #define ___6NAV_R_1___ KC_CTCN, ___MOUSE_BTNS_R___
  84. #define ___6NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___, ___
  85. #else
  86. #define ___6NAV_L_1___ ___6___
  87. #define ___6NAV_L_2___ TAB_BKTAB, ___SML_MODS_L___, ___
  88. #define ___6NAV_L_3___ ___, ___5___
  89. #define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
  90. #define ___6NAV_R_1___ KC_CTCN, ___SML_MODS_R___
  91. #define ___6NAV_R_4___ KC_CCCV, ___4___, ___
  92. #endif // end mousekey
  93. #define ___6NAV_R_2___ KC_CCCV, ___VI_ARROWS___, TAB_BKTAB
  94. #define ___6NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___, ___
  95. // compact. 3x10 per layer.
  96. #define ___10_NAV_1a___ ___NAV_La_1___, ___NAV_R_1___
  97. #define ___10_NAV_1___ ___NAV_L_1___, ___NAV_R_1___
  98. #define ___10_NAV_2___ ___NAV_L_2___, ___NAV_R_2___
  99. #define ___10_NAV_3___ ___NAV_L_3___, ___NAV_Ra_3___
  100. // designed without mouse, mods on left.
  101. #define ___NAVnm_La_1___ ___NAV_L_1___
  102. #define ___NAVnm_L_1___ ___SML_MODS_L___
  103. #define ___NAVnm_L_2___ ___OS_MODS_L___, ___
  104. #ifdef MOUSEKEY_ENABLE
  105. #define ___NAVnm_L_3___ ___2___, SML_NAVm, ___2___ // get to mouse layer if enabled.
  106. #else
  107. #define ___NAVnm_L_3___ ___5___
  108. #endif
  109. #define ___10_NAVnm_1___ ___SML_MODS_L___, ___, ___NAV_R_1___
  110. #define ___10_NAVnm_2___ ___OS_MODS_L___, ___NAV_R_2___
  111. #define ___10_NAVnm_3___ ___NAVnm_L_3___, ___NAV_R_3___
  112. #ifdef MOUSEKEY_ENABLE
  113. // Mouse layer only. mods on right.
  114. #define ___10_NAVm_1___ ___NAV_L_1___, ___NAV_R_1___
  115. #define ___10_NAVm_2___ ___NAV_L_2___, ___NAV_R_2___
  116. #define ___10_NAVm_3___ ___NAV_L_3___, ___NAV_R_3___
  117. #endif
  118. /********************************************************************************/
  119. /* The Navigation LAYER Chunks */
  120. /********************************************************************************/
  121. // A Navigation Layer
  122. #define CARTE_NAV \
  123. carte_de_map("54321 0 ctn 12345", \
  124. " ldur 1 ccv ldur", \
  125. " ldur 2 cwq tdubt")
  126. #define CARTE_NAVA \
  127. carte_de_map(" gacs 0 ctn 12345", \
  128. " ldur 1 ccv ldur", \
  129. " ldur 2 cwq tdubt")
  130. #define CARTE_NAVnm \
  131. carte_de_map(" gacsc2 ctn cscag ", \
  132. " gacs ccv ldur", \
  133. " __M_ cwq tdubt")
  134. // currently the same as NAVA
  135. #define CARTE_NAVm \
  136. carte_de_map(" gacs 0 ctn 12345", \
  137. " ldur 1 ccv ldur", \
  138. " ldur 2 cwq tdubt")
  139. #define CARTE_NAV_miryoku \
  140. carte_de_map(" rdo ccp undo", \
  141. " Caps ldur", \
  142. " Ins HDUE")
  143. #define CARTE_NAVm_miryoku \
  144. carte_de_map(" rdo ccp undo", \
  145. " ldur", \
  146. " ldur")
  147. #ifdef MOUSEKEY_ENABLE
  148. #define ___NAVm_3x10___ ___10_NAVm_1___, ___10_NAVm_2___, ___10_NAVm_3___
  149. #endif
  150. #define ___NAVnm_3x10___ ___10_NAVnm_1___, ___10_NAVnm_2___, ___10_NAVnm_3___
  151. #define ___NAVA_3x10___ ___10_NAV_1a___, ___10_NAV_2___, ___10_NAV_3___
  152. #define ___NAV_3x10___ ___10_NAV_1___, ___10_NAV_2___, ___10_NAV_3___
  153. #define ___NAV_3x12___ ___12_NAV_1___, ___12_NAV_2___, ___12_NAV_3___
  154. #define ___NAV_miryoku___ \
  155. ___5___, ___redo_cut_copy_paste_undo___, \
  156. ___5___, KC_CAPS, ___VI_ARROWS___, \
  157. ___5___, KC_INSERT, ___HOME_PGDN_PGUP_END___
  158. #ifdef MOUSEKEY_ENABLE
  159. #define ___NAVm_miryoku___ \
  160. ___5___, ___redo_cut_copy_paste_undo___, \
  161. ___5___, ___, ___MOUSE_LDUR___, \
  162. ___5___, ___, ___MWHEEL_LDUR___,
  163. #endif