another test

This commit is contained in:
Sebastian Haack 2024-12-27 21:28:09 +01:00
commit d7b5bd6b5c
108 changed files with 7677 additions and 1 deletions

View file

@ -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;
}

View file

@ -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}
]
}
}
}

View file

@ -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
)
};

View file

@ -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).

View file

@ -0,0 +1,24 @@
/*
Copyright 2017 Zach White <skullydazed@clueboard.co>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* audio support */
#define AUDIO_PIN_ALT B7
#define AUDIO_PIN C4
#define AUDIO_CLICKY

View file

@ -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}
]
}
}
}

View file

@ -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
}

View file

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

View file

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

View file

@ -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).

View file

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

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -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
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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).

View file

@ -0,0 +1,151 @@
/* Copyright 2017 Zach White <skullydazed@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "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<MAX7219_CONTROLLERS; i++) {
max7219_display_test(i, true);
wait_ms(500);
max7219_display_test(i, false);
}
}
#elif defined(MAX7219_LED_ITERATE)
while (1) {
for (int row=0; row<8; row++) {
for(int col=0;col<8*MAX7219_CONTROLLERS;col++) {
max7219_set_led(row, col, true);
wait_ms(500);
max7219_set_led(row, col, false);
}
}
}
#elif defined(MAX7219_LED_DANCE)
while (1) {
for (int col=0; col<8; col++) {
for (int device_num=0; device_num<MAX7219_CONTROLLERS; device_num++) {
if (col % 2 == 0) {
max7219_led_a[col][device_num] = 0b01010101;
} else {
max7219_led_a[col][device_num] = 0b10101010;
}
}
}
max7219_write_frame();
wait_ms(500);
for (int col=0; col<8; col++) {
for (int device_num=0; device_num<MAX7219_CONTROLLERS; device_num++) {
if (col % 2 == 0) {
max7219_led_a[col][device_num] = 0b10101010;
} else {
max7219_led_a[col][device_num] = 0b01010101;
}
}
}
max7219_write_frame();
wait_ms(500);
}
#elif defined(MAX7219_LED_FONTTEST)
uint8_t message[MSG_FONTTEST_LEN][6] = MSG_FONTTEST;
max7219_message_sign(message, MSG_FONTTEST_LEN);
#elif defined(MAX7219_LED_CLUEBOARD)
uint8_t message[MSG_CLUEBOARD_LEN][6] = MSG_CLUEBOARD;
max7219_message_sign(message, MSG_CLUEBOARD_LEN);
#elif defined(MAX7219_LED_KONAMI)
uint8_t message[MSG_KONAMI_LEN][6] = MSG_KONAMI;
max7219_message_sign(message, MSG_KONAMI_LEN);
#elif defined(MAX7219_LED_QMK_POWERED)
uint8_t message[MSG_QMK_POWERED_LEN][6] = MSG_QMK_POWERED;
max7219_message_sign(message, MSG_QMK_POWERED_LEN);
#elif defined(DRAWING_TOY_MODE)
max7219_set_led(0, 0, true);
#endif
matrix_init_user();
}
#define NUM_COLUMNS 8*MAX7219_CONTROLLERS
uint8_t led_position[2] = {0,0}; // The location of the cursor in the matrix
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (encoder_update_user(index, clockwise)) {
#if defined(DRAWING_TOY_MODE)
// Encoder 1, left
if (index == 0 && clockwise) {
if (led_position[0] < NUM_COLUMNS-1) { // turned right
led_position[0]++;
} else {
led_position[0]=0;
}
} else if (index == 0) {
if (led_position[0] > 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;
}

View file

@ -0,0 +1,82 @@
/*
Copyright 2017 Zach White <skullydazed@clueboard.co>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* 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:
*
* <number of characters in message> * 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

View file

@ -0,0 +1,158 @@
/* 5x8 Font for Clueboard 2x1800.
*
* Copyright (c) 2021 Zach White <skullydazed@gmail.com>
*
* 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

View file

@ -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}
]
}
}
}

View file

@ -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"
]
]
}

View file

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

View file

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

View file

@ -0,0 +1,322 @@
/*
* Copyright (c) 2021 Zach White <skullydazed@gmail.com>
* 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 <pin>`.
*
* 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<MAX7219_CONTROLLERS; device_num++) {
int offset=device_num*2;
max7219_spidata[offset] = max7219_led_a[col][device_num];
max7219_spidata[offset+1] = col+1;
}
max7219_write_all();
}
}
/* Stores a message in the sign buffer.
*
* message should be a 2d array with the outer array having a length of your
* message and the inner array having a length of 6. Use the CHR_<letter>
* 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<MAX7219_BUFFER_SIZE; device_num++) {
for (int col=0; col<8; col++) {
if (letter_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_num<MAX7219_BUFFER_SIZE; device_num++) {
for (int col=0; col<8; col++) {
i++;
if (i == max7219_buffer_end) {
max7219_led_a[col][device_num] = left_col;
device_num=MAX7219_BUFFER_SIZE;
break;
} else if (col < 7) {
max7219_led_a[col][device_num] = max7219_led_a[col+1][device_num];
} else if (device_num == MAX7219_BUFFER_SIZE-1) {
max7219_led_a[col][device_num] = left_col;
} else {
max7219_led_a[col][device_num] = max7219_led_a[0][device_num+1];
}
}
}
max7219_write_frame();
}
/* Write data to a single max7219
*/
void max7219_write(int device_num, volatile uint8_t opcode, volatile uint8_t data) {
dprintf("max7219_write(%d, %d, %d)\n", device_num, opcode, data);
// Clear the data array
for(int i = MAX_BYTES; i>0; 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_BUFFER_SIZE; device_num++) {
max7219_led_a[col][device_num] = 0b00000000;
}
}
max7219_write_frame();
}
/* Enable the display test (IE turn on all 64 LEDs)
*/
void max7219_display_test(int device_num, bool enabled) {
dprintf("max7219_display_test(%d, %d);\n", device_num, enabled);
if (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; i++) {
max7219_shutdown(i, true);
}
for (int i=0; i<MAX7219_CONTROLLERS; i++) {
// Reset everything to defaults and enable the display
max7219_display_test(i, false);
max7219_set_scan_limit(i, 7);
max7219_set_decode_mode(i, 0);
max7219_set_intensity(i, MAX7219_LED_INTENSITY);
}
max7219_clear_display();
#ifndef MAX7219_NO_STARTUP_TEST
for (int i=0; i<MAX7219_CONTROLLERS; i++) {
// Test this display
max7219_display_test(i, true);
wait_ms(75);
max7219_display_test(i, false);
}
#endif
for (int i=0; i<MAX7219_CONTROLLERS; i++) {
max7219_shutdown(i, false);
}
}
/* Set the decode mode of the controller. You probably don't want to change this.
*/
void max7219_set_decode_mode(int device_num, int mode) {
dprintf("max7219_set_decode_mode(%d, %d);\n", device_num, mode);
if (device_num<0 || device_num >= 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);
}

