1
0
Fork 0
forked from forks/qmk_firmware

Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2023-03-10 17:52:09 +00:00
commit 5a60010f74
9 changed files with 136 additions and 90 deletions

View file

@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B1, B2, B3, B7, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B0, C6, B6, B5, D5, D3, D2, D1, D0 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */

View file

@ -1,18 +1,98 @@
{
"keyboard_name": "Zeno",
"url": "https://sandkeys.me",
"maintainer": "paulgali",
"manufacturer": "SKME",
"url": "https://baul.xyz",
"maintainer": "qmk",
"usb": {
"vid": "0x4048",
"pid": "0x0001",
"device_version": "0.0.1"
"device_version": "0.0.4"
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"matrix_pins": {
"cols": ["F0", "F1", "F4", "F5", "F6", "F7", "B0", "C6", "B6", "B5", "D5", "D3", "D2", "D1", "D0"],
"rows": ["B1", "B2", "B3", "B7", "C7"]
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true
},
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0.25, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":0.25, "y":1, "w":1.5}, {"x":1.75, "y":1}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":0.15, "y":2, "w":1.75}, {"x":1.9, "y":2}, {"x":2.9, "y":2}, {"x":3.9, "y":2}, {"x":4.9, "y":2}, {"x":5.9, "y":2}, {"x":9.05, "y":2}, {"x":10.05, "y":2}, {"x":11.05, "y":2}, {"x":12.05, "y":2}, {"x":13.05, "y":2}, {"x":14.05, "y":2}, {"x":15.05, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":8.55, "y":3}, {"x":9.55, "y":3}, {"x":10.55, "y":3}, {"x":11.55, "y":3}, {"x":12.55, "y":3}, {"x":13.55, "y":3}, {"x":14.55, "y":3, "w":1.75}, {"x":16.3, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"x":8.55, "y":4, "w":2.75}, {"x":11.3, "y":4, "w":1.5}, {"x":15.8, "y":4, "w":1.5}]
"layout": [
{"matrix":[0,0], "x":0.6, "y":0.25},
{"matrix":[0,1], "x":1.6, "y":0.25},
{"matrix":[0,2], "x":2.6, "y":0.235},
{"matrix":[0,3], "x":0, "y":1.3001},
{"matrix":[0,4], "x":1, "y":1.3001},
{"matrix":[0,5], "x":2, "y":1.3001},
{"matrix":[0,6], "x":3, "y":1.3001},
{"matrix":[0,7], "x":-3.75, "y":3.3},
{"matrix":[0,8], "x":-2.75, "y":3.3},
{"matrix":[0,9], "x":-1.75, "y":3.3},
{"matrix":[0,10], "x":-0.75, "y":3.3},
{"matrix":[0,11], "x":12.75, "y":0.28},
{"matrix":[0,12], "x":13.75, "y":0.3001},
{"matrix":[0,13], "x":14.75, "y":0.3001},
{"matrix":[1,14], "x":15.75, "y":0.3001},
{"matrix":[1,0], "x":0.5, "y":1.25, "w":1.5},
{"matrix":[1,1], "x":2, "y":1.25},
{"matrix":[1,2], "x":-0.5, "y":2.3001},
{"matrix":[1,3], "x":0.5, "y":2.3001},
{"matrix":[1,4], "x":1.5, "y":2.3001},
{"matrix":[1,5], "x":2.5, "y":2.3001},
{"matrix":[1,6], "x":-4.25, "y":4.3},
{"matrix":[1,7], "x":-3.25, "y":4.3},
{"matrix":[1,8], "x":-2.25, "y":4.3},
{"matrix":[1,9], "x":-1.25, "y":4.3},
{"matrix":[1,10], "x":12.4, "y":1.28},
{"matrix":[1,11], "x":13.4, "y":1.3},
{"matrix":[1,12], "x":14.4, "y":1.3},
{"matrix":[1,13], "x":15.4, "y":1.3, "w":1.5},
{"matrix":[2,0], "x":0.4, "y":2.25, "w":1.75},
{"matrix":[2,1], "x":2.15, "y":2.25},
{"matrix":[2,2], "x":-0.25, "y":3.3001},
{"matrix":[2,3], "x":0.75, "y":3.3001},
{"matrix":[2,4], "x":1.75, "y":3.3001},
{"matrix":[2,5], "x":2.75, "y":3.3001},
{"matrix":[2,6], "x":-3.95, "y":5.3},
{"matrix":[2,7], "x":-2.95, "y":5.3},
{"matrix":[2,8], "x":-1.9501, "y":5.3},
{"matrix":[2,9], "x":-0.9501, "y":5.3},
{"matrix":[2,10], "x":12.8, "y":2.3001},
{"matrix":[2,11], "x":13.8, "y":2.3001},
{"matrix":[2,12], "x":14.8, "y":2.3001, "w":2.25},
{"matrix":[3,0], "x":0.25, "y":3.25, "w":2.25},
{"matrix":[3,1], "x":2.5, "y":3.25},
{"matrix":[3,2], "x":0.25, "y":4.3},
{"matrix":[3,3], "x":1.25, "y":4.3},
{"matrix":[3,4], "x":2.25, "y":4.3},
{"matrix":[3,5], "x":3.25, "y":4.3},
{"matrix":[3,6], "x":-4.45, "y":6.3},
{"matrix":[3,7], "x":-3.45, "y":6.3},
{"matrix":[3,8], "x":-2.45, "y":6.3},
{"matrix":[3,9], "x":-1.4501, "y":6.3},
{"matrix":[3,10], "x":12.4, "y":3.3001},
{"matrix":[3,11], "x":13.4, "y":3.3001},
{"matrix":[3,12], "x":14.4, "y":3.3001, "w":1.75},
{"matrix":[3,14], "x":16.15, "y":3.3001},
{"matrix":[4,0], "x":0.25, "y":4.3, "w":1.25},
{"matrix":[4,1], "x":1.5, "y":4.3, "w":1.25},
{"matrix":[4,3], "x":0.5, "y":5.3},
{"matrix":[4,5], "x":-7.8, "y":8.45, "w":2.75},
{"matrix":[4,7], "x":-4.45, "y":7.3, "w":2},
{"matrix":[4,8], "x":-2.45, "y":7.3},
{"matrix":[4,9], "x":-1.4501, "y":7.3, "w":1.25},
{"matrix":[4,12], "x":14.65, "y":4.3, "w":1.25},
{"matrix":[4,14], "x":15.9, "y":4.3, "w":1.25}
]
}
}
}

