~ruther/qmk_firmware

48a8682438d5708636c3260adfb6a75ac89ed05a — James Young 4 years ago c148476
Linworks Whale75 Layout Macro refactor and Configurator fixes (#14059)

* info.json: human-friendly formatting

* info.json: remove "w":1 instances

* info.json: correct positions of Left, Down and Right Arrow keys

* info.json: add LAYOUT_all data

* move Home key to end of home row

According to photographs of the keyboard, the fourth key down on the right side is physically on the home row. This commit moves the key argument and keycodes to the home row.

* whale75.h: use QMK 3-character notation for matrix

* whale75.h: add matrix diagram

* add keyboard-level encoder functionality

* info.json: correct key sequence on ISO layouts
M keyboards/linworks/whale75/info.json => keyboards/linworks/whale75/info.json +448 -356
@@ 1,364 1,456 @@
{
  "keyboard_name": "Lx3 Whale 75",
  "maintainer": "ebastler",
  "width": 16.25,
  "height": 6.5,
  "layouts": {
    "LAYOUT_ansi": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6.5, "y": 0 },
        { "x": 7.5, "y": 0 },
        { "x": 8.5, "y": 0 },
        { "x": 9.5, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 12, "y": 0 },
        { "x": 13, "y": 0 },
        { "x": 14, "y": 0 },
        { "x": 15.25, "y": 0 },
    "keyboard_name": "Lx3 Whale 75",
    "maintainer": "ebastler",
    "width": 16.25,
    "height": 6.5,
    "layouts": {
        "LAYOUT_all": {
            "layout": [
                {"x":0, "y":0},
                {"x":2, "y":0},
                {"x":3, "y":0},
                {"x":4, "y":0},
                {"x":5, "y":0},
                {"x":6.5, "y":0},
                {"x":7.5, "y":0},
                {"x":8.5, "y":0},
                {"x":9.5, "y":0},
                {"x":11, "y":0},
                {"x":12, "y":0},
                {"x":13, "y":0},
                {"x":14, "y":0},
                {"x":15.25, "y":0},

        { "x": 0, "y": 1.25 },
        { "x": 1, "y": 1.25 },
        { "x": 2, "y": 1.25 },
        { "x": 3, "y": 1.25 },
        { "x": 4, "y": 1.25 },
        { "x": 5, "y": 1.25 },
        { "x": 6, "y": 1.25 },
        { "x": 7, "y": 1.25 },
        { "x": 8, "y": 1.25 },
        { "x": 9, "y": 1.25 },
        { "x": 10, "y": 1.25 },
        { "x": 11, "y": 1.25 },
        { "x": 12, "y": 1.25 },
        { "x": 13, "y": 1.25, "w":2},
        { "x": 15.25, "y": 1.25 },
                {"x":0, "y":1.25},
                {"x":1, "y":1.25},
                {"x":2, "y":1.25},
                {"x":3, "y":1.25},
                {"x":4, "y":1.25},
                {"x":5, "y":1.25},
                {"x":6, "y":1.25},
                {"x":7, "y":1.25},
                {"x":8, "y":1.25},
                {"x":9, "y":1.25},
                {"x":10, "y":1.25},
                {"x":11, "y":1.25},
                {"x":12, "y":1.25},
                {"x":13, "y":1.25},
                {"x":14, "y":1.25},
                {"x":15.25, "y":1.25},

        { "x": 0, "y": 2.25, "w": 1.5 },
        { "x": 1.5, "y": 2.25 },
        { "x": 2.5, "y": 2.25 },
        { "x": 3.5, "y": 2.25 },
        { "x": 4.5, "y": 2.25 },
        { "x": 5.5, "y": 2.25 },
        { "x": 6.5, "y": 2.25 },
        { "x": 7.5, "y": 2.25 },
        { "x": 8.5, "y": 2.25 },
        { "x": 9.5, "y": 2.25 },
        { "x": 10.5, "y": 2.25 },
        { "x": 11.5, "y": 2.25 },
        { "x": 12.5, "y": 2.25 },
        { "x": 13.5, "y": 2.25, "w":1.5 },
        { "x": 15.25, "y": 2.25 },
                {"x":0, "y":2.25, "w":1.5},
                {"x":1.5, "y":2.25},
                {"x":2.5, "y":2.25},
                {"x":3.5, "y":2.25},
                {"x":4.5, "y":2.25},
                {"x":5.5, "y":2.25},
                {"x":6.5, "y":2.25},
                {"x":7.5, "y":2.25},
                {"x":8.5, "y":2.25},
                {"x":9.5, "y":2.25},
                {"x":10.5, "y":2.25},
                {"x":11.5, "y":2.25},
                {"x":12.5, "y":2.25},
                {"x":13.5, "y":2.25, "w":1.5},
                {"x":15.25, "y":2.25},

        { "x": 0, "y": 3.25, "w": 1.75 },
        { "x": 1.75, "y": 3.25 },
        { "x": 2.75, "y": 3.25 },
        { "x": 3.75, "y": 3.25 },
        { "x": 4.75, "y": 3.25 },
        { "x": 5.75, "y": 3.25 },
        { "x": 6.75, "y": 3.25 },
        { "x": 7.75, "y": 3.25 },
        { "x": 8.75, "y": 3.25 },
        { "x": 9.75, "y": 3.25 },
        { "x": 10.75, "y": 3.25 },
        { "x": 11.75, "y": 3.25 },
        { "x": 12.75, "y": 3.25, "w":2.25 },
        { "x": 15.25, "y": 3.25 },
                {"x":0, "y":3.25, "w":1.75},
                {"x":1.75, "y":3.25},
                {"x":2.75, "y":3.25},
                {"x":3.75, "y":3.25},
                {"x":4.75, "y":3.25},
                {"x":5.75, "y":3.25},
                {"x":6.75, "y":3.25},
                {"x":7.75, "y":3.25},
                {"x":8.75, "y":3.25},
                {"x":9.75, "y":3.25},
                {"x":10.75, "y":3.25},
                {"x":11.75, "y":3.25},
                {"x":12.75, "y":3.25},
                {"x":13.75, "y":3.25, "w":1.25},
                {"x":15.25, "y":3.25},

        { "x": 0, "y": 4.25, "w": 2.25 },
        { "x": 2.25, "y": 4.25 },
        { "x": 3.25, "y": 4.25 },
        { "x": 4.25, "y": 4.25 },
        { "x": 5.25, "y": 4.25 },
        { "x": 6.25, "y": 4.25 },
        { "x": 7.25, "y": 4.25 },
        { "x": 8.25, "y": 4.25 },
        { "x": 9.25, "y": 4.25 },
        { "x": 10.25, "y": 4.25 },
        { "x": 11.25, "y": 4.25 },
        { "x": 12.25, "y": 4.25, "w":1.75 },
        { "x": 14.25, "y": 4.5 },
                {"x":0, "y":4.25, "w":1.25},
                {"x":1.25, "y":4.25},
                {"x":2.25, "y":4.25},
                {"x":3.25, "y":4.25},
                {"x":4.25, "y":4.25},
                {"x":5.25, "y":4.25},
                {"x":6.25, "y":4.25},
                {"x":7.25, "y":4.25},
                {"x":8.25, "y":4.25},
                {"x":9.25, "y":4.25},
                {"x":10.25, "y":4.25},
                {"x":11.25, "y":4.25},
                {"x":12.25, "y":4.25, "w":1.75},
                {"x":14.25, "y":4.5},

        { "x": 0, "y": 5.25, "w": 1.25},
        { "x": 1.25, "y": 5.25, "w": 1.25},
        { "x": 2.5, "y": 5.25, "w": 1.25},
        { "x": 3.75, "y": 5.25, "w": 6.25},
        { "x": 10, "y": 5.25, "w": 1.5},
        { "x": 11.5, "y": 5.25, "w": 1.5},
        { "x": 13.25, "y": 5.25, "w": 1},
        { "x": 14.25, "y": 5.25, "w": 1},
        { "x": 15.25, "y": 5.25, "w": 1}
      ]
    },
    "LAYOUT_ansi_wkl": {
        "layout": [
          { "x": 0, "y": 0 },
          { "x": 2, "y": 0 },
          { "x": 3, "y": 0 },
          { "x": 4, "y": 0 },
          { "x": 5, "y": 0 },
          { "x": 6.5, "y": 0 },
          { "x": 7.5, "y": 0 },
          { "x": 8.5, "y": 0 },
          { "x": 9.5, "y": 0 },
          { "x": 11, "y": 0 },
          { "x": 12, "y": 0 },
          { "x": 13, "y": 0 },
          { "x": 14, "y": 0 },
          { "x": 15.25, "y": 0 },
  
          { "x": 0, "y": 1.25 },
          { "x": 1, "y": 1.25 },
          { "x": 2, "y": 1.25 },
          { "x": 3, "y": 1.25 },
          { "x": 4, "y": 1.25 },
          { "x": 5, "y": 1.25 },
          { "x": 6, "y": 1.25 },
          { "x": 7, "y": 1.25 },
          { "x": 8, "y": 1.25 },
          { "x": 9, "y": 1.25 },
          { "x": 10, "y": 1.25 },
          { "x": 11, "y": 1.25 },
          { "x": 12, "y": 1.25 },
          { "x": 13, "y": 1.25, "w":2},
          { "x": 15.25, "y": 1.25 },
  
          { "x": 0, "y": 2.25, "w": 1.5 },
          { "x": 1.5, "y": 2.25 },
          { "x": 2.5, "y": 2.25 },
          { "x": 3.5, "y": 2.25 },
          { "x": 4.5, "y": 2.25 },
          { "x": 5.5, "y": 2.25 },
          { "x": 6.5, "y": 2.25 },
          { "x": 7.5, "y": 2.25 },
          { "x": 8.5, "y": 2.25 },
          { "x": 9.5, "y": 2.25 },
          { "x": 10.5, "y": 2.25 },
          { "x": 11.5, "y": 2.25 },
          { "x": 12.5, "y": 2.25 },
          { "x": 13.5, "y": 2.25, "w":1.5 },
          { "x": 15.25, "y": 2.25 },
  
          { "x": 0, "y": 3.25, "w": 1.75 },
          { "x": 1.75, "y": 3.25 },
          { "x": 2.75, "y": 3.25 },
          { "x": 3.75, "y": 3.25 },
          { "x": 4.75, "y": 3.25 },
          { "x": 5.75, "y": 3.25 },
          { "x": 6.75, "y": 3.25 },
          { "x": 7.75, "y": 3.25 },
          { "x": 8.75, "y": 3.25 },
          { "x": 9.75, "y": 3.25 },
          { "x": 10.75, "y": 3.25 },
          { "x": 11.75, "y": 3.25 },
          { "x": 12.75, "y": 3.25, "w":2.25 },
          { "x": 15.25, "y": 3.25 },
  
          { "x": 0, "y": 4.25, "w": 2.25 },
          { "x": 2.25, "y": 4.25 },
          { "x": 3.25, "y": 4.25 },
          { "x": 4.25, "y": 4.25 },
          { "x": 5.25, "y": 4.25 },
          { "x": 6.25, "y": 4.25 },
          { "x": 7.25, "y": 4.25 },
          { "x": 8.25, "y": 4.25 },
          { "x": 9.25, "y": 4.25 },
          { "x": 10.25, "y": 4.25 },
          { "x": 11.25, "y": 4.25 },
          { "x": 12.25, "y": 4.25, "w":1.75 },
          { "x": 14.25, "y": 4.5 },
  
          { "x": 0, "y": 5.25, "w": 1.5},
          { "x": 1.5, "y": 5.25, "w": 1.5},
          { "x": 3, "y": 5.25, "w": 7},
          { "x": 10, "y": 5.25, "w": 1.5},
          { "x": 11.5, "y": 5.25, "w": 1.5},
          { "x": 13.25, "y": 5.25, "w": 1},
          { "x": 14.25, "y": 5.25, "w": 1},
          { "x": 15.25, "y": 5.25, "w": 1}
        ]
    },
    "LAYOUT_iso": {
        "layout": [
          { "x": 0, "y": 0 },
          { "x": 2, "y": 0 },
          { "x": 3, "y": 0 },
          { "x": 4, "y": 0 },
          { "x": 5, "y": 0 },
          { "x": 6.5, "y": 0 },
          { "x": 7.5, "y": 0 },
          { "x": 8.5, "y": 0 },
          { "x": 9.5, "y": 0 },
          { "x": 11, "y": 0 },
          { "x": 12, "y": 0 },
          { "x": 13, "y": 0 },
          { "x": 14, "y": 0 },
          { "x": 15.25, "y": 0 },
  
          { "x": 0, "y": 1.25 },
          { "x": 1, "y": 1.25 },
          { "x": 2, "y": 1.25 },
          { "x": 3, "y": 1.25 },
          { "x": 4, "y": 1.25 },
          { "x": 5, "y": 1.25 },
          { "x": 6, "y": 1.25 },
          { "x": 7, "y": 1.25 },
          { "x": 8, "y": 1.25 },
          { "x": 9, "y": 1.25 },
          { "x": 10, "y": 1.25 },
          { "x": 11, "y": 1.25 },
          { "x": 12, "y": 1.25 },
          { "x": 13, "y": 1.25, "w":2},
          { "x": 15.25, "y": 1.25 },
  
          { "x": 0, "y": 2.25, "w": 1.5 },
          { "x": 1.5, "y": 2.25 },
          { "x": 2.5, "y": 2.25 },
          { "x": 3.5, "y": 2.25 },
          { "x": 4.5, "y": 2.25 },
          { "x": 5.5, "y": 2.25 },
          { "x": 6.5, "y": 2.25 },
          { "x": 7.5, "y": 2.25 },
          { "x": 8.5, "y": 2.25 },
          { "x": 9.5, "y": 2.25 },
          { "x": 10.5, "y": 2.25 },
          { "x": 11.5, "y": 2.25 },
          { "x": 12.5, "y": 2.25 },
          { "x": 13.75, "y":2.25, "w":1.25, "h":2 },
          { "x": 15.25, "y": 2.25 },
  
          { "x": 0, "y": 3.25, "w": 1.75 },
          { "x": 1.75, "y": 3.25 },
          { "x": 2.75, "y": 3.25 },
          { "x": 3.75, "y": 3.25 },
          { "x": 4.75, "y": 3.25 },
          { "x": 5.75, "y": 3.25 },
          { "x": 6.75, "y": 3.25 },
          { "x": 7.75, "y": 3.25 },
          { "x": 8.75, "y": 3.25 },
          { "x": 9.75, "y": 3.25 },
          { "x": 10.75, "y": 3.25 },
          { "x": 11.75, "y": 3.25 },
          { "x": 12.75, "y": 3.25 },
          { "x": 15.25, "y": 3.25 },
  
          { "x": 0, "y": 4.25, "w": 1.25 },
          { "x": 1.25, "y": 4.25 },
          { "x": 2.25, "y": 4.25 },
          { "x": 3.25, "y": 4.25 },
          { "x": 4.25, "y": 4.25 },
          { "x": 5.25, "y": 4.25 },
          { "x": 6.25, "y": 4.25 },
          { "x": 7.25, "y": 4.25 },
          { "x": 8.25, "y": 4.25 },
          { "x": 9.25, "y": 4.25 },
          { "x": 10.25, "y": 4.25 },
          { "x": 11.25, "y": 4.25 },
          { "x": 12.25, "y": 4.25, "w":1.75 },
          { "x": 14.25, "y": 4.5 },
  
          { "x": 0, "y": 5.25, "w": 1.25},
          { "x": 1.25, "y": 5.25, "w": 1.25},
          { "x": 2.5, "y": 5.25, "w": 1.25},
          { "x": 3.75, "y": 5.25, "w": 6.25},
          { "x": 10, "y": 5.25, "w": 1.5},
          { "x": 11.5, "y": 5.25, "w": 1.5},
          { "x": 13.25, "y": 5.25, "w": 1},
          { "x": 14.25, "y": 5.25, "w": 1},
          { "x": 15.25, "y": 5.25, "w": 1}
        ]
    },
    "LAYOUT_iso_wkl": {
        "layout": [
          { "x": 0, "y": 0 },
          { "x": 2, "y": 0 },
          { "x": 3, "y": 0 },
          { "x": 4, "y": 0 },
          { "x": 5, "y": 0 },
          { "x": 6.5, "y": 0 },
          { "x": 7.5, "y": 0 },
          { "x": 8.5, "y": 0 },
          { "x": 9.5, "y": 0 },
          { "x": 11, "y": 0 },
          { "x": 12, "y": 0 },
          { "x": 13, "y": 0 },
          { "x": 14, "y": 0 },
          { "x": 15.25, "y": 0 },
  
          { "x": 0, "y": 1.25 },
          { "x": 1, "y": 1.25 },
          { "x": 2, "y": 1.25 },
          { "x": 3, "y": 1.25 },
          { "x": 4, "y": 1.25 },
          { "x": 5, "y": 1.25 },
          { "x": 6, "y": 1.25 },
          { "x": 7, "y": 1.25 },
          { "x": 8, "y": 1.25 },
          { "x": 9, "y": 1.25 },
          { "x": 10, "y": 1.25 },
          { "x": 11, "y": 1.25 },
          { "x": 12, "y": 1.25 },
          { "x": 13, "y": 1.25, "w":2},
          { "x": 15.25, "y": 1.25 },
  
          { "x": 0, "y": 2.25, "w": 1.5 },
          { "x": 1.5, "y": 2.25 },
          { "x": 2.5, "y": 2.25 },
          { "x": 3.5, "y": 2.25 },
          { "x": 4.5, "y": 2.25 },
          { "x": 5.5, "y": 2.25 },
          { "x": 6.5, "y": 2.25 },
          { "x": 7.5, "y": 2.25 },
          { "x": 8.5, "y": 2.25 },
          { "x": 9.5, "y": 2.25 },
          { "x": 10.5, "y": 2.25 },
          { "x": 11.5, "y": 2.25 },
          { "x": 12.5, "y": 2.25 },
          { "x": 13.75, "y":2.25, "w":1.25, "h":2 },
          { "x": 15.25, "y": 2.25 },
  
          { "x": 0, "y": 3.25, "w": 1.75 },
          { "x": 1.75, "y": 3.25 },
          { "x": 2.75, "y": 3.25 },
          { "x": 3.75, "y": 3.25 },
          { "x": 4.75, "y": 3.25 },
          { "x": 5.75, "y": 3.25 },
          { "x": 6.75, "y": 3.25 },
          { "x": 7.75, "y": 3.25 },
          { "x": 8.75, "y": 3.25 },
          { "x": 9.75, "y": 3.25 },
          { "x": 10.75, "y": 3.25 },
          { "x": 11.75, "y": 3.25 },
          { "x": 12.75, "y": 3.25 },
          { "x": 15.25, "y": 3.25 },
  
          { "x": 0, "y": 4.25, "w": 1.25 },
          { "x": 1.25, "y": 4.25 },
          { "x": 2.25, "y": 4.25 },
          { "x": 3.25, "y": 4.25 },
          { "x": 4.25, "y": 4.25 },
          { "x": 5.25, "y": 4.25 },
          { "x": 6.25, "y": 4.25 },
          { "x": 7.25, "y": 4.25 },
          { "x": 8.25, "y": 4.25 },
          { "x": 9.25, "y": 4.25 },
          { "x": 10.25, "y": 4.25 },
          { "x": 11.25, "y": 4.25 },
          { "x": 12.25, "y": 4.25, "w":1.75 },
          { "x": 14.25, "y": 4.5 },
  
          { "x": 0, "y": 5.25, "w": 1.5},
          { "x": 1.5, "y": 5.25, "w": 1.5},
          { "x": 3, "y": 5.25, "w": 7},
          { "x": 10, "y": 5.25, "w": 1.5},
          { "x": 11.5, "y": 5.25, "w": 1.5},
          { "x": 13.25, "y": 5.25, "w": 1},
          { "x": 14.25, "y": 5.25, "w": 1},
          { "x": 15.25, "y": 5.25, "w": 1}
        ]
                {"x":0, "y":5.25, "w":1.25},
                {"x":1.25, "y":5.25, "w":1.25},
                {"x":2.5, "y":5.25, "w":1.25},
                {"x":3.75, "y":5.25, "w":6.25},
                {"x":10, "y":5.25, "w":1.5},
                {"x":11.5, "y":5.25, "w":1.5},
                {"x":13.25, "y":5.5},
                {"x":14.25, "y":5.5},
                {"x":15.25, "y":5.5}
            ]
        },
        "LAYOUT_ansi": {
            "layout": [
                {"x":0, "y":0},
                {"x":2, "y":0},
                {"x":3, "y":0},
                {"x":4, "y":0},
                {"x":5, "y":0},
                {"x":6.5, "y":0},
                {"x":7.5, "y":0},
                {"x":8.5, "y":0},
                {"x":9.5, "y":0},
                {"x":11, "y":0},
                {"x":12, "y":0},
                {"x":13, "y":0},
                {"x":14, "y":0},
                {"x":15.25, "y":0},

                {"x":0, "y":1.25},
                {"x":1, "y":1.25},
                {"x":2, "y":1.25},
                {"x":3, "y":1.25},
                {"x":4, "y":1.25},
                {"x":5, "y":1.25},
                {"x":6, "y":1.25},
                {"x":7, "y":1.25},
                {"x":8, "y":1.25},
                {"x":9, "y":1.25},
                {"x":10, "y":1.25},
                {"x":11, "y":1.25},
                {"x":12, "y":1.25},
                {"x":13, "y":1.25, "w":2},
                {"x":15.25, "y":1.25},

                {"x":0, "y":2.25, "w":1.5},
                {"x":1.5, "y":2.25},
                {"x":2.5, "y":2.25},
                {"x":3.5, "y":2.25},
                {"x":4.5, "y":2.25},
                {"x":5.5, "y":2.25},
                {"x":6.5, "y":2.25},
                {"x":7.5, "y":2.25},
                {"x":8.5, "y":2.25},
                {"x":9.5, "y":2.25},
                {"x":10.5, "y":2.25},
                {"x":11.5, "y":2.25},
                {"x":12.5, "y":2.25},
                {"x":13.5, "y":2.25, "w":1.5},
                {"x":15.25, "y":2.25},

                {"x":0, "y":3.25, "w":1.75},
                {"x":1.75, "y":3.25},
                {"x":2.75, "y":3.25},
                {"x":3.75, "y":3.25},
                {"x":4.75, "y":3.25},
                {"x":5.75, "y":3.25},
                {"x":6.75, "y":3.25},
                {"x":7.75, "y":3.25},
                {"x":8.75, "y":3.25},
                {"x":9.75, "y":3.25},
                {"x":10.75, "y":3.25},
                {"x":11.75, "y":3.25},
                {"x":12.75, "y":3.25, "w":2.25},
                {"x":15.25, "y":3.25},

                {"x":0, "y":4.25, "w":2.25},
                {"x":2.25, "y":4.25},
                {"x":3.25, "y":4.25},
                {"x":4.25, "y":4.25},
                {"x":5.25, "y":4.25},
                {"x":6.25, "y":4.25},
                {"x":7.25, "y":4.25},
                {"x":8.25, "y":4.25},
                {"x":9.25, "y":4.25},
                {"x":10.25, "y":4.25},
                {"x":11.25, "y":4.25},
                {"x":12.25, "y":4.25, "w":1.75},
                {"x":14.25, "y":4.5},

                {"x":0, "y":5.25, "w":1.25},
                {"x":1.25, "y":5.25, "w":1.25},
                {"x":2.5, "y":5.25, "w":1.25},
                {"x":3.75, "y":5.25, "w":6.25},
                {"x":10, "y":5.25, "w":1.5},
                {"x":11.5, "y":5.25, "w":1.5},
                {"x":13.25, "y":5.5},
                {"x":14.25, "y":5.5},
                {"x":15.25, "y":5.5}
            ]
        },
        "LAYOUT_ansi_wkl": {
            "layout": [
                {"x":0, "y":0},
                {"x":2, "y":0},
                {"x":3, "y":0},
                {"x":4, "y":0},
                {"x":5, "y":0},
                {"x":6.5, "y":0},
                {"x":7.5, "y":0},
                {"x":8.5, "y":0},
                {"x":9.5, "y":0},
                {"x":11, "y":0},
                {"x":12, "y":0},
                {"x":13, "y":0},
                {"x":14, "y":0},
                {"x":15.25, "y":0},

                {"x":0, "y":1.25},
                {"x":1, "y":1.25},
                {"x":2, "y":1.25},
                {"x":3, "y":1.25},
                {"x":4, "y":1.25},
                {"x":5, "y":1.25},
                {"x":6, "y":1.25},
                {"x":7, "y":1.25},
                {"x":8, "y":1.25},
                {"x":9, "y":1.25},
                {"x":10, "y":1.25},
                {"x":11, "y":1.25},
                {"x":12, "y":1.25},
                {"x":13, "y":1.25, "w":2},
                {"x":15.25, "y":1.25},

                {"x":0, "y":2.25, "w":1.5},
                {"x":1.5, "y":2.25},
                {"x":2.5, "y":2.25},
                {"x":3.5, "y":2.25},
                {"x":4.5, "y":2.25},
                {"x":5.5, "y":2.25},
                {"x":6.5, "y":2.25},
                {"x":7.5, "y":2.25},
                {"x":8.5, "y":2.25},
                {"x":9.5, "y":2.25},
                {"x":10.5, "y":2.25},
                {"x":11.5, "y":2.25},
                {"x":12.5, "y":2.25},
                {"x":13.5, "y":2.25, "w":1.5},
                {"x":15.25, "y":2.25},

                {"x":0, "y":3.25, "w":1.75},
                {"x":1.75, "y":3.25},
                {"x":2.75, "y":3.25},
                {"x":3.75, "y":3.25},
                {"x":4.75, "y":3.25},
                {"x":5.75, "y":3.25},
                {"x":6.75, "y":3.25},
                {"x":7.75, "y":3.25},
                {"x":8.75, "y":3.25},
                {"x":9.75, "y":3.25},
                {"x":10.75, "y":3.25},
                {"x":11.75, "y":3.25},
                {"x":12.75, "y":3.25, "w":2.25},
                {"x":15.25, "y":3.25},

                {"x":0, "y":4.25, "w":2.25},
                {"x":2.25, "y":4.25},
                {"x":3.25, "y":4.25},
                {"x":4.25, "y":4.25},
                {"x":5.25, "y":4.25},
                {"x":6.25, "y":4.25},
                {"x":7.25, "y":4.25},
                {"x":8.25, "y":4.25},
                {"x":9.25, "y":4.25},
                {"x":10.25, "y":4.25},
                {"x":11.25, "y":4.25},
                {"x":12.25, "y":4.25, "w":1.75},
                {"x":14.25, "y":4.5},

                {"x":0, "y":5.25, "w":1.5},
                {"x":1.5, "y":5.25, "w":1.5},
                {"x":3, "y":5.25, "w":7},
                {"x":10, "y":5.25, "w":1.5},
                {"x":11.5, "y":5.25, "w":1.5},
                {"x":13.25, "y":5.5},
                {"x":14.25, "y":5.5},
                {"x":15.25, "y":5.5}
            ]
        },
        "LAYOUT_iso": {
            "layout": [
                {"x":0, "y":0},
                {"x":2, "y":0},
                {"x":3, "y":0},
                {"x":4, "y":0},
                {"x":5, "y":0},
                {"x":6.5, "y":0},
                {"x":7.5, "y":0},
                {"x":8.5, "y":0},
                {"x":9.5, "y":0},
                {"x":11, "y":0},
                {"x":12, "y":0},
                {"x":13, "y":0},
                {"x":14, "y":0},
                {"x":15.25, "y":0},

                {"x":0, "y":1.25},
                {"x":1, "y":1.25},
                {"x":2, "y":1.25},
                {"x":3, "y":1.25},
                {"x":4, "y":1.25},
                {"x":5, "y":1.25},
                {"x":6, "y":1.25},
                {"x":7, "y":1.25},
                {"x":8, "y":1.25},
                {"x":9, "y":1.25},
                {"x":10, "y":1.25},
                {"x":11, "y":1.25},
                {"x":12, "y":1.25},
                {"x":13, "y":1.25, "w":2},
                {"x":15.25, "y":1.25},

                {"x":0, "y":2.25, "w":1.5},
                {"x":1.5, "y":2.25},
                {"x":2.5, "y":2.25},
                {"x":3.5, "y":2.25},
                {"x":4.5, "y":2.25},
                {"x":5.5, "y":2.25},
                {"x":6.5, "y":2.25},
                {"x":7.5, "y":2.25},
                {"x":8.5, "y":2.25},
                {"x":9.5, "y":2.25},
                {"x":10.5, "y":2.25},
                {"x":11.5, "y":2.25},
                {"x":12.5, "y":2.25},
                {"x":15.25, "y":2.25},

                {"x":0, "y":3.25, "w":1.75},
                {"x":1.75, "y":3.25},
                {"x":2.75, "y":3.25},
                {"x":3.75, "y":3.25},
                {"x":4.75, "y":3.25},
                {"x":5.75, "y":3.25},
                {"x":6.75, "y":3.25},
                {"x":7.75, "y":3.25},
                {"x":8.75, "y":3.25},
                {"x":9.75, "y":3.25},
                {"x":10.75, "y":3.25},
                {"x":11.75, "y":3.25},
                {"x":12.75, "y":3.25},
                {"x":13.75, "y":2.25, "w":1.25, "h":2},
                {"x":15.25, "y":3.25},

                {"x":0, "y":4.25, "w":1.25},
                {"x":1.25, "y":4.25},
                {"x":2.25, "y":4.25},
                {"x":3.25, "y":4.25},
                {"x":4.25, "y":4.25},
                {"x":5.25, "y":4.25},
                {"x":6.25, "y":4.25},
                {"x":7.25, "y":4.25},
                {"x":8.25, "y":4.25},
                {"x":9.25, "y":4.25},
                {"x":10.25, "y":4.25},
                {"x":11.25, "y":4.25},
                {"x":12.25, "y":4.25, "w":1.75},
                {"x":14.25, "y":4.5},

                {"x":0, "y":5.25, "w":1.25},
                {"x":1.25, "y":5.25, "w":1.25},
                {"x":2.5, "y":5.25, "w":1.25},
                {"x":3.75, "y":5.25, "w":6.25},
                {"x":10, "y":5.25, "w":1.5},
                {"x":11.5, "y":5.25, "w":1.5},
                {"x":13.25, "y":5.5},
                {"x":14.25, "y":5.5},
                {"x":15.25, "y":5.5}
            ]
        },
        "LAYOUT_iso_wkl": {
            "layout": [
                {"x":0, "y":0},
                {"x":2, "y":0},
                {"x":3, "y":0},
                {"x":4, "y":0},
                {"x":5, "y":0},
                {"x":6.5, "y":0},
                {"x":7.5, "y":0},
                {"x":8.5, "y":0},
                {"x":9.5, "y":0},
                {"x":11, "y":0},
                {"x":12, "y":0},
                {"x":13, "y":0},
                {"x":14, "y":0},
                {"x":15.25, "y":0},

                {"x":0, "y":1.25},
                {"x":1, "y":1.25},
                {"x":2, "y":1.25},
                {"x":3, "y":1.25},
                {"x":4, "y":1.25},
                {"x":5, "y":1.25},
                {"x":6, "y":1.25},
                {"x":7, "y":1.25},
                {"x":8, "y":1.25},
                {"x":9, "y":1.25},
                {"x":10, "y":1.25},
                {"x":11, "y":1.25},
                {"x":12, "y":1.25},
                {"x":13, "y":1.25, "w":2},
                {"x":15.25, "y":1.25},

                {"x":0, "y":2.25, "w":1.5},
                {"x":1.5, "y":2.25},
                {"x":2.5, "y":2.25},
                {"x":3.5, "y":2.25},
                {"x":4.5, "y":2.25},
                {"x":5.5, "y":2.25},
                {"x":6.5, "y":2.25},
                {"x":7.5, "y":2.25},
                {"x":8.5, "y":2.25},
                {"x":9.5, "y":2.25},
                {"x":10.5, "y":2.25},
                {"x":11.5, "y":2.25},
                {"x":12.5, "y":2.25},
                {"x":15.25, "y":2.25},

                {"x":0, "y":3.25, "w":1.75},
                {"x":1.75, "y":3.25},
                {"x":2.75, "y":3.25},
                {"x":3.75, "y":3.25},
                {"x":4.75, "y":3.25},
                {"x":5.75, "y":3.25},
                {"x":6.75, "y":3.25},
                {"x":7.75, "y":3.25},
                {"x":8.75, "y":3.25},
                {"x":9.75, "y":3.25},
                {"x":10.75, "y":3.25},
                {"x":11.75, "y":3.25},
                {"x":12.75, "y":3.25},
                {"x":13.75, "y":2.25, "w":1.25, "h":2},
                {"x":15.25, "y":3.25},

                {"x":0, "y":4.25, "w":1.25},
                {"x":1.25, "y":4.25},
                {"x":2.25, "y":4.25},
                {"x":3.25, "y":4.25},
                {"x":4.25, "y":4.25},
                {"x":5.25, "y":4.25},
                {"x":6.25, "y":4.25},
                {"x":7.25, "y":4.25},
                {"x":8.25, "y":4.25},
                {"x":9.25, "y":4.25},
                {"x":10.25, "y":4.25},
                {"x":11.25, "y":4.25},
                {"x":12.25, "y":4.25, "w":1.75},
                {"x":14.25, "y":4.5},

                {"x":0, "y":5.25, "w":1.5},
                {"x":1.5, "y":5.25, "w":1.5},
                {"x":3, "y":5.25, "w":7},
                {"x":10, "y":5.25, "w":1.5},
                {"x":11.5, "y":5.25, "w":1.5},
                {"x":13.25, "y":5.5},
                {"x":14.25, "y":5.5},
                {"x":15.25, "y":5.5}
            ]
        }
    }
  }
}