View file

@ -0,0 +1,89 @@
/*
* Copyright (c) 2021 Zach White <skullydazed@gmail.com>
* 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 <stddef.h>
#include <stdint.h>
#include <stdbool.h>
// 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);

View file

@ -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).

View file

@ -0,0 +1,2 @@
SPI_DRIVER_REQUIRED = yes
QUANTUM_LIB_SRC += max7219.c

View file

@ -0,0 +1,3 @@
{
"diode_direction": "ROW2COL"
}

View file

@ -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.

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <halconf.h>

View file

@ -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}
]
}
}
}

View file

@ -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;
}

View file

@ -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), _______)
};

View file

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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <mcuconf.h>
#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

View file

@ -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.

View file

@ -0,0 +1,2 @@
# project specific files
SRC = led.c

View file

@ -0,0 +1 @@
{}

View file

@ -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),
};

View file

@ -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.

View file

@ -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),
};

View file

@ -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.

View file

@ -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),
};

View file

@ -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),
};

View file

@ -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.

View file

@ -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.

View file

@ -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}
]
}
}
}

View file

@ -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).

View file

@ -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

View file

@ -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}
]
}
}
}

View file

@ -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).

View file

@ -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
}
}

View file

@ -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

View file

@ -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}
]
}
}
}

View file

@ -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).

View file

@ -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
}
}

View file

@ -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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <halconf.h>

View file

@ -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}
]
}
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <mcuconf.h>
#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

View file

@ -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).

View file

@ -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;
}

View file

@ -0,0 +1,24 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
#define NO_ACTION_ONESHOT

View file

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

View file

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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <halconf.h>

View file

@ -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}
]
}
}
}

View file

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

View file

@ -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.

View file

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

View file

@ -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.

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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 <mcuconf.h>
#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

View file

@ -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).

View file

@ -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

View file

@ -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}
]
}
}
}

View file

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

View file

@ -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.

View file

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

View file

@ -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.

View file

@ -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
}
}

View file

@ -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).

View file

@ -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).

View file

@ -0,0 +1,6 @@
#pragma once
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE

View file

@ -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]}
]
}
}
}

View file

@ -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"]
]
}

View file

@ -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).

View file

@ -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);
}
}

View file

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

View file

@ -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}
]
}
}
}

View file

@ -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;
}
}

View file

@ -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.

View file

@ -0,0 +1,4 @@
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
NKRO_ENABLE = yes
AUDIO_ENABLE = no

Some files were not shown because too many files have changed in this diff Show more