summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboards/adpenrose/shisaku/config.h37
-rw-r--r--keyboards/adpenrose/shisaku/info.json17
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/default/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/default/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk4
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/rules.mk2
-rw-r--r--keyboards/adpenrose/shisaku/readme.md29
-rw-r--r--keyboards/adpenrose/shisaku/rules.mk18
-rw-r--r--keyboards/adpenrose/shisaku/shisaku.c4
-rw-r--r--keyboards/adpenrose/shisaku/shisaku.h32
14 files changed, 242 insertions, 0 deletions
diff --git a/keyboards/adpenrose/shisaku/config.h b/keyboards/adpenrose/shisaku/config.h
new file mode 100644
index 0000000000..7371685ca6
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/config.h
@@ -0,0 +1,37 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B2, B0, B1, D0, B4, D6, B3, D7 }
+#define MATRIX_COL_PINS { D1, C3, C4, D4, C0, C1, C2 }
+//#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Solenoid pin */
+#define SOLENOID_PIN C5
diff --git a/keyboards/adpenrose/shisaku/info.json b/keyboards/adpenrose/shisaku/info.json
new file mode 100644
index 0000000000..6f765ba648
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "shisaku",
+ "url": "https://github.com/ADPenrose/shisaku_keeb",
+ "maintainer": "ADPenrose",
+ "usb": {
+ "vid": "0x4450",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":1.25, "y":0}, {"label":"Q", "x":2.25, "y":0}, {"label":"W", "x":3.25, "y":0}, {"label":"E", "x":4.25, "y":0}, {"label":"R", "x":5.25, "y":0}, {"label":"T", "x":6.25, "y":0}, {"label":"Y", "x":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"Backspace", "x":12.75, "y":0, "w":1.5}, {"label":"Caps Lock", "x":0.5, "y":1, "w":1.75}, {"label":"A", "x":2.25, "y":1}, {"label":"S", "x":3.25, "y":1}, {"label":"D", "x":4.25, "y":1}, {"label":"F", "x":5.25, "y":1}, {"label":"G", "x":6.25, "y":1}, {"label":"H", "x":7.75, "y":1}, {"label":"J", "x":8.75, "y":1}, {"label":"K", "x":9.75, "y":1}, {"label":"L", "x":10.75, "y":1}, {"label":":", "x":11.75, "y":1}, {"label":"Enter", "x":12.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.25}, {"label":"Fn", "x":1.25, "y":2}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"B", "x":7.75, "y":2}, {"label":"N", "x":8.75, "y":2}, {"label":"M", "x":9.75, "y":2}, {"label":"<", "x":10.75, "y":2}, {"label":">", "x":11.75, "y":2}, {"label":"Up", "x":12.75, "y":2}, {"label":"?", "x":13.75, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.5}, {"label":"Win", "x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"label":"Alt", "x":6.25, "y":3}, {"x":7.75, "y":3, "w":2.75}, {"label":"Left", "x":11.75, "y":3}, {"label":"Down", "x":12.75, "y":3}, {"label":"Right", "x":13.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/adpenrose/shisaku/keymaps/default/keymap.c b/keyboards/adpenrose/shisaku/keymaps/default/keymap.c
new file mode 100644
index 0000000000..43ab3d7528
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_ENT,
+ KC_LSFT, MO(2), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/adpenrose/shisaku/keymaps/default/readme.md b/keyboards/adpenrose/shisaku/keymaps/default/readme.md
new file mode 100644
index 0000000000..6f49aff82e
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Shisaku \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c b/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c
new file mode 100644
index 0000000000..c3955bf0b1
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_ENT,
+ KC_LSFT, MO(2), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, HPT_TOG,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md b/keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md
new file mode 100644
index 0000000000..e9d4bb6af9
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md
@@ -0,0 +1 @@
+# Solenoid keymap for Shisaku
diff --git a/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk b/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk
new file mode 100644
index 0000000000..e13f2bd035
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER += SOLENOID \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/keymaps/via/keymap.c b/keyboards/adpenrose/shisaku/keymaps/via/keymap.c
new file mode 100644
index 0000000000..43ab3d7528
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/via/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_ENT,
+ KC_LSFT, MO(2), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/adpenrose/shisaku/keymaps/via/readme.md b/keyboards/adpenrose/shisaku/keymaps/via/readme.md
new file mode 100644
index 0000000000..f7d4f74fdb
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/via/readme.md
@@ -0,0 +1 @@
+# VIA keymap for Shisaku \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/keymaps/via/rules.mk b/keyboards/adpenrose/shisaku/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/adpenrose/shisaku/readme.md b/keyboards/adpenrose/shisaku/readme.md
new file mode 100644
index 0000000000..6a3ffeffda
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/readme.md
@@ -0,0 +1,29 @@
+# Shisaku
+
+![shisaku](https://i.imgur.com/42H1h1dh.jpg)
+
+A 40% alice-like keyboard assembled only with THT components, including the option for a solenoid.
+
+## General info
+
+* Keyboard Maintainer: [Arturo Avila](https://github.com/ADPenrose)
+* Hardware Supported: Shisaku v1 PCB
+* Hardware Availability: [Arturo Avila](https://github.com/ADPenrose)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make adpenrose/shisaku:default
+
+Flashing example for this keyboard:
+
+ make adpenrose/shisaku:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Hold down the button labeled "BOOT" and briefly press the button labeled "RESET" on the back of the PCB. To exit the bootloader mode, briefly press the button labeled "RESET" once more.
+* **Keycode in layout**: Press the key mapped to "QK BOOT" if it is available
diff --git a/keyboards/adpenrose/shisaku/rules.mk b/keyboards/adpenrose/shisaku/rules.mk
new file mode 100644
index 0000000000..ef08ed4a06
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega328p
+
+# Bootloader selection
+BOOTLOADER = usbasploader
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # 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 = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/shisaku.c b/keyboards/adpenrose/shisaku/shisaku.c
new file mode 100644
index 0000000000..a1ab356ac6
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/shisaku.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "shisaku.h"
diff --git a/keyboards/adpenrose/shisaku/shisaku.h b/keyboards/adpenrose/shisaku/shisaku.h
new file mode 100644
index 0000000000..ea92202435
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/shisaku.h
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k10, k11, k12, k13, k14, \
+ k15, k16, k20, k21, k22, k23, k24, k25, k26, k30, k33, k34, \
+ k35, k40, k41, k42, k43, k44, k45, k50, k51, k52, k53, k54, k55, k60, \
+ k61, k62, k63, k64, k65, k70, k74, k75 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06 }, \
+ { k10, k11, k12, k13, k14, k15, k16 }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, XXX, XXX, k33, k34, k35, XXX }, \
+ { k40, k41, k42, k43, k44, k45, XXX }, \
+ { k50, k51, k52, k53, k54, k55, XXX }, \
+ { k60, k61, k62, k63, k64, k65, XXX }, \
+ { k70, XXX, XXX, XXX, k74, k75, XXX } \
+}