M keyboards/linworks/whale75/keymaps/default/keymap.c => keyboards/linworks/whale75/keymaps/default/keymap.c +4 -4
@@ 21,8 21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,                      KC_MUTE,
        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_TRNS,  KC_BSPC,  KC_INS,
        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,            KC_DEL,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,           KC_UP,    KC_HOME,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,             KC_HOME,
        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,           KC_UP,
        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),             KC_LEFT, KC_DOWN,  KC_RGHT
        ),



@@ 30,8 30,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC,  BL_INC,  RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPI, RGB_SPI,                    KC_MPLY,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_PGUP,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_PGDN,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_END,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_END,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, MO(1),            KC_TRNS, KC_TRNS,  KC_TRNS
       ),
};

M keyboards/linworks/whale75/keymaps/via/keymap.c => keyboards/linworks/whale75/keymaps/via/keymap.c +8 -8
@@ 21,8 21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,                      KC_MUTE,
        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_TRNS,  KC_BSPC,  KC_INS,
        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,            KC_DEL,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,           KC_UP,    KC_HOME,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,             KC_HOME,
        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,           KC_UP,
        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),             KC_LEFT, KC_DOWN,  KC_RGHT
        ),



@@ 30,16 30,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC,  BL_INC,  RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, KC_TRNS, KC_TRNS,                    KC_MPLY,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_PGUP,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_PGDN,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_END,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_END,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,  KC_TRNS
       ),
    [2] = LAYOUT_all(    /* keymap for layer 2 */
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,                    KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,  KC_TRNS
       ),