View file

@ -17,19 +17,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_default(
QK_GESC, 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_BSLS, KC_DEL,
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_BSPC,
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_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RCTL
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RALT, MO(1), KC_RCTL
),
[1] = LAYOUT_default(
QK_BOOT, 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_TRNS, KC_TRNS,
CL_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
CL_CTRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_GRV, 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_TRNS, QK_BOOT,
CL_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
CL_CTRL, KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1,35 @@
/*
Copyright 2020 Holten Campbell
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_default(
QK_GESC, 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_BSLS, KC_DEL,
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_BSPC,
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_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RALT, MO(1), KC_RCTL
),
[1] = LAYOUT_default(
KC_GRV, 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_TRNS, QK_BOOT,
CL_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
CL_CTRL, KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -23,27 +23,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_BSPC,
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_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RCTL
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RALT, MO(1), KC_RCTL
),
[1] = LAYOUT_default(
QK_BOOT, 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_TRNS, KC_TRNS,
CL_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
CL_CTRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_GRV, 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_TRNS, QK_BOOT,
CL_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
CL_CTRL, KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_default(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_default(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -11,7 +11,7 @@ The PCB features:
---
* Keyboard Maintainer: [paulgali](https://github.com/paulgali)
* Hardware Supported: ZenoPCB for the Zeno Ergo 60%
* Hardware Supported: ZenoPCB for the Zeno Ergo 60%, atmega32u4
* Hardware Availability: https://sandkeys.me
Make example for this keyboard (after setting up your build environment):
@ -28,4 +28,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
* **Physical reset button**: Briefly press the button on the back of the PCB
* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
* **Keycode in layout**: Press the Top Right (delete/grv) key on layer 1 which is mapped to `QK_BOOT`

View file

@ -1,14 +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 = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes
# left blank intentionally, moved to info.json

View file

@ -1,16 +0,0 @@
/* Copyright 2019 Holten Campbell
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "zeno.h"

View file

@ -1,36 +0,0 @@
/* Copyright 2019 Holten Campbell
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define K_NO KC_NO
#define LAYOUT_default( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K114, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \
K400, K401, K403, K405, K407, K409, K414 \
) \
{ \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K_NO }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K_NO, K_NO }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K_NO, K314 }, \
{ K400, K401, K_NO, K403, K_NO, K405, K_NO, K407, K_NO, K409, K_NO, K_NO, K_NO, K_NO, K414 } \
}