|
1 | | -# Splitkb QMK Userspace |
| 1 | +# Splitkb Halcyon Modules QMK Userspace |
2 | 2 |
|
3 | | -This is the splitkb userspace repository which allows for an external set of QMK keymaps with halcyon modules to be defined and compiled. This is useful for users who want to maintain their own keymaps without having to fork the splitkb QMK or vial repository. |
| 3 | +This is the splitkb userspace repository. It allows for an external set of QMK keymaps with **Halcyon modules** to be defined and compiled without having to fork the main QMK or Vial repositories. |
4 | 4 |
|
5 | | -If you want to compile firmware without any modules you can also use the [main qmk_userspace repo](https://github.com/qmk/qmk_userspace). |
| 5 | +*If you want to compile standard firmware without any Halcyon modules, you can use the [main qmk_userspace repo](https://github.com/qmk/qmk_userspace). If you use the Halcyon to Promicro adapter board without any Halcyon modules you can use the converter without this repository.* |
6 | 6 |
|
7 | | -If the keyboard has not been merged yet to the main branch of QMK you may need to edit the workflow, for that see [Extra info](#extra-info) |
| 7 | +## Supported Keyboards |
8 | 8 |
|
9 | | -## Howto configure your build targets |
| 9 | +Currently supported keyboards: |
10 | 10 |
|
11 | | -1. Clone the Vial repo: `git clone --recursive https://github.com/vial-kb/vial-qmk` |
12 | | -1. Run the `qmk setup -H vial-qmk` procedure if you haven't already done so -- see [QMK Docs](https://docs.qmk.fm/#/newbs) for details. |
13 | | -1. When asked if you want to keep the repository, select option 3. |
14 | | -1. Fork this repository |
15 | | -1. If you have already forked the `qmk/qmk_userspace` repository before you can add this repository manually following the [steps below](#adding-splitkb-fork-to-an-existing-fork). |
16 | | -1. Clone your fork to your local machine |
17 | | -1. Enable userspace in QMK config using `qmk config user.overlay_dir="$(realpath qmk_userspace)"` |
18 | | -1. Add a new keymap for your board by copy, pasting and renaming the `default_hlc` keymap within the `keyboards/splitkb/halcyon/$KB$/keymaps` folder. |
19 | | -1. You may want to replace the `qmk.json` with the empty `qmk_empty.json` if you want to start from scratch as it will otherwise compile all default options. |
20 | | -1. Add your keymap(s) to the build by running `qmk userspace-add -kb <your_keyboard> -km <your_keymap> -e <halcyon_module>=1 -e TARGET=<filename>`. |
21 | | - * This will automatically update your `qmk.json` file |
22 | | - * Corresponding `qmk userspace-remove -kb <your_keyboard> -km <your_keymap> -e <halcyon_module>=1 -e TARGET=<filename>`. |
23 | | - * Listing the build targets can be done with with `qmk userspace-list` |
24 | | - * If you want to use a module: |
25 | | - * For the filename make it so you can differentiate between the different firmwares for the modules. `kyria_rev4_default_encoder` for example. |
26 | | - * The following options are available for the halcyon modules: |
27 | | - * HLC_NONE, If you don't have a module installed but you do have a module on the other half. |
28 | | - * HLC_ENCODER, If you have an encoder module installed. |
29 | | - * HLC_TFT_DISPLAY, If you have a tft rgb display installed. |
30 | | - * HLC_CIRQUE_TRACKPAD, If you have a Cirque trackpad installed. |
31 | | -1. Commit your changes |
| 11 | +- Halcyon Kyria (rev4) |
| 12 | +- Halcyon Elora (rev2) |
| 13 | +- Halcyon Corne (rev2) |
| 14 | +- Halcyon Ferris (rev1) |
| 15 | +- Halcyon Lily58 (rev2) |
| 16 | +- Aurora Sweep (rev1) |
| 17 | +- Aurora Lily58 (rev1) |
| 18 | +- Aurora Corne (rev1) |
| 19 | +- Kyria (rev3) |
32 | 20 |
|
| 21 | +If you want to add a keyboard which doesn't have support for Halcyon modules yet, please follow the [porting guide](PORTING.md). Please follow the [initial setup](#initial-setup--prerequisites) and [build target](#how-to-configure-your-build-targets) steps from this readme first. |
33 | 22 |
|
34 | | -## Howto build with GitHub |
35 | 23 |
|
36 | | -1. In the GitHub Actions tab, enable workflows |
37 | | -1. Push your changes above to your forked GitHub repository |
38 | | -1. Look at the GitHub Actions for a new actions run |
39 | | -1. Wait for the actions run to complete |
40 | | -1. Inspect the Releases tab on your repository for the latest firmware build |
| 24 | +## Initial Setup & Prerequisites |
41 | 25 |
|
| 26 | +Before configuring your keymaps or building firmware, you need to set up your build environment. |
42 | 27 |
|
43 | | -## Howto build locally |
| 28 | +1. **Fork this repository** to your own GitHub account. |
| 29 | +2. **Clone the Vial repository** to your local machine: |
| 30 | + ```bash |
| 31 | + git clone --recursive https://github.com/vial-kb/vial-qmk |
| 32 | + ``` |
| 33 | +3. **Run the QMK setup procedure** pointing to the Vial repo (see [QMK Docs](https://docs.qmk.fm/#/newbs) for more details): |
| 34 | + ```bash |
| 35 | + qmk setup -H vial-qmk |
| 36 | + ``` |
| 37 | + *(When asked if you want to keep the repository, select option **3**).* |
| 38 | +4. **Clone your forked userspace repository** to your local machine. |
| 39 | +5. **Enable userspace in QMK config**: |
| 40 | + Navigate into your cloned userspace directory and run: |
| 41 | + ```bash |
| 42 | + cd path/to/your/forked/qmk_userspace |
| 43 | + qmk config user.overlay_dir="$(realpath .)" |
| 44 | + ``` |
| 45 | + *(This ensures your userspace is available to QMK regardless of your current shell location).* |
44 | 46 |
|
45 | | -1. Clone the Vial repo: `git clone --recursive https://github.com/vial-kb/vial-qmk` |
46 | | -1. Run the `qmk setup -H vial-qmk` procedure if you haven't already done so -- see [QMK Docs](https://docs.qmk.fm/#/newbs) for details. |
47 | | -1. When asked if you want to keep the repository, select option 3. |
48 | | -1. Fork this repository |
49 | | -1. Clone your fork to your local machine |
50 | | -1. `cd` into this repository's clone directory |
51 | | -1. Set global userspace path: `qmk config user.overlay_dir="$(realpath .)"` -- you MUST be located in the cloned userspace location for this to work correctly |
52 | | - * This will be automatically detected if you've `cd`ed into your userspace repository, but the above makes your userspace available regardless of your shell location. |
53 | | -1. Compile normally: `qmk compile -kb your_keyboard -km your_keymap -e <your_module>=1 -e TARGET=<filename>` or `make your_keyboard:your_keymap -e <your_module>=1 -e TARGET=<filename>` |
| 47 | +> **Note:** If you have already forked the `qmk/qmk_userspace` repository previously, see the [Adding to an Existing Fork](#adding-halcyon-support-to-an-existing-userspace-fork) section below. |
54 | 48 |
|
55 | | -Alternatively, if you configured your build targets above, you can use `qmk userspace-compile` to build all of your userspace targets at once. |
56 | 49 |
|
| 50 | +## How to Configure Your Build Targets |
57 | 51 |
|
58 | | -## Extra info |
| 52 | +1. **Start fresh (Optional but recommended):** If you want to start completely from scratch without any default compile options, replace the `qmk.json` in the root folder with the provided `qmk_empty.json`. |
| 53 | +2. **Create your keymap:** Navigate to `keyboards/<keyboard_name>/keymaps` and copy/paste the `default_hlc` folder. Rename it to your desired keymap name. |
| 54 | + *(If you're unsure what the exact `keyboard_name` is, you can run `qmk list-keyboards | grep <keyboard>`)* |
| 55 | +3. **Add your keymap to the build targets** by running the following command: |
| 56 | + ```bash |
| 57 | + qmk userspace-add -kb <your_keyboard> -km <your_keymap> -e <halcyon_module>=1 -e TARGET=<filename> |
| 58 | + ``` |
| 59 | + * *This command will automatically update your `qmk.json` file.* |
| 60 | + * **`filename`**: Choose a descriptive filename so you can easily differentiate between module firmware (e.g., `halcyon_kyria_default_encoder`). |
| 61 | + * **`halcyon_module`**: Replace this with one of the following environment variables depending on your hardware: |
59 | 62 |
|
60 | | -If you wish to point GitHub actions to a different repository, a different branch, or even a different keymap name, you can modify `.github/workflows/build_binaries.yml` to suit your needs. |
| 63 | + | Module Variable | Description | |
| 64 | + | :--- | :--- | |
| 65 | + | `HLC_NONE` | You have a module installed on the *other* half, but not this half. | |
| 66 | + | `HLC_ENCODER` | You have an encoder module installed. | |
| 67 | + | `HLC_TFT_DISPLAY` | You have a TFT RGB display installed. | |
| 68 | + | `HLC_CIRQUE_TRACKPAD` | You have a Cirque trackpad installed. | |
61 | 69 |
|
62 | | -To override the `build` job, you can change the following parameters to use a different QMK repository or branch, this can be useful if you want to use a the main QMK repository or a different vial branch. For example: |
63 | | -``` |
64 | | - with: |
65 | | - qmk_repo: vial-kb/vial-qmk |
66 | | - qmk_ref: vial |
67 | | -``` |
68 | | -Our halcyon module code should work fine with the main QMK repository but it may break if there are any breaking changes from QMK in the future. We will try our best to keep this repository up-to-date. You can track this in the `halcyon-qmk` branch. |
| 70 | +#### Useful Userspace Commands |
| 71 | +* **List configured targets:** `qmk userspace-list` |
| 72 | +* **Show generated compile commands:** `qmk userspace-compile -n` |
| 73 | +* **Remove a target:** `qmk userspace-remove -kb <your_keyboard> -km <your_keymap> -e <halcyon_module>=1 -e TARGET=<filename>` |
| 74 | + |
| 75 | + |
| 76 | +## How to Build with GitHub Actions |
| 77 | + |
| 78 | +If you don't want to build locally, GitHub can compile the firmware for you automatically. |
| 79 | + |
| 80 | +1. Go to the **Actions** tab of your forked GitHub repository and click **"I understand my workflows, go ahead and enable them"**. |
| 81 | +2. Commit and push your local changes to your fork. |
| 82 | +3. Check the **Actions** tab to watch the build process run. |
| 83 | +4. Once completed, navigate to the **Releases** tab on your repository to download your latest compiled firmware `.hex` or `.uf2` files. |
69 | 84 |
|
70 | 85 |
|
71 | | -## Adding splitkb fork to an existing fork |
| 86 | +## How to Build Locally |
72 | 87 |
|
73 | | -### New branch |
| 88 | +Assuming you have completed the initial setup and configured your build targets, you can compile locally. |
74 | 89 |
|
75 | | -If you have already forked the qmk/qmk_userspace repository before you may need to manually add the `halcyon` branch. |
| 90 | +**To build all userspace targets at once:** |
| 91 | +```bash |
| 92 | +qmk userspace-compile |
| 93 | +``` |
| 94 | + |
| 95 | +**To compile a specific target manually:** |
| 96 | +```bash |
| 97 | +qmk compile -kb <your_keyboard> -km <your_keymap> -e <your_module>=1 -e TARGET=<filename> |
| 98 | +``` |
| 99 | + |
| 100 | +## Extra Info & Advanced Configuration |
76 | 101 |
|
77 | | -1. Add a new upstream `git remote add upstream https://github.com/splitkb/qmk_userspace.git` |
78 | | -1. Fetch the upstream `git fetch upstream` |
79 | | -1. Create a new branch based on the upstream `git checkout -b halcyon upstream/halcyon` |
80 | | -1. Make any changes you want and push it to github `git push -u origin halcyon` |
| 102 | +### Modifying GitHub Actions |
| 103 | +If you wish to point GitHub Actions to a different QMK repository (such as the main QMK repo instead of Vial), a different branch, or a specific keymap, you can modify `.github/workflows/build_binaries.yml`. |
| 104 | + |
| 105 | +For example, to override the `build` job to use the QMK branch: |
| 106 | +```yaml |
| 107 | + with: |
| 108 | + qmk_repo: qmk/qmk_firmware |
| 109 | + qmk_ref: master |
| 110 | +``` |
| 111 | +*Note: Our Halcyon module code should work fine with the main QMK repository, but it may break if QMK introduces upstream breaking changes. We track QMK updates in the `halcyon-qmk` branch.* |
81 | 112 |
|
82 | | -### Existing branch |
| 113 | +### Adding Halcyon support to an Existing Userspace Fork |
83 | 114 |
|
84 | | -You may also want to just add the files to your own branch if you have already setup a custom userspace before. |
| 115 | +If you already have a custom userspace fork of `qmk/qmk_userspace`, you can merge the Splitkb additions manually. |
85 | 116 |
|
86 | | -1. Clone or download the files from our fork or add it as a new branch as above. |
87 | | -1. Copy over the contents of `users/halcyon_modules/rules.mk` and the `users/halcyon_modules/splitkb/` folder to your personal user folder. |
| 117 | +#### Option A: Adding the Splitkb Upstream Branch |
| 118 | +1. Add this repo as a remote: `git remote add upstream https://github.com/splitkb/qmk_userspace.git` |
| 119 | +2. Fetch the upstream: `git fetch upstream` |
| 120 | +3. Create a new branch based on our halcyon branch: `git checkout -b halcyon upstream/halcyon` |
| 121 | +4. Make your changes and push: `git push -u origin halcyon` |
88 | 122 |
|
89 | | -If you want to modify an existing keymap (from the original Kyria, Elora or an Aurora board for example). Make sure to add 10 new keys in your keymap (Look at `keyboards/splitkb/halcyon/kyria/keymaps/default_hlc` for an example). |
| 123 | +#### Option B: Copying files to your existing branch |
| 124 | +1. Clone or download the files from the Splitkb fork. |
| 125 | +2. Copy `users/halcyon_modules/rules.mk` and the entire `users/halcyon_modules/splitkb/` folder into your personal user folder. |
| 126 | +3. **Updating Keymaps:** If you modify an existing keymap (e.g., from the original Kyria, Elora, or Aurora), make sure to **add 10 new keys** in your keymap matrix. *(Check `keyboards/splitkb/halcyon/kyria/keymaps/default_hlc` for an example).* |
90 | 127 |
|
91 | | -Do note that we use some quantum functions in our userspace so there may be a conflict when compiling. If you use the `_user` functions you should be fine. |
| 128 | +> **⚠️ Warning:** We use some quantum functions in our userspace. If your existing userspace relies heavily on custom quantum functions, you may encounter compile conflicts. If you restrict yourself to `_user` functions, you should be fine. |
0 commit comments