aboutsummaryrefslogtreecommitdiff
path: root/keyboards/bastardkb/charybdis/readme.md
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/bastardkb/charybdis/readme.md')
-rw-r--r--keyboards/bastardkb/charybdis/readme.md178
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
3An ergonomic keyboard with integrated trackball.
4
5Engineered to be a full mouse replacement solution with high-quality, custom-developed components.
6
7There 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
13See 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
15Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
16
17Check 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
23The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
24
25```shell
26qmk compile -kb bastardkb/charybdis/4x6 -km default
27```
28
29Check out the `via` layout if you're looking for VIA support:
30
31```shell
32qmk compile -kb bastardkb/charybdis/4x6 -km via
33```
34
35### Charybdis (3x5)
36
37The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
38
39```shell
40qmk compile -kb bastardkb/charybdis/3x5 -km default
41```
42
43Check out the `via` layout if you're looking for VIA support:
44
45```shell
46qmk compile -kb bastardkb/charybdis/3x5 -km via
47```
48
49## Customizing the firmware
50
51### Dynamic DPI scaling
52
53The pointer's DPI can be changed at runtime.
54
55By 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
57Calling `charybdis_cycle_pointer_default_dpi(bool forward)` will cycle forward or backward the possible values.
58
59Use `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
63This 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
72Drag-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
74Call `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
78To invert the horizontal scrolling direction, define `CHARYBDIS_DRAGSCROLL_REVERSE_X`:
79
80```c
81#define CHARYBDIS_DRAGSCROLL_REVERSE_X
82```
83
84To 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
90This only affects the vertical scroll direction.
91
92### Sniping mode
93
94Sniping mode slows down the pointer for more precise gestures. It is useful when combined with a higher default DPI.
95
96Call `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
100Like the default pointer's DPI, the sniper mode DPI can be changed at runtime.
101
102By 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
104Calling `charybdis_cycle_pointer_sniping_dpi(bool forward)` will cycle forward or backward the possible values.
105
106Use `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
110This 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
119By 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
125The 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
133The Charybdis firmware defines a number of keycodes to leverage its features, namely:
134
135```
136#ifndef NO_CHARYBDIS_KEYCODES
137enum 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
160Users 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
163enum 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
174To disable the custom keycodes, and reduce binary size, simply add a definition in `config.h`:
175
176```c
177#define NO_CHARYBDIS_KEYCODES
178```