@@ 47,8 47,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,                    KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,  KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,           KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,  KC_TRNS
       ),
};

M keyboards/linworks/whale75/whale75.c => keyboards/linworks/whale75/whale75.c +26 -0
@@ 14,3 14,29 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include "whale75.h"

#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
    if (!encoder_update_user(index, clockwise)) { return false; }
    if (index == 0) {
        /* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */
        switch(get_highest_layer(layer_state)){
            case 1:
                if (clockwise) {
                    tap_code(KC_MNXT);
                } else {
                    tap_code(KC_MPRV);
                }
                break;
            default:
                if (clockwise){
                    tap_code(KC_VOLU);
                } else{
                    tap_code(KC_VOLD);
                }
                break;
        }
    }
    return true;
}
#endif

M keyboards/linworks/whale75/whale75.h => keyboards/linworks/whale75/whale75.h +83 -60
@@ 18,82 18,105 @@

#include "quantum.h"

#define XXX KC_NO

/*
 *              ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐
 *              │00 │   │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0F │
 *              └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘
 *              ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐    ┌───────┐
 *              │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │1F │    │1E     │ 2u Backspace
 *              ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤    └─┬─────┤
 *              │20   │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2E   │ │2F │      │     │
 *  2.25u       ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤   ┌──┴┐3E  │ ISO
 *  LShift      │30    │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3E      │ │4F │   │3D │    │ Enter
 * ┌────────┐   ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ └───┘   └───┴────┘
 * │40      │   │40  │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4D    │ ┌───┐
 * └────────┘   ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘ │4E │
 *              │50  │51  │52  │56                      │5A   │5B   │ ┌───┼───┼───┐
 *              └────┴────┴────┴────────────────────────┴─────┴─────┘ │5D │5E │5F │
 *                                                                    └───┴───┴───┘
 *              ┌─────┬─────┬───────────────────────────┬─────┬─────┐
 *          WKL │50   │52   │56                         │5A   │5B   │
 *              └─────┴─────┴───────────────────────────┴─────┴─────┘
 */

