Skip to content

Commit

Permalink
left trackball
Browse files Browse the repository at this point in the history
  • Loading branch information
bstiq committed Jan 29, 2024
1 parent 948157a commit 8e2f989
Show file tree
Hide file tree
Showing 4 changed files with 248 additions and 0 deletions.
Binary file added assets/pics/help/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pics/help/2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pics/help/3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
248 changes: 248 additions & 0 deletions fw/charybdis-left-handed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
---
layout: default
title: Charybdis Left Handed
nav_order: 2
parent: Firmware
---

# Table of contents

1. TOC
{:toc}

While left-handed Charybdis are not supported directly through the official keymaps, it's possible to modify the firmware to enable a trackball on the left. We will be using a **Charybdis Nano** as example, but the process is the same for a Charybdis.

**Requirements:**
- Left-handed Charybdis or Charybdis Nano
- Working local QMK installation

# Modifying the QMK files

You will need to do the following modifications. **Old code is commented out**.


**charybdis/config.h:** (line 28)

```c
// #define POINTING_DEVICE_RIGHT
// Pointing device is on the left split.
#undef POINTING_DEVICE_RIGHT
#define POINTING_DEVICE_LEFT

// #define POINTING_DEVICE_INVERT_X
#define POINTING_DEVICE_INVERT_Y
```


{: .note }
For the following modifications, modify the files in the **4x6** folder if you are building a Charybdis.

**charybdis/3x5/config.h:**

```c
// #define ROTATIONAL_TRANSFORM_ANGLE -25
#define ROTATIONAL_TRANSFORM_ANGLE 40
```
**charybdis/3x5/v2/splinky_3/config.h:**
```c
// #define MASTER_RIGHT
#undef MASTER_RIGHT
```

**charybdis/3x5/info.json - old values:**
```json
{"matrix": [3, 2], "x": 4, "y": 3},
{"matrix": [3, 3], "x": 5, "y": 3},
{"matrix": [3, 0], "x": 6, "y": 3},

{"matrix": [7, 0], "x": 9, "y": 3},
{"matrix": [7, 2], "x": 10, "y": 3}
```
**charybdis/3x5/info.json - new values:**
```json
{"matrix": [3, 2], "x": 4, "y": 3},
{"matrix": [3, 0], "x": 5, "y": 3},
{"matrix": [7, 0], "x": 6, "y": 3},
{"matrix": [7, 3], "x": 9, "y": 3},
{"matrix": [7, 2], "x": 10, "y": 3}
```

Now that you've modified your firmware, you can compile and flash the `via` keymap.

# VIA definitions

{: .note }
This step is **optional**, and only required if you wish to use VIA to customize your keyboard.

With your firmware flashed, there are a number of things to do in the VIA interface for the virtual layout to reflect the physical one.

- In the `settings` tab, enable the `show design tab` option:
![](../assets/pics/help/1.jpg)

- Create a draft `3x5.json` file, and pasted the contents included at the bottom of this document

- In the `design` tab, load the draft file you just created:
![](../assets/pics/help/2.jpg)

- In the `configure` tab, go to `layout` and set the `trackball` option to `left`:
![](../assets/pics/help/3.jpg)

- **You're all set!**

# TODO list

- TODO 4x6 info.json
- TODO 4x6 draft definition

# Charybdis 3x5 Nano draft file

```json
{
"name": "Charybdis Nano",
"vendorId": "0xA8F8",
"productId": "0x1832",
"menus": [
"qmk_rgb_matrix"
],
"matrix": {
"rows": 8,
"cols": 5
},
"customKeycodes": [
{
"title": "Default DPI Increase",
"name": "Default DPI Inc",
"shortName": "DPI+"
},
{
"title": "Default DPI Decrease",
"name": "Default DPI Dec",
"shortName": "DPI-"
},
{
"title": "Sniping DPI Increase",
"name": "Sniping DPI Inc",
"shortName": "Snp+"
},
{
"title": "Sniping DPI Decrease",
"name": "Sniping DPI Dec",
"shortName": "Snp-"
},
{
"title": "Sniping Momentary",
"name": "Sniping MO",
"shortName": "Snp"
},
{
"title": "Sniping Toggle",
"name": "Sniping TO",
"shortName": "SnpT"
},
{
"title": "Drag-scroll Momentary",
"name": "Drag-scroll MO",
"shortName": "Drg"
},
{
"title": "Drag-scroll Toggle",
"name": "Drag-scroll TG",
"shortName": "DrgT"
}
],
"layouts": {
"labels": [
[
"Trackball",
"Right",
"Left"
]
],
"keymap": [
[
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
{
"x": 4
},
"4,4",
"4,3",
"4,2",
"4,1",
"4,0"
],
[
"1,0",
"1,1",
"1,2",
"1,3",
"1,4",
{
"x": 4
},
"5,4",
"5,3",
"5,2",
"5,1",
"5,0"
],
[
"2,0",
"2,1",
"2,2",
"2,3",
"2,4",
{
"x": 4
},
"6,4",
"6,3",
"6,2",
"6,1",
"6,0"
],
[
{
"x": 3
},
"3,2\n\n\n0,0",
"3,3\n\n\n0,0",
"3,0",
{
"x": 2
},
"7,0",
"7,2\n\n\n0,0",
{
"d": true
},
"\n\n\n0,0"
],
[
{
"y": 0.75,
"x": 3,
"d": true
},
"\n\n\n0,1",
"3,2\n\n\n0,1",
{
"x": 4
},
"7,3\n\n\n0,1",
"7,2\n\n\n0,1"
]
]
}
}

```

0 comments on commit 8e2f989

Please sign in to comment.