~ruther/qmk_firmware

bbe0c515f883af463f50acaad79bd62a82e68922 — James Young 1 year, 1 month ago 1f8f0f7
KPRepublic JJ50 rev1 Refactor (#23294)

* Move `kprepublic/jj50` to `kprepublic/jj50/rev1`

[chore]

* Add layout/matrix diagram

[docs]

* Add `LAYOUT_ortho_5x12_1x2u_c`

[enhancement]

* Add `LAYOUT_ortho_5x12_1x2u_l`

[enhancement]

* Add `LAYOUT_ortho_5x12_1x2u_r`

[enhancement]

* Add `LAYOUT_ortho_5x12_2x2u`

[enhancement]

* Convert `rules.mk` to data driven

[chore]

* Remove `console` and `command` from keyboard level

[chore]

* Rename `info.json` to `keyboard.json`

Also deletes `rules.mk` as it's no longer needed.

[chore]
[enhancement]
5 files changed, 310 insertions(+), 18 deletions(-)

M data/mappings/keyboard_aliases.hjson
R keyboards/kprepublic/jj50/{info.json => rev1/keyboard.json}
A keyboards/kprepublic/jj50/rev1/matrix_diagram.md
R keyboards/kprepublic/jj50/{readme.md => rev1/readme.md}
M keyboards/kprepublic/jj50/rules.mk
M data/mappings/keyboard_aliases.hjson => data/mappings/keyboard_aliases.hjson +4 -0
@@ 1518,5 1518,9 @@
    // Moved during 2023 Q4 cycle
    "ymdk/melody96": {
        "target": "ymdk/melody96/soldered"
    },
    // Moved during 2024 Q2 cycle
    "kprepublic/jj50": {
        "target": "kprepublic/jj50/rev1"
    }
}

