~ruther/qmk_firmware

9ae800fab3861a96f13b9226fe744b7785c13105 — Daniel H Klein 6 years ago 5d26ebc
[Keyboard] UniGo66 keyboard added (#4913)

* 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
A keyboards/sirius/unigo66/README.md => keyboards/sirius/unigo66/README.md +17 -0
@@ 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

A keyboards/sirius/unigo66/config.h => keyboards/sirius/unigo66/config.h +54 -0
@@ 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

A keyboards/sirius/unigo66/custom_matrix.cpp => keyboards/sirius/unigo66/custom_matrix.cpp +242 -0
@@ 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);
    }

};

A keyboards/sirius/unigo66/info.json => keyboards/sirius/unigo66/info.json +485 -0
@@ 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}
      ]
    }
  }
}

A keyboards/sirius/unigo66/keymaps/danielhklein/config.h => keyboards/sirius/unigo66/keymaps/danielhklein/config.h +3 -0
@@ 0,0 1,3 @@
#pragma once

// place overrides here

A keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c => keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c +177 -0
@@ 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) {

}

A keyboards/sirius/unigo66/keymaps/default/config.h => keyboards/sirius/unigo66/keymaps/default/config.h +3 -0
@@ 0,0 1,3 @@
#pragma once

// place overrides here

A keyboards/sirius/unigo66/keymaps/default/keymap.c => keyboards/sirius/unigo66/keymaps/default/keymap.c +66 -0
@@ 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) {

}

A keyboards/sirius/unigo66/main.c => keyboards/sirius/unigo66/main.c +108 -0
@@ 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;
}

A keyboards/sirius/unigo66/matrix.c => keyboards/sirius/unigo66/matrix.c +1 -0
@@ 0,0 1,1 @@
// Intentionally left empty. This file must exist for this board to build.

A keyboards/sirius/unigo66/readme.md => keyboards/sirius/unigo66/readme.md +17 -0
@@ 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

A keyboards/sirius/unigo66/rules.mk => keyboards/sirius/unigo66/rules.mk +32 -0
@@ 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

A keyboards/sirius/unigo66/unigo66.c => keyboards/sirius/unigo66/unigo66.c +1 -0
@@ 0,0 1,1 @@
#include "unigo66.h"

A keyboards/sirius/unigo66/unigo66.h => keyboards/sirius/unigo66/unigo66.h +103 -0
@@ 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