diff options
Diffstat (limited to 'keyboards/bastardkb/charybdis/readme.md')
-rw-r--r-- | keyboards/bastardkb/charybdis/readme.md | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/keyboards/bastardkb/charybdis/readme.md b/keyboards/bastardkb/charybdis/readme.md new file mode 100644 index 000000000..461f33117 --- /dev/null +++ b/keyboards/bastardkb/charybdis/readme.md | |||
@@ -0,0 +1,178 @@ | |||
1 | # Charybdis (6x4, 5x3 "Nano") | ||
2 | |||
3 | An ergonomic keyboard with integrated trackball. | ||
4 | |||
5 | Engineered to be a full mouse replacement solution with high-quality, custom-developed components. | ||
6 | |||
7 | There are 6x4 and 5x3 "Nano" versions. | ||
8 | |||
9 | - Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb) | ||
10 | - Hardware Supported: elite-C V4 | ||
11 | - Hardware Availability: [Bastard Keyboards](https://bastardkb.com) | ||
12 | |||
13 | See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. | ||
14 | |||
15 | Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | ||
16 | |||
17 | Check out the [keyboard build guides](https://docs.bastardkb.com) for the Charybdis and other ergonomic keyboards. | ||
18 | |||
19 | ## Building the firmware | ||
20 | |||
21 | ### Charybdis (4x6) | ||
22 | |||
23 | The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout. | ||
24 | |||
25 | ```shell | ||
26 | qmk compile -kb bastardkb/charybdis/4x6 -km default | ||
27 | ``` | ||
28 | |||
29 | Check out the `via` layout if you're looking for VIA support: | ||
30 | |||
31 | ```shell | ||
32 | qmk compile -kb bastardkb/charybdis/4x6 -km via | ||
33 | ``` | ||
34 | |||
35 | ### Charybdis (3x5) | ||
36 | |||
37 | The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout. | ||
38 | |||
39 | ```shell | ||
40 | qmk compile -kb bastardkb/charybdis/3x5 -km default | ||
41 | ``` | ||
42 | |||
43 | Check out the `via` layout if you're looking for VIA support: | ||
44 | |||
45 | ```shell | ||
46 | qmk compile -kb bastardkb/charybdis/3x5 -km via | ||
47 | ``` | ||
48 | |||
49 | ## Customizing the firmware | ||
50 | |||
51 | ### Dynamic DPI scaling | ||
52 | |||
53 | The pointer's DPI can be changed at runtime. | ||
54 | |||
55 | By default, the DPI is set to `400`. The Charybdis supports up to 16 different DPI values. By default, it cycles between `400` and `3400`, with a step of `200` (_ie._ `400`, `600`, `800`, …, `3400`). | ||
56 | |||
57 | Calling `charybdis_cycle_pointer_default_dpi(bool forward)` will cycle forward or backward the possible values. | ||
58 | |||
59 | Use `charybdis_cycle_pointer_default_dpi_noeeprom(bool forward)` to change the DPI value without persisting the change to EEPROM (_ie._ resetting the board will revert to the last saved value). | ||
60 | |||
61 | `charybdis_get_pointer_default_dpi()` returns the current DPI value. | ||
62 | |||
63 | This behavior can be further customized with the following defines: | ||
64 | |||
65 | ```c | ||
66 | #define CHARYBDIS_MINIMUM_DEFAULT_DPI 400 | ||
67 | #define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200 | ||
68 | ``` | ||
69 | |||
70 | ### Drag-scroll | ||
71 | |||
72 | Drag-scroll enables scrolling with the trackball. When drag-scroll is enabled, the trackball's `x` and `y` movements are converted into `h` (horizontal) and `v` (vertical) movement, effectively sending scroll instructions to the host system. | ||
73 | |||
74 | Call `charybdis_set_pointer_dragscroll_enabled(bool enable)` to enable/disable drag-scroll. | ||
75 | |||
76 | `charybdis_get_pointer_dragscroll_enabled()` returns whether sniping mode is currently enabled. | ||
77 | |||
78 | To invert the horizontal scrolling direction, define `CHARYBDIS_DRAGSCROLL_REVERSE_X`: | ||
79 | |||
80 | ```c | ||
81 | #define CHARYBDIS_DRAGSCROLL_REVERSE_X | ||
82 | ``` | ||
83 | |||
84 | To invert the vertical scrolling direction (_ie._ mimic macOS "natural" scroll direction), define `CHARYBDIS_DRAGSCROLL_REVERSE_Y`: | ||
85 | |||
86 | ```c | ||
87 | #define CHARYBDIS_DRAGSCROLL_REVERSE_Y | ||
88 | ``` | ||
89 | |||
90 | This only affects the vertical scroll direction. | ||
91 | |||
92 | ### Sniping mode | ||
93 | |||
94 | Sniping mode slows down the pointer for more precise gestures. It is useful when combined with a higher default DPI. | ||
95 | |||
96 | Call `charybdis_set_pointer_sniping_enabled(bool enable)` to enable/disable sniping mode. | ||
97 | |||
98 | `charybdis_get_pointer_sniping_enabled()` returns whether sniping mode is currently enabled. | ||
99 | |||
100 | Like the default pointer's DPI, the sniper mode DPI can be changed at runtime. | ||
101 | |||
102 | By default, sniping mode lowers the DPI to `200`. This can be changed at runtime: the Charybdis supports up to 4 different DPI values for sniping mode. By default, it cycles between `200`, `300`, `400` and `500`. | ||
103 | |||
104 | Calling `charybdis_cycle_pointer_sniping_dpi(bool forward)` will cycle forward or backward the possible values. | ||
105 | |||
106 | Use `charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward)` to change the sniping mode DPI value without persisting the change to EEPROM (_ie._ resetting the board will revert to the last saved value). | ||
107 | |||
108 | `charybdis_get_pointer_sniping_dpi()` returns the current sniping mode DPI value. | ||
109 | |||
110 | This behavior can be further customized with the following defines: | ||
111 | |||
112 | ```c | ||
113 | #define CHARYBDIS_MINIMUM_SNIPING_DPI 200 | ||
114 | #define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100 | ||
115 | ``` | ||
116 | |||
117 | ### Acceleration | ||
118 | |||
119 | By default, the pointer's movements are linear. To enable acceleration, add the following define: | ||
120 | |||
121 | ```c | ||
122 | #define CHARYBDIS_POINTER_ACCELERATION_ENABLE | ||
123 | ``` | ||
124 | |||
125 | The acceleration factor can be further tune _via_ the `CHARYBDIS_POINTER_ACCELERATION_FACTOR`: | ||
126 | |||
127 | ```c | ||
128 | #define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24 | ||
129 | ``` | ||
130 | |||
131 | ### Custom keycodes | ||
132 | |||
133 | The Charybdis firmware defines a number of keycodes to leverage its features, namely: | ||
134 | |||
135 | ``` | ||
136 | #ifndef NO_CHARYBDIS_KEYCODES | ||
137 | enum charybdis_keycodes { | ||
138 | POINTER_DEFAULT_DPI_FORWARD = SAFE_RANGE, | ||
139 | POINTER_DEFAULT_DPI_REVERSE, | ||
140 | POINTER_SNIPING_DPI_FORWARD, | ||
141 | POINTER_SNIPING_DPI_REVERSE, | ||
142 | SNIPING_MODE, | ||
143 | SNIPING_MODE_TOGGLE, | ||
144 | DRAGSCROLL_MODE, | ||
145 | DRAGSCROLL_MODE_TOGGLE, | ||
146 | CHARYBDIS_SAFE_RANGE, | ||
147 | }; | ||
148 | |||
149 | #define DPI_MOD POINTER_DEFAULT_DPI_FORWARD | ||
150 | #define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE | ||
151 | #define S_D_MOD POINTER_SNIPING_DPI_FORWARD | ||
152 | #define S_D_RMOD POINTER_SNIPING_DPI_REVERSE | ||
153 | #define SNIPING SNIPING_MODE | ||
154 | #define SNP_TOG SNIPING_MODE_TOGGLE | ||
155 | #define DRGSCRL DRAGSCROLL_MODE | ||
156 | #define DRG_TOG DRAGSCROLL_MODE_TOGGLE | ||
157 | #endif // !NO_CHARYBDIS_KEYCODES | ||
158 | ``` | ||
159 | |||
160 | Users extending the keycode set themselves (either in their keymap, or in their userspace) must start at `CHARYBDIS_SAFE_RANGE` to avoid conflicts, _eg._: | ||
161 | |||
162 | ```c | ||
163 | enum userspace_keycodes { | ||
164 | #ifndef NO_CHARYBDIS_KEYCODES | ||
165 | MY_FIRST_KEYCODE = CHARYBDIS_SAFE_RANGE, | ||
166 | #else | ||
167 | MY_FIRST_KEYCODE = SAFE_RANGE, | ||
168 | #endif // !NO_CHARYBDIS_KEYCODES | ||
169 | MY_SECOND_KEYCODE, | ||
170 | … | ||
171 | }; | ||
172 | ``` | ||
173 | |||
174 | To disable the custom keycodes, and reduce binary size, simply add a definition in `config.h`: | ||
175 | |||
176 | ```c | ||
177 | #define NO_CHARYBDIS_KEYCODES | ||
178 | ``` | ||