R keyboards/kprepublic/jj50/info.json => keyboards/kprepublic/jj50/rev1/keyboard.json +279 -1
@@ 1,5 1,5 @@
{
    "keyboard_name": "JJ50",
    "keyboard_name": "JJ50 rev1",
    "manufacturer": "KPrepublic",
    "url": "",
    "maintainer": "qmk",


@@ 13,6 13,17 @@
        "rows": ["B0", "B1", "B2", "B3", "B4"]
    },
    "diode_direction": "COL2ROW",
    "features": {
        "bootmagic": true,
        "mousekey": false,
        "extrakey": true,
        "nkro": false,
        "backlight": true,
        "rgblight": true
    },
    "build": {
        "lto": true
    },
    "backlight": {
        "pin": "D4",
        "levels": 12,


@@ 113,6 124,273 @@
                {"matrix": [4, 1], "x": 10, "y": 4},
                {"matrix": [4, 0], "x": 11, "y": 4}
            ]
        },
        "LAYOUT_ortho_5x12_1x2u_c": {
            "layout": [
                {"matrix": [2, 11], "x": 0, "y": 0},
                {"matrix": [2, 10], "x": 1, "y": 0},
                {"matrix": [2, 9], "x": 2, "y": 0},
                {"matrix": [2, 8], "x": 3, "y": 0},
                {"matrix": [2, 4], "x": 4, "y": 0},
                {"matrix": [2, 5], "x": 5, "y": 0},
                {"matrix": [2, 6], "x": 6, "y": 0},
                {"matrix": [2, 7], "x": 7, "y": 0},
                {"matrix": [2, 3], "x": 8, "y": 0},
                {"matrix": [2, 2], "x": 9, "y": 0},
                {"matrix": [2, 1], "x": 10, "y": 0},
                {"matrix": [2, 0], "x": 11, "y": 0},

                {"matrix": [0, 11], "x": 0, "y": 1},
                {"matrix": [0, 10], "x": 1, "y": 1},
                {"matrix": [0, 9], "x": 2, "y": 1},
                {"matrix": [0, 8], "x": 3, "y": 1},
                {"matrix": [0, 4], "x": 4, "y": 1},
                {"matrix": [0, 5], "x": 5, "y": 1},
                {"matrix": [0, 6], "x": 6, "y": 1},
                {"matrix": [0, 7], "x": 7, "y": 1},
                {"matrix": [0, 3], "x": 8, "y": 1},
                {"matrix": [0, 2], "x": 9, "y": 1},
                {"matrix": [0, 1], "x": 10, "y": 1},
                {"matrix": [0, 0], "x": 11, "y": 1},

                {"matrix": [1, 11], "x": 0, "y": 2},
                {"matrix": [1, 10], "x": 1, "y": 2},
                {"matrix": [1, 9], "x": 2, "y": 2},
                {"matrix": [1, 8], "x": 3, "y": 2},
                {"matrix": [1, 4], "x": 4, "y": 2},
                {"matrix": [1, 5], "x": 5, "y": 2},
                {"matrix": [1, 6], "x": 6, "y": 2},
                {"matrix": [1, 7], "x": 7, "y": 2},
                {"matrix": [1, 3], "x": 8, "y": 2},
                {"matrix": [1, 2], "x": 9, "y": 2},
                {"matrix": [1, 1], "x": 10, "y": 2},
                {"matrix": [1, 0], "x": 11, "y": 2},

                {"matrix": [3, 11], "x": 0, "y": 3},
                {"matrix": [3, 10], "x": 1, "y": 3},
                {"matrix": [3, 9], "x": 2, "y": 3},
                {"matrix": [3, 8], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 3], "x": 8, "y": 3},
                {"matrix": [3, 2], "x": 9, "y": 3},
                {"matrix": [3, 1], "x": 10, "y": 3},
                {"matrix": [3, 0], "x": 11, "y": 3},

                {"matrix": [4, 11], "x": 0, "y": 4},
                {"matrix": [4, 10], "x": 1, "y": 4},
                {"matrix": [4, 9], "x": 2, "y": 4},
                {"matrix": [4, 8], "x": 3, "y": 4},
                {"matrix": [4, 4], "x": 4, "y": 4},
                {"matrix": [4, 5], "x": 5, "y": 4, "w": 2},
                {"matrix": [4, 7], "x": 7, "y": 4},
                {"matrix": [4, 3], "x": 8, "y": 4},
                {"matrix": [4, 2], "x": 9, "y": 4},
                {"matrix": [4, 1], "x": 10, "y": 4},
                {"matrix": [4, 0], "x": 11, "y": 4}
            ]
        },
        "LAYOUT_ortho_5x12_1x2u_l": {
            "layout": [
                {"matrix": [2, 11], "x": 0, "y": 0},
                {"matrix": [2, 10], "x": 1, "y": 0},
                {"matrix": [2, 9], "x": 2, "y": 0},
                {"matrix": [2, 8], "x": 3, "y": 0},
                {"matrix": [2, 4], "x": 4, "y": 0},
                {"matrix": [2, 5], "x": 5, "y": 0},
                {"matrix": [2, 6], "x": 6, "y": 0},
                {"matrix": [2, 7], "x": 7, "y": 0},
                {"matrix": [2, 3], "x": 8, "y": 0},
                {"matrix": [2, 2], "x": 9, "y": 0},
                {"matrix": [2, 1], "x": 10, "y": 0},
                {"matrix": [2, 0], "x": 11, "y": 0},

                {"matrix": [0, 11], "x": 0, "y": 1},
                {"matrix": [0, 10], "x": 1, "y": 1},
                {"matrix": [0, 9], "x": 2, "y": 1},
                {"matrix": [0, 8], "x": 3, "y": 1},
                {"matrix": [0, 4], "x": 4, "y": 1},
                {"matrix": [0, 5], "x": 5, "y": 1},
                {"matrix": [0, 6], "x": 6, "y": 1},
                {"matrix": [0, 7], "x": 7, "y": 1},
                {"matrix": [0, 3], "x": 8, "y": 1},
                {"matrix": [0, 2], "x": 9, "y": 1},
                {"matrix": [0, 1], "x": 10, "y": 1},
                {"matrix": [0, 0], "x": 11, "y": 1},

                {"matrix": [1, 11], "x": 0, "y": 2},
                {"matrix": [1, 10], "x": 1, "y": 2},
                {"matrix": [1, 9], "x": 2, "y": 2},
                {"matrix": [1, 8], "x": 3, "y": 2},
                {"matrix": [1, 4], "x": 4, "y": 2},
                {"matrix": [1, 5], "x": 5, "y": 2},
                {"matrix": [1, 6], "x": 6, "y": 2},
                {"matrix": [1, 7], "x": 7, "y": 2},
                {"matrix": [1, 3], "x": 8, "y": 2},
                {"matrix": [1, 2], "x": 9, "y": 2},
                {"matrix": [1, 1], "x": 10, "y": 2},
                {"matrix": [1, 0], "x": 11, "y": 2},

                {"matrix": [3, 11], "x": 0, "y": 3},
                {"matrix": [3, 10], "x": 1, "y": 3},
                {"matrix": [3, 9], "x": 2, "y": 3},
                {"matrix": [3, 8], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 3], "x": 8, "y": 3},
                {"matrix": [3, 2], "x": 9, "y": 3},
                {"matrix": [3, 1], "x": 10, "y": 3},
                {"matrix": [3, 0], "x": 11, "y": 3},

                {"matrix": [4, 11], "x": 0, "y": 4},
                {"matrix": [4, 10], "x": 1, "y": 4},
                {"matrix": [4, 9], "x": 2, "y": 4},
                {"matrix": [4, 8], "x": 3, "y": 4},
                {"matrix": [4, 4], "x": 4, "y": 4, "w": 2},
                {"matrix": [4, 6], "x": 6, "y": 4},
                {"matrix": [4, 7], "x": 7, "y": 4},
                {"matrix": [4, 3], "x": 8, "y": 4},
                {"matrix": [4, 2], "x": 9, "y": 4},
                {"matrix": [4, 1], "x": 10, "y": 4},
                {"matrix": [4, 0], "x": 11, "y": 4}
            ]
        },
        "LAYOUT_ortho_5x12_1x2u_r": {
            "layout": [
                {"matrix": [2, 11], "x": 0, "y": 0},
                {"matrix": [2, 10], "x": 1, "y": 0},
                {"matrix": [2, 9], "x": 2, "y": 0},
                {"matrix": [2, 8], "x": 3, "y": 0},
                {"matrix": [2, 4], "x": 4, "y": 0},
                {"matrix": [2, 5], "x": 5, "y": 0},
                {"matrix": [2, 6], "x": 6, "y": 0},
                {"matrix": [2, 7], "x": 7, "y": 0},
                {"matrix": [2, 3], "x": 8, "y": 0},
                {"matrix": [2, 2], "x": 9, "y": 0},
                {"matrix": [2, 1], "x": 10, "y": 0},
                {"matrix": [2, 0], "x": 11, "y": 0},

                {"matrix": [0, 11], "x": 0, "y": 1},
                {"matrix": [0, 10], "x": 1, "y": 1},
                {"matrix": [0, 9], "x": 2, "y": 1},
                {"matrix": [0, 8], "x": 3, "y": 1},
                {"matrix": [0, 4], "x": 4, "y": 1},
                {"matrix": [0, 5], "x": 5, "y": 1},
                {"matrix": [0, 6], "x": 6, "y": 1},
                {"matrix": [0, 7], "x": 7, "y": 1},
                {"matrix": [0, 3], "x": 8, "y": 1},
                {"matrix": [0, 2], "x": 9, "y": 1},
                {"matrix": [0, 1], "x": 10, "y": 1},
                {"matrix": [0, 0], "x": 11, "y": 1},

                {"matrix": [1, 11], "x": 0, "y": 2},
                {"matrix": [1, 10], "x": 1, "y": 2},
                {"matrix": [1, 9], "x": 2, "y": 2},
                {"matrix": [1, 8], "x": 3, "y": 2},
                {"matrix": [1, 4], "x": 4, "y": 2},
                {"matrix": [1, 5], "x": 5, "y": 2},
                {"matrix": [1, 6], "x": 6, "y": 2},
                {"matrix": [1, 7], "x": 7, "y": 2},
                {"matrix": [1, 3], "x": 8, "y": 2},
                {"matrix": [1, 2], "x": 9, "y": 2},
                {"matrix": [1, 1], "x": 10, "y": 2},
                {"matrix": [1, 0], "x": 11, "y": 2},

                {"matrix": [3, 11], "x": 0, "y": 3},
                {"matrix": [3, 10], "x": 1, "y": 3},
                {"matrix": [3, 9], "x": 2, "y": 3},
                {"matrix": [3, 8], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 3], "x": 8, "y": 3},
                {"matrix": [3, 2], "x": 9, "y": 3},
                {"matrix": [3, 1], "x": 10, "y": 3},
                {"matrix": [3, 0], "x": 11, "y": 3},

                {"matrix": [4, 11], "x": 0, "y": 4},
                {"matrix": [4, 10], "x": 1, "y": 4},
                {"matrix": [4, 9], "x": 2, "y": 4},
                {"matrix": [4, 8], "x": 3, "y": 4},
                {"matrix": [4, 4], "x": 4, "y": 4},
                {"matrix": [4, 5], "x": 5, "y": 4},
                {"matrix": [4, 6], "x": 6, "y": 4, "w": 2},
                {"matrix": [4, 3], "x": 8, "y": 4},
                {"matrix": [4, 2], "x": 9, "y": 4},
                {"matrix": [4, 1], "x": 10, "y": 4},
                {"matrix": [4, 0], "x": 11, "y": 4}
            ]
        },
        "LAYOUT_ortho_5x12_2x2u": {
            "layout": [
                {"matrix": [2, 11], "x": 0, "y": 0},
                {"matrix": [2, 10], "x": 1, "y": 0},
                {"matrix": [2, 9], "x": 2, "y": 0},
                {"matrix": [2, 8], "x": 3, "y": 0},
                {"matrix": [2, 4], "x": 4, "y": 0},
                {"matrix": [2, 5], "x": 5, "y": 0},
                {"matrix": [2, 6], "x": 6, "y": 0},
                {"matrix": [2, 7], "x": 7, "y": 0},
                {"matrix": [2, 3], "x": 8, "y": 0},
                {"matrix": [2, 2], "x": 9, "y": 0},
                {"matrix": [2, 1], "x": 10, "y": 0},
                {"matrix": [2, 0], "x": 11, "y": 0},

                {"matrix": [0, 11], "x": 0, "y": 1},
                {"matrix": [0, 10], "x": 1, "y": 1},
                {"matrix": [0, 9], "x": 2, "y": 1},
                {"matrix": [0, 8], "x": 3, "y": 1},
                {"matrix": [0, 4], "x": 4, "y": 1},
                {"matrix": [0, 5], "x": 5, "y": 1},
                {"matrix": [0, 6], "x": 6, "y": 1},
                {"matrix": [0, 7], "x": 7, "y": 1},
                {"matrix": [0, 3], "x": 8, "y": 1},
                {"matrix": [0, 2], "x": 9, "y": 1},
                {"matrix": [0, 1], "x": 10, "y": 1},
                {"matrix": [0, 0], "x": 11, "y": 1},

                {"matrix": [1, 11], "x": 0, "y": 2},
                {"matrix": [1, 10], "x": 1, "y": 2},
                {"matrix": [1, 9], "x": 2, "y": 2},
                {"matrix": [1, 8], "x": 3, "y": 2},
                {"matrix": [1, 4], "x": 4, "y": 2},
                {"matrix": [1, 5], "x": 5, "y": 2},
                {"matrix": [1, 6], "x": 6, "y": 2},
                {"matrix": [1, 7], "x": 7, "y": 2},
                {"matrix": [1, 3], "x": 8, "y": 2},
                {"matrix": [1, 2], "x": 9, "y": 2},
                {"matrix": [1, 1], "x": 10, "y": 2},
                {"matrix": [1, 0], "x": 11, "y": 2},

                {"matrix": [3, 11], "x": 0, "y": 3},
                {"matrix": [3, 10], "x": 1, "y": 3},
                {"matrix": [3, 9], "x": 2, "y": 3},
                {"matrix": [3, 8], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 3], "x": 8, "y": 3},
                {"matrix": [3, 2], "x": 9, "y": 3},
                {"matrix": [3, 1], "x": 10, "y": 3},
                {"matrix": [3, 0], "x": 11, "y": 3},

                {"matrix": [4, 11], "x": 0, "y": 4},
                {"matrix": [4, 10], "x": 1, "y": 4},
                {"matrix": [4, 9], "x": 2, "y": 4},
                {"matrix": [4, 8], "x": 3, "y": 4},
                {"matrix": [4, 4], "x": 4, "y": 4, "w": 2},
                {"matrix": [4, 6], "x": 6, "y": 4, "w": 2},
                {"matrix": [4, 3], "x": 8, "y": 4},
                {"matrix": [4, 2], "x": 9, "y": 4},
                {"matrix": [4, 1], "x": 10, "y": 4},
                {"matrix": [4, 0], "x": 11, "y": 4}
            ]
        }
    }
}

