arsenik_config.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // ───────────────────< Basic QMK options for Arsenik >───────────────────
  2. #undef PERMISSIVE_HOLD
  3. /* QMK’s `PERMISSIVE_HOLD` can be some extra comfort for experienced users, but
  4. * can also be an absolute pain for beginners, especially if you are trying to
  5. * learn home-row-mods, which is why we chose to deactivate this option by
  6. * default.
  7. */
  8. #define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
  9. /* QMK considers tap-hold actions as "tap by default" when another key is
  10. * pressed during the "quantum period", but some tap-holds should ideally be
  11. * "hold by default" to avoid this delay or accidentally pressing keys like
  12. * Enter or Escape.
  13. *
  14. * This option allows us to have a fine-grain controll over this behaviour.
  15. *
  16. * Arsenik provides a good default implementation of the required function
  17. * `get_hold_on_other_key_press` in the `keymap.c` file.
  18. */
  19. #define TAPPING_TERM_PER_KEY
  20. /* Tap-hold actions (especially home-row-mods) may be hard to use as a
  21. * beginner, as it is common to hold those keys for too long and accidentally
  22. * use the `hold-action`.
  23. *
  24. * This option allows us to have a fine-grain controll over the `TAPPING_TERM`
  25. * for each tap-hold key, allowing for a longer delay on those sensitive keys
  26. * without slowing down the safer ones.
  27. *
  28. * Arsenik provides a good default implementation of the required function
  29. * `get_tapping_term` in the `keymap.c` file.
  30. */
  31. #define ARSENIK_PLACEHOLDER_LAYOUT
  32. /* NOTE: This line gets automatically filled in by the install script, but the
  33. * underlying layout may not yet exist, and keyboard specific layout may have
  34. * other variants you might want to check out.
  35. */
  36. #define ARSENIK_HRM_TAPPING_TERM 300
  37. /* This is the delay used by Arsenik for sensitive tap-holds, which include
  38. * home-row-mods and mod-taps using the spacebar
  39. */
  40. // ────────────────────< Main Arsenik configuration >─────────────────
  41. // Below are a bunch of options to quickly customize the Arsenik keymap. You
  42. // can pick and choose them by (un)commenting the different `#define`
  43. // declarations.
  44. #define ARSENIK_ENABLE_LAFAYETTE_LAYER
  45. /* When active, gives access to the programming symbols layer used by layouts
  46. * like Ergo‑L and all of the "Lafayette" familly of layouts (it’s their AltGr
  47. * layer). The definition of this layer depends on the keyboard layout you are
  48. * using, so make sure to select the correct one in the list bellow.
  49. *
  50. * When inactive, this layer is discarded and replaced by AltGr.
  51. */
  52. // #define ARSENIK_ENABLE_HRM
  53. /* When active, adds a Meta, Ctrl and Alt home-row-mod on respectively s/l,
  54. * d/k or f/j on a Qwerty keyboard. Those home-row-mods stay on those exact
  55. * keys regardless of the layout being used, meaning they would be on r/i, s/e
  56. * and t/n on a Colemak keyboard.
  57. */
  58. // #define ARSENIK_MAC_MODIFIERS
  59. /* Swaps around home-row-mods from Meta, Ctrl, Alt to Alt, Meta, Ctrl, as it
  60. * may make more sense on a Mac, like to keep common shortcuts accessible with
  61. * the Ergo‑L layout, for instance
  62. *
  63. * (Requires `ARSENIK_ENABLE_HRM`)
  64. */
  65. // #define ARSENIK_DISABLE_THUMB_TAP_HOLDS
  66. /* When active, uses an extra simple config without any tap-holds on the thumb
  67. * keys. It may be a *lot* simpler to use, but requieres a keyboard with at
  68. * least 6 thumb keys (so 3 per thumb) instead of 3 thumb keys total and is
  69. * overall a lot less efficient (especially when combining modifiers).
  70. *
  71. * Base thumb config: LSFT_T(KC_ËSC) LT(_num_nav, KC_SPC) RALT_T(KC_ENT)
  72. * When it’s active: KC_ALT KC_CTL KC_GUI MO(_num_nav) KC_SPC KC_RALT
  73. * (KC_RALT becomes the `_lafayette` layer if `ARSENIK_ENABLE_LAFAYETTE_LAYER`
  74. * is active)
  75. *
  76. * (Prevents using `ARSENIK_ENABLE_SELENIUM_VARIANT`)
  77. */
  78. // #define ARSENIK_ENABLE_SELENIUM_VARIANT
  79. /* Most ergonomic keyboards have at least 4 comfortable thumb keys keys (so 2
  80. * per thumb). Selenium is a variant of Arsenik made to fit on 34 keys keyboard
  81. * to take advantage of the extra thumb key. It does it by splitting the numbers
  82. * and navigation layers to 2 distict layers, and adds an escape key.
  83. *
  84. * Base thumb config: LSFT_T(KC_ËSC) LT(_num_nav, KC_SPC) RALT_T(KC_ENT)
  85. * Selenium: LSFT_T(KC_ESC) LT(_num_row, KC_BSPC) LT(_vim_nav, KC_SPC) RALT_T(KC_ENT)
  86. */
  87. // #define SELENIUM_LEFT_HAND_SPACE
  88. /* Swaps around the backspace and space keycodes, for people who prefer using
  89. * their left thunb for the space bar.
  90. *
  91. * (Requires `ARSENIK_ENABLE_SELENIUM_VARIANT`)
  92. */
  93. #define SELENIUM_RESTORE_SPACE
  94. /* Having Space accessible to only one thumb may create some problems, especially
  95. * when trying to type Shift + Space or Lafayette / AltGr + Space (depending if
  96. * your space key is on your left or right hand). When active, backspace gets
  97. * temporarily replaced by space when the original space key is held.
  98. *
  99. * (Requires `ARSENIK_ENABLE_SELENIUM_VARIANT`)
  100. */
  101. // Lists of layouts supported by Arsenik. Some parts of the config are dependent
  102. // on keyboard layout used on your computer. If they don’t match up some
  103. // characters may not be correctly placed or missing entirely. If multiple
  104. // options are toggled at the same time, the first one is chosen.
  105. #define ARSENIK_HOST_LAYOUT_QWERTY
  106. // #define ARSENIK_HOST_LAYOUT_AZERTY
  107. // #define ARSENIK_HOST_LAYOUT_ERGOL
  108. // #define ARSENIK_HOST_LAYOUT_BEPO
  109. // #define ARSENIK_HOST_LAYOUT_DVORAK
  110. // #define ARSENIK_HOST_LAYOUT_COLEMAK
  111. // #define ARSENIK_HOST_LAYOUT_WORKMAN