diff --git a/keyboards/clueboard/17/17.c b/keyboards/clueboard/17/17.c new file mode 100644 index 00000000..5cf2238d --- /dev/null +++ b/keyboards/clueboard/17/17.c @@ -0,0 +1,43 @@ +#include "quantum.h" + +int pwm_level; + +void backlight_init_ports(void) { + // Set C7 to output + DDRC |= (1<<7); + + // Initialize the timer + TC4H = 0x03; + OCR4C = 0xFF; + TCCR4A = 0b10000010; + TCCR4B = 0b00000001; +} + +void backlight_set(uint8_t level) { + // Determine the PWM level + switch (level) + { + case 0: + // 33% + pwm_level = 0x54; + break; + case 1: + // 66% + pwm_level = 0xA8; + break; + case 2: + // 100% + pwm_level = 0xFF; + break; + case 3: + // 0% + pwm_level = 0x00; + break; + default: + xprintf("Unknown level: %d\n", level); + } + + // Write the PWM level to the timer + TC4H = pwm_level >> 8; + OCR4A = 0xFF & pwm_level; +} diff --git a/keyboards/clueboard/17/keyboard.json b/keyboards/clueboard/17/keyboard.json new file mode 100644 index 00000000..d6aec9cf --- /dev/null +++ b/keyboards/clueboard/17/keyboard.json @@ -0,0 +1,78 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 17% (Cluepad)", + "maintainer": "skullydazed", + "diode_direction": "COL2ROW", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "features": { + "backlight": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["F4", "E6", "B1", "D2"], + "rows": ["B0", "D3", "D5", "D4", "D6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 10, + "led_count": 4, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "F6" + }, + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0x2312", + "vid": "0xC1ED" + }, + "backlight": { + "driver": "custom" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_numpad_5x4" + }, + "layouts": { + "LAYOUT_numpad_5x4": { + "layout": [ + {"label": "Num Lock", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "/", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "*", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "-", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "7", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "8", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "9", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "4", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "5", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "6", "matrix": [2, 2], "x": 2, "y": 2}, + {"h": 2, "label": "+", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "1", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "2", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "3", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "0", "matrix": [4, 0], "w": 2, "x": 0, "y": 4}, + {"label": ".", "matrix": [4, 2], "x": 2, "y": 4}, + {"h": 2, "label": "Enter", "matrix": [3, 3], "x": 3, "y": 3} + ] + } + } +} diff --git a/keyboards/clueboard/17/keymaps/default/keymap.c b/keyboards/clueboard/17/keymaps/default/keymap.c new file mode 100644 index 00000000..7833753c --- /dev/null +++ b/keyboards/clueboard/17/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * .-------------------. + * |NL F| /| *| -| + * |-------------------| + * | 7| 8| 9| | + * |--------------| | + * | 4| 5| 6| +| + * |-------------------| + * | 1| 2| 3| | + * |--------------| | + * | 0| .| Ent| + * '-------------------' + */ + [_BL] = LAYOUT_numpad_5x4( + LT(_FL, KC_NUM), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ), + + /* Keymap _FL: Function Layer + * .-------------------. + * |NL F| | | Fn0| + * |-------------------| + * | | Fn4| | | + * |--------------| | + * | Fn3|BL_S| Fn2| Fn6| + * |-------------------| + * | | Fn5| | | + * |--------------| | + * | Fn1| | Fn7| + * '-------------------' + */ + [_FL] = LAYOUT_numpad_5x4( + LT(_FL, KC_NUM), _______, _______, UG_TOGG, + _______, UG_SATU, _______, + UG_HUED, BL_STEP, UG_HUEU, UG_VALU, + _______, UG_SATD, _______, + UG_NEXT, _______, UG_VALD + ) +}; diff --git a/keyboards/clueboard/17/readme.md b/keyboards/clueboard/17/readme.md new file mode 100644 index 00000000..c183657f --- /dev/null +++ b/keyboards/clueboard/17/readme.md @@ -0,0 +1,16 @@ +# Clueboard 17% (Formerly Cluepad) + +![Clueboard 17%](https://i.imgur.com/3XBC5c0.jpg) + +A basic 17 key numpad PCB. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: + * Cluepad PCB 1.0 +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/17: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). diff --git a/keyboards/clueboard/2x1800/2018/config.h b/keyboards/clueboard/2x1800/2018/config.h new file mode 100644 index 00000000..ac6f646c --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2017 Zach White + +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 . +*/ + +#pragma once + + +/* audio support */ +#define AUDIO_PIN_ALT B7 +#define AUDIO_PIN C4 +#define AUDIO_CLICKY diff --git a/keyboards/clueboard/2x1800/2018/keyboard.json b/keyboards/clueboard/2x1800/2018/keyboard.json new file mode 100644 index 00000000..1a926c62 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keyboard.json @@ -0,0 +1,446 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 2x1800 2018", + "maintainer": "skullydazed", + "processor": "at90usb1286", + "bootloader": "halfkay", + "diode_direction": "ROW2COL", + "features": { + "audio": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "indicators": { + "num_lock": "B4", + "caps_lock": "B5", + "scroll_lock": "B6" + }, + "matrix_pins": { + "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "B0", "E6", "B3", "B2"], + "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "B1", "F2", "F3", "F4", "F5", "F6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 8, + "hue_steps": 8, + "led_count": 16, + "saturation_steps": 8 + }, + "ws2812": { + "pin": "C6" + }, + "usb": { + "pid": "0x23A0" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_4u_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [6, 0], "x": 11.75, "y": 0}, + {"matrix": [6, 1], "x": 12.75, "y": 0}, + {"matrix": [6, 2], "x": 13.75, "y": 0}, + {"matrix": [6, 3], "x": 15.25, "y": 0}, + {"matrix": [6, 4], "x": 16.25, "y": 0}, + {"matrix": [6, 5], "x": 17.25, "y": 0}, + {"matrix": [6, 6], "x": 18.25, "y": 0}, + {"matrix": [6, 7], "x": 20, "y": 0}, + {"matrix": [6, 8], "x": 21, "y": 0}, + {"matrix": [6, 9], "x": 22, "y": 0}, + {"matrix": [6, 10], "x": 23, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"matrix": [7, 7], "x": 20, "y": 1.25}, + {"matrix": [7, 8], "x": 21, "y": 1.25}, + {"matrix": [7, 9], "x": 22, "y": 1.25}, + {"matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [8, 0], "x": 12, "y": 2.25}, + {"matrix": [8, 1], "x": 13, "y": 2.25}, + {"matrix": [8, 2], "x": 14, "y": 2.25}, + {"matrix": [8, 3], "x": 15, "y": 2.25}, + {"matrix": [8, 4], "x": 16, "y": 2.25}, + {"matrix": [8, 5], "x": 17, "y": 2.25}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"matrix": [8, 7], "x": 20, "y": 2.25}, + {"matrix": [8, 8], "x": 21, "y": 2.25}, + {"matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 2.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"matrix": [9, 7], "x": 20, "y": 3.25}, + {"matrix": [9, 8], "x": 21, "y": 3.25}, + {"matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2, "y": 4.25}, + {"matrix": [4, 3], "x": 3, "y": 4.25}, + {"matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25}, + {"matrix": [4, 5], "x": 6.75, "y": 4.25}, + {"matrix": [4, 6], "x": 7.75, "y": 4.25}, + {"matrix": [4, 7], "x": 8.75, "y": 4.25}, + {"matrix": [4, 8], "x": 9.75, "y": 4.25}, + {"matrix": [4, 9], "x": 10.75, "y": 4.25}, + {"matrix": [4, 10], "x": 11.75, "y": 4.25}, + {"matrix": [10, 0], "x": 12.75, "y": 4.25}, + {"matrix": [10, 1], "x": 13.75, "y": 4.25}, + {"matrix": [10, 2], "x": 14.75, "y": 4.25}, + {"matrix": [10, 3], "x": 15.75, "y": 4.25}, + {"matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25}, + {"matrix": [10, 5], "x": 20, "y": 4.25}, + {"matrix": [9, 6], "x": 21, "y": 4.25}, + {"matrix": [10, 7], "x": 22, "y": 4.25}, + {"h": 2, "matrix": [10, 8], "x": 23, "y": 4.25}, + {"matrix": [10, 9], "x": 4.25, "y": 4.5}, + {"matrix": [10, 10], "x": 18.75, "y": 4.5}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2, "y": 5.25}, + {"matrix": [5, 3], "x": 6.5, "y": 5.25}, + {"matrix": [5, 4], "x": 7.5, "y": 5.25}, + {"matrix": [5, 5], "x": 8.5, "y": 5.25}, + {"matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25}, + {"matrix": [5, 8], "x": 14.5, "y": 5.25}, + {"matrix": [11, 0], "x": 15.5, "y": 5.25}, + {"matrix": [11, 2], "x": 16.5, "y": 5.25}, + {"matrix": [11, 3], "x": 21, "y": 5.25}, + {"matrix": [11, 4], "x": 22, "y": 5.25}, + {"matrix": [11, 5], "x": 3.25, "y": 5.5}, + {"matrix": [10, 6], "x": 4.25, "y": 5.5}, + {"matrix": [11, 6], "x": 5.25, "y": 5.5}, + {"matrix": [11, 7], "x": 17.75, "y": 5.5}, + {"matrix": [11, 8], "x": 18.75, "y": 5.5}, + {"matrix": [11, 9], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [6, 0], "x": 11.75, "y": 0}, + {"matrix": [6, 1], "x": 12.75, "y": 0}, + {"matrix": [6, 2], "x": 13.75, "y": 0}, + {"matrix": [6, 3], "x": 15.25, "y": 0}, + {"matrix": [6, 4], "x": 16.25, "y": 0}, + {"matrix": [6, 5], "x": 17.25, "y": 0}, + {"matrix": [6, 6], "x": 18.25, "y": 0}, + {"matrix": [6, 7], "x": 20, "y": 0}, + {"matrix": [6, 8], "x": 21, "y": 0}, + {"matrix": [6, 9], "x": 22, "y": 0}, + {"matrix": [6, 10], "x": 23, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"matrix": [7, 7], "x": 20, "y": 1.25}, + {"matrix": [7, 8], "x": 21, "y": 1.25}, + {"matrix": [7, 9], "x": 22, "y": 1.25}, + {"matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [8, 0], "x": 12, "y": 2.25}, + {"matrix": [8, 1], "x": 13, "y": 2.25}, + {"matrix": [8, 2], "x": 14, "y": 2.25}, + {"matrix": [8, 3], "x": 15, "y": 2.25}, + {"matrix": [8, 4], "x": 16, "y": 2.25}, + {"matrix": [8, 5], "x": 17, "y": 2.25}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"matrix": [8, 7], "x": 20, "y": 2.25}, + {"matrix": [8, 8], "x": 21, "y": 2.25}, + {"matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 2.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"matrix": [9, 7], "x": 20, "y": 3.25}, + {"matrix": [9, 8], "x": 21, "y": 3.25}, + {"matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2, "y": 4.25}, + {"matrix": [4, 3], "x": 3, "y": 4.25}, + {"matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25}, + {"matrix": [4, 5], "x": 6.75, "y": 4.25}, + {"matrix": [4, 6], "x": 7.75, "y": 4.25}, + {"matrix": [4, 7], "x": 8.75, "y": 4.25}, + {"matrix": [4, 8], "x": 9.75, "y": 4.25}, + {"matrix": [4, 9], "x": 10.75, "y": 4.25}, + {"matrix": [4, 10], "x": 11.75, "y": 4.25}, + {"matrix": [10, 0], "x": 12.75, "y": 4.25}, + {"matrix": [10, 1], "x": 13.75, "y": 4.25}, + {"matrix": [10, 2], "x": 14.75, "y": 4.25}, + {"matrix": [10, 3], "x": 15.75, "y": 4.25}, + {"matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25}, + {"matrix": [10, 5], "x": 20, "y": 4.25}, + {"matrix": [9, 6], "x": 21, "y": 4.25}, + {"matrix": [10, 7], "x": 22, "y": 4.25}, + {"h": 2, "matrix": [10, 8], "x": 23, "y": 4.25}, + {"matrix": [10, 9], "x": 4.25, "y": 4.5}, + {"matrix": [10, 10], "x": 18.75, "y": 4.5}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2, "y": 5.25}, + {"matrix": [5, 3], "x": 6.5, "y": 5.25}, + {"matrix": [5, 4], "x": 7.5, "y": 5.25}, + {"matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25}, + {"matrix": [5, 6], "x": 15.5, "y": 5.25}, + {"matrix": [5, 7], "x": 16.5, "y": 5.25}, + {"matrix": [11, 0], "x": 21, "y": 5.25}, + {"matrix": [11, 4], "x": 22, "y": 5.25}, + {"matrix": [11, 5], "x": 3.25, "y": 5.5}, + {"matrix": [10, 6], "x": 4.25, "y": 5.5}, + {"matrix": [11, 6], "x": 5.25, "y": 5.5}, + {"matrix": [11, 7], "x": 17.75, "y": 5.5}, + {"matrix": [11, 8], "x": 18.75, "y": 5.5}, + {"matrix": [11, 9], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "Home", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "End", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "PgUp", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "PgDn", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "Esc", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "F1", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "F2", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "F3", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "F4", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "F5", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F6", "matrix": [6, 0], "x": 11.75, "y": 0}, + {"label": "F7", "matrix": [6, 1], "x": 12.75, "y": 0}, + {"label": "F8", "matrix": [6, 2], "x": 13.75, "y": 0}, + {"label": "F9", "matrix": [6, 3], "x": 15.25, "y": 0}, + {"label": "F10", "matrix": [6, 4], "x": 16.25, "y": 0}, + {"label": "F11", "matrix": [6, 5], "x": 17.25, "y": 0}, + {"label": "F12", "matrix": [6, 6], "x": 18.25, "y": 0}, + {"label": "PrtSc", "matrix": [6, 7], "x": 20, "y": 0}, + {"label": "Scroll Lock", "matrix": [6, 8], "x": 21, "y": 0}, + {"label": "Pause", "matrix": [6, 9], "x": 22, "y": 0}, + {"label": "Insert", "matrix": [6, 10], "x": 23, "y": 0}, + {"label": "-", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "Num Lock", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "/", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "*", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "~", "matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"label": "!", "matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"label": "@", "matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"label": "#", "matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"label": "$", "matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"label": "%", "matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"label": "^", "matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"label": "&", "matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"label": "*", "matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"label": "(", "matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"label": ")", "matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"label": "_", "matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"label": "+", "matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"label": "Backspace", "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"label": "Num Lock", "matrix": [7, 7], "x": 20, "y": 1.25}, + {"label": "/", "matrix": [7, 8], "x": 21, "y": 1.25}, + {"label": "*", "matrix": [7, 9], "x": 22, "y": 1.25}, + {"label": "-", "matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "label": "+", "matrix": [2, 0], "x": 0, "y": 2.25}, + {"label": "7", "matrix": [2, 1], "x": 1, "y": 2.25}, + {"label": "8", "matrix": [2, 2], "x": 2, "y": 2.25}, + {"label": "9", "matrix": [2, 3], "x": 3, "y": 2.25}, + {"label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"label": "Q", "matrix": [2, 5], "x": 6, "y": 2.25}, + {"label": "W", "matrix": [2, 6], "x": 7, "y": 2.25}, + {"label": "E", "matrix": [2, 7], "x": 8, "y": 2.25}, + {"label": "R", "matrix": [2, 8], "x": 9, "y": 2.25}, + {"label": "T", "matrix": [2, 9], "x": 10, "y": 2.25}, + {"label": "Y", "matrix": [2, 10], "x": 11, "y": 2.25}, + {"label": "U", "matrix": [8, 0], "x": 12, "y": 2.25}, + {"label": "I", "matrix": [8, 1], "x": 13, "y": 2.25}, + {"label": "O", "matrix": [8, 2], "x": 14, "y": 2.25}, + {"label": "P", "matrix": [8, 3], "x": 15, "y": 2.25}, + {"label": "{", "matrix": [8, 4], "x": 16, "y": 2.25}, + {"label": "}", "matrix": [8, 5], "x": 17, "y": 2.25}, + {"label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"label": "7", "matrix": [8, 7], "x": 20, "y": 2.25}, + {"label": "8", "matrix": [8, 8], "x": 21, "y": 2.25}, + {"label": "9", "matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "label": "+", "matrix": [8, 10], "x": 23, "y": 2.25}, + {"label": "4", "matrix": [3, 1], "x": 1, "y": 3.25}, + {"label": "5", "matrix": [3, 2], "x": 2, "y": 3.25}, + {"label": "6", "matrix": [3, 3], "x": 3, "y": 3.25}, + {"label": "Caps Lock", "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"label": "A", "matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"label": "S", "matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"label": "D", "matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"label": "F", "matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"label": "G", "matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"label": "H", "matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"label": "J", "matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"label": "K", "matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"label": "L", "matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"label": ":", "matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"label": "\"", "matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"label": "Enter", "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"label": "4", "matrix": [9, 7], "x": 20, "y": 3.25}, + {"label": "5", "matrix": [9, 8], "x": 21, "y": 3.25}, + {"label": "6", "matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "label": "Enter", "matrix": [4, 0], "x": 0, "y": 4.25}, + {"label": "1", "matrix": [4, 1], "x": 1, "y": 4.25}, + {"label": "2", "matrix": [4, 2], "x": 2, "y": 4.25}, + {"label": "3", "matrix": [4, 3], "x": 3, "y": 4.25}, + {"label": "\\u2191", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.25}, + {"label": "Z", "matrix": [4, 6], "x": 6.75, "y": 4.25}, + {"label": "X", "matrix": [4, 7], "x": 7.75, "y": 4.25}, + {"label": "C", "matrix": [4, 8], "x": 8.75, "y": 4.25}, + {"label": "V", "matrix": [4, 9], "x": 9.75, "y": 4.25}, + {"label": "B", "matrix": [4, 10], "x": 10.75, "y": 4.25}, + {"label": "N", "matrix": [10, 0], "x": 11.75, "y": 4.25}, + {"label": "M", "matrix": [10, 1], "x": 12.75, "y": 4.25}, + {"label": "<", "matrix": [10, 2], "x": 13.75, "y": 4.25}, + {"label": ">", "matrix": [10, 3], "x": 14.75, "y": 4.25}, + {"label": "?", "matrix": [10, 4], "x": 15.75, "y": 4.25}, + {"label": "Shift", "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 4.25}, + {"label": "\\u2191", "matrix": [9, 6], "x": 18.75, "y": 4.5}, + {"label": "1", "matrix": [10, 7], "x": 20, "y": 4.25}, + {"label": "2", "matrix": [10, 8], "x": 21, "y": 4.25}, + {"label": "3", "matrix": [10, 9], "x": 22, "y": 4.25}, + {"h": 2, "label": "Enter", "matrix": [10, 10], "x": 23, "y": 4.25}, + {"label": "0", "matrix": [5, 1], "x": 1, "y": 5.25}, + {"label": ".", "matrix": [5, 2], "x": 2, "y": 5.25}, + {"label": "\\u2190", "matrix": [5, 3], "x": 3.25, "y": 5.5}, + {"label": "\\u2193", "matrix": [5, 4], "x": 4.25, "y": 5.5}, + {"label": "\\u2192", "matrix": [5, 5], "x": 5.25, "y": 5.5}, + {"label": "Ctrl", "matrix": [5, 6], "x": 6.5, "y": 5.25}, + {"label": "Win", "matrix": [5, 7], "x": 7.5, "y": 5.25}, + {"label": "Alt", "matrix": [5, 8], "x": 8.5, "y": 5.25}, + {"label": "1u", "matrix": [5, 9], "x": 9.5, "y": 5.25}, + {"label": "1u", "matrix": [5, 10], "x": 10.5, "y": 5.25}, + {"label": "1u", "matrix": [11, 0], "x": 11.5, "y": 5.25}, + {"label": "1u", "matrix": [11, 1], "x": 12.5, "y": 5.25}, + {"label": "Alt", "matrix": [11, 2], "x": 13.5, "y": 5.25}, + {"label": "Win", "matrix": [11, 3], "x": 14.5, "y": 5.25}, + {"label": "Menu", "matrix": [11, 4], "x": 15.5, "y": 5.25}, + {"label": "Ctrl", "matrix": [11, 5], "x": 16.5, "y": 5.25}, + {"label": "\\u2190", "matrix": [10, 6], "x": 17.75, "y": 5.5}, + {"label": "\\u2193", "matrix": [11, 6], "x": 18.75, "y": 5.5}, + {"label": "\\u2192", "matrix": [11, 7], "x": 19.75, "y": 5.5}, + {"label": "0", "matrix": [11, 8], "x": 21, "y": 5.25}, + {"label": ".", "matrix": [11, 9], "x": 22, "y": 5.25} + ] + } + } +} diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json new file mode 100644 index 00000000..1898ec41 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json @@ -0,0 +1,11 @@ +{ + "keyboard":"clueboard/2x1800/2018", + "keymap":"default", + "layout":"LAYOUT", + "layers":[ + ["KC_HOME","KC_END","KC_PGUP","KC_PGDN","KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_PSCR","KC_SCRL","KC_PAUS","KC_INS","KC_PMNS","KC_NUM","KC_PSLS","KC_PAST","KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_BSPC","KC_NUM","KC_PSLS","KC_PAST","KC_PMNS","KC_PPLS","KC_P7","KC_P8","KC_P9","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_P7","KC_P8","KC_P9","KC_PSLS","KC_P4","KC_P5","KC_P6","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_ENT","KC_P4","KC_P5","KC_P6","KC_PENT","KC_P1","KC_P2","KC_P3","KC_UP","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_SLSH","KC_COMM","KC_DOT","KC_RSFT","KC_UP","KC_P1","KC_P2","KC_P3","KC_PENT","KC_P0","KC_PDOT","KC_LEFT","KC_DOWN","KC_RGHT","KC_LCTL","KC_LGUI","KC_LALT","KC_SPC","KC_SPC","KC_SPC","KC_SPC","KC_RALT","KC_RGUI","KC_APP","KC_RCTL","KC_LEFT","KC_DOWN","KC_RGHT","KC_P0","KC_PDOT"] + ], + "author":"skullydazed", + "notes":"", + "version":1 +} diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c new file mode 100644 index 00000000..3969e105 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_4u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c new file mode 100644 index 00000000..12995fae --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_7u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; + + +#ifdef AUDIO_ENABLE + float song_one_up[][2] = SONG(ONE_UP_SOUND); +#endif + +volatile uint8_t runonce = true; +static uint16_t my_timer; + +void matrix_init_user(void) { + my_timer = timer_read(); +} + +void matrix_scan_user(void) { + if (runonce && timer_elapsed(my_timer) > 500) { + runonce = false; +#ifdef AUDIO_ENABLE + PLAY_SONG(song_one_up); +#endif + } +} diff --git a/keyboards/clueboard/2x1800/2018/readme.md b/keyboards/clueboard/2x1800/2018/readme.md new file mode 100644 index 00000000..df4412de --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/readme.md @@ -0,0 +1,13 @@ +# Clueboard 2x1800 + +Clueboard Double 1800 All The Way + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 2x1800 PCB +* Hardware Availability: 2018 Apr 1 Group Buy + +Make example for this keyboard: + + make clueboard/2x1800/2018: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). diff --git a/keyboards/clueboard/2x1800/2019/2019.c b/keyboards/clueboard/2x1800/2019/2019.c new file mode 100644 index 00000000..b7fb799e --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/2019.c @@ -0,0 +1,162 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include "2019.h" + +void matrix_init_kb(void) { + // Set our LED pins as output + gpio_set_pin_output(D6); + + // Set our Tilt Sensor pins as input + gpio_set_pin_input_high(SHAKE_PIN_A); + gpio_set_pin_input_high(SHAKE_PIN_B); + + // Run the keymap level init + matrix_init_user(); +} + +#ifdef DRAWING_ENABLE +bool drawing_mode = false; +bool btn1_pressed = false; +bool btn2_pressed = false; +bool btn3_pressed = false; +bool btn4_pressed = false; + +void check_encoder_buttons(void) { + if (btn1_pressed && btn2_pressed && btn3_pressed && btn4_pressed) { + // All 4 buttons pressed, toggle drawing mode + if (drawing_mode) { + dprintf("Turning drawing mode off.\n"); + drawing_mode = false; + gpio_write_pin_low(D6); + unregister_code(KC_BTN1); + } else { + dprintf("Turning drawing mode on.\n"); + drawing_mode = true; + gpio_write_pin_high(D6); + register_code(KC_BTN1); + } + } +} +#endif + +#ifdef SHAKE_ENABLE +uint8_t tilt_state = 0x11; +uint8_t detected_shakes = 0; +static uint16_t shake_timer; +#endif + +void housekeeping_task_kb(void) { +#ifdef SHAKE_ENABLE + // Read the current state of the tilt sensor. It is physically + // impossible for both pins to register a low state at the same time. + uint8_t tilt_read = (gpio_read_pin(SHAKE_PIN_A) << 4) | gpio_read_pin(SHAKE_PIN_B); + + // Check to see if the tilt sensor has changed state since our last read + if (tilt_state != tilt_read) { + shake_timer = timer_read(); + detected_shakes++; + tilt_state = tilt_read; + } + + if ((detected_shakes > 0) && (timer_elapsed(shake_timer) > SHAKE_TIMEOUT)) { + if (detected_shakes > SHAKE_COUNT) { + dprintf("Shake triggered! We detected %d shakes.\n", detected_shakes); + tap_code16(SHAKE_KEY); + } else { + dprintf("Shake not triggered! We detected %d shakes.\n", detected_shakes); + } + detected_shakes = 0; + } +#endif +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { +#ifdef DRAWING_ENABLE + if (keycode == ENC_BTN1) { + if (record->event.pressed) { + btn1_pressed = true; + register_code(KC_BTN1); + } else { + btn1_pressed = false; + unregister_code(KC_BTN1); + } + } + if (keycode == ENC_BTN2) { + if (record->event.pressed) { + btn2_pressed = true; + register_code(KC_BTN2); + } else { + btn2_pressed = false; + unregister_code(KC_BTN2); + } + } + if (keycode == ENC_BTN3) { + if (record->event.pressed) { + btn3_pressed = true; + register_code(KC_BTN3); + } else { + btn3_pressed = false; + unregister_code(KC_BTN3); + } + } + if (keycode == ENC_BTN4) { + if (record->event.pressed) { + btn4_pressed = true; + register_code(KC_BTN4); + } else { + btn4_pressed = false; + unregister_code(KC_BTN4); + } + } + + check_encoder_buttons(); +#endif + + return process_record_user(keycode, record); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (encoder_update_user(index, clockwise)) { + // Encoder 1, outside left + if (index == 0 && clockwise) { + tap_code(KC_MS_U); // turned right + } else if (index == 0) { + tap_code(KC_MS_D); // turned left + } + + // Encoder 2, inside left + else if (index == 1 && clockwise) { + tap_code(KC_WH_D); // turned right + } else if (index == 1) { + tap_code(KC_WH_U); // turned left + } + + // Encoder 3, inside right + else if (index == 2 && clockwise) { + tap_code(KC_VOLU); // turned right + } else if (index == 2) { + tap_code(KC_VOLD); // turned left + } + + // Encoder 4, outside right + else if (index == 3 && clockwise) { + tap_code(KC_MS_R); // turned right + } else if (index == 3) { + tap_code(KC_MS_L); // turned left + } + } + return true; +} diff --git a/keyboards/clueboard/2x1800/2019/2019.h b/keyboards/clueboard/2x1800/2019/2019.h new file mode 100644 index 00000000..d5867dac --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/2019.h @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#pragma once + +#include "quantum.h" + +enum TWOx1800_keycodes { + ENC_BTN1 = QK_KB_0, + ENC_BTN2, + ENC_BTN3, + ENC_BTN4, +}; + +// Encoder button combo check +void check_encoder_buttons(void); diff --git a/keyboards/clueboard/2x1800/2019/config.h b/keyboards/clueboard/2x1800/2019/config.h new file mode 100644 index 00000000..031952a0 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2017 Zach White + +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 . +*/ + +#pragma once + +/* audio support */ +#define AUDIO_PIN_ALT B7 +#define AUDIO_PIN C4 +#define AUDIO_CLICKY + +/* + * Drawing mode + */ +#define DRAWING_ENABLE +//#define UNDO_KEY LGUI(KC_Z) // What key to send for undo +//#define UNDO_KEY LCTL(KC_Z) +#define UNDO_KEY LGUI(KC_SLSH) + +/* + * Shake to undo configuration + */ +#define SHAKE_ENABLE +#define SHAKE_PIN_A E4 +#define SHAKE_PIN_B E5 +#define SHAKE_TIMEOUT 500 // How long after shaking stops before we register it +#define SHAKE_COUNT 8 // How many shakes it takes to activate +#define SHAKE_KEY UNDO_KEY // What key to send after a shake diff --git a/keyboards/clueboard/2x1800/2019/keyboard.json b/keyboards/clueboard/2x1800/2019/keyboard.json new file mode 100644 index 00000000..31ff448d --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keyboard.json @@ -0,0 +1,1242 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 2x1800 2019", + "maintainer": "skullydazed", + "processor": "at90usb1286", + "bootloader": "halfkay", + "diode_direction": "ROW2COL", + "features": { + "audio": true, + "bootmagic": false, + "command": true, + "console": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "B0", "E6", "B3", "B2"], + "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "B1", "F2", "F3", "F4", "F5", "F6", "C6"] + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x23A0", + "vid": "0xC1ED" + }, + "encoder": { + "rotary": [ + {"pin_a": "A5", "pin_b": "A6"}, + {"pin_a": "A4", "pin_b": "A7"}, + {"pin_a": "A2", "pin_b": "A3"}, + {"pin_a": "A1", "pin_b": "A0"} + ] + }, + "indicators": { + "caps_lock": "B5", + "num_lock": "B4", + "scroll_lock": "B6", + "on_state": 0 + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_1u_ansi": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [5, 9], "x": 9.5, "y": 6.75}, + {"matrix": [5, 10], "x": 10.5, "y": 6.75}, + {"matrix": [11, 0], "x": 11.5, "y": 6.75}, + {"matrix": [11, 1], "x": 12.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_1u_iso": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 10], "x": 17.25, "y": 4.75}, + {"h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [5, 9], "x": 9.5, "y": 6.75}, + {"matrix": [5, 10], "x": 10.5, "y": 6.75}, + {"matrix": [11, 0], "x": 11.5, "y": 6.75}, + {"matrix": [11, 1], "x": 12.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_2u_ansi": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [5, 9], "x": 9.5, "y": 6.75}, + {"matrix": [11, 0], "w": 2, "x": 10.5, "y": 6.75}, + {"matrix": [11, 1], "x": 12.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_2u_iso": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 10], "x": 17.25, "y": 4.75}, + {"h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [5, 9], "x": 9.5, "y": 6.75}, + {"matrix": [11, 0], "w": 2, "x": 10.5, "y": 6.75}, + {"matrix": [11, 1], "x": 12.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_4u_ansi": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [11, 0], "w": 4, "x": 9.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_4u_iso": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 10], "x": 17.25, "y": 4.75}, + {"h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [11, 0], "w": 4, "x": 9.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_7u_ansi": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [11, 0], "w": 7, "x": 8.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_7u_iso": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 10], "x": 17.25, "y": 4.75}, + {"h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [11, 0], "w": 7, "x": 8.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [12, 3], "x": 3, "y": 0}, + {"matrix": [12, 4], "x": 4, "y": 0}, + {"matrix": [12, 9], "x": 19, "y": 0}, + {"matrix": [12, 10], "x": 20, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1.5}, + {"matrix": [0, 1], "x": 1, "y": 1.5}, + {"matrix": [0, 2], "x": 2, "y": 1.5}, + {"matrix": [0, 3], "x": 3, "y": 1.5}, + {"matrix": [0, 4], "x": 4.75, "y": 1.5}, + {"matrix": [0, 6], "x": 6.25, "y": 1.5}, + {"matrix": [0, 7], "x": 7.25, "y": 1.5}, + {"matrix": [0, 8], "x": 8.25, "y": 1.5}, + {"matrix": [0, 9], "x": 9.25, "y": 1.5}, + {"matrix": [0, 10], "x": 10.75, "y": 1.5}, + {"matrix": [6, 0], "x": 11.75, "y": 1.5}, + {"matrix": [6, 1], "x": 12.75, "y": 1.5}, + {"matrix": [6, 2], "x": 13.75, "y": 1.5}, + {"matrix": [6, 3], "x": 15.25, "y": 1.5}, + {"matrix": [6, 4], "x": 16.25, "y": 1.5}, + {"matrix": [6, 5], "x": 17.25, "y": 1.5}, + {"matrix": [6, 6], "x": 18.25, "y": 1.5}, + {"matrix": [6, 7], "x": 20, "y": 1.5}, + {"matrix": [6, 8], "x": 21, "y": 1.5}, + {"matrix": [6, 9], "x": 22, "y": 1.5}, + {"matrix": [6, 10], "x": 23, "y": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 2.75}, + {"matrix": [1, 1], "x": 1, "y": 2.75}, + {"matrix": [1, 2], "x": 2, "y": 2.75}, + {"matrix": [1, 3], "x": 3, "y": 2.75}, + {"matrix": [1, 4], "x": 4.5, "y": 2.75}, + {"matrix": [1, 5], "x": 5.5, "y": 2.75}, + {"matrix": [1, 6], "x": 6.5, "y": 2.75}, + {"matrix": [1, 7], "x": 7.5, "y": 2.75}, + {"matrix": [1, 8], "x": 8.5, "y": 2.75}, + {"matrix": [1, 9], "x": 9.5, "y": 2.75}, + {"matrix": [1, 10], "x": 10.5, "y": 2.75}, + {"matrix": [7, 0], "x": 11.5, "y": 2.75}, + {"matrix": [7, 1], "x": 12.5, "y": 2.75}, + {"matrix": [7, 2], "x": 13.5, "y": 2.75}, + {"matrix": [7, 3], "x": 14.5, "y": 2.75}, + {"matrix": [7, 4], "x": 15.5, "y": 2.75}, + {"matrix": [7, 5], "x": 16.5, "y": 2.75}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75}, + {"matrix": [7, 7], "x": 20, "y": 2.75}, + {"matrix": [7, 8], "x": 21, "y": 2.75}, + {"matrix": [7, 9], "x": 22, "y": 2.75}, + {"matrix": [7, 10], "x": 23, "y": 2.75}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 3.75}, + {"matrix": [2, 1], "x": 1, "y": 3.75}, + {"matrix": [2, 2], "x": 2, "y": 3.75}, + {"matrix": [2, 3], "x": 3, "y": 3.75}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75}, + {"matrix": [2, 5], "x": 6, "y": 3.75}, + {"matrix": [2, 6], "x": 7, "y": 3.75}, + {"matrix": [2, 7], "x": 8, "y": 3.75}, + {"matrix": [2, 8], "x": 9, "y": 3.75}, + {"matrix": [2, 9], "x": 10, "y": 3.75}, + {"matrix": [2, 10], "x": 11, "y": 3.75}, + {"matrix": [8, 0], "x": 12, "y": 3.75}, + {"matrix": [8, 1], "x": 13, "y": 3.75}, + {"matrix": [8, 2], "x": 14, "y": 3.75}, + {"matrix": [8, 3], "x": 15, "y": 3.75}, + {"matrix": [8, 4], "x": 16, "y": 3.75}, + {"matrix": [8, 5], "x": 17, "y": 3.75}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75}, + {"matrix": [8, 7], "x": 20, "y": 3.75}, + {"matrix": [8, 8], "x": 21, "y": 3.75}, + {"matrix": [8, 9], "x": 22, "y": 3.75}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 3.75}, + {"matrix": [3, 1], "x": 1, "y": 4.75}, + {"matrix": [3, 2], "x": 2, "y": 4.75}, + {"matrix": [3, 3], "x": 3, "y": 4.75}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75}, + {"matrix": [3, 5], "x": 6.25, "y": 4.75}, + {"matrix": [3, 6], "x": 7.25, "y": 4.75}, + {"matrix": [3, 7], "x": 8.25, "y": 4.75}, + {"matrix": [3, 8], "x": 9.25, "y": 4.75}, + {"matrix": [3, 9], "x": 10.25, "y": 4.75}, + {"matrix": [3, 10], "x": 11.25, "y": 4.75}, + {"matrix": [9, 0], "x": 12.25, "y": 4.75}, + {"matrix": [9, 1], "x": 13.25, "y": 4.75}, + {"matrix": [9, 2], "x": 14.25, "y": 4.75}, + {"matrix": [9, 3], "x": 15.25, "y": 4.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.75}, + {"matrix": [9, 10], "x": 17.25, "y": 4.75}, + {"matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 4.75}, + {"matrix": [9, 7], "x": 20, "y": 4.75}, + {"matrix": [9, 8], "x": 21, "y": 4.75}, + {"matrix": [9, 9], "x": 22, "y": 4.75}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 5.75}, + {"matrix": [4, 1], "x": 1, "y": 5.75}, + {"matrix": [4, 2], "x": 2, "y": 5.75}, + {"matrix": [4, 3], "x": 3, "y": 5.75}, + {"matrix": [4, 4], "x": 4.25, "y": 6}, + {"matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75}, + {"matrix": [4, 6], "x": 6.75, "y": 5.75}, + {"matrix": [4, 7], "x": 7.75, "y": 5.75}, + {"matrix": [4, 8], "x": 8.75, "y": 5.75}, + {"matrix": [4, 9], "x": 9.75, "y": 5.75}, + {"matrix": [4, 10], "x": 10.75, "y": 5.75}, + {"matrix": [10, 0], "x": 11.75, "y": 5.75}, + {"matrix": [10, 1], "x": 12.75, "y": 5.75}, + {"matrix": [10, 2], "x": 13.75, "y": 5.75}, + {"matrix": [10, 3], "x": 14.75, "y": 5.75}, + {"matrix": [10, 4], "x": 15.75, "y": 5.75}, + {"matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75}, + {"matrix": [9, 6], "x": 18.75, "y": 6}, + {"matrix": [10, 7], "x": 20, "y": 5.75}, + {"matrix": [10, 8], "x": 21, "y": 5.75}, + {"matrix": [10, 9], "x": 22, "y": 5.75}, + {"h": 2, "matrix": [10, 10], "x": 23, "y": 5.75}, + {"matrix": [5, 1], "x": 1, "y": 6.75}, + {"matrix": [5, 2], "x": 2, "y": 6.75}, + {"matrix": [5, 3], "x": 3.25, "y": 7}, + {"matrix": [5, 4], "x": 4.25, "y": 7}, + {"matrix": [5, 5], "x": 5.25, "y": 7}, + {"matrix": [5, 6], "x": 6.5, "y": 6.75}, + {"matrix": [5, 7], "x": 7.5, "y": 6.75}, + {"matrix": [5, 8], "x": 8.5, "y": 6.75}, + {"matrix": [5, 9], "x": 9.5, "y": 6.75}, + {"matrix": [5, 10], "x": 10.5, "y": 6.75}, + {"matrix": [11, 0], "x": 11.5, "y": 6.75}, + {"matrix": [11, 1], "x": 12.5, "y": 6.75}, + {"matrix": [11, 2], "x": 13.5, "y": 6.75}, + {"matrix": [11, 3], "x": 14.5, "y": 6.75}, + {"matrix": [11, 4], "x": 15.5, "y": 6.75}, + {"matrix": [11, 5], "x": 16.5, "y": 6.75}, + {"matrix": [10, 6], "x": 17.75, "y": 7}, + {"matrix": [11, 6], "x": 18.75, "y": 7}, + {"matrix": [11, 7], "x": 19.75, "y": 7}, + {"matrix": [11, 8], "x": 21, "y": 6.75}, + {"matrix": [11, 9], "x": 22, "y": 6.75} + ] + } + } +} diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json new file mode 100644 index 00000000..51cd59fc --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json @@ -0,0 +1,11 @@ +{ + "keyboard":"clueboard/2x1800/2019", + "keymap":"default", + "layout":"LAYOUT_all", + "layers":[ + ["ENC_BTN1","ENC_BTN2","ENC_BTN3","ENC_BTN4","KC_HOME","KC_END","KC_PGUP","KC_PGDN","KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_PSCR","KC_SCRL","KC_PAUS","KC_INS","KC_PMNS","KC_NUM","KC_PSLS","KC_PAST","KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_BSPC","KC_NUM","KC_PSLS","KC_PAST","KC_PMNS","KC_PPLS","KC_P7","KC_P8","KC_P9","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_P7","KC_P8","KC_P9","KC_PSLS","KC_P4","KC_P5","KC_P6","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_P4","KC_P5","KC_P6","KC_PENT","KC_P1","KC_P2","KC_P3","KC_UP","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_SLSH","KC_COMM","KC_DOT","KC_RSFT","KC_UP","KC_P1","KC_P2","KC_P3","KC_PENT","KC_P0","KC_PDOT","KC_LEFT","KC_DOWN","KC_RGHT","KC_LCTL","KC_LGUI","KC_LALT","KC_SPC","KC_SPC","KC_SPC","KC_SPC","KC_RALT","KC_RGUI","KC_APP","KC_RCTL","KC_LEFT","KC_DOWN","KC_RGHT","KC_P0","KC_PDOT"] + ], + "author":"skullydazed", + "notes":"", + "version":1 +} diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c new file mode 100644 index 00000000..b2456225 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_1u_ansi( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c new file mode 100644 index 00000000..70e38efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_1u_iso( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c new file mode 100644 index 00000000..cb41bf9a --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_2u_ansi( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c new file mode 100644 index 00000000..af3e7f96 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_2u_iso( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c new file mode 100644 index 00000000..19a33f92 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_4u_ansi( + KC_1, KC_2, KC_3, KC_4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c new file mode 100644 index 00000000..fd7723d3 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_4u_iso( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c new file mode 100644 index 00000000..761423bf --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_7u_ansi( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c new file mode 100644 index 00000000..b4999999 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_7u_iso( + KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2019/readme.md b/keyboards/clueboard/2x1800/2019/readme.md new file mode 100644 index 00000000..538c1532 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/readme.md @@ -0,0 +1,13 @@ +# Clueboard 2x1800 + +Clueboard 2x1800 Mechanical Drawing Toy Edition + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 2x1800 2019 PCB +* Hardware Availability: 2019 Apr 1 Group Buy + +Make example for this keyboard: + + make clueboard/2x1800/2019: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). diff --git a/keyboards/clueboard/2x1800/2021/2021.c b/keyboards/clueboard/2x1800/2021/2021.c new file mode 100644 index 00000000..511c40a6 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/2021.c @@ -0,0 +1,151 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ + +#include "quantum.h" +#include "max7219.h" +#include "font.h" + +#ifndef DRAWING_TOY_MODE +static uint16_t led_frame_timer = 0; + +void housekeeping_task_kb(void) { + if (timer_elapsed(led_frame_timer) > 100) { + max7219_message_sign_task(true); + led_frame_timer = timer_read(); + } +} +#endif + +void matrix_init_kb(void) { + max7219_init(); + +#if defined(MAX7219_LED_TEST) + while(1) { + for (int i=0; i 0) { // turned left + led_position[0]--; + } else { + led_position[0]=NUM_COLUMNS-1; + } + } + + // Encoder 2, right + else if (index == 1 && clockwise) { + if (led_position[1] < 7) { // turned right + led_position[1]++; + } else { + led_position[1]=0; + } + } else if (index == 1) { + if (led_position[1] > 0) { // turned left + led_position[1]--; + } else { + led_position[1]=7; + } + } + + max7219_set_led(led_position[1], led_position[0], true); +#else + // Encoder 1, left + if (index == 0 && clockwise) { + tap_code(KC_MS_R); // turned right + } else if (index == 0) { + tap_code(KC_MS_L); // turned left + } + + // Encoder 2, right + else if (index == 1 && clockwise) { + tap_code(KC_MS_U); // turned right + } else if (index == 1) { + tap_code(KC_MS_D); // turned left + } +#endif + } + return true; +} diff --git a/keyboards/clueboard/2x1800/2021/config.h b/keyboards/clueboard/2x1800/2021/config.h new file mode 100644 index 00000000..6cb7bd2c --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/config.h @@ -0,0 +1,82 @@ +/* +Copyright 2017 Zach White + +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 . +*/ + +#pragma once + + +/* audio support */ +#define AUDIO_PIN_ALT B7 +#define AUDIO_PIN C4 +#define AUDIO_CLICKY + +// Configure our MAX7219's +//#define MAX7219_LOAD B0 +//#define MAX7219_CONTROLLERS 4 +//#define MAX7219_LED_INTENSITY 1 // Max: 15 + +// Define this to disable the startup test +//#define MAX7219_NO_STARTUP_TEST + +/* This controls the speed of the sign, lower is faster. This is the minimal + * time between animation frames, in ms. Actual time between frames will + * always be slightly longer due to other keyboard tasks. + */ +//#define MAX7219_SCROLL_TIME 100 + +/* This setting controls how big the scrollable area for your message sign + * is. If you set it to 0 your display will not work. If you set it to 1 + * you will have no buffer area, and you will only be able to display a + * total of 6 characters. Every number after that increases the buffer area + * by 32 columns. + * + * You can calculate how big to make this for the number of characters you + * want to display: + * + * * 6 / 32 + 1 + * + * You do not need to tune this unless you are trying to save ram. + */ +//#define MAX7219_BUFFER_MULTIPLIER 24 + +// You can only define one of these at a time: + +// Define this to test all LEDs. Keyboard functions will not work. +//#define MAX7219_LED_TEST + +// Define this to iterate through LEDs 1 by 1. Keyboard functions will not work. +//#define MAX7219_LED_ITERATE + +// Define this to show a simple animation. Keyboard functions will not work. +//#define MAX7219_LED_DANCE + +// Define this to show all the characters available +//#define MAX7219_LED_FONTTEST + +// Define this to show Clueboard on the sign +//#define MAX7219_LED_CLUEBOARD + +// Define this to show the Konami code on the sign +//#define MAX7219_LED_KONAMI + +// Define this to show QMK on the sign +//#define MAX7219_LED_QMK_POWERED + +// Define this to treat the message board like an etch-a-sketch +//#define DRAWING_TOY_MODE + +// Define this if you don't want any of the above +//#define MAX7219_LED_CUSTOM diff --git a/keyboards/clueboard/2x1800/2021/font.h b/keyboards/clueboard/2x1800/2021/font.h new file mode 100644 index 00000000..191d11dc --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/font.h @@ -0,0 +1,158 @@ +/* 5x8 Font for Clueboard 2x1800. + * + * Copyright (c) 2021 Zach White + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * This permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#pragma once + +// Top row of keyboard, when shift held +#define CHR_TILDE {0b00110000, 0b01000000, 0b00110000, 0b00001000, 0b00110000, 0b00000000} +#define CHR_BANG {0b00000000, 0b00000000, 0b11111010, 0b10000000, 0b00000000, 0b00000000} +#define CHR_AT {0b01001100, 0b10010010, 0b10011110, 0b10000010, 0b01111100, 0b00000000} +#define CHR_POUND {0b00101000, 0b11111110, 0b00101000, 0b11111110, 0b00101000, 0b00000000} +#define CHR_DOLLAR {0b00100100, 0b01010100, 0b11111110, 0b10101010, 0b01001000, 0b00000000} +#define CHR_PERCENT {0b11000010, 0b11000100, 0b00010000, 0b00100110, 0b01000110, 0b00000000} +#define CHR_CARET {0b00100000, 0b01000000, 0b10000000, 0b01000000, 0b00100000, 0b00000000} +#define CHR_AMPERSAND {0b01101100, 0b10010010, 0b10101010, 0b01000100, 0b00001010, 0b00000000} +#define CHR_ASTERISK {0b00101000, 0b00010000, 0b01111100, 0b00010000, 0b00101000, 0b00000000} +#define CHR_LPAREN {0b00000000, 0b00111000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RPAREN {0b00000000, 0b10000010, 0b01000100, 0b00111000, 0b00000000, 0b00000000} +#define CHR_UNDERSCORE {0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000000} +#define CHR_PLUS {0b00010000, 0b00010000, 0b01111100, 0b00010000, 0b00010000, 0b00000000} + +// Top row of keyboard, without shift +#define CHR_BACKTICK {0b00000000, 0b11000000, 0b01100000, 0b10000000, 0b00000000, 0b00000000} +#define CHR_1 {0b00100000, 0b01000010, 0b11111110, 0b00000010, 0b00000010, 0b00000000} +#define CHR_2 {0b01000010, 0b10000110, 0b10001010, 0b10010010, 0b01100010, 0b00000000} +#define CHR_3 {0b10000100, 0b10000010, 0b10100010, 0b11010010, 0b10001100, 0b00000000} +#define CHR_4 {0b00011000, 0b00101000, 0b01001000, 0b11111110, 0b00001000, 0b00000000} +#define CHR_5 {0b11100100, 0b10100010, 0b10100010, 0b10100010, 0b10011100, 0b00000000} +#define CHR_6 {0b00111100, 0b01010010, 0b10010010, 0b10010010, 0b00001100, 0b00000000} +#define CHR_7 {0b11000000, 0b10001110, 0b10010000, 0b10100000, 0b11000000, 0b00000000} +#define CHR_8 {0b01101100, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} +#define CHR_9 {0b01100000, 0b10010010, 0b10010010, 0b10010010, 0b01111000, 0b00000000} +#define CHR_0 {0b01111100, 0b10001010, 0b10010010, 0b10100010, 0b01111100, 0b00000000} +#define CHR_DASH {0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00000000, 0b00000000} +#define CHR_EQUAL {0b00000000, 0b00101000, 0b00101000, 0b00101000, 0b00000000, 0b00000000} + +// Letters +#define CHR_A {0b01111110, 0b10001000, 0b10001000, 0b10001000, 0b01111110, 0b00000000} +#define CHR_B {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} +#define CHR_C {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01000100, 0b00000000} +#define CHR_D {0b11111110, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} +#define CHR_E {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b10000010, 0b00000000} +#define CHR_F {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b10000000, 0b00000000} +#define CHR_G {0b01111100, 0b10000010, 0b10010010, 0b10010010, 0b01011100, 0b00000000} +#define CHR_H {0b11111110, 0b00010000, 0b00010000, 0b00010000, 0b11111110, 0b00000000} +#define CHR_I {0b00000000, 0b10000010, 0b11111110, 0b10000010, 0b00000000, 0b00000000} +#define CHR_J {0b00000100, 0b00000010, 0b10000010, 0b11111100, 0b10000000, 0b00000000} +#define CHR_K {0b11111110, 0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000} +#define CHR_L {0b00000000, 0b11111110, 0b00000010, 0b00000010, 0b00000010, 0b00000000} +#define CHR_M {0b11111110, 0b01000000, 0b00110000, 0b01000000, 0b11111110, 0b00000000} +#define CHR_N {0b11111110, 0b01100000, 0b00010000, 0b00001100, 0b11111110, 0b00000000} +#define CHR_O {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} +#define CHR_P {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b01100000, 0b00000000} +#define CHR_Q {0b01111100, 0b10000010, 0b10001010, 0b10000100, 0b01111010, 0b00000000} +#define CHR_R {0b11111110, 0b10010000, 0b10011000, 0b10010100, 0b01100010, 0b00000000} +#define CHR_S {0b01100100, 0b10010010, 0b10010010, 0b10010010, 0b01001100, 0b00000000} +#define CHR_T {0b10000000, 0b10000000, 0b11111110, 0b10000000, 0b10000000, 0b00000000} +#define CHR_U {0b11111100, 0b00000010, 0b00000010, 0b00000010, 0b11111100, 0b00000000} +#define CHR_V {0b11111000, 0b00000100, 0b00000010, 0b00000100, 0b11111000, 0b00000000} +#define CHR_W {0b11111100, 0b00000010, 0b00011100, 0b00000010, 0b11111110, 0b00000000} +#define CHR_X {0b11000110, 0b00101000, 0b00010000, 0b00101000, 0b11000110, 0b00000000} +#define CHR_Y {0b11100000, 0b00010000, 0b00001110, 0b00010000, 0b11100000, 0b00000000} +#define CHR_Z {0b10000110, 0b10001010, 0b10010010, 0b10100010, 0b11000010, 0b00000000} + +#define CHR_a {0b00000100, 0b00101010, 0b00101010, 0b00101010, 0b00011110, 0b00000000} +#define CHR_b {0b11111110, 0b00010010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} +#define CHR_c {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00000100, 0b00000000} +#define CHR_d {0b00011100, 0b00100010, 0b00100010, 0b00010010, 0b11111110, 0b00000000} +#define CHR_e {0b00011100, 0b00101010, 0b00101010, 0b00101010, 0b00011000, 0b00000000} +#define CHR_f {0b00000000, 0b00010000, 0b01111110, 0b10010000, 0b10000000, 0b01000000} +#define CHR_g {0b00011000, 0b00100101, 0b00100101, 0b00100101, 0b00111110, 0b00000000} +#define CHR_h {0b11111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} +#define CHR_i {0b00000000, 0b00010010, 0b10111110, 0b00000010, 0b00000000, 0b00000000} +#define CHR_j {0b00000100, 0b00000010, 0b00100010, 0b10111100, 0b00000000, 0b00000000} +#define CHR_k {0b11111110, 0b00001000, 0b00010100, 0b00100010, 0b00000000, 0b00000000} +#define CHR_l {0b00000000, 0b10000010, 0b11111110, 0b00000010, 0b00000000, 0b00000000} +#define CHR_m {0b00111110, 0b00100000, 0b00111110, 0b00100000, 0b00111110, 0b00000000} +#define CHR_n {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} +#define CHR_o {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} +#define CHR_p {0b00111111, 0b00100100, 0b00100100, 0b00100100, 0b00011000, 0b00000000} +#define CHR_q {0b00011000, 0b00100100, 0b00100100, 0b00011000, 0b00111111, 0b00000000} +#define CHR_r {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00010000, 0b00000000} +#define CHR_s {0b00010010, 0b00101010, 0b00101010, 0b00101010, 0b00000100, 0b00000000} +#define CHR_t {0b00100000, 0b11111100, 0b00100010, 0b00000010, 0b00000100, 0b00000000} +#define CHR_u {0b00111100, 0b00000010, 0b00000010, 0b00000100, 0b00111110, 0b00000000} +#define CHR_v {0b00111000, 0b00000100, 0b00000010, 0b00000100, 0b00111000, 0b00000000} +#define CHR_w {0b00111100, 0b00000010, 0b00111100, 0b00000010, 0b00111100, 0b00000000} +#define CHR_x {0b00100010, 0b00010100, 0b00001000, 0b00010100, 0b00100010, 0b00000000} +#define CHR_y {0b00111000, 0b00000101, 0b00000101, 0b00000101, 0b00111110, 0b00000000} +#define CHR_z {0b00100010, 0b00100110, 0b00101010, 0b00110010, 0b00100010, 0b00000000} + +// Punctuation +#define CHR_LCURLY {0b00000000, 0b00010000, 0b01101100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RCURLY {0b00000000, 0b10000010, 0b01101100, 0b00010000, 0b00000000, 0b00000000} +#define CHR_PIPE {0b00000000, 0b00000000, 0b11101110, 0b00000000, 0b00000000, 0b00000000} +#define CHR_COLON {0b00000000, 0b00000000, 0b01101100, 0b01101100, 0b00000000, 0b00000000} +#define CHR_QUOTE {0b00000000, 0b01110000, 0b00000000, 0b01110000, 0b00000000, 0b00000000} +#define CHR_LESSTHAN {0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_GREATERTHAN {0b10000010, 0b01000100, 0b00101000, 0b00010000, 0b00000000, 0b00000000} +#define CHR_QUESTIONMARK {0b01000000, 0b10000000, 0b10001010, 0b10010000, 0b01100000, 0b00000000} +#define CHR_INTERROBANG {0b01100000, 0b10000000, 0b11101010, 0b10010000, 0b01100000, 0b00000000} +#define CHR_LBRACKET {0b00000000, 0b11111110, 0b10000010, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RBRACKET {0b00000000, 0b10000010, 0b10000010, 0b11111110, 0b00000000, 0b00000000} +#define CHR_BACKSLASH {0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000000} +#define CHR_SEMICOLON {0b00000000, 0b00000000, 0b01101010, 0b01101100, 0b00000000, 0b00000000} +#define CHR_APOSTROPHE {0b00000000, 0b00000000, 0b01110000, 0b00000000, 0b00000000, 0b00000000} +#define CHR_COMMA {0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00000000, 0b00000000} +#define CHR_PERIOD {0b00000000, 0b00000000, 0b00000110, 0b00000110, 0b00000000, 0b00000000} +#define CHR_SLASH {0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b00000000} +#define CHR_SPACE {0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} +#define CHR_DEGREES {0b11000000, 0b11000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} + +// Graphics +#define CHR_CENT {0b00111000, 0b01000100, 0b11111110, 0b01000100, 0b00101000, 0b00000000} +#define CHR_DEGREES_C {0b11000000, 0b11001100, 0b00010010, 0b00010010, 0b00000000, 0b00000000} +#define CHR_DEGREES_F {0b11000000, 0b11011110, 0b00010100, 0b00010000, 0b00000000, 0b00000000} +#define CHR_DIVISION {0b00010000, 0b00010000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} +#define CHR_LEFT_ARROW {0b00010000, 0b00111000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} +#define CHR_RIGHT_ARROW {0b00010000, 0b00010000, 0b01010100, 0b00111000, 0b00010000, 0b00000000} +#define CHR_UP_ARROW {0b00010000, 0b00100000, 0b01111110, 0b00100000, 0b00010000, 0b00000000} +#define CHR_DOWN_ARROW {0b00001000, 0b00000100, 0b01111110, 0b00000100, 0b00001000, 0b00000000} +#define CHR_PI {0b00100010, 0b00111100, 0b00100000, 0b00111110, 0b00100010, 0b00000000} +#define CHR_PSI {0b01111000, 0b00001000, 0b01111110, 0b00001000, 0b01111000, 0b00000000} + +// Predefined messages +#define MSG_FONTTEST {CHR_TILDE, CHR_BANG, CHR_AT, CHR_POUND, CHR_PERCENT, CHR_CARET, CHR_AMPERSAND, CHR_LPAREN, CHR_RPAREN, CHR_UNDERSCORE, CHR_PLUS, CHR_BACKTICK, CHR_1, CHR_2, CHR_3, CHR_4, CHR_5, CHR_6, CHR_7, CHR_8, CHR_9, CHR_0, CHR_DASH, CHR_EQUAL, CHR_A, CHR_B, CHR_C, CHR_D, CHR_E, CHR_F, CHR_G, CHR_H, CHR_I, CHR_J, CHR_K, CHR_L, CHR_M, CHR_N, CHR_O, CHR_P, CHR_Q, CHR_R, CHR_S, CHR_T, CHR_U, CHR_V, CHR_W, CHR_X, CHR_Y, CHR_Z, CHR_a, CHR_b, CHR_c, CHR_d, CHR_e, CHR_f, CHR_g, CHR_h, CHR_i, CHR_j, CHR_k, CHR_l, CHR_m, CHR_n, CHR_o, CHR_p, CHR_q, CHR_r, CHR_s, CHR_t, CHR_u, CHR_v, CHR_w, CHR_x, CHR_y, CHR_z, CHR_LCURLY, CHR_RCURLY, CHR_PIPE, CHR_COLON, CHR_QUOTE, CHR_LESSTHAN, CHR_GREATERTHAN, CHR_QUESTIONMARK, CHR_INTERROBANG, CHR_LBRACKET, CHR_RBRACKET, CHR_BACKSLASH, CHR_SEMICOLON, CHR_APOSTROPHE, CHR_COMMA, CHR_PERIOD, CHR_SLASH, CHR_CENT, CHR_DEGREES, CHR_DEGREES_C, CHR_DEGREES_F, CHR_DIVISION, CHR_LEFT_ARROW, CHR_RIGHT_ARROW, CHR_UP_ARROW, CHR_DOWN_ARROW, CHR_PI, CHR_PSI} +#define MSG_FONTTEST_LEN 104 + +#define MSG_CLUEBOARD {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d} +#define MSG_CLUEBOARD_LEN 10 + +#define MSG_KONAMI {CHR_UP_ARROW, CHR_SPACE, CHR_UP_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_B, CHR_SPACE, CHR_A, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_E, CHR_L, CHR_E, CHR_C, CHR_T, CHR_GREATERTHAN, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_T, CHR_A, CHR_R, CHR_T, CHR_GREATERTHAN} +#define MSG_KONAMI_LEN 36 + +#define MSG_QMK_POWERED {CHR_PSI, CHR_P, CHR_o, CHR_w, CHR_e, CHR_r, CHR_e, CHR_d, CHR_SPACE, CHR_b, CHR_y, CHR_SPACE, CHR_Q, CHR_M, CHR_K} +#define MSG_QMK_POWERED_LEN 15 diff --git a/keyboards/clueboard/2x1800/2021/keyboard.json b/keyboards/clueboard/2x1800/2021/keyboard.json new file mode 100644 index 00000000..b87c9fd7 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keyboard.json @@ -0,0 +1,430 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 2x1800 2021", + "maintainer": "skullydazed", + "bootloader": "halfkay", + "diode_direction": "ROW2COL", + "features": { + "audio": true, + "bootmagic": false, + "console": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "indicators": { + "caps_lock": "B5", + "num_lock": "B4", + "scroll_lock": "B6" + }, + "matrix_pins": { + "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "F0", "E6", "A0", "E7"], + "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "F1", "F2", "F3", "F4", "F5", "F6"] + }, + "processor": "at90usb1286", + "usb": { + "pid": "0x23A0" + }, + "encoder": { + "rotary": [ + {"pin_a": "D0", "pin_b": "D1"}, + {"pin_a": "C5", "pin_b": "C6"} + ] + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_4u_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [6, 0], "x": 11.75, "y": 0}, + {"matrix": [6, 1], "x": 12.75, "y": 0}, + {"matrix": [6, 2], "x": 13.75, "y": 0}, + {"matrix": [6, 3], "x": 15.25, "y": 0}, + {"matrix": [6, 4], "x": 16.25, "y": 0}, + {"matrix": [6, 5], "x": 17.25, "y": 0}, + {"matrix": [6, 6], "x": 18.25, "y": 0}, + {"matrix": [6, 7], "x": 20, "y": 0}, + {"matrix": [6, 8], "x": 21, "y": 0}, + {"matrix": [6, 9], "x": 22, "y": 0}, + {"matrix": [6, 10], "x": 23, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"matrix": [7, 7], "x": 20, "y": 1.25}, + {"matrix": [7, 8], "x": 21, "y": 1.25}, + {"matrix": [7, 9], "x": 22, "y": 1.25}, + {"matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [8, 0], "x": 12, "y": 2.25}, + {"matrix": [8, 1], "x": 13, "y": 2.25}, + {"matrix": [8, 2], "x": 14, "y": 2.25}, + {"matrix": [8, 3], "x": 15, "y": 2.25}, + {"matrix": [8, 4], "x": 16, "y": 2.25}, + {"matrix": [8, 5], "x": 17, "y": 2.25}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"matrix": [8, 7], "x": 20, "y": 2.25}, + {"matrix": [8, 8], "x": 21, "y": 2.25}, + {"matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 2.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"matrix": [9, 7], "x": 20, "y": 3.25}, + {"matrix": [9, 8], "x": 21, "y": 3.25}, + {"matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2, "y": 4.25}, + {"matrix": [4, 3], "x": 3, "y": 4.25}, + {"matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25}, + {"matrix": [4, 5], "x": 6.75, "y": 4.25}, + {"matrix": [4, 6], "x": 7.75, "y": 4.25}, + {"matrix": [4, 7], "x": 8.75, "y": 4.25}, + {"matrix": [4, 8], "x": 9.75, "y": 4.25}, + {"matrix": [4, 9], "x": 10.75, "y": 4.25}, + {"matrix": [4, 10], "x": 11.75, "y": 4.25}, + {"matrix": [10, 0], "x": 12.75, "y": 4.25}, + {"matrix": [10, 1], "x": 13.75, "y": 4.25}, + {"matrix": [10, 2], "x": 14.75, "y": 4.25}, + {"matrix": [10, 3], "x": 15.75, "y": 4.25}, + {"matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25}, + {"matrix": [10, 5], "x": 20, "y": 4.25}, + {"matrix": [9, 6], "x": 21, "y": 4.25}, + {"matrix": [10, 7], "x": 22, "y": 4.25}, + {"h": 2, "matrix": [10, 8], "x": 23, "y": 4.25}, + {"matrix": [10, 9], "x": 4.25, "y": 4.5}, + {"matrix": [10, 10], "x": 18.75, "y": 4.5}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2, "y": 5.25}, + {"matrix": [5, 3], "x": 6.5, "y": 5.25}, + {"matrix": [5, 4], "x": 7.5, "y": 5.25}, + {"matrix": [5, 5], "x": 8.5, "y": 5.25}, + {"matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25}, + {"matrix": [5, 8], "x": 14.5, "y": 5.25}, + {"matrix": [11, 0], "x": 15.5, "y": 5.25}, + {"matrix": [11, 2], "x": 16.5, "y": 5.25}, + {"matrix": [11, 3], "x": 21, "y": 5.25}, + {"matrix": [11, 4], "x": 22, "y": 5.25}, + {"matrix": [11, 5], "x": 3.25, "y": 5.5}, + {"matrix": [10, 6], "x": 4.25, "y": 5.5}, + {"matrix": [11, 6], "x": 5.25, "y": 5.5}, + {"matrix": [11, 7], "x": 17.75, "y": 5.5}, + {"matrix": [11, 8], "x": 18.75, "y": 5.5}, + {"matrix": [11, 9], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [6, 0], "x": 11.75, "y": 0}, + {"matrix": [6, 1], "x": 12.75, "y": 0}, + {"matrix": [6, 2], "x": 13.75, "y": 0}, + {"matrix": [6, 3], "x": 15.25, "y": 0}, + {"matrix": [6, 4], "x": 16.25, "y": 0}, + {"matrix": [6, 5], "x": 17.25, "y": 0}, + {"matrix": [6, 6], "x": 18.25, "y": 0}, + {"matrix": [6, 7], "x": 20, "y": 0}, + {"matrix": [6, 8], "x": 21, "y": 0}, + {"matrix": [6, 9], "x": 22, "y": 0}, + {"matrix": [6, 10], "x": 23, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"matrix": [7, 7], "x": 20, "y": 1.25}, + {"matrix": [7, 8], "x": 21, "y": 1.25}, + {"matrix": [7, 9], "x": 22, "y": 1.25}, + {"matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [8, 0], "x": 12, "y": 2.25}, + {"matrix": [8, 1], "x": 13, "y": 2.25}, + {"matrix": [8, 2], "x": 14, "y": 2.25}, + {"matrix": [8, 3], "x": 15, "y": 2.25}, + {"matrix": [8, 4], "x": 16, "y": 2.25}, + {"matrix": [8, 5], "x": 17, "y": 2.25}, + {"matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"matrix": [8, 7], "x": 20, "y": 2.25}, + {"matrix": [8, 8], "x": 21, "y": 2.25}, + {"matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "matrix": [8, 10], "x": 23, "y": 2.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25}, + {"matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"matrix": [9, 7], "x": 20, "y": 3.25}, + {"matrix": [9, 8], "x": 21, "y": 3.25}, + {"matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2, "y": 4.25}, + {"matrix": [4, 3], "x": 3, "y": 4.25}, + {"matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25}, + {"matrix": [4, 5], "x": 6.75, "y": 4.25}, + {"matrix": [4, 6], "x": 7.75, "y": 4.25}, + {"matrix": [4, 7], "x": 8.75, "y": 4.25}, + {"matrix": [4, 8], "x": 9.75, "y": 4.25}, + {"matrix": [4, 9], "x": 10.75, "y": 4.25}, + {"matrix": [4, 10], "x": 11.75, "y": 4.25}, + {"matrix": [10, 0], "x": 12.75, "y": 4.25}, + {"matrix": [10, 1], "x": 13.75, "y": 4.25}, + {"matrix": [10, 2], "x": 14.75, "y": 4.25}, + {"matrix": [10, 3], "x": 15.75, "y": 4.25}, + {"matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25}, + {"matrix": [10, 5], "x": 20, "y": 4.25}, + {"matrix": [9, 6], "x": 21, "y": 4.25}, + {"matrix": [10, 7], "x": 22, "y": 4.25}, + {"h": 2, "matrix": [10, 8], "x": 23, "y": 4.25}, + {"matrix": [10, 9], "x": 4.25, "y": 4.5}, + {"matrix": [10, 10], "x": 18.75, "y": 4.5}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2, "y": 5.25}, + {"matrix": [5, 3], "x": 6.5, "y": 5.25}, + {"matrix": [5, 4], "x": 7.5, "y": 5.25}, + {"matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25}, + {"matrix": [5, 6], "x": 15.5, "y": 5.25}, + {"matrix": [5, 7], "x": 16.5, "y": 5.25}, + {"matrix": [11, 0], "x": 21, "y": 5.25}, + {"matrix": [11, 4], "x": 22, "y": 5.25}, + {"matrix": [11, 5], "x": 3.25, "y": 5.5}, + {"matrix": [10, 6], "x": 4.25, "y": 5.5}, + {"matrix": [11, 6], "x": 5.25, "y": 5.5}, + {"matrix": [11, 7], "x": 17.75, "y": 5.5}, + {"matrix": [11, 8], "x": 18.75, "y": 5.5}, + {"matrix": [11, 9], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "Home", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "End", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "PgUp", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "PgDn", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "Esc", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "F1", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "F2", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "F3", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "F4", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "F5", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F6", "matrix": [6, 0], "x": 11.75, "y": 0}, + {"label": "F7", "matrix": [6, 1], "x": 12.75, "y": 0}, + {"label": "F8", "matrix": [6, 2], "x": 13.75, "y": 0}, + {"label": "F9", "matrix": [6, 3], "x": 15.25, "y": 0}, + {"label": "F10", "matrix": [6, 4], "x": 16.25, "y": 0}, + {"label": "F11", "matrix": [6, 5], "x": 17.25, "y": 0}, + {"label": "F12", "matrix": [6, 6], "x": 18.25, "y": 0}, + {"label": "PrtSc", "matrix": [6, 7], "x": 20, "y": 0}, + {"label": "Scroll Lock", "matrix": [6, 8], "x": 21, "y": 0}, + {"label": "Pause", "matrix": [6, 9], "x": 22, "y": 0}, + {"label": "Insert", "matrix": [6, 10], "x": 23, "y": 0}, + {"label": "-", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "Num Lock", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "/", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "*", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "~", "matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"label": "!", "matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"label": "@", "matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"label": "#", "matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"label": "$", "matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"label": "%", "matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"label": "^", "matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"label": "&", "matrix": [7, 0], "x": 11.5, "y": 1.25}, + {"label": "*", "matrix": [7, 1], "x": 12.5, "y": 1.25}, + {"label": "(", "matrix": [7, 2], "x": 13.5, "y": 1.25}, + {"label": ")", "matrix": [7, 3], "x": 14.5, "y": 1.25}, + {"label": "_", "matrix": [7, 4], "x": 15.5, "y": 1.25}, + {"label": "+", "matrix": [7, 5], "x": 16.5, "y": 1.25}, + {"label": "Backspace", "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25}, + {"label": "Num Lock", "matrix": [7, 7], "x": 20, "y": 1.25}, + {"label": "/", "matrix": [7, 8], "x": 21, "y": 1.25}, + {"label": "*", "matrix": [7, 9], "x": 22, "y": 1.25}, + {"label": "-", "matrix": [7, 10], "x": 23, "y": 1.25}, + {"h": 2, "label": "+", "matrix": [2, 0], "x": 0, "y": 2.25}, + {"label": "7", "matrix": [2, 1], "x": 1, "y": 2.25}, + {"label": "8", "matrix": [2, 2], "x": 2, "y": 2.25}, + {"label": "9", "matrix": [2, 3], "x": 3, "y": 2.25}, + {"label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25}, + {"label": "Q", "matrix": [2, 5], "x": 6, "y": 2.25}, + {"label": "W", "matrix": [2, 6], "x": 7, "y": 2.25}, + {"label": "E", "matrix": [2, 7], "x": 8, "y": 2.25}, + {"label": "R", "matrix": [2, 8], "x": 9, "y": 2.25}, + {"label": "T", "matrix": [2, 9], "x": 10, "y": 2.25}, + {"label": "Y", "matrix": [2, 10], "x": 11, "y": 2.25}, + {"label": "U", "matrix": [8, 0], "x": 12, "y": 2.25}, + {"label": "I", "matrix": [8, 1], "x": 13, "y": 2.25}, + {"label": "O", "matrix": [8, 2], "x": 14, "y": 2.25}, + {"label": "P", "matrix": [8, 3], "x": 15, "y": 2.25}, + {"label": "{", "matrix": [8, 4], "x": 16, "y": 2.25}, + {"label": "}", "matrix": [8, 5], "x": 17, "y": 2.25}, + {"label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25}, + {"label": "7", "matrix": [8, 7], "x": 20, "y": 2.25}, + {"label": "8", "matrix": [8, 8], "x": 21, "y": 2.25}, + {"label": "9", "matrix": [8, 9], "x": 22, "y": 2.25}, + {"h": 2, "label": "+", "matrix": [8, 10], "x": 23, "y": 2.25}, + {"label": "4", "matrix": [3, 1], "x": 1, "y": 3.25}, + {"label": "5", "matrix": [3, 2], "x": 2, "y": 3.25}, + {"label": "6", "matrix": [3, 3], "x": 3, "y": 3.25}, + {"label": "Caps Lock", "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25}, + {"label": "A", "matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"label": "S", "matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"label": "D", "matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"label": "F", "matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"label": "G", "matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"label": "H", "matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"label": "J", "matrix": [9, 0], "x": 12.25, "y": 3.25}, + {"label": "K", "matrix": [9, 1], "x": 13.25, "y": 3.25}, + {"label": "L", "matrix": [9, 2], "x": 14.25, "y": 3.25}, + {"label": ":", "matrix": [9, 3], "x": 15.25, "y": 3.25}, + {"label": "\"", "matrix": [9, 4], "x": 16.25, "y": 3.25}, + {"label": "Enter", "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25}, + {"label": "4", "matrix": [9, 7], "x": 20, "y": 3.25}, + {"label": "5", "matrix": [9, 8], "x": 21, "y": 3.25}, + {"label": "6", "matrix": [9, 9], "x": 22, "y": 3.25}, + {"h": 2, "label": "Enter", "matrix": [4, 0], "x": 0, "y": 4.25}, + {"label": "1", "matrix": [4, 1], "x": 1, "y": 4.25}, + {"label": "2", "matrix": [4, 2], "x": 2, "y": 4.25}, + {"label": "3", "matrix": [4, 3], "x": 3, "y": 4.25}, + {"label": "\\u2191", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.25}, + {"label": "Z", "matrix": [4, 6], "x": 6.75, "y": 4.25}, + {"label": "X", "matrix": [4, 7], "x": 7.75, "y": 4.25}, + {"label": "C", "matrix": [4, 8], "x": 8.75, "y": 4.25}, + {"label": "V", "matrix": [4, 9], "x": 9.75, "y": 4.25}, + {"label": "B", "matrix": [4, 10], "x": 10.75, "y": 4.25}, + {"label": "N", "matrix": [10, 0], "x": 11.75, "y": 4.25}, + {"label": "M", "matrix": [10, 1], "x": 12.75, "y": 4.25}, + {"label": "<", "matrix": [10, 2], "x": 13.75, "y": 4.25}, + {"label": ">", "matrix": [10, 3], "x": 14.75, "y": 4.25}, + {"label": "?", "matrix": [10, 4], "x": 15.75, "y": 4.25}, + {"label": "Shift", "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 4.25}, + {"label": "\\u2191", "matrix": [9, 6], "x": 18.75, "y": 4.5}, + {"label": "1", "matrix": [10, 7], "x": 20, "y": 4.25}, + {"label": "2", "matrix": [10, 8], "x": 21, "y": 4.25}, + {"label": "3", "matrix": [10, 9], "x": 22, "y": 4.25}, + {"h": 2, "label": "Enter", "matrix": [10, 10], "x": 23, "y": 4.25}, + {"label": "0", "matrix": [5, 1], "x": 1, "y": 5.25}, + {"label": ".", "matrix": [5, 2], "x": 2, "y": 5.25}, + {"label": "\\u2190", "matrix": [5, 3], "x": 3.25, "y": 5.5}, + {"label": "\\u2193", "matrix": [5, 4], "x": 4.25, "y": 5.5}, + {"label": "\\u2192", "matrix": [5, 5], "x": 5.25, "y": 5.5}, + {"label": "Ctrl", "matrix": [5, 6], "x": 6.5, "y": 5.25}, + {"label": "Win", "matrix": [5, 7], "x": 7.5, "y": 5.25}, + {"label": "Alt", "matrix": [5, 8], "x": 8.5, "y": 5.25}, + {"label": "1u", "matrix": [5, 9], "x": 9.5, "y": 5.25}, + {"label": "1u", "matrix": [5, 10], "x": 10.5, "y": 5.25}, + {"label": "1u", "matrix": [11, 0], "x": 11.5, "y": 5.25}, + {"label": "1u", "matrix": [11, 1], "x": 12.5, "y": 5.25}, + {"label": "Alt", "matrix": [11, 2], "x": 13.5, "y": 5.25}, + {"label": "Win", "matrix": [11, 3], "x": 14.5, "y": 5.25}, + {"label": "Menu", "matrix": [11, 4], "x": 15.5, "y": 5.25}, + {"label": "Ctrl", "matrix": [11, 5], "x": 16.5, "y": 5.25}, + {"label": "\\u2190", "matrix": [10, 6], "x": 17.75, "y": 5.5}, + {"label": "\\u2193", "matrix": [11, 6], "x": 18.75, "y": 5.5}, + {"label": "\\u2192", "matrix": [11, 7], "x": 19.75, "y": 5.5}, + {"label": "0", "matrix": [11, 8], "x": 21, "y": 5.25}, + {"label": ".", "matrix": [11, 9], "x": 22, "y": 5.25} + ] + } + } +} diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json new file mode 100644 index 00000000..10f557d7 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "author": "skullydazed", + "notes": "", + "keyboard": "clueboard/2x1800/2021", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_HOME", "KC_END", "KC_PGUP", "KC_PGDN", "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SCRL", "KC_PAUS", "KC_INS", + "KC_PMNS", "KC_NUM", "KC_PSLS", "KC_PAST", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_NUM", "KC_PSLS", "KC_PAST", "KC_PMNS", + "KC_PPLS", "KC_P7", "KC_P8", "KC_P9", "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", + "KC_P4", "KC_P5", "KC_P6", "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_P4", "KC_P5", "KC_P6", + "KC_PENT", "KC_P1", "KC_P2", "KC_P3", "KC_UP", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_P1", "KC_P2", "KC_P3", "KC_PENT", + "KC_P0", "KC_PDOT", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_P0", "KC_PDOT" + ] + ] +} diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c new file mode 100644 index 00000000..613b1f81 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_4u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, + + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c new file mode 100644 index 00000000..619e2cb1 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_7u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + + KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT +) +}; + + +#ifdef AUDIO_ENABLE + float song_one_up[][2] = SONG(ONE_UP_SOUND); +#endif + +volatile uint8_t runonce = true; +static uint16_t my_timer; + +void matrix_init_user(void) { + my_timer = timer_read(); +} + +void matrix_scan_user(void) { + if (runonce && timer_elapsed(my_timer) > 500) { + runonce = false; +#ifdef AUDIO_ENABLE + PLAY_SONG(song_one_up); +#endif + } +} diff --git a/keyboards/clueboard/2x1800/2021/max7219.c b/keyboards/clueboard/2x1800/2021/max7219.c new file mode 100644 index 00000000..849889a5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.c @@ -0,0 +1,322 @@ +/* + * Copyright (c) 2021 Zach White + * Copyright (c) 2007 Eberhard Fahle + * + * max7219.c - A library for controling Leds with a MAX7219/MAX7221 + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * This permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * This driver started as a port of Arduino's LedControl to QMK. The + * original Arduino code can be found here: + * + * https://github.com/wayoda/LedControl + * + * Unlike LedControl we are using the native SPI support, you will need to + * use the native SPI pins for your MCU. You can set the CS pin with + * `#define MAX7219_LOAD `. + * + * This has only been tested on AVR, specifically a Teensy 2.0++. + */ + +#include "max7219.h" +#include "spi_master.h" +#include "debug.h" +#include "gpio.h" +#include "wait.h" +#include "font.h" + +// Datastructures +bool max7219_led_scrolling = true; +uint16_t max7219_buffer_end = 0; +uint8_t max7219_spidata[MAX_BYTES]; +uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; + +/* Write max7219_spidata to all the max7219's + */ +void max7219_write_all(void) { + dprintf("max7219_write_all()\n"); + if (spi_start(MAX7219_LOAD, false, 0, 8)) { + for(int i = MAX_BYTES; i>0; i--) { + dprintf("spi_write(%d)\n", max7219_spidata[i-1]); + spi_write(max7219_spidata[i-1]); + } + spi_stop(); + } else { + xprintf("Could not spi_start!\n"); + } +} + +/* Write the current frame in max7219_led_a to all the max7219's + */ +void max7219_write_frame(void) { + dprintf("max7219_write_frame()\n"); + + // Set our opcode and data + for (int col=0; col<8; col++) { + for (int device_num=0; device_num + * macros from font.h to populate your array. + * + * Example: + * + * uint8_t message[10][6] = {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d}; + * max7219_message(message, 10); + */ +void max7219_message_sign(uint8_t message[][6], size_t message_len) { + uint8_t letter_num = 0; + uint8_t letter_col = 0; + max7219_buffer_end = message_len * 6 + 32; + + for (int device_num=0; device_num= message_len) { + max7219_led_a[col][device_num] = 0b00000000; + } else { + max7219_led_a[col][device_num] = message[letter_num][letter_col]; + if (letter_col == 5) { + letter_num++; + letter_col = 0; + } else { + letter_col++; + } + } + } + } + + max7219_write_frame(); +} + +/* Scroll the content on the sign left by 1 column. + * + * When loop_message is true columns that slide off the left will be added + * to the right to be displayed again. + */ +void max7219_message_sign_task(bool loop_message) { + uint8_t left_col = 0b00000000; + + if (!max7219_led_scrolling) { + return; + } + + if (loop_message) { + left_col = max7219_led_a[0][0]; + } + + int i=0; + + for (int device_num=0; device_num0; i--) { + max7219_spidata[i-1]=0; + } + + // Set our opcode and data + uint8_t offset = device_num*2; + max7219_spidata[offset] = data; + max7219_spidata[offset+1] = opcode; + + // Write the data + max7219_write_all(); +} + +/* Turn off all the LEDs + */ +void max7219_clear_display(void) { + dprintf("max7219_clear_display();\n"); + + for (int col=0; col<8; col++) { + for (int device_num=0; device_num= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_DISPLAYTEST, enabled); +} + +/* Initialize the max7219 system and set the controller(s) to a default state. + */ +void max7219_init(void) { + wait_ms(1500); + dprintf("max7219_init()\n"); + + gpio_set_pin_output(MAX7219_LOAD); + gpio_write_pin_high(MAX7219_LOAD); + spi_init(); + + for (int i=0; i= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_DECODEMODE, mode); +} + +/* Set the intensity (brightness) for the LEDs. + */ +void max7219_set_intensity(int device_num, int intensity) { + dprintf("max7219_set_intensity(%d, %d);\n", device_num, intensity); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + if (intensity >= 0 && intensity<16) { + max7219_write(device_num, OP_INTENSITY, intensity); + } +} + +/* Control a single LED. + */ +void max7219_set_led(int row, int column, bool state) { + dprintf("max7219_set_led(%d, %d, %d);\n", row, column, state); + + if (column<0 || column>8*MAX7219_CONTROLLERS) { + xprintf("max7219_set_led: column (%d) out of bounds\n", column); + return; + } + + if (row<0 || row>7) { + xprintf("max7219_set_led: row (%d) out of bounds\n", row); + return; + } + + /* At this point we reverse the sense of row and column to match the + * physical layout of my LEDs. + */ + uint8_t device_num = column / 8; + uint8_t col = column % 8; + uint8_t val = 0b10000000 >> row; + + if (state) { + max7219_led_a[col][device_num] = max7219_led_a[col][device_num]|val; + } else { + val = ~val; + max7219_led_a[col][device_num] = max7219_led_a[col][device_num]&val; + } + max7219_write(device_num, col+1, max7219_led_a[col][device_num]); +} + +/* Set the number of digits (rows) to be scanned. + */ +void max7219_set_scan_limit(int device_num, int limit) { + dprintf("max7219_set_scan_limit(%d, %d);\n", device_num, limit); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + if (limit >= 0 && limit < 8) { + max7219_write(device_num, OP_SCANLIMIT, limit); + } +} + +/* Enable (true) or disable (false) the controller. + */ +void max7219_shutdown(int device_num, bool shutdown) { + dprintf("max7219_shutdown(%d, %d);\n", device_num, shutdown); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_SHUTDOWN, !shutdown); +} diff --git a/keyboards/clueboard/2x1800/2021/max7219.h b/keyboards/clueboard/2x1800/2021/max7219.h new file mode 100644 index 00000000..6d78345d --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.h @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2021 Zach White + * Copyright (c) 2007 Eberhard Fahle + * + * max7219.h - A library for controling Leds with a MAX7219/MAX7221 + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * This permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ +#pragma once + +#include +#include +#include + +// Set defaults if they're not set +#ifndef MAX7219_LOAD +# define MAX7219_LOAD B0 +#endif + +#ifndef MAX7219_CONTROLLERS +# define MAX7219_CONTROLLERS 4 +#endif + +#ifndef MAX7219_LED_INTENSITY +# define MAX7219_LED_INTENSITY 1 +#endif + +#ifndef MAX7219_SCROLL_TIME +# define MAX7219_SCROLL_TIME 100 +#endif + +#ifndef MAX7219_BUFFER_MULTIPLIER +# define MAX7219_BUFFER_MULTIPLIER 24 +#endif + +#if !defined(MAX7219_LED_TEST) && !defined(MAX7219_LED_ITERATE) && !defined(MAX7219_LED_DANCE) && !defined(MAX7219_LED_FONTTEST) && !defined(MAX7219_LED_CLUEBOARD) && !defined(MAX7219_LED_KONAMI) && !defined(MAX7219_LED_QMK_POWERED) && !defined(MAX7219_DRAWING_TOY_MODE) && !defined(MAX7219_LED_CUSTOM) +# define MAX7219_QMK_POWERED +#endif + +// Configure our MAX7219's +#define MAX_BYTES MAX7219_CONTROLLERS * 2 +#define LED_COUNT MAX7219_CONTROLLERS * 64 +#define MAX7219_BUFFER_SIZE MAX7219_CONTROLLERS*MAX7219_BUFFER_MULTIPLIER + +// Opcodes for the MAX7219 +#define OP_DECODEMODE 9 +#define OP_INTENSITY 10 +#define OP_SCANLIMIT 11 +#define OP_SHUTDOWN 12 +#define OP_DISPLAYTEST 15 + +// Datastructures +extern uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; +extern bool max7219_led_scrolling; + +// Functions +void max7219_write(int device_num, volatile uint8_t opcode, volatile uint8_t data); +void max7219_write_all(void); +void max7219_write_frame(void); +void max7219_clear_display(void); +void max7219_display_test(int device_num, bool enabled); +void max7219_init(void); +void max7219_message_sign(uint8_t message[][6], size_t message_len); +void max7219_message_sign_task(bool loop_message); +void max7219_set_decode_mode(int device_num, int mode); +void max7219_set_intensity(int device_num, int intensity); +void max7219_set_led(int row, int column, bool state); +void max7219_set_all_leds(uint8_t led_matrix[LED_COUNT]); +void max7219_set_scan_limit(int device_num, int limit); +void max7219_shutdown(int device_num, bool is_in_shutdown); diff --git a/keyboards/clueboard/2x1800/2021/readme.md b/keyboards/clueboard/2x1800/2021/readme.md new file mode 100644 index 00000000..97d53674 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/readme.md @@ -0,0 +1,17 @@ +# Clueboard 2x1800 + +Clueboard 2x1800 LED Sign Edition + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 2x1800 PCB +* Hardware Availability: 2021 Apr 1 Group Buy + +Make example for this keyboard: + + make clueboard/2x1800/2021:default + +Flashing example for this keyboard: + + make clueboard/2x1800/2021:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/clueboard/2x1800/2021/rules.mk b/keyboards/clueboard/2x1800/2021/rules.mk new file mode 100644 index 00000000..19c7eb29 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/rules.mk @@ -0,0 +1,2 @@ +SPI_DRIVER_REQUIRED = yes +QUANTUM_LIB_SRC += max7219.c diff --git a/keyboards/clueboard/2x1800/info.json b/keyboards/clueboard/2x1800/info.json new file mode 100644 index 00000000..e3fa1b8b --- /dev/null +++ b/keyboards/clueboard/2x1800/info.json @@ -0,0 +1,3 @@ +{ + "diode_direction": "ROW2COL" +} diff --git a/keyboards/clueboard/2x1800/readme.md b/keyboards/clueboard/2x1800/readme.md new file mode 100644 index 00000000..01b97569 --- /dev/null +++ b/keyboards/clueboard/2x1800/readme.md @@ -0,0 +1,18 @@ +# Clueboard 2x1800 + +Clueboard 2x1800 + +This is a keyboard that Clueboard releases for a 1-day group buy every Apr 1. Each year has a different theme. + +* [2018:](2018/) Double 1800 All The Way +* [2019:](2019/) Mechanical Drawing Toy Edition + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 2x1800 PCB +* Hardware Availability: 2018 Apr 1 Group Buy + +Make example for this keyboard: + + make 2x1800:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/clueboard/60/halconf.h b/keyboards/clueboard/60/halconf.h new file mode 100644 index 00000000..644c9c51 --- /dev/null +++ b/keyboards/clueboard/60/halconf.h @@ -0,0 +1,37 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/60/halconf.h -r platforms/chibios/QMK_PROTON_C/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C FALSE + +#define HAL_USE_PWM FALSE + +#define HAL_USE_SERIAL_USB FALSE + +#define HAL_USE_SPI FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/clueboard/60/keyboard.json b/keyboards/clueboard/60/keyboard.json new file mode 100644 index 00000000..d0b4d349 --- /dev/null +++ b/keyboards/clueboard/60/keyboard.json @@ -0,0 +1,371 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 60%", + "maintainer": "skullydazed", + "debounce": 6, + "processor": "STM32F303", + "board": "QMK_PROTON_C", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "audio": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B7" + }, + "matrix_pins": { + "cols": ["A2", "A3", "A6", "B14", "B15", "A8", "A9", "A7", "B3", "B4", "C15", "C14", "C13", "B5", "B6"], + "rows": ["B0", "B1", "B2", "A15", "A10"] + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2350", + "vid": "0xC1ED" + }, + "backlight": { + "levels": 1 + }, + "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "k0d", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Back", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3}, + {"label": "k3e", "matrix": [3, 14], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "\\u00ac", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "\"", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "\\u00a3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"h": 2, "label": "Enter", "matrix": [2, 0], "w": 1.25, "x": 13.75, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [2, 14], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "AltGr", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4} + ] + }, + "LAYOUT_aek": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.75, "y": 4}, + {"label": "k47", "matrix": [4, 7], "w": 6.5, "x": 4.25, "y": 4}, + {"label": "AltGr", "matrix": [4, 11], "w": 1.5, "x": 10.75, "y": 4}, + {"label": "Win", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "Ctrl", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "k0d", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Back", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "k2c", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "w": 1.25, "x": 13.75, "y": 2}, + {"label": "k30", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Shift", "matrix": [3, 1], "w": 1.25, "x": 1, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3}, + {"label": "k3e", "matrix": [3, 14], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/60/keymaps/default/keymap.c b/keyboards/clueboard/60/keymaps/default/keymap.c new file mode 100644 index 00000000..76a5369e --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default/keymap.c @@ -0,0 +1,125 @@ +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL, + _FL, + _CL +}; + +enum custom_keycodes { + S_BSKTC = SAFE_RANGE, + S_ODEJY, + S_RCKBY, + S_DOEDR, + S_SCALE, + S_ONEUP, + S_COIN, + S_SONIC, + S_ZELDA +}; + +#ifdef AUDIO_ENABLE + float song_basketcase[][2] = SONG(BASKET_CASE); + float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); + float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); + float song_doe_a_deer[][2] = SONG(DOE_A_DEER); + float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float song_coin[][2] = SONG(COIN_SOUND); + float song_one_up[][2] = SONG(ONE_UP_SOUND); + float song_sonic_ring[][2] = SONG(SONIC_RING); + float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * |-----------------------------------------------------------' + * |Ctrl |Gui|Alt | Space |Alt |Gui|Fn |Ctrl | + * `-----------------------------------------------------------' + */ + [_BL] = LAYOUT_all( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL), + [_FL] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, + _______,_______,_______, _______, _______, _______, MO(_FL), _______), + [_CL] = LAYOUT_all( + BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______, + _______, _______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______, _______, _______, _______, _______, MO(_FL), _______) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + } + return true; +} diff --git a/keyboards/clueboard/60/keymaps/default_aek/keymap.c b/keyboards/clueboard/60/keymaps/default_aek/keymap.c new file mode 100644 index 00000000..9594ff76 --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default_aek/keymap.c @@ -0,0 +1,41 @@ +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL, + _FL, + _CL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BkSp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Capslk| A| S| D| F| G| H| J| K| L| ;| '| Enter| + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift| + * |-----------------------------------------------------------' + * |Ctrl |Gui|Alt | Space |Alt|Fn |Ctrl | + * `-----------------------------------------------------------' + */ + [_BL] = LAYOUT_aek( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL), + [_FL] = LAYOUT_aek( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______, _______, _______, _______, MO(_FL), _______), + [_CL] = LAYOUT_aek( + BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______, _______, _______, _______, MO(_FL), _______) +}; diff --git a/keyboards/clueboard/60/led.c b/keyboards/clueboard/60/led.c new file mode 100644 index 00000000..ad11ad5d --- /dev/null +++ b/keyboards/clueboard/60/led.c @@ -0,0 +1,41 @@ +/* + * Copyright 2017 skully + * + * 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 . +*/ + +#include +#include "print.h" + +#ifdef BACKLIGHT_ENABLE +#include "backlight.h" + +void backlight_init_ports(void) { + printf("backlight_init_ports()\n"); + + palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); + palSetPad(GPIOB, 8); +} + +void backlight_set(uint8_t level) { + printf("backlight_set(%d)\n", level); + if (level == 0) { + // Turn backlight off + palSetPad(GPIOB, 8); + } else { + // Turn backlight on + palClearPad(GPIOB, 8); + } +} +#endif diff --git a/keyboards/clueboard/60/mcuconf.h b/keyboards/clueboard/60/mcuconf.h new file mode 100644 index 00000000..a5baec5c --- /dev/null +++ b/keyboards/clueboard/60/mcuconf.h @@ -0,0 +1,43 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/60/mcuconf.h -r platforms/chibios/QMK_PROTON_C/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 +#define STM32_GPT_USE_TIM15 FALSE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 FALSE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 FALSE + +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 FALSE + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 FALSE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE + diff --git a/keyboards/clueboard/60/readme.md b/keyboards/clueboard/60/readme.md new file mode 100644 index 00000000..e3255f50 --- /dev/null +++ b/keyboards/clueboard/60/readme.md @@ -0,0 +1,14 @@ +# Clueboard 60% + +A fully customizable 60% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 60% PCB + * rev1 (1.0) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/60:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/clueboard/60/rules.mk b/keyboards/clueboard/60/rules.mk new file mode 100644 index 00000000..c73b4c47 --- /dev/null +++ b/keyboards/clueboard/60/rules.mk @@ -0,0 +1,2 @@ +# project specific files +SRC = led.c diff --git a/keyboards/clueboard/66/info.json b/keyboards/clueboard/66/info.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/keyboards/clueboard/66/info.json @@ -0,0 +1 @@ +{} diff --git a/keyboards/clueboard/66/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c new file mode 100644 index 00000000..05ed2f43 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c @@ -0,0 +1,36 @@ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_ansi( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_ansi( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, UG_TOGG, UG_VALU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, UG_VALD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, UG_SATU, + _______,_______,_______, UG_NEXT, _______,MO(_FL),_______,UG_HUED,UG_SATD,UG_HUEU), +}; diff --git a/keyboards/clueboard/66/keymaps/66_ansi/readme.md b/keyboards/clueboard/66/keymaps/66_ansi/readme.md new file mode 100644 index 00000000..eee81c0c --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_ansi/readme.md @@ -0,0 +1,9 @@ +# Basic Clueboard 66% Hotswap ANSI Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. + +This uses `LAYOUT_66_ansi`, which is compatable with the `66_ansi` community +layout. diff --git a/keyboards/clueboard/66/keymaps/66_iso/keymap.c b/keyboards/clueboard/66/keymaps/66_iso/keymap.c new file mode 100644 index 00000000..10e8a592 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_iso/keymap.c @@ -0,0 +1,36 @@ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_iso( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, + KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_iso( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, UG_TOGG, UG_VALU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______, UG_VALD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, UG_SATU, + _______,_______,_______, UG_NEXT, _______,MO(_FL),_______,UG_HUED,UG_SATD,UG_HUEU), +}; diff --git a/keyboards/clueboard/66/keymaps/66_iso/readme.md b/keyboards/clueboard/66/keymaps/66_iso/readme.md new file mode 100644 index 00000000..6d895b0e --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_iso/readme.md @@ -0,0 +1,6 @@ +# Default Clueboard 66% ISO Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/66/keymaps/colemak/keymap.c b/keyboards/clueboard/66/keymaps/colemak/keymap.c new file mode 100644 index 00000000..33d37a4a --- /dev/null +++ b/keyboards/clueboard/66/keymaps/colemak/keymap.c @@ -0,0 +1,38 @@ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT,KC_INT5, KC_SPC,KC_SPC, KC_INT4, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_CAPS, KC_VOLU, + _______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, _______, _______, _______, KC_VOLD, + KC_DEL, _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______,_______, _______,_______, _______, _______, MO(_FL), _______, KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + BL_STEP, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, UG_TOGG, UG_VALU, + _______, _______, _______,_______,QK_BOOT,_______,_______,_______,_______,_______, _______, _______, _______, _______, UG_VALD, + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, UG_SATU, + _______, _______, _______,_______, UG_NEXT, UG_NEXT, _______, _______, _______, _______, UG_HUED, UG_SATD, UG_HUEU), +}; diff --git a/keyboards/clueboard/66/keymaps/default/keymap.c b/keyboards/clueboard/66/keymaps/default/keymap.c new file mode 100644 index 00000000..24e3c755 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, + KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_INT1,KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT,KC_INT5, KC_SPC, KC_SPC, KC_INT4,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, + _______,_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______,_______,UG_TOGG, UG_VALU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, UG_VALD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, UG_SATU, + _______,_______,_______,_______, UG_NEXT, UG_NEXT, _______,_______,MO(_FL),_______,UG_HUED,UG_SATD,UG_HUEU), +}; diff --git a/keyboards/clueboard/66/keymaps/default/readme.md b/keyboards/clueboard/66/keymaps/default/readme.md new file mode 100644 index 00000000..b1cdcbe4 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# Default Clueboard 66% Universal Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/66/readme.md b/keyboards/clueboard/66/readme.md new file mode 100644 index 00000000..094cc219 --- /dev/null +++ b/keyboards/clueboard/66/readme.md @@ -0,0 +1,18 @@ +# Clueboard 66% + +![Clueboard](https://i.imgur.com/hLePwJu.jpg) + +A fully customizable 66% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% PCB + * rev1 (PCB Version 1.0) + * rev2 (PCB Versions 2.0, 2.0.1, 2.1, 2.5, 2.5.1, 2.6) + * rev3 (PCB Versions 2.7, 2.8, 2.9) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66/rev3:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/clueboard/66/rev1/keyboard.json b/keyboards/clueboard/66/rev1/keyboard.json new file mode 100644 index 00000000..ca1e3a65 --- /dev/null +++ b/keyboards/clueboard/66/rev1/keyboard.json @@ -0,0 +1,273 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66%", + "maintainer": "skullydazed", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "F0" + }, + "matrix_pins": { + "cols": ["B3", "F1", "F4", "F5", "F6", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "F7", "B0", "B1"], + "rows": ["D1", "D0", "D2", "D5", "D3"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 10, + "led_count": 14, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "B2" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2301", + "vid": "0xC1ED" + }, + "community_layouts": ["66_ansi", "66_iso"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0}, + {"label": "k0F", "matrix": [0, 15], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k1F", "matrix": [1, 15], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k3E", "matrix": [3, 14], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k4D", "matrix": [4, 13], "x": 13.5, "y": 4}, + {"label": "k4E", "matrix": [4, 14], "x": 14.5, "y": 4}, + {"label": "k4F", "matrix": [4, 15], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_66_iso": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0}, + {"label": "Insert", "matrix": [0, 15], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Delete", "matrix": [1, 15], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1}, + {"label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "\u2191", "matrix": [3, 14], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Ctrl", "matrix": [4, 11], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "\u2190", "matrix": [4, 13], "x": 13.5, "y": 4}, + {"label": "\u2193", "matrix": [4, 14], "x": 14.5, "y": 4}, + {"label": "\u2192", "matrix": [4, 15], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "GRAVE", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "DASH", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "EQUALSIGN", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "YEN", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "BACKSPACE", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "PAGEUP", "matrix": [0, 15], "x": 15.5, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "LBRACKET", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "RBRACKET", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "BACKSLASH", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "PAGEDOWN", "matrix": [1, 15], "x": 15.5, "y": 1}, + {"label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "SEMICOLON", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "QUOTE", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISOHASH", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "ENTER", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2}, + {"label": "LSHIFT", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "ISOBACKSLASH", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "COMMA", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "PERIOD", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "SLASH", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "JPBACKSLASH", "matrix": [3, 12], "x": 12.25, "y": 3}, + {"label": "RSHIFT", "matrix": [3, 13], "w": 1.25, "x": 13.25, "y": 3}, + {"label": "UP", "matrix": [3, 14], "x": 14.5, "y": 3}, + {"label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "LALT", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LCMD", "matrix": [4, 2], "w": 1.25, "x": 2.25, "y": 4}, + {"label": "MUHENKAN", "matrix": [4, 3], "w": 1.25, "x": 3.5, "y": 4}, + {"label": "SPACE1", "matrix": [4, 5], "w": 2, "x": 4.75, "y": 4}, + {"label": "SPACE2", "matrix": [4, 6], "w": 2, "x": 6.75, "y": 4}, + {"label": "HENKAN", "matrix": [4, 9], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "RCMD", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4}, + {"label": "RCTRL", "matrix": [4, 11], "x": 11.25, "y": 4}, + {"label": "FN", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "LEFT", "matrix": [4, 13], "x": 13.5, "y": 4}, + {"label": "DOWN", "matrix": [4, 14], "x": 14.5, "y": 4}, + {"label": "RIGHT", "matrix": [4, 15], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66/rev1/readme.md b/keyboards/clueboard/66/rev1/readme.md new file mode 100644 index 00000000..ba601312 --- /dev/null +++ b/keyboards/clueboard/66/rev1/readme.md @@ -0,0 +1,15 @@ +# Clueboard 66% + +![Clueboard](https://i.imgur.com/hLePwJu.jpg) + +A fully customizable 66% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% PCB rev1 (atmega32u4) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66/rev1:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then 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). diff --git a/keyboards/clueboard/66/rev2/config.h b/keyboards/clueboard/66/rev2/config.h new file mode 100644 index 00000000..88d5112c --- /dev/null +++ b/keyboards/clueboard/66/rev2/config.h @@ -0,0 +1,12 @@ +#pragma once + +/* Underlight configuration + */ +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 +#define RGBLIGHT_EFFECT_BREATHE_MAX 200 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2 +#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // How many LEDs wide to light up +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 1 // The led to start at +#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 5 // How many LEDs to travel +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // How many LEDs wide to light up diff --git a/keyboards/clueboard/66/rev2/keyboard.json b/keyboards/clueboard/66/rev2/keyboard.json new file mode 100644 index 00000000..fea4f8d3 --- /dev/null +++ b/keyboards/clueboard/66/rev2/keyboard.json @@ -0,0 +1,278 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66%", + "maintainer": "skullydazed", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "B4" + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "E6", "B1"], + "rows": ["B2", "C7", "C6", "B6", "B5", "B0", "B3", "D5", "D3", "D2"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 32, + "led_count": 14, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "D7" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2320", + "vid": "0xC1ED" + }, + "backlight": { + "driver": "custom", + "levels": 1 + }, + "community_layouts": ["66_ansi", "66_iso"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Win", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_66_iso": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "Insert", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "Delete", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"h": 2, "label": "Enter", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 1}, + {"label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "\u2191", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Ctrl", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "\u2190", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "\u2193", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "\u2192", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "GRAVE", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "9", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "0", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "DASH", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "EQUALSIGN", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "YEN", "matrix": [5, 5], "x": 13, "y": 0}, + {"label": "BACKSPACE", "matrix": [5, 6], "x": 14, "y": 0}, + {"label": "PAGEUP", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "LBRACKET", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "RBRACKET", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "PAGEDOWN", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "SEMICOLON", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "QUOTE", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "ISOHASH", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"label": "ENTER", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 2}, + {"label": "LSHIFT", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "ISOBACKSLASH", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "COMMA", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "PERIOD", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "SLASH", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "JPBACKSLASH", "matrix": [8, 4], "x": 12.25, "y": 3}, + {"label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3}, + {"label": "UP", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "LALT", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LCMD", "matrix": [4, 2], "w": 1.25, "x": 2.25, "y": 4}, + {"label": "MUHENKAN", "matrix": [4, 3], "w": 1.25, "x": 3.5, "y": 4}, + {"label": "SPACE1", "matrix": [4, 5], "w": 2, "x": 4.75, "y": 4}, + {"label": "SPACE2", "matrix": [4, 6], "w": 2, "x": 6.75, "y": 4}, + {"label": "HENKAN", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "RCMD", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "RCTRL", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "LEFT", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "DOWN", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "RIGHT", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66/rev2/readme.md b/keyboards/clueboard/66/rev2/readme.md new file mode 100644 index 00000000..9943ec69 --- /dev/null +++ b/keyboards/clueboard/66/rev2/readme.md @@ -0,0 +1,15 @@ +# Clueboard 66% + +![Clueboard](https://i.imgur.com/hLePwJu.jpg) + +A fully customizable 66% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% PCB rev2 (atmega32u4) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66/rev2:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then 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). diff --git a/keyboards/clueboard/66/rev2/rev2.c b/keyboards/clueboard/66/rev2/rev2.c new file mode 100644 index 00000000..ea306a76 --- /dev/null +++ b/keyboards/clueboard/66/rev2/rev2.c @@ -0,0 +1,29 @@ +#include "quantum.h" +#include "print.h" + +void backlight_init_ports(void) { + print("init_backlight_pin()\n"); + // Set our LED pins as output + gpio_set_pin_output(D6); // Esc + gpio_set_pin_output(B7); // Page Up + gpio_set_pin_output(D4); // Arrows + + // Set our LED pins low + gpio_write_pin_low(D6); // Esc + gpio_write_pin_low(B7); // Page Up + gpio_write_pin_low(D4); // Arrows +} + +void backlight_set(uint8_t level) { + if ( level == 0 ) { + // Turn off light + gpio_write_pin_high(D6); // Esc + gpio_write_pin_high(B7); // Page Up + gpio_write_pin_high(D4); // Arrows + } else { + // Turn on light + gpio_write_pin_low(D6); // Esc + gpio_write_pin_low(B7); // Page Up + gpio_write_pin_low(D4); // Arrows + } +} diff --git a/keyboards/clueboard/66/rev3/config.h b/keyboards/clueboard/66/rev3/config.h new file mode 100644 index 00000000..eb584f09 --- /dev/null +++ b/keyboards/clueboard/66/rev3/config.h @@ -0,0 +1,10 @@ +#pragma once + +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 +#define RGBLIGHT_EFFECT_BREATHE_MAX 200 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2 +#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // How many LEDs wide to light up +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2 // The led to start at +#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 5 // How many LEDs to travel +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // How many LEDs wide to light up diff --git a/keyboards/clueboard/66/rev3/keyboard.json b/keyboards/clueboard/66/rev3/keyboard.json new file mode 100644 index 00000000..4553979d --- /dev/null +++ b/keyboards/clueboard/66/rev3/keyboard.json @@ -0,0 +1,278 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66% rev3", + "maintainer": "skullydazed", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": false, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "B4" + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "E6", "B1"], + "rows": ["B2", "C7", "C6", "B6", "B5", "B0", "B3", "D5", "D3", "D2"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 32, + "led_count": 18, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "D7" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2370", + "vid": "0xC1ED" + }, + "backlight": { + "driver": "custom", + "levels": 1 + }, + "community_layouts": ["66_ansi", "66_iso"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Win", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_66_iso": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "Insert", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "Delete", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"h": 2, "label": "Enter", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 1}, + {"label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "\u2191", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Ctrl", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "\u2190", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "\u2193", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "\u2192", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "GRAVE", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "9", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "0", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "DASH", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "EQUALSIGN", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "YEN", "matrix": [5, 5], "x": 13, "y": 0}, + {"label": "BACKSPACE", "matrix": [5, 6], "x": 14, "y": 0}, + {"label": "PAGEUP", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "LBRACKET", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "RBRACKET", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "PAGEDOWN", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "SEMICOLON", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "QUOTE", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "ISOHASH", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"label": "ENTER", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 2}, + {"label": "LSHIFT", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "ISOBACKSLASH", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "COMMA", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "PERIOD", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "SLASH", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "JPBACKSLASH", "matrix": [8, 4], "x": 12.25, "y": 3}, + {"label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3}, + {"label": "UP", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "LALT", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LCMD", "matrix": [4, 2], "w": 1.25, "x": 2.25, "y": 4}, + {"label": "MUHENKAN", "matrix": [4, 3], "w": 1.25, "x": 3.5, "y": 4}, + {"label": "SPACE1", "matrix": [4, 5], "w": 2, "x": 4.75, "y": 4}, + {"label": "SPACE2", "matrix": [4, 6], "w": 2, "x": 6.75, "y": 4}, + {"label": "HENKAN", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "RCMD", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "RCTRL", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "LEFT", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "DOWN", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "RIGHT", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66/rev3/readme.md b/keyboards/clueboard/66/rev3/readme.md new file mode 100644 index 00000000..5d7ecd41 --- /dev/null +++ b/keyboards/clueboard/66/rev3/readme.md @@ -0,0 +1,15 @@ +# Clueboard 66% + +![Clueboard](https://i.imgur.com/hLePwJu.jpg) + +A fully customizable 66% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% PCB rev3 (atmega32u4) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66/rev3:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then 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). diff --git a/keyboards/clueboard/66/rev3/rev3.c b/keyboards/clueboard/66/rev3/rev3.c new file mode 100644 index 00000000..ea306a76 --- /dev/null +++ b/keyboards/clueboard/66/rev3/rev3.c @@ -0,0 +1,29 @@ +#include "quantum.h" +#include "print.h" + +void backlight_init_ports(void) { + print("init_backlight_pin()\n"); + // Set our LED pins as output + gpio_set_pin_output(D6); // Esc + gpio_set_pin_output(B7); // Page Up + gpio_set_pin_output(D4); // Arrows + + // Set our LED pins low + gpio_write_pin_low(D6); // Esc + gpio_write_pin_low(B7); // Page Up + gpio_write_pin_low(D4); // Arrows +} + +void backlight_set(uint8_t level) { + if ( level == 0 ) { + // Turn off light + gpio_write_pin_high(D6); // Esc + gpio_write_pin_high(B7); // Page Up + gpio_write_pin_high(D4); // Arrows + } else { + // Turn on light + gpio_write_pin_low(D6); // Esc + gpio_write_pin_low(B7); // Page Up + gpio_write_pin_low(D4); // Arrows + } +} diff --git a/keyboards/clueboard/66/rev4/config.h b/keyboards/clueboard/66/rev4/config.h new file mode 100644 index 00000000..53e2ed5b --- /dev/null +++ b/keyboards/clueboard/66/rev4/config.h @@ -0,0 +1,16 @@ +#pragma once + +/* Underlight configuration + */ +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 +#define RGBLIGHT_EFFECT_BREATHE_MAX 200 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2 +#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // How many LEDs wide to light up +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2 // The led to start at +#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 5 // How many LEDs to travel +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // How many LEDs wide to light up + +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE diff --git a/keyboards/clueboard/66/rev4/halconf.h b/keyboards/clueboard/66/rev4/halconf.h new file mode 100644 index 00000000..5552de2a --- /dev/null +++ b/keyboards/clueboard/66/rev4/halconf.h @@ -0,0 +1,37 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/66/rev4/halconf.h -r platforms/chibios/QMK_PROTON_C/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C FALSE + +#define HAL_USE_PWM FALSE + +#define HAL_USE_SERIAL_USB FALSE + +#define HAL_USE_SPI FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/clueboard/66/rev4/keyboard.json b/keyboards/clueboard/66/rev4/keyboard.json new file mode 100644 index 00000000..dbc1b949 --- /dev/null +++ b/keyboards/clueboard/66/rev4/keyboard.json @@ -0,0 +1,272 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66% rev4", + "maintainer": "skullydazed", + "processor": "STM32F303", + "board": "QMK_PROTON_C", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "audio": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B10", "B2", "B1", "B0", "A7", "B4", "B3", "B5"], + "rows": ["B11", "A6", "A3", "A2", "A1", "B7", "B6", "C15", "C14", "C13"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 32, + "led_count": 18, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "D7" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2390", + "vid": "0xC1ED" + }, + "community_layouts": ["66_ansi", "66_iso"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "Page Up", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "Page Down", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "Up", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Win", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "Left", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "Down", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "Up", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_66_iso": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "(", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": ")", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "_", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "+", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "Insert", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "Delete", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"h": 2, "label": "Enter", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 1}, + {"label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "\u2191", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4}, + {"label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4}, + {"label": "Ctrl", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4}, + {"label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "\u2190", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "\u2193", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "\u2192", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "GRAVE", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "9", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "0", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "DASH", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "EQUALSIGN", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "YEN", "matrix": [5, 5], "x": 13, "y": 0}, + {"label": "BACKSPACE", "matrix": [5, 6], "x": 14, "y": 0}, + {"label": "PAGEUP", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "LBRACKET", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "RBRACKET", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "PAGEDOWN", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "SEMICOLON", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "QUOTE", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "ISOHASH", "matrix": [7, 4], "x": 12.75, "y": 2}, + {"label": "ENTER", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 2}, + {"label": "LSHIFT", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "ISOBACKSLASH", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "COMMA", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "PERIOD", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "SLASH", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "JPBACKSLASH", "matrix": [8, 4], "x": 12.25, "y": 3}, + {"label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3}, + {"label": "UP", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "LALT", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LCMD", "matrix": [4, 2], "w": 1.25, "x": 2.25, "y": 4}, + {"label": "MUHENKAN", "matrix": [4, 3], "w": 1.25, "x": 3.5, "y": 4}, + {"label": "SPACE1", "matrix": [4, 5], "w": 2, "x": 4.75, "y": 4}, + {"label": "SPACE2", "matrix": [4, 6], "w": 2, "x": 6.75, "y": 4}, + {"label": "HENKAN", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "RCMD", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "RCTRL", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "LEFT", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "DOWN", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "RIGHT", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66/rev4/mcuconf.h b/keyboards/clueboard/66/rev4/mcuconf.h new file mode 100644 index 00000000..0fe613b3 --- /dev/null +++ b/keyboards/clueboard/66/rev4/mcuconf.h @@ -0,0 +1,43 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/66/rev4/mcuconf.h -r platforms/chibios/QMK_PROTON_C/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 +#define STM32_GPT_USE_TIM15 FALSE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 FALSE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 FALSE + +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 FALSE + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 FALSE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE + diff --git a/keyboards/clueboard/66/rev4/readme.md b/keyboards/clueboard/66/rev4/readme.md new file mode 100644 index 00000000..ba0afff7 --- /dev/null +++ b/keyboards/clueboard/66/rev4/readme.md @@ -0,0 +1,15 @@ +# Clueboard 66% + +![Clueboard](https://i.imgur.com/hLePwJu.jpg) + +A fully customizable 66% keyboard. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% PCB rev4 (stm32f303cc, PCB Version 3.0) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66/rev4:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then 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). diff --git a/keyboards/clueboard/66/rev4/rev4.c b/keyboards/clueboard/66/rev4/rev4.c new file mode 100644 index 00000000..25fe606a --- /dev/null +++ b/keyboards/clueboard/66/rev4/rev4.c @@ -0,0 +1,24 @@ +#include "quantum.h" + +void led_init_ports(void) { + // Set our LED pins as output + gpio_set_pin_output(B13); // LED1 + gpio_write_pin_low(B13); + gpio_set_pin_output(B14); // LED2 + gpio_write_pin_low(B14); + gpio_set_pin_output(A8); // LED3 + gpio_write_pin_low(A8); + gpio_set_pin_output(A0); // Capslock LED + gpio_write_pin_low(A0); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + gpio_write_pin(B13, led_state.num_lock); + gpio_write_pin(A0, led_state.caps_lock); + gpio_write_pin(B14, led_state.caps_lock); + gpio_write_pin(A8, led_state.scroll_lock); + } + return res; +} diff --git a/keyboards/clueboard/66_hotswap/config.h b/keyboards/clueboard/66_hotswap/config.h new file mode 100644 index 00000000..e6e27713 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#pragma once + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ +#define NO_ACTION_ONESHOT diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h new file mode 100644 index 00000000..07957498 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/config.h @@ -0,0 +1,42 @@ +/* + * Copyright 2017 skully + * + * 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 . + */ + +#pragma once + +/* + * 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 IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 + +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c new file mode 100644 index 00000000..e2da60b9 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -0,0 +1,96 @@ +/* Copyright 2017 Clueboard + * + * 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 . + */ +#include "quantum.h" + +#ifdef LED_MATRIX_ENABLE +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | LED address + * | | */ + { 0, C1_1 }, // k00 QK_GESC + { 0, C1_2 }, // k01 KC_1 + { 0, C1_3 }, // k02 KC_2 + { 0, C1_4 }, // k03 KC_3 + { 0, C1_5 }, // k04 KC_4 + { 0, C1_6 }, // k05 KC_5 + { 0, C1_7 }, // k06 KC_6 + { 0, C1_8 }, // k07 KC_7 + { 0, C1_9 }, // k50 KC_8 + { 0, C1_10 }, // k51 KC_9 + { 0, C1_11 }, // k52 KC_0 + { 0, C1_12 }, // k53 KC_MINS + { 0, C1_13 }, // k54 KC_EQL + { 0, C1_14 }, // k55 KC_BSPC + { 0, C1_15 }, // k57 KC_PGUP + { 0, C2_1 }, // k10 KC_TAB + { 0, C2_2 }, // k11 KC_Q + { 0, C2_3 }, // k12 KC_W + { 0, C2_4 }, // k13 KC_E + { 0, C2_5 }, // k14 KC_R + { 0, C2_6 }, // k15 KC_T + { 0, C2_7 }, // k16 KC_Y + { 0, C2_8 }, // k17 KC_U + { 0, C2_9 }, // k60 KC_I + { 0, C2_10 }, // k61 KC_O + { 0, C2_11 }, // k62 KC_P + { 0, C2_12 }, // k63 KC_LBRC + { 0, C2_13 }, // k64 KC_RBRC + { 0, C2_14 }, // k65 KC_BSLS + { 0, C2_15 }, // k67 KC_PGDN + { 0, C3_1 }, // k20 KC_CAPS + { 0, C3_2 }, // k21 KC_A + { 0, C3_3 }, // k22 KC_S + { 0, C3_4 }, // k23 KC_D + { 0, C3_5 }, // k24 KC_F + { 0, C3_6 }, // k25 KC_G + { 0, C3_7 }, // k26 KC_H + { 0, C3_8 }, // k27 KC_J + { 0, C3_9 }, // k70 KC_K + { 0, C3_10 }, // k71 KC_L + { 0, C3_11 }, // k72 KC_SCLN + { 0, C3_12 }, // k73 KC_QUOT + { 0, C3_14 }, // k75 KC_ENT + { 0, C4_1 }, // k30 KC_LSFT + { 0, C4_3 }, // k32 KC_Z + { 0, C4_4 }, // k33 KC_X + { 0, C4_5 }, // k34 KC_C + { 0, C4_6 }, // k35 KC_V + { 0, C4_7 }, // k36 KC_B + { 0, C4_8 }, // k37 KC_N + { 0, C4_9 }, // k80 KC_M + { 0, C4_10 }, // k81 KC_COMM + { 0, C4_11 }, // k82 KC_DOT + { 0, C4_12 }, // k83 KC_SLSH + { 0, C4_13 }, // k85 KC_RSFT + { 0, C4_14 }, // k86 KC_UP + { 0, C5_1 }, // k40 KC_LCTL + { 0, C5_2 }, // k41 KC_LGUI + { 0, C5_3 }, // k42 KC_LALT + { 0, C5_4 }, // Unassociated between LALT and SPACE_2.75 + { 0, C5_5 }, // k45 KC_SPC SPACE_2.75 + { 0, C5_6 }, // k45 KC_SPC SPACE_6.75 + { 0, C5_7 }, // k46 KC_SPC SPACE_2.25 + { 0, C5_8 }, // Unassociated between SPACE_2.25 and SPACE_1.25 + { 0, C5_9 }, // k90 KC_RGUI + { 0, C5_10 }, // k92 KC_RALT + { 0, C5_11 }, // k93 MO(_FL) + { 0, C5_12 }, // k94 KC_RCTL + { 0, C5_13 }, // k95 KC_LEFT + { 0, C5_14 }, // k96 KC_DOWN + { 0, C5_15 } // k97 KC_RGHT +}; +#endif diff --git a/keyboards/clueboard/66_hotswap/gen1/halconf.h b/keyboards/clueboard/66_hotswap/gen1/halconf.h new file mode 100644 index 00000000..9299e624 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/halconf.h @@ -0,0 +1,35 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/66_hotswap/gen1/halconf.h -r platforms/chibios/QMK_PROTON_C/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM FALSE + +#define HAL_USE_SERIAL_USB FALSE + +#define HAL_USE_SPI FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/clueboard/66_hotswap/gen1/keyboard.json b/keyboards/clueboard/66_hotswap/gen1/keyboard.json new file mode 100644 index 00000000..de858443 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keyboard.json @@ -0,0 +1,274 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66% HotSwap Gen1", + "maintainer": "skullydazed", + "processor": "STM32F303", + "board": "QMK_PROTON_C", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "audio": true, + "bootmagic": true, + "command": true, + "console": true, + "extrakey": true, + "led_matrix": true, + "mousekey": true, + "nkro": true + }, + "led_matrix": { + "animations":{ + "alphas_mods": true, + "breathing": true, + "band": true, + "band_pinwheel": true, + "band_spiral": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "dual_beacon": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "wave_left_right": true, + "wave_up_down": true + }, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 29, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 43, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 58, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 72, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 87, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 101, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 116, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 130, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 145, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 159, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 173, "y": 0, "flags": 4}, + {"matrix": [5, 5], "x": 195, "y": 0, "flags": 1}, + {"matrix": [5, 7], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1}, + {"matrix": [1, 1], "x": 22, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 36, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 51, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 65, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 94, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 108, "y": 16, "flags": 4}, + {"matrix": [6, 0], "x": 123, "y": 16, "flags": 4}, + {"matrix": [6, 1], "x": 137, "y": 16, "flags": 4}, + {"matrix": [6, 2], "x": 152, "y": 16, "flags": 4}, + {"matrix": [6, 3], "x": 166, "y": 16, "flags": 4}, + {"matrix": [6, 4], "x": 181, "y": 16, "flags": 4}, + {"matrix": [6, 5], "x": 199, "y": 16, "flags": 1}, + {"matrix": [6, 7], "x": 224, "y": 16, "flags": 1}, + {"matrix": [2, 0], "x": 5, "y": 32, "flags": 1}, + {"matrix": [2, 1], "x": 25, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 40, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 54, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 69, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 83, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 98, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 112, "y": 32, "flags": 4}, + {"matrix": [7, 0], "x": 126, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 141, "y": 32, "flags": 4}, + {"matrix": [7, 2], "x": 155, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 170, "y": 32, "flags": 4}, + {"matrix": [7, 5], "x": 184, "y": 32, "flags": 1}, + {"matrix": [3, 0], "x": 16, "y": 48, "flags": 1}, + {"matrix": [3, 2], "x": 33, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 47, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 61, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 76, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 90, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 105, "y": 48, "flags": 4}, + {"matrix": [8, 0], "x": 119, "y": 48, "flags": 4}, + {"matrix": [8, 1], "x": 134, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 148, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 163, "y": 48, "flags": 4}, + {"matrix": [8, 5], "x": 188, "y": 48, "flags": 1}, + {"matrix": [8, 6], "x": 210, "y": 48, "flags": 1}, + {"matrix": [4, 0], "x": 9, "y": 64, "flags": 1}, + {"matrix": [4, 1], "x": 27, "y": 64, "flags": 1}, + {"matrix": [4, 2], "x": 45, "y": 64, "flags": 1}, + {"x": 60, "y": 64, "flags": 1}, + {"matrix": [4, 5], "x": 74, "y": 64, "flags": 1}, + {"matrix": [4, 6], "x": 88, "y": 64, "flags": 1}, + {"x": 103, "y": 64, "flags": 1}, + {"x": 117, "y": 64, "flags": 1}, + {"matrix": [9, 0], "x": 136, "y": 64, "flags": 1}, + {"matrix": [9, 2], "x": 154, "y": 64, "flags": 1}, + {"matrix": [9, 3], "x": 168, "y": 64, "flags": 1}, + {"matrix": [9, 4], "x": 186, "y": 64, "flags": 1}, + {"matrix": [9, 5], "x": 195, "y": 64, "flags": 1}, + {"matrix": [9, 6], "x": 210, "y": 64, "flags": 1}, + {"matrix": [9, 7], "x": 224, "y": 64, "flags": 1} + ], + "driver": "is31fl3731" + }, + "matrix_pins": { + "cols": ["B10", "B2", "B1", "B0", "A7", "B4", "B3", "B7"], + "rows": ["B11", "A6", "A3", "A2", "A1", "B5", "B6", "C15", "C14", "C13"] + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2391", + "vid": "0xC1ED" + }, + "community_layouts": ["66_ansi"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "k04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "k05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "k06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "k07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "k50", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "k51", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "k52", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "k53", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "k54", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "k55", "matrix": [5, 5], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "k13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "k14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "k15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "k16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "k17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "k60", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "k61", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "k62", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "k63", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "k64", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "k23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "k24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "k25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "k26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "k27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "k70", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "k71", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "k72", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "k73", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "k80", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "k81", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "k82", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "k83", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "k93", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "k04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "k05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "k06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "k07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "k50", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "k51", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "k52", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "k53", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "k54", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "k55", "matrix": [5, 5], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "k13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "k14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "k15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "k16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "k17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "k60", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "k61", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "k62", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "k63", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "k64", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "k23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "k24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "k25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "k26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "k27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "k70", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "k71", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "k72", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "k73", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "k80", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "k81", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "k82", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "k83", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k45", "matrix": [4, 5], "w": 2.75, "x": 3.75, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 2.25, "x": 6.5, "y": 4}, + {"label": "k90", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "k93", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c new file mode 100644 index 00000000..a5a7adfe --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_ansi( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_ansi( + LM_NEXT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, LM_TOGG, LM_BRIU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, LM_BRID, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, + _______,_______,_______, LM_NEXT, _______,MO(_FL),_______,_______,_______,_______), +}; diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/readme.md b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/readme.md new file mode 100644 index 00000000..25b5d7eb --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/readme.md @@ -0,0 +1,11 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Basic Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. + +This uses `LAYOUT_66_ansi`, which is compatable with the `66_ansi` community +layout. diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c new file mode 100644 index 00000000..2d0873cc --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c @@ -0,0 +1,139 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +enum custom_keycodes { + S_BSKTC = SAFE_RANGE, + S_ODEJY, + S_RCKBY, + S_DOEDR, + S_SCALE, + S_ONEUP, + S_COIN, + S_SONIC, + S_ZELDA +}; + +#ifdef AUDIO_ENABLE + float song_basketcase[][2] = SONG(BASKET_CASE); + float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); + float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); + float song_doe_a_deer[][2] = SONG(DOE_A_DEER); + float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float song_coin[][2] = SONG(COIN_SOUND); + float song_one_up[][2] = SONG(ONE_UP_SOUND); + float song_sonic_ring[][2] = SONG(SONIC_RING); + float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, + _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + LM_NEXT,S_ONEUP,S_SCALE,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, LM_TOGG, LM_BRIU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, LM_BRID, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, + _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,_______,_______,_______), +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + #ifdef AUDIO_ENABLE + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + #endif + } + return true; +} diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/default/readme.md b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/readme.md new file mode 100644 index 00000000..66e52308 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/readme.md @@ -0,0 +1,8 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Default Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/66_hotswap/gen1/mcuconf.h b/keyboards/clueboard/66_hotswap/gen1/mcuconf.h new file mode 100644 index 00000000..6377ded8 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/mcuconf.h @@ -0,0 +1,40 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/clueboard/66_hotswap/gen1/mcuconf.h -r platforms/chibios/QMK_PROTON_C/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 +#define STM32_GPT_USE_TIM15 FALSE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 FALSE + +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 FALSE + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 FALSE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE + diff --git a/keyboards/clueboard/66_hotswap/gen1/readme.md b/keyboards/clueboard/66_hotswap/gen1/readme.md new file mode 100644 index 00000000..036df01c --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/readme.md @@ -0,0 +1,16 @@ +# Clueboard 66% HotSwap + +![Clueboard](https://i.imgur.com/8UmBoNx.jpg) + +A fully customizable 66% keyboard with Hot Swap sockets. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% HotSwap PCB + * 2.9 (gen1) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66_hotswap/gen1: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). diff --git a/keyboards/clueboard/66_hotswap/prototype/config.h b/keyboards/clueboard/66_hotswap/prototype/config.h new file mode 100644 index 00000000..651037af --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/config.h @@ -0,0 +1,22 @@ +#pragma once + +/* Speaker configuration + */ +#define AUDIO_PIN B7 +#define NO_MUSIC_MODE +#define AUDIO_CLICKY + +/* Space savings + */ +#define NO_ACTION_TAPPING + +/* Underlight configuration + */ +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 +#define RGBLIGHT_EFFECT_BREATHE_MAX 200 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2 +#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 4 // How many LEDs wide to light up +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 16 // The led to start at +#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 8 // How many LEDs to travel +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // How many LEDs wide to light up diff --git a/keyboards/clueboard/66_hotswap/prototype/keyboard.json b/keyboards/clueboard/66_hotswap/prototype/keyboard.json new file mode 100644 index 00000000..9d0b0dd2 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keyboard.json @@ -0,0 +1,209 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 66% HotSwap Prototype", + "maintainer": "skullydazed", + "diode_direction": "COL2ROW", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "features": { + "audio": true, + "backlight": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "build": { + "lto": true + }, + "indicators": { + "caps_lock": "B4" + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "E6", "B1"], + "rows": ["B2", "C7", "C6", "B6", "B5", "B0", "B3", "D5", "D3", "D2"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 17, + "hue_steps": 32, + "led_count": 26, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "D7" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2390", + "vid": "0xC1ED" + }, + "backlight": { + "driver": "custom", + "levels": 1 + }, + "community_layouts": ["66_ansi"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "k04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "k05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "k06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "k07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "k50", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "k51", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "k52", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "k53", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "k54", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "k56", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "k13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "k14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "k15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "k16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "k17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "k60", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "k61", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "k62", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "k63", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "k64", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "k23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "k24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "k25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "k26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "k27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "k70", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "k71", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "k72", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "k73", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "k80", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "k81", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "k82", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "k83", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4}, + {"label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "k93", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "k04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "k05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "k06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "k07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "k50", "matrix": [5, 0], "x": 8, "y": 0}, + {"label": "k51", "matrix": [5, 1], "x": 9, "y": 0}, + {"label": "k52", "matrix": [5, 2], "x": 10, "y": 0}, + {"label": "k53", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "k54", "matrix": [5, 4], "x": 12, "y": 0}, + {"label": "k56", "matrix": [5, 6], "w": 2, "x": 13, "y": 0}, + {"label": "k57", "matrix": [5, 7], "x": 15.5, "y": 0}, + {"label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "k13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "k14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "k15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "k16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "k17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "k60", "matrix": [6, 0], "x": 8.5, "y": 1}, + {"label": "k61", "matrix": [6, 1], "x": 9.5, "y": 1}, + {"label": "k62", "matrix": [6, 2], "x": 10.5, "y": 1}, + {"label": "k63", "matrix": [6, 3], "x": 11.5, "y": 1}, + {"label": "k64", "matrix": [6, 4], "x": 12.5, "y": 1}, + {"label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1}, + {"label": "k67", "matrix": [6, 7], "x": 15.5, "y": 1}, + {"label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "k23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "k24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "k25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "k26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "k27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "k70", "matrix": [7, 0], "x": 8.75, "y": 2}, + {"label": "k71", "matrix": [7, 1], "x": 9.75, "y": 2}, + {"label": "k72", "matrix": [7, 2], "x": 10.75, "y": 2}, + {"label": "k73", "matrix": [7, 3], "x": 11.75, "y": 2}, + {"label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2}, + {"label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "k80", "matrix": [8, 0], "x": 8.25, "y": 3}, + {"label": "k81", "matrix": [8, 1], "x": 9.25, "y": 3}, + {"label": "k82", "matrix": [8, 2], "x": 10.25, "y": 3}, + {"label": "k83", "matrix": [8, 3], "x": 11.25, "y": 3}, + {"label": "k84", "matrix": [8, 4], "x": 12.25, "y": 3}, + {"label": "k85", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3}, + {"label": "k86", "matrix": [8, 6], "x": 14.5, "y": 3}, + {"label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"label": "k45", "matrix": [4, 5], "w": 2.75, "x": 3.75, "y": 4}, + {"label": "k46", "matrix": [4, 6], "w": 2.25, "x": 6.5, "y": 4}, + {"label": "k90", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4}, + {"label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4}, + {"label": "k93", "matrix": [9, 3], "x": 11.25, "y": 4}, + {"label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4}, + {"label": "k95", "matrix": [9, 5], "x": 13.5, "y": 4}, + {"label": "k96", "matrix": [9, 6], "x": 14.5, "y": 4}, + {"label": "k97", "matrix": [9, 7], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c new file mode 100644 index 00000000..6d91a841 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_ansi( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_ansi( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, UG_TOGG, UG_VALU, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, UG_VALD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, UG_SATU, + _______,_______,_______, UG_NEXT, _______,MO(_FL),_______,UG_HUED,UG_SATD,UG_HUEU), +}; diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md new file mode 100644 index 00000000..25b5d7eb --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md @@ -0,0 +1,11 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Basic Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. + +This uses `LAYOUT_66_ansi`, which is compatable with the `66_ansi` community +layout. diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c new file mode 100644 index 00000000..50a0b9a7 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c @@ -0,0 +1,139 @@ +/* Copyright 2017 Zach White + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +enum custom_keycodes { + S_BSKTC = SAFE_RANGE, + S_ODEJY, + S_RCKBY, + S_DOEDR, + S_SCALE, + S_ONEUP, + S_COIN, + S_SONIC, + S_ZELDA +}; + +#ifdef AUDIO_ENABLE + float song_basketcase[][2] = SONG(BASKET_CASE); + float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); + float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); + float song_doe_a_deer[][2] = SONG(DOE_A_DEER); + float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float song_coin[][2] = SONG(COIN_SOUND); + float song_one_up[][2] = SONG(ONE_UP_SOUND); + float song_sonic_ring[][2] = SONG(SONIC_RING); + float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_NUHS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NUBS,KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_PGUP, + _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_UP, + _______,_______,_______,_______,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DOWN, + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, UG_SATU, + _______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,UG_HUED,UG_SATD,UG_HUEU), +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + #ifdef AUDIO_ENABLE + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + #endif + } + return true; +} diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md new file mode 100644 index 00000000..66e52308 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md @@ -0,0 +1,8 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Default Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/66_hotswap/prototype/prototype.c b/keyboards/clueboard/66_hotswap/prototype/prototype.c new file mode 100644 index 00000000..27aa332c --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/prototype.c @@ -0,0 +1,29 @@ +#include "quantum.h" +#include "print.h" + +void backlight_init_ports(void) { + print("init_backlight_pin()\n"); + // Set our LED pins as output + gpio_set_pin_output(D0); // Esc + gpio_set_pin_output(D4); // Page Up + gpio_set_pin_output(D1); // Arrows + + // Set our LED pins low + gpio_write_pin_low(D0); // Esc + gpio_write_pin_low(D4); // Page Up + gpio_write_pin_low(D1); // Arrows +} + +void backlight_set(uint8_t level) { + if ( level == 0 ) { + // Turn off light + gpio_write_pin_high(D0); // Esc + gpio_write_pin_high(D4); // Page Up + gpio_write_pin_high(D1); // Arrows + } else { + // Turn on light + gpio_write_pin_low(D0); // Esc + gpio_write_pin_low(D4); // Page Up + gpio_write_pin_low(D1); // Arrows + } +} diff --git a/keyboards/clueboard/66_hotswap/prototype/readme.md b/keyboards/clueboard/66_hotswap/prototype/readme.md new file mode 100644 index 00000000..5c76a571 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/readme.md @@ -0,0 +1,16 @@ +# Clueboard 66% HotSwap + +![Clueboard](https://i.imgur.com/8UmBoNx.jpg) + +A fully customizable 66% keyboard with Hot Swap sockets. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% HotSwap Prototype PCB + * 2.8 (prototype) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66_hotswap/prototype: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). diff --git a/keyboards/clueboard/66_hotswap/readme.md b/keyboards/clueboard/66_hotswap/readme.md new file mode 100644 index 00000000..036df01c --- /dev/null +++ b/keyboards/clueboard/66_hotswap/readme.md @@ -0,0 +1,16 @@ +# Clueboard 66% HotSwap + +![Clueboard](https://i.imgur.com/8UmBoNx.jpg) + +A fully customizable 66% keyboard with Hot Swap sockets. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 66% HotSwap PCB + * 2.9 (gen1) +* Hardware Availability: [clueboard.co](https://clueboard.co/) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/66_hotswap/gen1: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). diff --git a/keyboards/clueboard/california/config.h b/keyboards/clueboard/california/config.h new file mode 100644 index 00000000..1870e4ca --- /dev/null +++ b/keyboards/clueboard/california/config.h @@ -0,0 +1,6 @@ +#pragma once + + +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE diff --git a/keyboards/clueboard/california/keyboard.json b/keyboards/clueboard/california/keyboard.json new file mode 100644 index 00000000..66b4b484 --- /dev/null +++ b/keyboards/clueboard/california/keyboard.json @@ -0,0 +1,42 @@ +{ + "keyboard_name": "Clueboard California", + "url": "", + "maintainer": "skullydazed", + "processor": "STM32F303", + "board": "QMK_PROTON_C", + "bootloader": "stm32-dfu", + "matrix_pins": { + "direct": [ + ["A10", "A9"], + ["A0", "B8"], + [null, "B11"], + ["B9", "A8"], + ["A7", "B1"], + [null, "B2"] + ] + }, + "features": { + "mousekey": true, + "extrakey": true, + "console": true, + "command": true, + "audio": true + }, + "usb": {"pid": "0x23B0"}, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0, 0]}, + {"x": 1, "y": 0, "matrix": [0, 1]}, + {"x": 0, "y": 1, "matrix": [1, 0]}, + {"x": 1, "y": 1, "matrix": [1, 1]}, + {"x": 1, "y": 2, "matrix": [2, 1]}, + {"x": 1.25, "y": 3, "matrix": [3, 0]}, + {"x": 2.25, "y": 3, "matrix": [3, 1]}, + {"x": 2, "y": 4, "matrix": [4, 0]}, + {"x": 3, "y": 4, "matrix": [4, 1]}, + {"x": 3.75, "y": 5, "matrix": [5, 1]} + ] + } + } +} diff --git a/keyboards/clueboard/california/keymaps/default/keymap.json b/keyboards/clueboard/california/keymaps/default/keymap.json new file mode 100644 index 00000000..8e0c297b --- /dev/null +++ b/keyboards/clueboard/california/keymaps/default/keymap.json @@ -0,0 +1,7 @@ +{ + "keyboard":"clueboard/california", + "layout":"LAYOUT", + "layers":[ + ["KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","BL_STEP"] + ] +} diff --git a/keyboards/clueboard/california/readme.md b/keyboards/clueboard/california/readme.md new file mode 100644 index 00000000..015d15bc --- /dev/null +++ b/keyboards/clueboard/california/readme.md @@ -0,0 +1,13 @@ +# Clueboard California + +A macropad shaped like California + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard California PCB +* Hardware Availability: 2019 Northern California Meetup + +Make example for this keyboard (after setting up your build environment): + + make clueboard/california: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). diff --git a/keyboards/clueboard/card/card.c b/keyboards/clueboard/card/card.c new file mode 100644 index 00000000..214f3b6a --- /dev/null +++ b/keyboards/clueboard/card/card.c @@ -0,0 +1,72 @@ +#include "quantum.h" + +#define BL_RED OCR1B +#define BL_GREEN OCR1A +#define BL_BLUE OCR1C + +void backlight_init_ports(void) +{ + // Set B5, B6, and B7 as output + DDRB |= (1<<7)|(1<<6)|(1<<5); + + // Setup PWM + ICR1 = 0xFFFF; + TCCR1A = 0b10101010; + TCCR1B = 0b00011001; + + BL_RED = 0xFFFF; + BL_GREEN = 0xFFFF; + BL_BLUE = 0xFFFF; +} + +void backlight_set(uint8_t level) +{ + // Set the RGB color + switch (level) + { + case 0: + // Off + BL_RED = 0xFFFF; + BL_GREEN = 0xFFFF; + BL_BLUE = 0xFFFF; + break; + case 1: + // Red + BL_RED = 0x0000; + BL_GREEN = 0xFFFF; + BL_BLUE = 0xFFFF; + break; + case 2: + // Green + BL_RED = 0xFFFF; + BL_GREEN = 0x0000; + BL_BLUE = 0xFFFF; + break; + case 3: + // Blue + BL_RED = 0xFFFF; + BL_GREEN = 0xFFFF; + BL_BLUE = 0x0000; + break; + case 4: + // Magenta + BL_RED = 0x4000; + BL_GREEN = 0x4000; + BL_BLUE = 0x4000; + break; + case 5: + // Purple + BL_RED = 0x0000; + BL_GREEN = 0xFFFF; + BL_BLUE = 0x0000; + break; + case 6: + // Yellow + BL_RED = 0x0000; + BL_GREEN = 0x0000; + BL_BLUE = 0xFFFF; + break; + default: + xprintf("Unknown level: %d\n", level); + } +} diff --git a/keyboards/clueboard/card/config.h b/keyboards/clueboard/card/config.h new file mode 100644 index 00000000..6bf5d240 --- /dev/null +++ b/keyboards/clueboard/card/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#pragma once + +// Enable audio +#define AUDIO_PIN C6 diff --git a/keyboards/clueboard/card/keyboard.json b/keyboards/clueboard/card/keyboard.json new file mode 100644 index 00000000..0425819e --- /dev/null +++ b/keyboards/clueboard/card/keyboard.json @@ -0,0 +1,66 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Cluecard", + "maintainer": "skullydazed", + "debounce": 20, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "diode_direction": "ROW2COL", + "features": { + "audio": true, + "backlight": true, + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": false, + "rgblight": true + }, + "build": { + "lto": true + }, + "matrix_pins": { + "cols": ["F1", "F7", "F6"], + "rows": ["F0", "F5", "F4", "B4"] + }, + "rgblight": { + "brightness_steps": 17, + "hue_steps": 10, + "led_count": 4, + "saturation_steps": 17 + }, + "ws2812": { + "pin": "E6" + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x2330", + "vid": "0xC1ED" + }, + "backlight": { + "driver": "custom", + "levels": 6 + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ON/OFF", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "SAT+", "matrix": [0, 1], "x": 4, "y": 0}, + {"label": "BRIGHT+", "matrix": [0, 2], "x": 8, "y": 0}, + {"label": "HUE-", "matrix": [1, 0], "x": 2, "y": 1}, + {"label": "HUE+", "matrix": [1, 2], "x": 6, "y": 1}, + {"label": "MODE", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "SAT-", "matrix": [2, 1], "x": 4, "y": 2}, + {"label": "BRIGHT-", "matrix": [2, 2], "x": 8, "y": 2}, + {"label": "LAYER", "matrix": [1, 1], "x": 2, "y": 4}, + {"h": 2, "label": "MX1", "matrix": [3, 0], "w": 2, "x": 4, "y": 6}, + {"h": 2, "label": "MX2", "matrix": [3, 1], "w": 2, "x": 6, "y": 6}, + {"h": 2, "label": "MX3", "matrix": [3, 2], "w": 2, "x": 8, "y": 6} + ] + } + } +} diff --git a/keyboards/clueboard/card/keymaps/default/keymap.c b/keyboards/clueboard/card/keymaps/default/keymap.c new file mode 100644 index 00000000..4e8fac28 --- /dev/null +++ b/keyboards/clueboard/card/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + SONG_SU = SAFE_RANGE, + SONG_SC, + SONG_GB +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + UG_TOGG, UG_SATU, UG_VALU, + UG_HUED, UG_HUEU, + UG_NEXT, UG_SATD, UG_VALD, + BL_STEP, + SONG_SU,SONG_SC,SONG_GB + ) +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { +#ifdef AUDIO_ENABLE + case SONG_SU: + if (record->event.pressed) { + PLAY_SONG(tone_startup); + } + + return false; + + case SONG_SC: + if (record->event.pressed) { + PLAY_SONG(music_scale); + } + + return false; + + case SONG_GB: + if (record->event.pressed) { + PLAY_SONG(tone_goodbye); + } + + return false; +#endif + default: + return true; + } +} diff --git a/keyboards/clueboard/card/keymaps/default/readme.md b/keyboards/clueboard/card/keymaps/default/readme.md new file mode 100644 index 00000000..53ba9025 --- /dev/null +++ b/keyboards/clueboard/card/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for cluecard + +Note that this keymap has audio enabled, so the RGB mode button does not go through the different effects. So the LEDs will still show a static light, that is configurable with the hue, staturation and brightness buttons. You can of course also turn them on and off with the on/off button. diff --git a/keyboards/clueboard/card/keymaps/default/rules.mk b/keyboards/clueboard/card/keymaps/default/rules.mk new file mode 100644 index 00000000..55e9563d --- /dev/null +++ b/keyboards/clueboard/card/keymaps/default/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +NKRO_ENABLE = yes +AUDIO_ENABLE = no diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/config.h b/keyboards/clueboard/card/keymaps/rgb_effects/config.h new file mode 100644 index 00000000..12af278c --- /dev/null +++ b/keyboards/clueboard/card/keymaps/rgb_effects/config.h @@ -0,0 +1,16 @@ +#pragma once + +// place overrides here +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2 diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c new file mode 100644 index 00000000..c9d5db72 --- /dev/null +++ b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c @@ -0,0 +1,14 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + UG_TOGG, UG_SATU, UG_VALU, + UG_HUED, UG_HUEU, + UG_NEXT, UG_SATD, UG_VALD, + BL_STEP, + KC_NO, KC_NO, KC_NO + ) +}; + +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {255, 170, 85}; +const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {255, 170, 85}; diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/readme.md b/keyboards/clueboard/card/keymaps/rgb_effects/readme.md new file mode 100644 index 00000000..f99dcebf --- /dev/null +++ b/keyboards/clueboard/card/keymaps/rgb_effects/readme.md @@ -0,0 +1,5 @@ +# RGB effect test keymap for cluecard + +This keymap is made for testing the RGB effects. Audio is disabled and the mode buttons goes through each effect. If you run HID-listen you will be able to see which effect is active. For a list of effects, check the `rgblight.c` file. + +The hue, saturation and brightness buttons will work depending on which effect is active. diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk new file mode 100644 index 00000000..55e9563d --- /dev/null +++ b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +NKRO_ENABLE = yes +AUDIO_ENABLE = no diff --git a/keyboards/clueboard/card/readme.md b/keyboards/clueboard/card/readme.md new file mode 100644 index 00000000..20272d23 --- /dev/null +++ b/keyboards/clueboard/card/readme.md @@ -0,0 +1,15 @@ +# Cluecard + +![Cluecard](https://i.imgur.com/dTu0Pzx.jpg) + +A simple QMK dev kit. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Cluecard 1.0 +* Hardware Availability: Special gift from [skullydazed](https://github.com/skullydazed) + +Make example for this keyboard (after setting up your build environment): + + make clueboard/card: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). diff --git a/keyboards/clueboard/info.json b/keyboards/clueboard/info.json new file mode 100644 index 00000000..4421643e --- /dev/null +++ b/keyboards/clueboard/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "Clueboard", + "maintainer": "skullydazed", + "usb": { + "device_version": "0.0.1", + "vid": "0xC1ED" + } +} diff --git a/keyboards/clueboard/readme.md b/keyboards/clueboard/readme.md new file mode 100644 index 00000000..5af7e19c --- /dev/null +++ b/keyboards/clueboard/readme.md @@ -0,0 +1,13 @@ +![Clueboard Logo](https://i.imgur.com/220uMry.png) + +Clueboard makes fully customizable custom keyboards in a variety of form-factors. Inside this directory you'll find support for the entire line of Clueboard products. + +* Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: + * [`17`](17/): Clueboard "Cluepad" PCB + * [`2x1800`](2x1800/): Clueboard 2x1800 PCB + * [`60`](60/): Clueboard 60% PCB + * [`66`](66/): Clueboard 66% PCB + * [`66_hotswap`](66_hotswap/): Clueboard 66% USB-C Hotswappable PCB + * [`card`](card/): Special Cluecard PCB +* Hardware Availability: [clueboard.co](https://clueboard.co/) diff --git a/qmk.json b/qmk.json index 1e7a0b71..7a77438c 100644 --- a/qmk.json +++ b/qmk.json @@ -1,6 +1,6 @@ { "userspace_version": "1.0", "build_targets": [ - ["callmemero", "totem"] + ["clueboard/66/rev3", "default"] ] }