qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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.