#define LAYOUT_all( \
    K000,         K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,         K015, \
    K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114,  K115, \
    K200,         K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215, \
    K300,         K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,        \
    K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,         K413,  K414,  K415, \
    K500,  K501,  K502,                       K506,                       K510,  K511,         K513,  K514,  K515  \
    K00,        K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,        K0F, \
    K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1D,  K1E,  K1F, \
    K20,        K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F, \
    K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K4F, \
    K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,  K4E,       \
    K50,  K51,  K52,                    K56,                    K5A,  K5B,        K5D,  K5E,  K5F  \
) { \
  { K000,  KC_NO, K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  KC_NO, K015  }, \
  { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114,  K115  }, \
  { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215  }, \
  { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  KC_NO }, \
  { K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  KC_NO, K413,  K414,  K415  }, \
  { K500,  K501,  K502,  KC_NO, KC_NO, KC_NO, K506,  KC_NO, KC_NO, KC_NO, K510,  K511,  KC_NO, K513,  K514,  K515  }  \
    { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
    { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
    { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, XXX }, \
    { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
    { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F }  \
}

#define LAYOUT_ansi( \
    K000,         K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,         K015, \
    K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,         K114,  K115, \
    K200,         K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215, \
    K300,         K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,         K314,        \
    K400,         K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,         K413,  K414,  K415, \
    K500,  K501,  K502,                       K506,                       K510,  K511,         K513,  K514,  K515  \
    K00,        K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,        K0F, \
    K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,        K1E,  K1F, \
    K20,        K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F, \
    K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,        K3E,  K4F, \
    K40,        K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,  K4E,       \
    K50,  K51,  K52,                    K56,                    K5A,  K5B,        K5D,  K5E,  K5F  \
) { \
  { K000,  KC_NO, K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  KC_NO, K015  }, \
  { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO, K114,  K115  }, \
  { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215  }, \
  { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  KC_NO, K314,  KC_NO }, \
  { K400,  KC_NO, K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  KC_NO, K413,  K414,  K415  }, \
  { K500,  K501,  K502,  KC_NO, KC_NO, KC_NO, K506,  KC_NO, KC_NO, KC_NO, K510,  K511,  KC_NO, K513,  K514,  K515  }  \
    { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
    { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
    { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E, XXX }, \
    { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
    { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F }  \
}

#define LAYOUT_ansi_wkl( \
    K000,         K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,         K015, \
    K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,         K114,  K115, \
    K200,         K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215, \
    K300,         K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,         K314,        \
    K400,         K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,         K413,  K414,  K415, \
    K500,         K502,                       K506,                       K510,  K511,         K513,  K514,  K515  \
    K00,        K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,        K0F, \
    K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,        K1E,  K1F, \
    K20,        K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F, \
    K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,        K3E,  K4F, \
    K40,        K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,  K4E,       \
    K50,        K52,                    K56,                    K5A,  K5B,        K5D,  K5E,  K5F  \
) { \
  { K000,  KC_NO, K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  KC_NO, K015  }, \
  { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO, K114,  K115  }, \
  { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215  }, \
  { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  KC_NO, K314,  KC_NO }, \
  { K400,  KC_NO, K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  KC_NO, K413,  K414,  K415  }, \
  { K500,  KC_NO, K502,  KC_NO, KC_NO, KC_NO, K506,  KC_NO, KC_NO, KC_NO, K510,  K511,  KC_NO, K513,  K514,  K515  }  \
    { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
    { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
    { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E, XXX }, \
    { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
    { K50, XXX, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F }  \
}

#define LAYOUT_iso( \
    K000,         K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,         K015, \
    K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,         K114,  K115, \
    K200,         K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,         K215, \
    K300,         K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,        \
    K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,         K413,  K414,  K415, \
    K500,  K501,  K502,                       K506,                       K510,  K511,         K513,  K514,  K515  \
    K00,        K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,        K0F, \
    K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,        K1E,  K1F, \
    K20,        K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,        K2F, \
    K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K4F, \
    K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,  K4E,       \
    K50,  K51,  K52,                    K56,                    K5A,  K5B,        K5D,  K5E,  K5F  \
) { \
  { K000,  KC_NO, K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  KC_NO, K015  }, \
  { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO, K114,  K115  }, \
  { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  KC_NO, K215  }, \
  { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  KC_NO }, \
  { K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  KC_NO, K413,  K414,  K415  }, \
  { K500,  K501,  K502,  KC_NO, KC_NO, KC_NO, K506,  KC_NO, KC_NO, KC_NO, K510,  K511,  KC_NO, K513,  K514,  K515  }  \
    { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
    { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
    { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, XXX }, \
    { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
    { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F }  \
}

#define LAYOUT_iso_wkl( \
    K000,         K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,         K015, \
    K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,         K114,  K115, \
    K200,         K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,         K215, \
    K300,         K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,        \
    K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,         K413,  K414,  K415, \
    K500,         K502,                       K506,                       K510,  K511,         K513,  K514,  K515  \
    K00,        K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,        K0F, \
    K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,        K1E,  K1F, \
    K20,        K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,        K2F, \
    K30,        K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K4F, \
    K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,  K4E,       \
    K50,        K52,                    K56,                    K5A,  K5B,        K5D,  K5E,  K5F  \
) { \
  { K000,  KC_NO, K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  KC_NO, K015  }, \
  { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO, K114,  K115  }, \
  { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  KC_NO, K215  }, \
  { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  KC_NO }, \
  { K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  KC_NO, K413,  K414,  K415  }, \
  { K500,  KC_NO, K502,  KC_NO, KC_NO, KC_NO, K506,  KC_NO, KC_NO, KC_NO, K510,  K511,  KC_NO, K513,  K514,  K515  }  \
    { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
    { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
    { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, XXX }, \
    { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
    { K50, XXX, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F }  \
}