]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
[Keyboard] UniGo66 keyboard added (#4913)
authorDaniel H Klein <danielklein@utexas.edu>
Sun, 27 Jan 2019 08:12:05 +0000 (00:12 -0800)
committerDrashna Jaelre <drashna@live.com>
Sun, 27 Jan 2019 08:12:05 +0000 (00:12 -0800)
* UniGo66 keyboard added

* UniGo66 keyboard added

* case correction of unigo66 files

* create sirius folder

* Update keyboards/sirius/unigo66/rules.mk

Co-Authored-By: danielhklein <danielklein@utexas.edu>
* Update keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c

Co-Authored-By: danielhklein <danielklein@utexas.edu>
* Update keyboards/sirius/unigo66/keymaps/default/config.h

Co-Authored-By: danielhklein <danielklein@utexas.edu>
* Update keyboards/sirius/unigo66/keymaps/danielhklein/config.h

Co-Authored-By: danielhklein <danielklein@utexas.edu>
* debugging

* correct keymap to layout

* readme

* remove common config

* suggested changes to config.h

* default keymap cleanup

14 files changed:
keyboards/sirius/unigo66/README.md [new file with mode: 0644]
keyboards/sirius/unigo66/config.h [new file with mode: 0644]
keyboards/sirius/unigo66/custom_matrix.cpp [new file with mode: 0644]
keyboards/sirius/unigo66/info.json [new file with mode: 0644]
keyboards/sirius/unigo66/keymaps/danielhklein/config.h [new file with mode: 0644]
keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c [new file with mode: 0644]
keyboards/sirius/unigo66/keymaps/default/config.h [new file with mode: 0644]
keyboards/sirius/unigo66/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/sirius/unigo66/main.c [new file with mode: 0644]
keyboards/sirius/unigo66/matrix.c [new file with mode: 0644]
keyboards/sirius/unigo66/readme.md [new file with mode: 0644]
keyboards/sirius/unigo66/rules.mk [new file with mode: 0644]
keyboards/sirius/unigo66/unigo66.c [new file with mode: 0644]
keyboards/sirius/unigo66/unigo66.h [new file with mode: 0644]

diff --git a/keyboards/sirius/unigo66/README.md b/keyboards/sirius/unigo66/README.md
new file mode 100644 (file)
index 0000000..78a02ed
--- /dev/null
@@ -0,0 +1,17 @@
+# UniGo66
+
+![UniGo66](https://i.imgur.com/ZKlcncg.png)
+
+The UniGo66 is an ergonomic wireless keyboard designed by Sirius and manufactured by ALF Studios. 
+
+Join ALF Studios on [Discord](https://discord.gg/GJ8bdM)
+
+Make example:
+
+       make sirius/unigo66:default
+
+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).
+
+To get the U2U into DFU flashing mode, insert the U2U into the computer and press the button in the red circle shown below
+
+![U2U](https://i.imgur.com/WKwgDjZ.png)
\ No newline at end of file
diff --git a/keyboards/sirius/unigo66/config.h b/keyboards/sirius/unigo66/config.h
new file mode 100644 (file)
index 0000000..883de44
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+Copyright 2017 Balz Guenat <balz.guenat@gmail.com>
+
+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
+
+#define CUSTOM_MATRIX 2
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0x5369
+#define PRODUCT_ID      0x005B
+#define DEVICE_VER      0x0814
+#define MANUFACTURER    Sirius
+#define PRODUCT         UniGo66
+#define DESCRIPTION     UniGo66 Wireless Split keyboard
+
+
+/* size of virtual matrix */
+#define MATRIX_ROWS 16
+#define MATRIX_COLS 16
+
+/* matrix scanning is done in custom_matrix.cpp */
+#define DIODE_DIRECTION CUSTOM_MATRIX
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/sirius/unigo66/custom_matrix.cpp b/keyboards/sirius/unigo66/custom_matrix.cpp
new file mode 100644 (file)
index 0000000..fba107c
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+Copyright 2016 Jun Wako <wakojun@gmail.com>
+
+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 <stdint.h>
+#include <stdbool.h>
+
+// USB HID host
+#include "Usb.h"
+#include "usbhub.h"
+#include "hid.h"
+#include "hidboot.h"
+#include "parser.h"
+
+#include "keycode.h"
+#include "util.h"
+#include "print.h"
+#include "debug.h"
+#include "timer.h"
+#include "matrix.h"
+#include "led.h"
+#include "host.h"
+#include "keyboard.h"
+
+extern "C" {
+#include "quantum.h"
+}
+
+/* KEY CODE to Matrix
+ *
+ * HID keycode(1 byte):
+ * Higher 5 bits indicates ROW and lower 3 bits COL.
+ *
+ *  7 6 5 4 3 2 1 0
+ * +---------------+
+ * |  ROW  |  COL  |
+ * +---------------+
+ *
+ * Matrix space(16 * 16):
+ *   r\c0123456789ABCDEF
+ *   0 +----------------+
+ *   : |                |
+ *   : |                |
+ *  16 +----------------+
+ */
+#define ROW_MASK 0xF0
+#define COL_MASK 0x0F
+#define CODE(row, col)  (((row) << 4) | (col))
+#define ROW(code)       (((code) & ROW_MASK) >> 4)
+#define COL(code)       ((code) & COL_MASK)
+#define ROW_BITS(code)  (1 << COL(code))
+
+
+// Integrated key state of all keyboards
+static report_keyboard_t local_keyboard_report;
+
+static bool matrix_is_mod = false;
+
+/*
+ * USB Host Shield HID keyboards
+ * This supports two cascaded hubs and four keyboards
+ */
+USB usb_host;
+USBHub hub1(&usb_host);
+USBHub hub2(&usb_host);
+HIDBoot<HID_PROTOCOL_KEYBOARD>    kbd1(&usb_host);
+HIDBoot<HID_PROTOCOL_KEYBOARD>    kbd2(&usb_host);
+HIDBoot<HID_PROTOCOL_KEYBOARD>    kbd3(&usb_host);
+HIDBoot<HID_PROTOCOL_KEYBOARD>    kbd4(&usb_host);
+KBDReportParser kbd_parser1;
+KBDReportParser kbd_parser2;
+KBDReportParser kbd_parser3;
+KBDReportParser kbd_parser4;
+
+
+extern "C"
+{
+    uint8_t matrix_rows(void) { return MATRIX_ROWS; }
+    uint8_t matrix_cols(void) { return MATRIX_COLS; }
+    bool matrix_has_ghost(void) { return false; }
+    void matrix_init(void) {
+        // USB Host Shield setup
+        usb_host.Init();
+        kbd1.SetReportParser(0, (HIDReportParser*)&kbd_parser1);
+        kbd2.SetReportParser(0, (HIDReportParser*)&kbd_parser2);
+        kbd3.SetReportParser(0, (HIDReportParser*)&kbd_parser3);
+        kbd4.SetReportParser(0, (HIDReportParser*)&kbd_parser4);
+    }
+
+    static void or_report(report_keyboard_t report) {
+        // integrate reports into local_keyboard_report
+        local_keyboard_report.mods |= report.mods;
+        for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
+            if (IS_ANY(report.keys[i])) {
+                for (uint8_t j = 0; j < KEYBOARD_REPORT_KEYS; j++) {
+                    if (! local_keyboard_report.keys[j]) {
+                        local_keyboard_report.keys[j] = report.keys[i];
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    uint8_t matrix_scan(void) {
+        static uint16_t last_time_stamp1 = 0;
+        static uint16_t last_time_stamp2 = 0;
+        static uint16_t last_time_stamp3 = 0;
+        static uint16_t last_time_stamp4 = 0;
+
+        // check report came from keyboards
+        if (kbd_parser1.time_stamp != last_time_stamp1 ||
+            kbd_parser2.time_stamp != last_time_stamp2 ||
+            kbd_parser3.time_stamp != last_time_stamp3 ||
+            kbd_parser4.time_stamp != last_time_stamp4) {
+
+            last_time_stamp1 = kbd_parser1.time_stamp;
+            last_time_stamp2 = kbd_parser2.time_stamp;
+            last_time_stamp3 = kbd_parser3.time_stamp;
+            last_time_stamp4 = kbd_parser4.time_stamp;
+
+            // clear and integrate all reports
+            local_keyboard_report = {};
+            or_report(kbd_parser1.report);
+            or_report(kbd_parser2.report);
+            or_report(kbd_parser3.report);
+            or_report(kbd_parser4.report);
+
+            matrix_is_mod = true;
+
+            dprintf("state:  %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved);
+            for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
+                dprintf(" %02X", local_keyboard_report.keys[i]);
+            }
+            dprint("\r\n");
+        } else {
+            matrix_is_mod = false;
+        }
+
+        uint16_t timer;
+        timer = timer_read();
+        usb_host.Task();
+        timer = timer_elapsed(timer);
+        if (timer > 100) {
+            dprintf("host.Task: %d\n", timer);
+        }
+
+        static uint8_t usb_state = 0;
+        if (usb_state != usb_host.getUsbTaskState()) {
+            usb_state = usb_host.getUsbTaskState();
+            dprintf("usb_state: %02X\n", usb_state);
+
+            // restore LED state when keyboard comes up
+            if (usb_state == USB_STATE_RUNNING) {
+                dprintf("speed: %s\n", usb_host.getVbusState()==FSHOST ? "full" : "low");
+                keyboard_set_leds(host_keyboard_leds());
+            }
+        }
+        return 1;
+    }
+
+    bool matrix_is_modified(void) {
+        return matrix_is_mod;
+    }
+
+    bool matrix_is_on(uint8_t row, uint8_t col) {
+        uint8_t code = CODE(row, col);
+
+        if (IS_MOD(code)) {
+            if (local_keyboard_report.mods & ROW_BITS(code)) {
+                return true;
+            }
+        }
+        for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
+            if (local_keyboard_report.keys[i] == code) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    matrix_row_t matrix_get_row(uint8_t row) {
+        uint16_t row_bits = 0;
+
+        if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) {
+            row_bits |= local_keyboard_report.mods;
+        }
+
+        for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
+            if (IS_ANY(local_keyboard_report.keys[i])) {
+                if (row == ROW(local_keyboard_report.keys[i])) {
+                    row_bits |= ROW_BITS(local_keyboard_report.keys[i]);
+                }
+            }
+        }
+        return row_bits;
+    }
+
+    uint8_t matrix_key_count(void) {
+        uint8_t count = 0;
+
+        count += bitpop(local_keyboard_report.mods);
+        for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
+            if (IS_ANY(local_keyboard_report.keys[i])) {
+                count++;
+            }
+        }
+        return count;
+    }
+
+    void matrix_print(void) {
+        print("\nr/c 0123456789ABCDEF\n");
+        for (uint8_t row = 0; row < matrix_rows(); row++) {
+            xprintf("%02d: ", row);
+            print_bin_reverse16(matrix_get_row(row));
+            print("\n");
+        }
+    }
+
+    void led_set(uint8_t usb_led)
+    {
+        kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
+        kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
+        kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
+        kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
+        led_set_kb(usb_led);
+    }
+
+};
diff --git a/keyboards/sirius/unigo66/info.json b/keyboards/sirius/unigo66/info.json
new file mode 100644 (file)
index 0000000..142e8f1
--- /dev/null
@@ -0,0 +1,485 @@
+{
+       "keyboard_name": "UniGo66",
+       "url": "https://discord.gg/GJ8bdM",
+       "maintainer": "qmk",
+       "width": 22.5,
+  "height": 6.5,
+  "layouts": {
+    "LAYOUT_all": {
+      "layout": [
+        {"label":"F13", "x":2, "y":0},
+        {"label":"F14", "x":3, "y":0},
+        {"label":"F15", "x":4, "y":0},
+        {"label":"F16", "x":5, "y":0},
+        {"label":"F17", "x":6.5, "y":0},
+        {"label":"F18", "x":7.5, "y":0},
+        {"label":"F19", "x":8.5, "y":0},
+        {"label":"F20", "x":9.5, "y":0},
+        {"label":"F21", "x":11, "y":0},
+        {"label":"F22", "x":12, "y":0},
+        {"label":"F23", "x":13, "y":0},
+        {"label":"F24", "x":14, "y":0},
+        {"label":"Esc", "x":0, "y":1},
+        {"label":"F1", "x":2, "y":1},
+        {"label":"F2", "x":3, "y":1},
+        {"label":"F3", "x":4, "y":1},
+        {"label":"F4", "x":5, "y":1},
+        {"label":"F5", "x":6.5, "y":1},
+        {"label":"F6", "x":7.5, "y":1},
+        {"label":"F7", "x":8.5, "y":1},
+        {"label":"F8", "x":9.5, "y":1},
+        {"label":"F9", "x":11, "y":1},
+        {"label":"F10", "x":12, "y":1},
+        {"label":"F11", "x":13, "y":1},
+        {"label":"F12", "x":14, "y":1},
+        {"label":"Print Screen", "x":15.25, "y":1},
+        {"label":"Scroll Lock", "x":16.25, "y":1},
+        {"label":"Pause", "x":17.25, "y":1},
+        {"label":"Volume Down", "x":18.5, "y":1},
+        {"label":"Vol Up", "x":19.5, "y":1},
+        {"label":"Mute", "x":20.5, "y":1},
+        {"label":"Power", "x":21.5, "y":1},
+        {"label":"Help", "x":22.75, "y":1},
+        {"label":"`", "x":0, "y":2.5},
+        {"label":"1", "x":1, "y":2.5},
+        {"label":"2", "x":2, "y":2.5},
+        {"label":"3", "x":3, "y":2.5},
+        {"label":"4", "x":4, "y":2.5},
+        {"label":"5", "x":5, "y":2.5},
+        {"label":"6", "x":6, "y":2.5},
+        {"label":"7", "x":7, "y":2.5},
+        {"label":"8", "x":8, "y":2.5},
+        {"label":"9", "x":9, "y":2.5},
+        {"label":"0", "x":10, "y":2.5},
+        {"label":"-", "x":11, "y":2.5},
+        {"label":"=", "x":12, "y":2.5},
+        {"label":"Yen", "x":13, "y":2.5},
+        {"label":"Back Space", "x":14, "y":2.5},
+        {"label":"Insert", "x":15.25, "y":2.5},
+        {"label":"Home", "x":16.25, "y":2.5},
+        {"label":"Page Up", "x":17.25, "y":2.5},
+        {"label":"Num Lock", "x":18.5, "y":2.5},
+        {"label":"Num /", "x":19.5, "y":2.5},
+        {"label":"Num *", "x":20.5, "y":2.5},
+        {"label":"Num -", "x":21.5, "y":2.5},
+        {"label":"Stop", "x":22.75, "y":2.5},
+        {"label":"Again", "x":23.75, "y":2.5},
+        {"label":"Tab", "x":0, "y":3.5, "w":1.5},
+        {"label":"Q", "x":1.5, "y":3.5},
+        {"label":"W", "x":2.5, "y":3.5},
+        {"label":"E", "x":3.5, "y":3.5},
+        {"label":"R", "x":4.5, "y":3.5},
+        {"label":"T", "x":5.5, "y":3.5},
+        {"label":"Y", "x":6.5, "y":3.5},
+        {"label":"U", "x":7.5, "y":3.5},
+        {"label":"I", "x":8.5, "y":3.5},
+        {"label":"O", "x":9.5, "y":3.5},
+        {"label":"P", "x":10.5, "y":3.5},
+        {"label":"[", "x":11.5, "y":3.5},
+        {"label":"]", "x":12.5, "y":3.5},
+        {"label":"\\", "x":13.5, "y":3.5, "w":1.5},
+        {"label":"Delete", "x":15.25, "y":3.5},
+        {"label":"End", "x":16.25, "y":3.5},
+        {"label":"Page Down", "x":17.25, "y":3.5},
+        {"label":"Num 7", "x":18.5, "y":3.5},
+        {"label":"Num 8", "x":19.5, "y":3.5},
+        {"label":"Num 9", "x":20.5, "y":3.5},
+        {"label":"Num +", "x":21.5, "y":3.5},
+        {"label":"Menu", "x":22.75, "y":3.5},
+        {"label":"Undo", "x":23.75, "y":3.5},
+        {"label":"Caps Lock", "x":0, "y":4.5, "w":1.75},
+        {"label":"A", "x":1.75, "y":4.5},
+        {"label":"S", "x":2.75, "y":4.5},
+        {"label":"D", "x":3.75, "y":4.5},
+        {"label":"F", "x":4.75, "y":4.5},
+        {"label":"G", "x":5.75, "y":4.5},
+        {"label":"H", "x":6.75, "y":4.5},
+        {"label":"J", "x":7.75, "y":4.5},
+        {"label":"K", "x":8.75, "y":4.5},
+        {"label":"L", "x":9.75, "y":4.5},
+        {"label":";", "x":10.75, "y":4.5},
+        {"label":"\"", "x":11.75, "y":4.5},
+        {"label":"ISO #", "x":12.75, "y":4.5},
+        {"label":"Enter", "x":13.75, "y":4.5, "w":1.25},
+        {"label":"Num 4", "x":18.5, "y":4.5},
+        {"label":"Num 5", "x":19.5, "y":4.5},
+        {"label":"Num 6", "x":20.5, "y":4.5},
+        {"label":"Num , ", "x":21.5, "y":4.5},
+        {"label":"Select", "x":22.75, "y":4.5},
+        {"label":"Copy", "x":23.75, "y":4.5},
+        {"label":"Shift", "x":0, "y":5.5, "w":1.25},
+        {"label":"ISO \\", "x":1.25, "y":5.5},
+        {"label":"Z", "x":2.25, "y":5.5},
+        {"label":"X", "x":3.25, "y":5.5},
+        {"label":"C", "x":4.25, "y":5.5},
+        {"label":"V", "x":5.25, "y":5.5},
+        {"label":"B", "x":6.25, "y":5.5},
+        {"label":"N", "x":7.25, "y":5.5},
+        {"label":"M", "x":8.25, "y":5.5},
+        {"label":",", "x":9.25, "y":5.5},
+        {"label":".", "x":10.25, "y":5.5},
+        {"label":"/", "x":11.25, "y":5.5},
+        {"label":"JIS \\", "x":12.25, "y":5.5},
+        {"label":"Shift", "x":13.25, "y":5.5, "w":1.75},
+        {"label":"Up", "x":16.25, "y":5.5},
+        {"label":"Num 1", "x":18.5, "y":5.5},
+        {"label":"Num 2", "x":19.5, "y":5.5},
+        {"label":"Num 3", "x":20.5, "y":5.5},
+        {"label":"Num =", "x":21.5, "y":5.5},
+        {"label":"Exec", "x":22.75, "y":5.5},
+        {"label":"Paste", "x":23.75, "y":5.5},
+        {"label":"Ctrl", "x":0, "y":6.5},
+        {"label":"GUI", "x":1, "y":6.5},
+        {"label":"Alt", "x":2, "y":6.5},
+        {"label":"JIS Muhenkan", "x":3, "y":6.5},
+        {"label":"Hanja", "x":4, "y":6.5},
+        {"label":"Space", "x":5, "y":6.5, "w":3},
+        {"label":"Hangul/English", "x":8, "y":6.5},
+        {"label":"JIS Henkan", "x":9, "y":6.5},
+        {"label":"JIS Katakana/Hiragana", "x":10, "y":6.5},
+        {"label":"Alt", "x":11, "y":6.5},
+        {"label":"GUI", "x":12, "y":6.5},
+        {"label":"App", "x":13, "y":6.5},
+        {"label":"Ctrl", "x":14, "y":6.5},
+        {"label":"Left", "x":15.25, "y":6.5},
+        {"label":"Down", "x":16.25, "y":6.5},
+        {"label":"Right", "x":17.25, "y":6.5},
+        {"label":"Num 0", "x":18.5, "y":6.5, "w":2},
+        {"label":"Num .", "x":20.5, "y":6.5},
+        {"label":"Num Enter", "x":21.5, "y":6.5},
+        {"label":"Find", "x":22.75, "y":6.5},
+        {"label":"Cut", "x":23.75, "y":6.5}
+      ]
+    },
+    "LAYOUT_ansi": {
+      "layout": [
+        {"label":"Esc", "x":0, "y":0},
+        {"label":"F1", "x":2, "y":0},
+        {"label":"F2", "x":3, "y":0},
+        {"label":"F3", "x":4, "y":0},
+        {"label":"F4", "x":5, "y":0},
+        {"label":"F5", "x":6.5, "y":0},
+        {"label":"F6", "x":7.5, "y":0},
+        {"label":"F7", "x":8.5, "y":0},
+        {"label":"F8", "x":9.5, "y":0},
+        {"label":"F9", "x":11, "y":0},
+        {"label":"F10", "x":12, "y":0},
+        {"label":"F11", "x":13, "y":0},
+        {"label":"F12", "x":14, "y":0},
+        {"label":"PrtSc", "x":15.25, "y":0},
+        {"label":"Scroll Lock", "x":16.25, "y":0},
+        {"label":"Pause", "x":17.25, "y":0},
+        {"label":"`", "x":0, "y":1.5},
+        {"label":"1", "x":1, "y":1.5},
+        {"label":"2", "x":2, "y":1.5},
+        {"label":"3", "x":3, "y":1.5},
+        {"label":"4", "x":4, "y":1.5},
+        {"label":"5", "x":5, "y":1.5},
+        {"label":"6", "x":6, "y":1.5},
+        {"label":"7", "x":7, "y":1.5},
+        {"label":"8", "x":8, "y":1.5},
+        {"label":"9", "x":9, "y":1.5},
+        {"label":"0", "x":10, "y":1.5},
+        {"label":"-", "x":11, "y":1.5},
+        {"label":"=", "x":12, "y":1.5},
+        {"label":"Backspace", "x":13, "y":1.5, "w":2},
+        {"label":"Insert", "x":15.25, "y":1.5},
+        {"label":"Home", "x":16.25, "y":1.5},
+        {"label":"Page Up", "x":17.25, "y":1.5},
+        {"label":"Num Lock", "x":18.5, "y":1.5},
+        {"label":"Num /", "x":19.5, "y":1.5},
+        {"label":"Num *", "x":20.5, "y":1.5},
+        {"label":"Num -", "x":21.5, "y":1.5},
+        {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+        {"label":"Q", "x":1.5, "y":2.5},
+        {"label":"W", "x":2.5, "y":2.5},
+        {"label":"E", "x":3.5, "y":2.5},
+        {"label":"R", "x":4.5, "y":2.5},
+        {"label":"T", "x":5.5, "y":2.5},
+        {"label":"Y", "x":6.5, "y":2.5},
+        {"label":"U", "x":7.5, "y":2.5},
+        {"label":"I", "x":8.5, "y":2.5},
+        {"label":"O", "x":9.5, "y":2.5},
+        {"label":"P", "x":10.5, "y":2.5},
+        {"label":"[", "x":11.5, "y":2.5},
+        {"label":"]", "x":12.5, "y":2.5},
+        {"label":"\\", "x":13.5, "y":2.5, "w":1.5},
+        {"label":"Delete", "x":15.25, "y":2.5},
+        {"label":"End", "x":16.25, "y":2.5},
+        {"label":"Page Down", "x":17.25, "y":2.5},
+        {"label":"Num 7", "x":18.5, "y":2.5},
+        {"label":"Num 8", "x":19.5, "y":2.5},
+        {"label":"Num 9", "x":20.5, "y":2.5},
+        {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+        {"label":"A", "x":1.75, "y":3.5},
+        {"label":"S", "x":2.75, "y":3.5},
+        {"label":"D", "x":3.75, "y":3.5},
+        {"label":"F", "x":4.75, "y":3.5},
+        {"label":"G", "x":5.75, "y":3.5},
+        {"label":"H", "x":6.75, "y":3.5},
+        {"label":"J", "x":7.75, "y":3.5},
+        {"label":"K", "x":8.75, "y":3.5},
+        {"label":"L", "x":9.75, "y":3.5},
+        {"label":":", "x":10.75, "y":3.5},
+        {"label":"\"", "x":11.75, "y":3.5},
+        {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+        {"label":"Num 4", "x":18.5, "y":3.5},
+        {"label":"Num 5", "x":19.5, "y":3.5},
+        {"label":"Num 6", "x":20.5, "y":3.5},
+        {"label":"Num +", "x":21.5, "y":2.5, "h":2},
+        {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+        {"label":"Z", "x":2.25, "y":4.5},
+        {"label":"X", "x":3.25, "y":4.5},
+        {"label":"C", "x":4.25, "y":4.5},
+        {"label":"V", "x":5.25, "y":4.5},
+        {"label":"B", "x":6.25, "y":4.5},
+        {"label":"N", "x":7.25, "y":4.5},
+        {"label":"M", "x":8.25, "y":4.5},
+        {"label":",", "x":9.25, "y":4.5},
+        {"label":".", "x":10.25, "y":4.5},
+        {"label":"/", "x":11.25, "y":4.5},
+        {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
+        {"label":"Up", "x":16.25, "y":4.5},
+        {"label":"Num 1", "x":18.5, "y":4.5},
+        {"label":"Num 2", "x":19.5, "y":4.5},
+        {"label":"Num 3", "x":20.5, "y":4.5},
+        {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+        {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+        {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+        {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
+        {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
+        {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
+        {"label":"Left", "x":15.25, "y":5.5},
+        {"label":"Down", "x":16.25, "y":5.5},
+        {"label":"Right", "x":17.25, "y":5.5},
+        {"label":"Num 0", "x":18.5, "y":5.5, "w":2},
+        {"label":"Num .", "x":20.5, "y":5.5},
+        {"label":"Num Enter", "x":21.5, "y":4.5, "h":2}
+      ]
+    },
+    "LAYOUT_iso": {
+      "layout": [
+        {"label":"Esc", "x":0, "y":0},
+        {"label":"F1", "x":2, "y":0},
+        {"label":"F2", "x":3, "y":0},
+        {"label":"F3", "x":4, "y":0},
+        {"label":"F4", "x":5, "y":0},
+        {"label":"F5", "x":6.5, "y":0},
+        {"label":"F6", "x":7.5, "y":0},
+        {"label":"F7", "x":8.5, "y":0},
+        {"label":"F8", "x":9.5, "y":0},
+        {"label":"F9", "x":11, "y":0},
+        {"label":"F10", "x":12, "y":0},
+        {"label":"F11", "x":13, "y":0},
+        {"label":"F12", "x":14, "y":0},
+        {"label":"Print Screen", "x":15.25, "y":0},
+        {"label":"Scroll Lock", "x":16.25, "y":0},
+        {"label":"Pause", "x":17.25, "y":0},
+        {"label":"`", "x":0, "y":1.5},
+        {"label":"1", "x":1, "y":1.5},
+        {"label":"2", "x":2, "y":1.5},
+        {"label":"3", "x":3, "y":1.5},
+        {"label":"4", "x":4, "y":1.5},
+        {"label":"5", "x":5, "y":1.5},
+        {"label":"6", "x":6, "y":1.5},
+        {"label":"7", "x":7, "y":1.5},
+        {"label":"8", "x":8, "y":1.5},
+        {"label":"9", "x":9, "y":1.5},
+        {"label":"0", "x":10, "y":1.5},
+        {"label":"-", "x":11, "y":1.5},
+        {"label":"=", "x":12, "y":1.5},
+        {"label":"Backspace", "x":13, "y":1.5, "w":2},
+        {"label":"Insert", "x":15.25, "y":1.5},
+        {"label":"Home", "x":16.25, "y":1.5},
+        {"label":"Page Up", "x":17.25, "y":1.5},
+        {"label":"Num Lock", "x":18.5, "y":1.5},
+        {"label":"Num /", "x":19.5, "y":1.5},
+        {"label":"Num *", "x":20.5, "y":1.5},
+        {"label":"Num -", "x":21.5, "y":1.5},
+        {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+        {"label":"Q", "x":1.5, "y":2.5},
+        {"label":"W", "x":2.5, "y":2.5},
+        {"label":"E", "x":3.5, "y":2.5},
+        {"label":"R", "x":4.5, "y":2.5},
+        {"label":"T", "x":5.5, "y":2.5},
+        {"label":"Y", "x":6.5, "y":2.5},
+        {"label":"U", "x":7.5, "y":2.5},
+        {"label":"I", "x":8.5, "y":2.5},
+        {"label":"O", "x":9.5, "y":2.5},
+        {"label":"P", "x":10.5, "y":2.5},
+        {"label":"[", "x":11.5, "y":2.5},
+        {"label":"]", "x":12.5, "y":2.5},
+        {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+        {"label":"Delete", "x":15.25, "y":2.5},
+        {"label":"End", "x":16.25, "y":2.5},
+        {"label":"Page Down", "x":17.25, "y":2.5},
+        {"label":"Num 7", "x":18.5, "y":2.5},
+        {"label":"Num 8", "x":19.5, "y":2.5},
+        {"label":"Num 9", "x":20.5, "y":2.5},
+        {"label":"Num +", "x":21.5, "y":2.5, "h":2},
+        {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+        {"label":"A", "x":1.75, "y":3.5},
+        {"label":"S", "x":2.75, "y":3.5},
+        {"label":"D", "x":3.75, "y":3.5},
+        {"label":"F", "x":4.75, "y":3.5},
+        {"label":"G", "x":5.75, "y":3.5},
+        {"label":"H", "x":6.75, "y":3.5},
+        {"label":"J", "x":7.75, "y":3.5},
+        {"label":"K", "x":8.75, "y":3.5},
+        {"label":"L", "x":9.75, "y":3.5},
+        {"label":";", "x":10.75, "y":3.5},
+        {"label":"'", "x":11.75, "y":3.5},
+        {"label":"ISO #", "x":12.75, "y":3.5},
+        {"label":"Num 4", "x":18.5, "y":3.5},
+        {"label":"Num 5", "x":19.5, "y":3.5},
+        {"label":"Num 6", "x":20.5, "y":3.5},
+        {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+        {"label":"ISO \\", "x":1.25, "y":4.5},
+        {"label":"Z", "x":2.25, "y":4.5},
+        {"label":"X", "x":3.25, "y":4.5},
+        {"label":"C", "x":4.25, "y":4.5},
+        {"label":"V", "x":5.25, "y":4.5},
+        {"label":"B", "x":6.25, "y":4.5},
+        {"label":"N", "x":7.25, "y":4.5},
+        {"label":"M", "x":8.25, "y":4.5},
+        {"label":",", "x":9.25, "y":4.5},
+        {"label":".", "x":10.25, "y":4.5},
+        {"label":"/", "x":11.25, "y":4.5},
+        {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
+        {"label":"Up", "x":16.25, "y":4.5},
+        {"label":"Num 1", "x":18.5, "y":4.5},
+        {"label":"Num 2", "x":19.5, "y":4.5},
+        {"label":"Num 3", "x":20.5, "y":4.5},
+        {"label":"Num Enter", "x":21.5, "y":4.5, "h":2},
+        {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+        {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+        {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+        {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
+        {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
+        {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
+        {"label":"Left", "x":15.25, "y":5.5},
+        {"label":"Down", "x":16.25, "y":5.5},
+        {"label":"Right", "x":17.25, "y":5.5},
+        {"label":"Num 0", "x":18.5, "y":5.5, "w":2},
+        {"label":"Num .", "x":20.5, "y":5.5}
+      ]
+    },
+    "LAYOUT_jis": {
+      "layout": [
+        {"label":"Esc", "x":0, "y":0},
+        {"label":"F1", "x":2, "y":0},
+        {"label":"F2", "x":3, "y":0},
+        {"label":"F3", "x":4, "y":0},
+        {"label":"F4", "x":5, "y":0},
+        {"label":"F5", "x":6.5, "y":0},
+        {"label":"F6", "x":7.5, "y":0},
+        {"label":"F7", "x":8.5, "y":0},
+        {"label":"F8", "x":9.5, "y":0},
+        {"label":"F9", "x":11, "y":0},
+        {"label":"F10", "x":12, "y":0},
+        {"label":"F11", "x":13, "y":0},
+        {"label":"F12", "x":14, "y":0},
+        {"label":"Print Screen", "x":15.25, "y":0},
+        {"label":"Scroll Lock", "x":16.25, "y":0},
+        {"label":"Pause", "x":17.25, "y":0},
+        {"label":"JIS Hankaku / Zenkaku", "x":0, "y":1.5},
+        {"label":"1", "x":1, "y":1.5},
+        {"label":"2", "x":2, "y":1.5},
+        {"label":"3", "x":3, "y":1.5},
+        {"label":"4", "x":4, "y":1.5},
+        {"label":"5", "x":5, "y":1.5},
+        {"label":"6", "x":6, "y":1.5},
+        {"label":"7", "x":7, "y":1.5},
+        {"label":"8", "x":8, "y":1.5},
+        {"label":"9", "x":9, "y":1.5},
+        {"label":"0", "x":10, "y":1.5},
+        {"label":"-", "x":11, "y":1.5},
+        {"label":"&circ;", "x":12, "y":1.5},
+        {"label":"JIS Yen", "x":13, "y":1.5},
+        {"label":"Back Space", "x":14, "y":1.5},
+        {"label":"Insert", "x":15.25, "y":1.5},
+        {"label":"Home", "x":16.25, "y":1.5},
+        {"label":"Page Up", "x":17.25, "y":1.5},
+        {"label":"Num Lock", "x":18.5, "y":1.5},
+        {"label":"Num /", "x":19.5, "y":1.5},
+        {"label":"Num *", "x":20.5, "y":1.5},
+        {"label":"Num -", "x":21.5, "y":1.5},
+        {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+        {"label":"Q", "x":1.5, "y":2.5},
+        {"label":"W", "x":2.5, "y":2.5},
+        {"label":"E", "x":3.5, "y":2.5},
+        {"label":"R", "x":4.5, "y":2.5},
+        {"label":"T", "x":5.5, "y":2.5},
+        {"label":"Y", "x":6.5, "y":2.5},
+        {"label":"U", "x":7.5, "y":2.5},
+        {"label":"I", "x":8.5, "y":2.5},
+        {"label":"O", "x":9.5, "y":2.5},
+        {"label":"P", "x":10.5, "y":2.5},
+        {"label":"@", "x":11.5, "y":2.5},
+        {"label":"[", "x":12.5, "y":2.5},
+        {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+        {"label":"Delete", "x":15.25, "y":2.5},
+        {"label":"End", "x":16.25, "y":2.5},
+        {"label":"Page Down", "x":17.25, "y":2.5},
+        {"label":"Num 7", "x":18.5, "y":2.5},
+        {"label":"Num 8", "x":19.5, "y":2.5},
+        {"label":"Num 9", "x":20.5, "y":2.5},
+        {"label":"Num +", "x":21.5, "y":2.5, "h":2},
+        {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+        {"label":"A", "x":1.75, "y":3.5},
+        {"label":"S", "x":2.75, "y":3.5},
+        {"label":"D", "x":3.75, "y":3.5},
+        {"label":"F", "x":4.75, "y":3.5},
+        {"label":"G", "x":5.75, "y":3.5},
+        {"label":"H", "x":6.75, "y":3.5},
+        {"label":"J", "x":7.75, "y":3.5},
+        {"label":"K", "x":8.75, "y":3.5},
+        {"label":"L", "x":9.75, "y":3.5},
+        {"label":";", "x":10.75, "y":3.5},
+        {"label":":", "x":11.75, "y":3.5},
+        {"label":"]", "x":12.75, "y":3.5},
+        {"label":"Num 4", "x":18.5, "y":3.5},
+        {"label":"Num 5", "x":19.5, "y":3.5},
+        {"label":"Num 6", "x":20.5, "y":3.5},
+        {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+        {"label":"Z", "x":2.25, "y":4.5},
+        {"label":"X", "x":3.25, "y":4.5},
+        {"label":"C", "x":4.25, "y":4.5},
+        {"label":"V", "x":5.25, "y":4.5},
+        {"label":"B", "x":6.25, "y":4.5},
+        {"label":"N", "x":7.25, "y":4.5},
+        {"label":"M", "x":8.25, "y":4.5},
+        {"label":",", "x":9.25, "y":4.5},
+        {"label":".", "x":10.25, "y":4.5},
+        {"label":"/", "x":11.25, "y":4.5},
+        {"label":"JIS \\", "x":12.25, "y":4.5},
+        {"label":"Shift", "x":13.25, "y":4.5, "w":1.75},
+        {"label":"Up", "x":16.25, "y":4.5},
+        {"label":"Num 1", "x":18.5, "y":4.5},
+        {"label":"Num 2", "x":19.5, "y":4.5},
+        {"label":"Num 3", "x":20.5, "y":4.5},
+        {"label":"Num Enter", "x":21.5, "y":4.5, "h":2},
+        {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+        {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+        {"label":"JIS Muhenkan", "x":3.75, "y":5.5, "w":1.25},
+        {"label":"Space", "x":5, "y":5.5, "w":2.5},
+        {"label":"JIS Henkan", "x":7.5, "y":5.5, "w":1.25},
+        {"label":"JIS Hiragana / Katakana", "x":8.75, "y":5.5, "w":1.25},
+        {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+        {"label":"GUI", "x":11.25, "y":5.5, "w":1.25},
+        {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
+        {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
+        {"label":"Left", "x":15.25, "y":5.5},
+        {"label":"Down", "x":16.25, "y":5.5},
+        {"label":"Right", "x":17.25, "y":5.5},
+        {"label":"Num 0", "x":18.5, "y":5.5, "w":2},
+        {"label":"Num .", "x":20.5, "y":5.5}
+      ]
+    }
+  }
+}
diff --git a/keyboards/sirius/unigo66/keymaps/danielhklein/config.h b/keyboards/sirius/unigo66/keymaps/danielhklein/config.h
new file mode 100644 (file)
index 0000000..271f48d
--- /dev/null
@@ -0,0 +1,3 @@
+#pragma once
+
+// place overrides here
diff --git a/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c b/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c
new file mode 100644 (file)
index 0000000..2425572
--- /dev/null
@@ -0,0 +1,177 @@
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+    _MAC = 0,
+    _WINDOWS,
+    _FN,
+    _ADJ
+};
+
+enum custom_keycodes {
+  MAC = SAFE_RANGE,
+  WINDOWS,
+  FN,
+  ADJ
+};
+
+const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+/* Mac
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |  -   |           |  =   |   6  |   7  |   8  |   9  |   0  |  Bsp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  [   |           |  ]   |   Y  |   U  |   I  |   O  |   P  |  Enter |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  `   |           |  \   |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   | RShift |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   | Ctrl |  Alt |  Gui |                                                                   |  Gui |  Alt | Ctrl |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |      |      |       |      |       |  
+ *                                        | Bspc |  FN  |       |  ADJ | Space |
+ *                                        |      |      |       |      |       | 
+ *                                        `-------------'       `--------------'
+ */
+    [_MAC] = LAYOUT(
+       KC_ESC,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_MINS,       KC_EQL,  KC_6,   KC_7,   KC_8,   KC_9,   KC_0,    KC_DEL,
+       KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,       KC_RBRC, KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,    KC_ENT,
+       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_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_GRV,        KC_BSLS, KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+       KC_LCTL, KC_LALT,KC_LGUI,                                                                        KC_RGUI,KC_RALT, KC_RCTL,
+                                           KC_BSPC,FN,            ADJ, KC_SPC,
+                                           KC_BSPC,FN,            ADJ, KC_SPC
+    ),
+/* Windows
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |  -   |           |  =   |   6  |   7  |   8  |   9  |   0  |  Bsp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  [   |           |  ]   |   Y  |   U  |   I  |   O  |   P  |  Enter |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  `   |           |  \   |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   | RShift |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   | Gui  |  Alt | Ctrl |                                                                   | Ctrl |  Alt |  Gui |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |      |      |       |      |       |  
+ *                                        | Bspc |  FN  |       |  ADJ | Space | 
+ *                                        |      |      |       |      |       | 
+ *                                        `-------------'       `--------------'
+ */
+    [_WINDOWS] = LAYOUT(
+  KC_ESC,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_MINS,       KC_EQL,  KC_6,   KC_7,   KC_8,   KC_9,   KC_0,    KC_DEL,
+  KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,       KC_RBRC, KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,    KC_ENT,
+  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_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_GRV,        KC_BSLS, KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+  KC_LGUI, KC_LALT,KC_LCTL,                                                                        KC_RCTL,KC_RALT, KC_RGUI,
+                                           KC_BSPC,FN,            ADJ, KC_SPC,
+                                           KC_BSPC,FN,            ADJ, KC_SPC
+    ),
+/* FN
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | MAC    |      |      |      |      |      |      |           |      |      | PgDn |  Up  | PgUp | Print|  Home  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | WINDOWS|      |      |      |      |      |------|           |------|      | Left | Down | Right|Insert|  End   |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Shift  |      |      |      |      |      |      |           |      | Play | Mute | Vol- | Vol+ | Last |  Next  |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   |      |      |GuiCtl|                                                                   |GuiCtl|      |      |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |      |      |       |      |       |  
+ *                                        |      |      |       |      |       | 
+ *                                        |      |      |       |      |       | 
+ *                                        `-------------'       `--------------'
+ */
+    [_FN] = LAYOUT(
+  RESET,   XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+  MAC,     XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP,   KC_PGUP, KC_PSCR, KC_HOME,
+  WINDOWS, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,                     XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS,  KC_END, 
+  _______, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX, XXXXXXX, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD,
+  XXXXXXX, XXXXXXX,_______,                                                                             _______, XXXXXXX, XXXXXXX,
+                                                XXXXXXX,   _______, XXXXXXX, XXXXXXX,
+                                                XXXXXXX,   _______, XXXXXXX, XXXXXXX
+    ),
+
+/* ADJ
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   F1   |  F2  |  F3  |  F4  |  F5  |  F6  |      |           |Nlock |  =   |  /   |  *   |  -   |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   F7   |  F8  |  F9  |  F10 |  F11 |  F12 |      |           |      |  7   |  8   |  9   |  +   |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|  4   |  5   |  6   | Enter|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |  1   |  2   |  3   | Space|      |        |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   |      |      |      |                                                                   |  0   |  .   |      |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |      |      |       |      |       |  
+ *                                        |      |      |       |      |       | 
+ *                                        |      |      |       |      |       | 
+ *                                        `-------------'       `--------------'
+ */
+    [_ADJ] = LAYOUT(
+  KC_F1,   KC_F2,  KC_F3,   KC_F4,   KC_F5,   KC_F6,   XXXXXXX, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX,
+  KC_F7,   KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, KC_P7,   KC_P8,   KC_P9,   KC_PPLS, XXXXXXX, XXXXXXX,
+  XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   KC_P4,   KC_P5,   KC_P6,   KC_PENT, XXXXXXX, XXXXXXX, 
+  XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1,   KC_P2,   KC_P3,   KC_SPC,  XXXXXXX, XXXXXXX,
+  XXXXXXX, XXXXXXX,XXXXXXX,                                                                         KC_P0,   KC_PDOT, XXXXXXX,
+                                              XXXXXXX, XXXXXXX, _______, XXXXXXX,
+                                              XXXXXXX, XXXXXXX, _______, XXXXXXX
+    )
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+   switch (keycode) {
+    case MAC:
+      if (record->event.pressed) {
+        set_single_persistent_default_layer(_MAC);
+      }
+      return false;
+      break;
+    case WINDOWS:
+      if(record->event.pressed) {
+        set_single_persistent_default_layer(_WINDOWS);
+      }
+      return false;
+      break;
+    case FN:
+      if (record->event.pressed) {
+        layer_on(_FN);
+      } else {
+        layer_off(_FN);
+      }
+      return false;
+      break;
+    case ADJ:
+        if (record->event.pressed) {
+          layer_on(_ADJ);
+        } else {
+          layer_off(_ADJ);
+        }
+        return false;
+        break;
+  }
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/sirius/unigo66/keymaps/default/config.h b/keyboards/sirius/unigo66/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..271f48d
--- /dev/null
@@ -0,0 +1,3 @@
+#pragma once
+
+// place overrides here
diff --git a/keyboards/sirius/unigo66/keymaps/default/keymap.c b/keyboards/sirius/unigo66/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..d2e0cbf
--- /dev/null
@@ -0,0 +1,66 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+/* 
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | ESC    |   1  |   2  |   3  |   4  |   5  |  -   |           |  =   |   6  |   7  |   8  |   9  |   0  |  Bsp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  [   |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  L2  |           |  ]   |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   |  Up    |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   | Ctrl | Super|  Alt |                                                                   | Left |  Down| Right |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,------|------.       ,---------------.
+ *                                        |      | PgUp |       | Home |        |  
+ *                                        | Space|------|       |------|  Enter | 
+ *                                        |      | PgDn |       | End  |        | 
+ *                                        `-------------'       `---------------'
+ */
+    [0] = LAYOUT(
+       KC_ESC,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_MINS,       KC_EQL,  KC_6,   KC_7,   KC_8,   KC_9,   KC_0,    KC_BSPC,
+       KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   TG(1),         KC_LBRC, KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,    KC_BSLS,
+       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_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   TG(2),         KC_RBRC, KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH, KC_UP  ,
+       KC_LCTL, KC_LGUI,KC_LALT,                                                                        KC_LEFT,KC_DOWN, KC_RGHT,
+                                           KC_SPC, KC_PGUP,       KC_HOME, KC_ENT,
+                                           KC_SPC, KC_PGDN,       KC_END,  KC_ENT
+    ),
+    [1] = LAYOUT(
+  _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,                        _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,                                                                                    _______,  _______,  _______,
+                                                    _______,  _______,    _______,  _______,  
+                                                    _______,  _______,    _______,  _______
+    ),
+    [2] = LAYOUT(
+  _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,                        _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,  _______,  _______,  _______,  _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______, 
+       _______,  _______,  _______,                                                                                    _______,  _______,  _______,
+                                                    _______,  _______,    _______,  _______,  
+                                                    _______,  _______,    _______,  _______
+    ),
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/sirius/unigo66/main.c b/keyboards/sirius/unigo66/main.c
new file mode 100644 (file)
index 0000000..b4a0d97
--- /dev/null
@@ -0,0 +1,108 @@
+#include <avr/io.h>
+#include <avr/wdt.h>
+#include <avr/power.h>
+#include <util/delay.h>
+
+// LUFA
+#include "lufa.h"
+
+#include "sendchar.h"
+#include "debug.h"
+#include "keyboard.h"
+#include "led.h"
+
+
+/* LED ping configuration */
+#define TMK_LED
+//#define LEONARDO_LED
+#if defined(TMK_LED)
+// For TMK converter and Teensy
+#define LED_TX_INIT    (DDRD  |=  (1<<6))
+#define LED_TX_ON      (PORTD |=  (1<<6))
+#define LED_TX_OFF     (PORTD &= ~(1<<6))
+#define LED_TX_TOGGLE  (PORTD ^=  (1<<6))
+#elif defined(LEONARDO_LED)
+// For Leonardo(TX LED)
+#define LED_TX_INIT    (DDRD  |=  (1<<5))
+#define LED_TX_ON      (PORTD &= ~(1<<5))
+#define LED_TX_OFF     (PORTD |=  (1<<5))
+#define LED_TX_TOGGLE  (PORTD ^=  (1<<5))
+#else
+#define LED_TX_INIT
+#define LED_TX_ON
+#define LED_TX_OFF
+#define LED_TX_TOGGLE
+#endif
+
+
+static void LUFA_setup(void)
+{
+    /* Disable watchdog if enabled by bootloader/fuses */
+    MCUSR &= ~(1 << WDRF);
+    wdt_disable();
+
+    /* Disable clock division */
+#if (F_CPU == 8000000)
+    clock_prescale_set(clock_div_2);    // 16MHz crystal divided by 2
+#else
+    clock_prescale_set(clock_div_1);
+#endif
+
+    // Leonardo needs. Without this USB device is not recognized.
+    USB_Disable();
+
+    USB_Init();
+
+    // for Console_Task
+    USB_Device_EnableSOFEvents();
+    print_set_sendchar(sendchar);
+}
+
+
+
+int main(void)
+{
+    // LED for debug
+    LED_TX_INIT;
+    LED_TX_ON;
+
+    debug_enable = true;
+    debug_keyboard = true;
+
+    host_set_driver(&lufa_driver);
+    keyboard_init();
+
+    LUFA_setup();
+
+    /* NOTE: Don't insert time consuming job here.
+     * It'll cause unclear initialization failure when DFU reset(worm start).
+     */
+    sei();
+
+/* Some keyboards bootup quickly and cannot be initialized with this startup wait.*/
+    // wait for startup of sendchar routine
+    while (USB_DeviceState != DEVICE_STATE_Configured) ;
+    if (debug_enable) {
+        _delay_ms(1000);
+    }
+
+
+/*  // wait for USB startup & debug output
+    uint8_t timeout=255
+    while (timeout-- && USB_DeviceState != DEVICE_STATE_Configured) {
+    wait_ms(4);
+*/
+
+    debug("init: done\n");
+
+    for (;;) {
+        keyboard_task();
+
+#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+        // LUFA Task for control request
+        USB_USBTask();
+#endif
+    }
+
+    return 0;
+}
diff --git a/keyboards/sirius/unigo66/matrix.c b/keyboards/sirius/unigo66/matrix.c
new file mode 100644 (file)
index 0000000..b077feb
--- /dev/null
@@ -0,0 +1 @@
+// Intentionally left empty. This file must exist for this board to build.
diff --git a/keyboards/sirius/unigo66/readme.md b/keyboards/sirius/unigo66/readme.md
new file mode 100644 (file)
index 0000000..78a02ed
--- /dev/null
@@ -0,0 +1,17 @@
+# UniGo66
+
+![UniGo66](https://i.imgur.com/ZKlcncg.png)
+
+The UniGo66 is an ergonomic wireless keyboard designed by Sirius and manufactured by ALF Studios. 
+
+Join ALF Studios on [Discord](https://discord.gg/GJ8bdM)
+
+Make example:
+
+       make sirius/unigo66:default
+
+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).
+
+To get the U2U into DFU flashing mode, insert the U2U into the computer and press the button in the red circle shown below
+
+![U2U](https://i.imgur.com/WKwgDjZ.png)
\ No newline at end of file
diff --git a/keyboards/sirius/unigo66/rules.mk b/keyboards/sirius/unigo66/rules.mk
new file mode 100644 (file)
index 0000000..e716aa8
--- /dev/null
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+F_CPU = 16000000
+
+ARCH = AVR8
+
+F_USB = $(F_CPU)
+
+BOOTLOADER = atmel-dfu
+
+# Interrupt driven control endpoint task
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# Build Options
+#   comment out to disable the options.
+#
+# BOOTMAGIC_ENABLE     = yes   # Virtual DIP switch configuration(+1000)
+# MOUSEKEY_ENABLE      = yes   # Mouse keys(+4700)
+EXTRAKEY_ENABLE                = yes   # Audio control and System control(+450)
+# CONSOLE_ENABLE       = yes   # Console for debug(+400)
+# COMMAND_ENABLE       = yes   # Commands for debug and configuration
+# SLEEP_LED_ENABLE     = yes   # Breathing sleep LED during USB suspend
+# NKRO_ENABLE          = yes   # USB Nkey Rollover - not yet supported in LUFA
+# BACKLIGHT_ENABLE = yes
+USB_HID_ENABLE = yes
+
+CUSTOM_MATRIX = yes
+SRC = custom_matrix.cpp
+
+CUSTOM_MATRIX = yes
+SRC = custom_matrix.cpp
diff --git a/keyboards/sirius/unigo66/unigo66.c b/keyboards/sirius/unigo66/unigo66.c
new file mode 100644 (file)
index 0000000..6a2d263
--- /dev/null
@@ -0,0 +1 @@
+#include "unigo66.h"
diff --git a/keyboards/sirius/unigo66/unigo66.h b/keyboards/sirius/unigo66/unigo66.h
new file mode 100644 (file)
index 0000000..3215c89
--- /dev/null
@@ -0,0 +1,103 @@
+#ifndef UNIGO66_H
+#define UNIGO66_H
+
+#include "quantum.h"
+
+/*         ,---------------. ,---------------. ,---------------.
+ *         |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24|
+ * ,---.   |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------.
+ * |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help  |
+ * `---'   `---------------' `---------------' `---------------' `-----------' `---------------' `-------'
+ * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------.
+ * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|JPY|Bsp| |Ins|Hom|PgU| |NmL|  /|  *|  -| |Stp|Agn|
+ * |-----------------------------------------------------------| |-----------| |---------------| |-------|
+ * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  | |Del|End|PgD| |  7|  8|  9|  +| |Mnu|Und|
+ * |-----------------------------------------------------------| `-----------' |---------------| |-------|
+ * |CapsL |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  :|  #|Retn|               |  4|  5|  6|KP,| |Sel|Cpy|
+ * |-----------------------------------------------------------|     ,---.     |---------------| |-------|
+ * |Shft|  <|  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /| RO|Shift |     |Up |     |  1|  2|  3|KP=| |Exe|Pst|
+ * |-----------------------------------------------------------| ,-----------. |---------------| |-------|
+ * |Ctl|Gui|Alt|MHEN|HNJ| Space  |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| |  0    |  .|Ent| |Fnd|Cut|
+ * `-----------------------------------------------------------' `-----------' `---------------' `-------'
+
+ */
+#define LAYOUT_ALL( \
+            K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73,                                              \
+    K29,    K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45,      K46,K47,K48,  K81,K80,K7F,K66, K75,     \
+    K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A,  K49,K4A,K4B,  K53,K54,K55,K56, K78,K79, \
+    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K31,  K4C,K4D,K4E,  K5F,K60,K61,K57, K76,K7A, \
+    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    K32,K28,                K5C,K5D,K5E,K85, K77,K7C, \
+    KE1,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,    K87,KE5,      K52,      K59,K5A,K5B,K67, K74,K7D, \
+    KE0,KE3,KE2,K8B,K91,    K2C,    K90,K8A,K88,KE6,KE7,K65,KE4,  K50,K51,K4F,  K62,    K63,K58, K7E,K7B  \
+) { \
+    { KC_NO, KC_NO, KC_NO, KC_NO, K04,   K05,   K06,   K07,      /* 00-07 */ \
+      K08,   K09,   K0A,   K0B,   K0C,   K0D,   K0E,   K0F    }, /* 08-0F */ \
+    { K10,   K11,   K12,   K13,   K14,   K15,   K16,   K17,      /* 10-17 */ \
+      K18,   K19,   K1A,   K1B,   K1C,   K1D,   K1E,   K1F    }, /* 18-1F */ \
+    { K20,   K21,   K22,   K23,   K24,   K25,   K26,   K27,      /* 20-27 */ \
+      K28,   K29,   K2A,   K2B,   K2C,   K2D,   K2E,   K2F    }, /* 28-2F */ \
+    { K30,   K31,   K32,   K33,   K34,   K35,   K36,   K37,      /* 30-37 */ \
+      K38,   K39,   K3A,   K3B,   K3C,   K3D,   K3E,   K3F    }, /* 38-3F */ \
+    { K40,   K41,   K42,   K43,   K44,   K45,   K46,   K47,      /* 40-47 */ \
+      K48,   K49,   K4A,   K4B,   K4C,   K4D,   K4E,   K4F    }, /* 48-4F */ \
+    { K50,   K51,   K52,   K53,   K54,   K55,   K56,   K57,      /* 50-57 */ \
+      K58,   K59,   K5A,   K5B,   K5C,   K5D,   K5E,   K5F    }, /* 58-5F */ \
+    { K60,   K61,   K62,   K63,   K64,   K65,   K66,   K67,      /* 60-67 */ \
+      K68,   K69,   K6A,   K6B,   K6C,   K6D,   K6E,   K6F    }, /* 68-6F */ \
+    { K70,   K71,   K72,   K73,   K74,   K75,   K76,   K77,      /* 70-77 */ \
+      K78,   K79,   K7A,   K7B,   K7C,   K7D,   K7E,   K7F    }, /* 78-7F */ \
+    { K80,   K81,   KC_NO, KC_NO, KC_NO, K85,   KC_NO, K87,      /* 80-87 */ \
+      K88,   K89,   K8A,   K8B,   KC_NO, KC_NO, KC_NO, KC_NO  }, /* 88-8F */ \
+    { K90,   K91,   KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* 90-97 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* 98-9F */ \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* A0-A7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* A8-AF */ \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* B0-B7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* B8-BF */ \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* C0-C7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* C8-CF */ \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* D0-D7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* D8-DF */ \
+    { KE0,   KE1,   KE2,   KE3,   KE4,   KE5,   KE6,   KE7,      /* E0-E7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* E8-EF */ \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    /* F0-F7 */ \
+      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  }, /* F8-FF */ \
+}
+
+/*
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | ESC    |   1  |   2  |   3  |   4  |   5  |  -   |           |  =   |   6  |   7  |   8  |   9  |   0  |  Bsp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  [   |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  L2  |           |  ]   |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   |  Up    |
+ * `--------+------+------+---------------------------'           `---------------------------+------+------+--------'
+ *   | Ctrl | Super|  Alt |                                                                   | Left |  Down| Right |
+ *   `--------------------'                                                                   `--------------------'
+ *                                        ,------|------.       ,---------------.
+ *                                        |      | PgUp |       | Home |        |
+ *                                        | Space|------|       |------|  Enter |
+ *                                        |      | PgDn |       | End  |        |
+ *                                        `-------------'       `---------------'
+ */
+#define LAYOUT( \
+  K29,K1E,K1F,K20,K21,K22,K2D,    K2E,K23,K24,K25,K26,K27,K2A,\
+  K2B,K14,K1A,K08,K15,K17,K4B,    K2F,K1C,K18,K0C,K12,K13,K31,\
+  K39,K04,K16,K07,K09,K0A,            K0B,K0D,K0E,K0F,K33,K34,\
+  KE1,K1D,K1B,K06,K19,K05,K4E,    K30,K11,K10,K36,K37,K52,KE5,\
+  KE0,KE3,KE2,                                    K50,K51,K4F,\
+                      K2C,K49,    K4A,K28,        \
+                      KE6,K4C,    K4D,KE4         \
+) LAYOUT_ALL( \
+            KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,                                              \
+    K29,    KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,      KC_NO,KC_NO,KC_NO,  KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,\
+    KC_NO,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,KC_NO,K2A,  K49,K4A,K4B,  KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO, \
+    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K31,  K4C,K4D,K4E,  KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO, \
+    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    KC_NO,K28,                KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO, \
+    KE1,KC_NO,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,KC_NO,    KC_NO,KE5,      K52,      KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO, \
+    KE0,KE3,KE2,KC_NO,KC_NO,    K2C,    KC_NO,KC_NO,KC_NO,KE6,KC_NO,KC_NO,KE4,  K50,K51,K4F,  KC_NO,      KC_NO,KC_NO, KC_NO,KC_NO  \
+)
+#endif