readme.md (6948B)
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 **You must specify the shield version when compiling/flashing the firmware.** 22 23 The template is: 24 25 ```shell 26 qmk compile -kb bastardkb/charybdis/{LAYOUT}/{VERSION}/elitec -km {KEYMAP} 27 ``` 28 29 See below for populated commands per layout 30 31 The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout. 32 33 Check out the `via` layout if you're looking for VIA support. 34 35 ### Charybdis (4x6) 36 37 | Shield Version | default | via | 38 | -------------- | --------------------------------------------------------------- | ----------------------------------------------------------- | 39 | v1 | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km via` | 40 | v2 | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km via` | 41 42 ### Charybdis (3x5) 43 44 | Shield Version | default | via | 45 | -------------- | --------------------------------------------------------------- | ----------------------------------------------------------- | 46 | v1 | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km via` | 47 | v2 | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km via` | 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 drag-scroll 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 ### Custom keycodes 118 119 The Charybdis firmware defines a number of keycodes to leverage its features, namely: 120 121 ``` 122 #ifndef NO_CHARYBDIS_KEYCODES 123 enum charybdis_keycodes { 124 POINTER_DEFAULT_DPI_FORWARD = QK_KB_0, 125 POINTER_DEFAULT_DPI_REVERSE, 126 POINTER_SNIPING_DPI_FORWARD, 127 POINTER_SNIPING_DPI_REVERSE, 128 SNIPING_MODE, 129 SNIPING_MODE_TOGGLE, 130 DRAGSCROLL_MODE, 131 DRAGSCROLL_MODE_TOGGLE, 132 }; 133 134 #define DPI_MOD POINTER_DEFAULT_DPI_FORWARD 135 #define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE 136 #define S_D_MOD POINTER_SNIPING_DPI_FORWARD 137 #define S_D_RMOD POINTER_SNIPING_DPI_REVERSE 138 #define SNIPING SNIPING_MODE 139 #define SNP_TOG SNIPING_MODE_TOGGLE 140 #define DRGSCRL DRAGSCROLL_MODE 141 #define DRG_TOG DRAGSCROLL_MODE_TOGGLE 142 #endif // !NO_CHARYBDIS_KEYCODES 143 ``` 144 145 To disable the custom keycodes, and reduce binary size, simply add a definition in `config.h`: 146 147 ```c 148 #define NO_CHARYBDIS_KEYCODES 149 ``` 150 151 ### Configuration Syncing 152 153 If you want/need to enable syncing of the charybdis config, such as to read the sniping or drag scroll modes on the other half (such as for displaying the status via rgb matrix, or added on screens, or what not), you can enabled this. To do so, add this to your `config.h`: 154 155 ```c 156 #define CHARYBDIS_CONFIG_SYNC 157 ``` 158 159 Note that you will need to reflash both sides when enabling this. 160 161 ### Enable Large Mouse Reports 162 163 By default, the X and Y motion for the pointing device/mouse reports is -127 to 127. You can definitely hit the limit for that with the sensors. You can enable support for -32767 to 32767 by adding this to your `config.h`: 164 165 ```c 166 #define MOUSE_EXTENDED_REPORT 167 ``` 168 169 Note that you will need to reflash both sides when enabling this.