A keyboards/kprepublic/jj50/rev1/matrix_diagram.md => keyboards/kprepublic/jj50/rev1/matrix_diagram.md +21 -0
@@ 0,0 1,21 @@
# Matrix Diagram for KPrepublic JJ50 rev1

```
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│2B │2A │29 │28 │24 │25 │26 │27 │23 │22 │21 │20 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│0B │0A │09 │08 │04 │05 │06 │07 │03 │02 │01 │00 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│1B │1A │19 │18 │14 │15 │16 │17 │13 │12 │11 │10 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│3B │3A │39 │38 │34 │35 │36 │37 │33 │32 │31 │30 │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│4B │4A │49 │48 │44 │45 │46 │47 │43 │42 │41 │40 │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
                    ┌───────┐
                    │45     │ 1x2u_c (MIT)
                    └───────┘
                ┌───────┬───────┐
                │44     │46     │ 2x2u_c
                └───────┴───────┘
```

R keyboards/kprepublic/jj50/readme.md => keyboards/kprepublic/jj50/rev1/readme.md +5 -5
@@ 1,20 1,20 @@
# JJ50
# JJ50 rev1

![JJ50 + SA Vilebloom (w/ Sakurios) by u/rendleshift](https://i.imgur.com/SwYZ4wol.jpg)
![JJ50 rev1 + SA Vilebloom (w/ Sakurios) by u/rendleshift](https://i.imgur.com/SwYZ4wol.jpg)

A compact 50% (5x12) ortholinear keyboard made and sold by KPrepublic.

* Keyboard Maintainer: [QMK Community](https://github.com/qmk)
* Hardware Supported: Atmega32A
* Hardware Supported: JJ50 rev1 (ATmega32A)
* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/jj50-v1-0-Custom-Mechanical-Keyboard-50-PCB-programmed-50-preonic-layouts-bface-firmware-with-rgb/32848915277.html); [KPrepublic](https://kprepublic.com/collections/jj50-50/products/jj50-50-custom-keyboard-pcb-similar-with-preonic)

Make example for this keyboard (after setting up your build environment):

    make kprepublic/jj50:default
    make kprepublic/jj50/rev1:default

Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))

    make kprepublic/jj50:default:flash
    make kprepublic/jj50/rev1:default:flash

**Reset Key**: Hold down the key `Backspace` (`Key below the top right key`) while plugging in the keyboard.


M keyboards/kprepublic/jj50/rules.mk => keyboards/kprepublic/jj50/rules.mk +1 -12
@@ 1,12 1,1 @@
# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no        # Mouse keys
EXTRAKEY_ENABLE = yes       # Audio control and System control
CONSOLE_ENABLE = no         # Console for debug
COMMAND_ENABLE = no         # Commands for debug and configuration
NKRO_ENABLE = no            # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
LTO_ENABLE = yes            # Enable link time optimization
DEFAULT_FOLDER = kprepublic/jj50/rev1

Do not follow this link