Configure keyboard matrix from info.json (#10817)
* Make parameters from info.json available to the build system * move all clueboard settings to info.json * code formatting * make flake8 happy * make flake8 happy * make qmk lint happy * Add support for specifying led indicators in json * move led indicators to the clueboard info.json * Apply suggestions from code review Co-authored-by: Erovia <Erovia@users.noreply.github.com> * add missing docstring Co-authored-by: Erovia <Erovia@users.noreply.github.com>master
parent
f231f24dda
commit
47b9b11009
4
Makefile
4
Makefile
|
@ -501,8 +501,8 @@ endef
|
||||||
%:
|
%:
|
||||||
# Check if we have the CMP tool installed
|
# Check if we have the CMP tool installed
|
||||||
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
||||||
# Ensure that bin/qmk works. This will be a failing check after the next develop merge
|
# Ensure that bin/qmk works.
|
||||||
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi
|
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi
|
||||||
# Check if the submodules are dirty, and display a warning if they are
|
# Check if the submodules are dirty, and display a warning if they are
|
||||||
ifndef SKIP_GIT
|
ifndef SKIP_GIT
|
||||||
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
|
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
|
||||||
|
|
|
@ -90,13 +90,16 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
|
||||||
include $(KEYBOARD_PATH_1)/rules.mk
|
include $(KEYBOARD_PATH_1)/rules.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
|
||||||
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
|
||||||
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
|
||||||
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
|
||||||
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
||||||
|
|
||||||
|
# Pull in rules from info.json
|
||||||
|
INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
|
||||||
|
include $(INFO_RULES_MK)
|
||||||
|
|
||||||
# Check for keymap.json first, so we can regenerate keymap.c
|
# Check for keymap.json first, so we can regenerate keymap.c
|
||||||
include build_json.mk
|
include build_json.mk
|
||||||
|
|
||||||
|
@ -290,6 +293,32 @@ ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
|
||||||
CONFIG_H += $(KEYMAP_PATH)/config.h
|
CONFIG_H += $(KEYMAP_PATH)/config.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Pull in stuff from info.json
|
||||||
|
INFO_JSON_FILES :=
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
|
||||||
|
INFO_JSON_FILES += $(KEYBOARD_PATH_1)/info.json
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
|
||||||
|
INFO_JSON_FILES += $(KEYBOARD_PATH_2)/info.json
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
|
||||||
|
INFO_JSON_FILES += $(KEYBOARD_PATH_3)/info.json
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
|
||||||
|
INFO_JSON_FILES += $(KEYBOARD_PATH_4)/info.json
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
|
||||||
|
INFO_JSON_FILES += $(KEYBOARD_PATH_5)/info.json
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
|
||||||
|
|
||||||
|
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
|
||||||
|
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
|
||||||
|
|
||||||
|
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
|
||||||
|
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC += $(KEYBOARD_SRC) \
|
SRC += $(KEYBOARD_SRC) \
|
||||||
$(KEYMAP_C) \
|
$(KEYMAP_C) \
|
||||||
|
@ -364,7 +393,7 @@ all:
|
||||||
echo "skipped" >&2
|
echo "skipped" >&2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
build: elf cpfirmware
|
build: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h elf cpfirmware
|
||||||
check-size: build
|
check-size: build
|
||||||
objs-size: build
|
objs-size: build
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,20 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
|
||||||
* Width of the board in Key Units
|
* Width of the board in Key Units
|
||||||
* `height`
|
* `height`
|
||||||
* Height of the board in Key Units
|
* Height of the board in Key Units
|
||||||
|
* `debounce`
|
||||||
|
* How many milliseconds (ms) to wait for debounce to happen. (Default: 5)
|
||||||
|
* `diode_direction`
|
||||||
|
* The direction diodes face. See [`DIRECT_PINS` in the hardware configuration](https://docs.qmk.fm/#/config_options?id=hardware-options) for more details.
|
||||||
|
* `layout_aliases`
|
||||||
|
* A dictionary containing layout aliases. The key is the alias and the value is a layout in `layouts` it maps to.
|
||||||
* `layouts`
|
* `layouts`
|
||||||
* Physical Layout representations. See the next section for more detail.
|
* Physical Layout representations. See the [Layout Format](#layout_format) section for more detail.
|
||||||
|
* `matrix_pins`
|
||||||
|
* Configure the pins corresponding to columns and rows, or direct pins. See [Matrix Pins](#matrix_pins) for more detail.
|
||||||
|
* `rgblight`
|
||||||
|
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb_lighting) section for more detail.
|
||||||
|
* `usb`
|
||||||
|
* Configure USB VID, PID, and other parameters. See [USB](#USB) for more detail.
|
||||||
|
|
||||||
### Layout Format
|
### Layout Format
|
||||||
|
|
||||||
|
@ -49,25 +61,128 @@ All key positions and rotations are specified in relation to the top-left corner
|
||||||
* The width of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
|
* The width of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
|
||||||
* `h`
|
* `h`
|
||||||
* The height of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
|
* The height of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
|
||||||
* `r`
|
|
||||||
* How many degrees clockwise to rotate the key.
|
|
||||||
* `rx`
|
|
||||||
* The absolute position of the point to rotate the key around in the horizontal axis. Default: `x`
|
|
||||||
* `ry`
|
|
||||||
* The absolute position of the point to rotate the key around in the vertical axis. Default: `y`
|
|
||||||
* `ks`
|
|
||||||
* Key Shape: define a polygon by providing a list of points, in Key Units.
|
|
||||||
* **Important**: These are relative to the top-left of the key, not absolute.
|
|
||||||
* Example ISO Enter: `[ [0,0], [1.5,0], [1.5,2], [0.25,2], [0.25,1], [0,1], [0,0] ]`
|
|
||||||
* `label`
|
* `label`
|
||||||
* What to name this position in the matrix.
|
* What to name this position in the matrix.
|
||||||
* This should usually be the same name as what is silkscreened on the PCB at this location.
|
* This should usually correspond to the keycode for the first layer of the default keymap.
|
||||||
|
* `matrix`
|
||||||
|
* A 2 item list describing the row and column location for this key.
|
||||||
|
|
||||||
## How is the Metadata Exposed?
|
### Matrix Pins
|
||||||
|
|
||||||
This metadata is primarily used in two ways:
|
Currently QMK supports connecting switches either directly to GPIO pins or via a switch matrix. At this time you can not combine these, they are mutually exclusive.
|
||||||
|
|
||||||
* To allow web-based configurators to dynamically generate UI
|
#### Switch Matrix
|
||||||
* To support the new `make keyboard:keymap:qmk` target, which bundles this metadata up with the firmware to allow QMK Toolbox to be smarter.
|
|
||||||
|
|
||||||
Configurator authors can see the [QMK Compiler](https://docs.api.qmk.fm/using-the-api) docs for more information on using the JSON API.
|
Most keyboards use a switch matrix to connect keyswitches to the MCU. You can define your pin columns and rows to configure your switch matrix. When defining switch matrices you should also define your `diode_direction`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["F4", "E6", "B1", "D2"],
|
||||||
|
"rows": ["B0", "D3", "D5", "D4", "D6"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Direct Pins
|
||||||
|
|
||||||
|
Direct pins are when you connect one side of the switch to GND and the other side to a GPIO pin on your MCU. No diode is required, but there is a 1:1 mapping between switches and pins.
|
||||||
|
|
||||||
|
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array is a text string corresponding to a pin. You can use `null` to indicate an empty spot in the matrix.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"matrix_pins": {
|
||||||
|
"direct": [
|
||||||
|
["A10", "A9"],
|
||||||
|
["A0", "B8"],
|
||||||
|
[null, "B11"],
|
||||||
|
["B9", "A8"],
|
||||||
|
["A7", "B1"],
|
||||||
|
[null, "B2"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### RGB Lighting
|
||||||
|
|
||||||
|
This section controls the legacy WS2812 support in QMK. This should not be confused with the RGB Matrix feature, which can be used to control both WS2812 and ISSI RGB LEDs.
|
||||||
|
|
||||||
|
The following items can be set. Not every value is required.
|
||||||
|
|
||||||
|
* `led_count`
|
||||||
|
* The number of LEDs in your strip
|
||||||
|
* `pin`
|
||||||
|
* The GPIO pin that your LED strip is connected to
|
||||||
|
* `animations`
|
||||||
|
* A dictionary that lists enabled and disabled animations. See [RGB Light Animations](#rgb_light_animations) below.
|
||||||
|
* `sleep`
|
||||||
|
* Set to `true` to enable lighting during host sleep
|
||||||
|
* `split`
|
||||||
|
* Set to `true` to enable synchronization functionality between split halves
|
||||||
|
* `split_count`
|
||||||
|
* For split keyboards, the number of LEDs on each side
|
||||||
|
* `max_brightness`
|
||||||
|
* (0-255) What the maxmimum brightness (value) level is
|
||||||
|
* `hue_steps`
|
||||||
|
* How many steps of adjustment to have for hue
|
||||||
|
* `saturation_steps`
|
||||||
|
* How many steps of adjustment to have for saturation
|
||||||
|
* `brightness_steps`
|
||||||
|
* How many steps of adjustment to have for brightness (value)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"rgblight": {
|
||||||
|
"led_count": 4,
|
||||||
|
"pin": "F6",
|
||||||
|
"hue_steps": 10,
|
||||||
|
"saturation_steps": 17,
|
||||||
|
"brightness_steps": 17,
|
||||||
|
"animations": {
|
||||||
|
"all": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### RGB Light Animations
|
||||||
|
|
||||||
|
The following animations can be enabled:
|
||||||
|
|
||||||
|
| Key | Description |
|
||||||
|
|-----|-------------|
|
||||||
|
| `all` | Enable all additional animation modes. |
|
||||||
|
| `alternating` | Enable alternating animation mode. |
|
||||||
|
| `breathing` | Enable breathing animation mode. |
|
||||||
|
| `christmas` | Enable christmas animation mode. |
|
||||||
|
| `knight` | Enable knight animation mode. |
|
||||||
|
| `rainbow_mood` | Enable rainbow mood animation mode. |
|
||||||
|
| `rainbow_swirl` | Enable rainbow swirl animation mode. |
|
||||||
|
| `rgb_test` | Enable RGB test animation mode. |
|
||||||
|
| `snake` | Enable snake animation mode. |
|
||||||
|
| `static_gradient` | Enable static gradient mode. |
|
||||||
|
| `twinkle` | Enable twinkle animation mode. |
|
||||||
|
|
||||||
|
### USB
|
||||||
|
|
||||||
|
Every USB keyboard needs to have its USB parmaters defined. At a minimum you need to set vid, pid, and device version.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"usb": {
|
||||||
|
"vid": "0xC1ED",
|
||||||
|
"pid": "0x23B0",
|
||||||
|
"device_ver": "0x0001"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
|
@ -3,37 +3,4 @@
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
|
|
||||||
/* Cluepad matrix layout
|
|
||||||
* .-------------------.
|
|
||||||
* |NLCK| /| *| -|
|
|
||||||
* |-------------------|
|
|
||||||
* | 7| 8| 9| |
|
|
||||||
* |--------------| |
|
|
||||||
* | 4| 5| 6| +|
|
|
||||||
* |-------------------|
|
|
||||||
* | 1| 2| 3| |
|
|
||||||
* |--------------| |
|
|
||||||
* | 0| .| Ent|
|
|
||||||
* '-------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT_numpad_5x4( \
|
|
||||||
k00, k01, k02, k03, \
|
|
||||||
k10, k11, k12, \
|
|
||||||
k20, k21, k22, k13, \
|
|
||||||
k30, k31, k32, \
|
|
||||||
k40, k42, k33 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03 }, \
|
|
||||||
{ k10, k11, k12, k13 }, \
|
|
||||||
{ k20, k21, k22, KC_NO }, \
|
|
||||||
{ k30, k31, k32, k33 }, \
|
|
||||||
{ k40, KC_NO, k42, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_numpad_5x4
|
|
||||||
#define KEYMAP LAYOUT_numpad_5x4
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -20,76 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2312
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Cluepad with RGB Underlighting
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Cluepad
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 5
|
|
||||||
#define MATRIX_COLS 4
|
|
||||||
|
|
||||||
// ROWS: Top to bottom, COLS: Left to right
|
|
||||||
/* Row pin configuration
|
|
||||||
* row: 0 1 2 3 4
|
|
||||||
* pin:
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B0, D3, D5, D4, D6 }
|
|
||||||
/* Column pin configuration
|
|
||||||
* col: 0 1 2 3
|
|
||||||
* pin: F4 E6 B1 D2
|
|
||||||
*/
|
|
||||||
#define MATRIX_COL_PINS { F4, E6, B1, D2 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* define if matrix has ghost */
|
|
||||||
//#define MATRIX_HAS_GHOST
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Number of backlighting levels */
|
/* Number of backlighting levels */
|
||||||
#define BACKLIGHT_LEVELS 3
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/* Underlight configuration
|
|
||||||
*/
|
|
||||||
#define RGB_DI_PIN F6
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 4 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* Debug forcibly enabled */
|
|
||||||
#define ALWAYS_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,30 +1,67 @@
|
||||||
{
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
"keyboard_name": "Clueboard 17% (Cluepad)",
|
"keyboard_name": "Clueboard 17% (Cluepad)",
|
||||||
"keyboard_folder": "clueboard/17",
|
"maintainer": "skullydazed",
|
||||||
"url": "",
|
|
||||||
"maintainer": "qmk",
|
|
||||||
"width": 4,
|
|
||||||
"height": 5,
|
"height": 5,
|
||||||
|
"width": 4,
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"backlight": true,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": true,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["F4", "E6", "B1", "D2"],
|
||||||
|
"rows": ["B0", "D3", "D5", "D4", "D6"]
|
||||||
|
},
|
||||||
|
"rgblight": {
|
||||||
|
"animations": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "10",
|
||||||
|
"led_count": "4",
|
||||||
|
"pin": "F6",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"url": "",
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2312",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_numpad_5x4",
|
||||||
|
"LAYOUT": "LAYOUT_numpad_5x4"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_numpad_5x4": {
|
"LAYOUT_numpad_5x4": {
|
||||||
|
"key_count": 17,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"Num Lock", "x":0, "y":0},
|
{ "label": "Num Lock", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label":"/", "x":1, "y":0},
|
{ "label": "/", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label":"*", "x":2, "y":0},
|
{ "label": "*", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label":"-", "x":3, "y":0},
|
{ "label": "-", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label":"7", "x":0, "y":1},
|
{ "label": "7", "matrix": [1, 0], "w": 1, "x": 0, "y": 1 },
|
||||||
{"label":"8", "x":1, "y":1},
|
{ "label": "8", "matrix": [1, 1], "w": 1, "x": 1, "y": 1 },
|
||||||
{"label":"9", "x":2, "y":1},
|
{ "label": "9", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 },
|
||||||
{"label":"4", "x":0, "y":2},
|
{ "label": "4", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 },
|
||||||
{"label":"5", "x":1, "y":2},
|
{ "label": "5", "matrix": [2, 1], "w": 1, "x": 1, "y": 2 },
|
||||||
{"label":"6", "x":2, "y":2},
|
{ "label": "6", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 },
|
||||||
{"label":"+", "x":3, "y":1, "h":2},
|
{ "h": 2, "label": "+", "matrix": [1, 3], "w": 1, "x": 3, "y": 1 },
|
||||||
{"label":"1", "x":0, "y":3},
|
{ "label": "1", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 },
|
||||||
{"label":"2", "x":1, "y":3},
|
{ "label": "2", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 },
|
||||||
{"label":"3", "x":2, "y":3},
|
{ "label": "3", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 },
|
||||||
{"label":"0", "x":0, "y":4, "w":2},
|
{ "label": "0", "matrix": [4, 0], "w": 2, "x": 0, "y": 4 },
|
||||||
{"label":".", "x":2, "y":4},
|
{ "label": ".", "matrix": [4, 2], "w": 1, "x": 2, "y": 4 },
|
||||||
{"label":"Enter", "x":3, "y":3, "h":2}
|
{ "h": 2, "label": "Enter", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Default keymap for the Clueboard 17.
|
|
@ -12,14 +12,4 @@ MCU = atmega32u4
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
|
||||||
MIDI_ENABLE = no # MIDI support
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
|
|
|
@ -18,78 +18,4 @@
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_4u_space( \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, kb0, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_7u_space( \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, kb0, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, KC_NO, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, KC_NO, KC_NO, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -15,185 +15,17 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x23A0
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT 2x1800 2018
|
|
||||||
#define DESCRIPTION What does it mean?
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 12
|
|
||||||
#define MATRIX_COLS 11
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keyboard Matrix Assignments
|
|
||||||
*
|
|
||||||
* Change this to how you wired your keyboard
|
|
||||||
* COLS: AVR pins used for columns, left to right
|
|
||||||
* ROWS: AVR pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { C0, C1, C2, C3, C7, F7, B1, F2, F3, F4, F5, F6 }
|
|
||||||
#define MATRIX_COL_PINS { D2, D3, D4, D5, D7, E0, E1, B0, E6, B3, B2 }
|
|
||||||
#define UNUSED_PINS { D0, D1, D6, C5, C6, E4, E5, E7, F0, F1, A0, A1, A2, A3, A4, A5, A6, A7 }
|
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL*/
|
|
||||||
#define DIODE_DIRECTION ROW2COL
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
|
||||||
//#define MATRIX_HAS_GHOST
|
|
||||||
|
|
||||||
/* audio support */
|
/* audio support */
|
||||||
#define B7_AUDIO
|
#define B7_AUDIO
|
||||||
#define C4_AUDIO
|
#define C4_AUDIO
|
||||||
#define AUDIO_CLICKY
|
#define AUDIO_CLICKY
|
||||||
|
|
||||||
#define LED_NUM_LOCK_PIN B4
|
|
||||||
#define LED_CAPS_LOCK_PIN B5
|
|
||||||
#define LED_SCROLL_LOCK_PIN B6
|
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
// #define BACKLIGHT_PIN B7
|
|
||||||
// #define BACKLIGHT_BREATHING
|
|
||||||
// #define BACKLIGHT_LEVELS 3
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
#define RGB_DI_PIN C6
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 16
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
|
||||||
|
|
||||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
|
||||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
|
||||||
*/
|
|
||||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force NKRO
|
|
||||||
*
|
|
||||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
|
||||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
|
||||||
* makefile for this to work.)
|
|
||||||
*
|
|
||||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
|
||||||
* until the next keyboard reset.
|
|
||||||
*
|
|
||||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
|
||||||
* fully operational during normal computer usage.
|
|
||||||
*
|
|
||||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
|
||||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
|
||||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
|
||||||
* power-up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define FORCE_NKRO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP1 H
|
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MIDI options
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Prevent use of disabled MIDI features in the keymap */
|
|
||||||
//#define MIDI_ENABLE_STRICT 1
|
|
||||||
|
|
||||||
/* enable basic MIDI features:
|
|
||||||
- MIDI notes can be sent when in Music mode is on
|
|
||||||
*/
|
|
||||||
//#define MIDI_BASIC
|
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
|
||||||
- MIDI notes can be added to the keymap
|
|
||||||
- Octave shift and transpose
|
|
||||||
- Virtual sustain, portamento, and modulation wheel
|
|
||||||
- etc.
|
|
||||||
*/
|
|
||||||
//#define MIDI_ADVANCED
|
|
||||||
|
|
||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,41 +1,435 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "Clueboard 2x1800",
|
"manufacturer": "Clueboard",
|
||||||
"url": "",
|
"keyboard_name": "Clueboard 2x1800 2018",
|
||||||
"maintainer": "skullydazed",
|
"maintainer": "skullydazed",
|
||||||
"width": 24,
|
|
||||||
"height": 6.5,
|
"height": 6.5,
|
||||||
|
"width": 24,
|
||||||
|
"debounce": "5",
|
||||||
|
"diode_direction": "ROW2COL",
|
||||||
|
"features": {
|
||||||
|
"audio": true,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": true,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"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": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "8",
|
||||||
|
"hue_steps": "8",
|
||||||
|
"led_count": "16",
|
||||||
|
"pin": "C6",
|
||||||
|
"saturation_steps": "8"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"pid": "0x23A0"
|
||||||
|
},
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_4u_space": {
|
||||||
"key_count": 127,
|
"key_count": 124,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"Home", "x":0, "y":0}, {"label":"End", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"PgDn", "x":3, "y":0}, {"label":"Esc", "x":4.75, "y":0}, {"label":"F1", "x":6.25, "y":0}, {"label":"F2", "x":7.25, "y":0}, {"label":"F3", "x":8.25, "y":0}, {"label":"F4", "x":9.25, "y":0}, {"label":"F5", "x":10.75, "y":0}, {"label":"F6", "x":11.75, "y":0}, {"label":"F7", "x":12.75, "y":0}, {"label":"F8", "x":13.75, "y":0}, {"label":"F9", "x":15.25, "y":0}, {"label":"F10", "x":16.25, "y":0}, {"label":"F11", "x":17.25, "y":0}, {"label":"F12", "x":18.25, "y":0}, {"label":"PrtSc", "x":20, "y":0}, {"label":"Scroll Lock", "x":21, "y":0}, {"label":"Pause", "x":22, "y":0}, {"label":"Insert", "x":23, "y":0},
|
{ "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label":"-", "x":0, "y":1.25}, {"label":"Num Lock", "x":1, "y":1.25}, {"label":"/", "x":2, "y":1.25}, {"label":"*", "x":3, "y":1.25}, {"label":"~", "x":4.5, "y":1.25}, {"label":"!", "x":5.5, "y":1.25}, {"label":"@", "x":6.5, "y":1.25}, {"label":"#", "x":7.5, "y":1.25}, {"label":"$", "x":8.5, "y":1.25}, {"label":"%", "x":9.5, "y":1.25}, {"label":"^", "x":10.5, "y":1.25}, {"label":"&", "x":11.5, "y":1.25}, {"label":"*", "x":12.5, "y":1.25}, {"label":"(", "x":13.5, "y":1.25}, {"label":")", "x":14.5, "y":1.25}, {"label":"_", "x":15.5, "y":1.25}, {"label":"+", "x":16.5, "y":1.25}, {"label":"Backspace", "x":17.5, "y":1.25, "w":2}, {"label":"Num Lock", "x":20, "y":1.25}, {"label":"/", "x":21, "y":1.25}, {"label":"*", "x":22, "y":1.25}, {"label":"-", "x":23, "y":1.25},
|
{ "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label":"+", "x":0, "y":2.25, "h":2}, {"label":"7", "x":1, "y":2.25}, {"label":"8", "x":2, "y":2.25}, {"label":"9", "x":3, "y":2.25}, {"label":"Tab", "x":4.5, "y":2.25, "w":1.5}, {"label":"Q", "x":6, "y":2.25}, {"label":"W", "x":7, "y":2.25}, {"label":"E", "x":8, "y":2.25}, {"label":"R", "x":9, "y":2.25}, {"label":"T", "x":10, "y":2.25}, {"label":"Y", "x":11, "y":2.25}, {"label":"U", "x":12, "y":2.25}, {"label":"I", "x":13, "y":2.25}, {"label":"O", "x":14, "y":2.25}, {"label":"P", "x":15, "y":2.25}, {"label":"{", "x":16, "y":2.25}, {"label":"}", "x":17, "y":2.25}, {"label":"|", "x":18, "y":2.25, "w":1.5}, {"label":"7", "x":20, "y":2.25}, {"label":"8", "x":21, "y":2.25}, {"label":"9", "x":22, "y":2.25}, {"label":"+", "x":23, "y":2.25, "h":2},
|
{ "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label":"4", "x":1, "y":3.25}, {"label":"5", "x":2, "y":3.25}, {"label":"6", "x":3, "y":3.25}, {"label":"Caps Lock", "x":4.5, "y":3.25, "w":1.75}, {"label":"A", "x":6.25, "y":3.25}, {"label":"S", "x":7.25, "y":3.25}, {"label":"D", "x":8.25, "y":3.25}, {"label":"F", "x":9.25, "y":3.25}, {"label":"G", "x":10.25, "y":3.25}, {"label":"H", "x":11.25, "y":3.25}, {"label":"J", "x":12.25, "y":3.25}, {"label":"K", "x":13.25, "y":3.25}, {"label":"L", "x":14.25, "y":3.25}, {"label":":", "x":15.25, "y":3.25}, {"label":"\"", "x":16.25, "y":3.25}, {"label":"Enter", "x":17.25, "y":3.25, "w":2.25}, {"label":"4", "x":20, "y":3.25}, {"label":"5", "x":21, "y":3.25}, {"label":"6", "x":22, "y":3.25},
|
{ "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label":"Enter", "x":0, "y":4.25, "h":2}, {"label":"1", "x":1, "y":4.25}, {"label":"2", "x":2, "y":4.25}, {"label":"3", "x":3, "y":4.25}, {"label":"\\u2191", "x":4.25, "y":4.5}, {"label":"Shift", "x":5.5, "y":4.25, "w":1.25}, {"label":"Z", "x":6.75, "y":4.25}, {"label":"X", "x":7.75, "y":4.25}, {"label":"C", "x":8.75, "y":4.25}, {"label":"V", "x":9.75, "y":4.25}, {"label":"B", "x":10.75, "y":4.25}, {"label":"N", "x":11.75, "y":4.25}, {"label":"M", "x":12.75, "y":4.25}, {"label":"<", "x":13.75, "y":4.25}, {"label":">", "x":14.75, "y":4.25}, {"label":"?", "x":15.75, "y":4.25}, {"label":"Shift", "x":16.75, "y":4.25, "w":1.75}, {"label":"\\u2191", "x":18.75, "y":4.5}, {"label":"1", "x":20, "y":4.25}, {"label":"2", "x":21, "y":4.25}, {"label":"3", "x":22, "y":4.25}, {"label":"Enter", "x":23, "y":4.25, "h":2},
|
{ "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 },
|
||||||
{"label":"0", "x":1, "y":5.25}, {"label":".", "x":2, "y":5.25}, {"label":"\\u2190", "x":3.25, "y":5.5}, {"label":"\\u2193", "x":4.25, "y":5.5}, {"label":"\\u2192", "x":5.25, "y":5.5}, {"label":"Ctrl", "x":6.5, "y":5.25}, {"label":"Win", "x":7.5, "y":5.25}, {"label":"Alt", "x":8.5, "y":5.25}, {"label":"1u", "x":9.5, "y":5.25}, {"label":"1u", "x":10.5, "y":5.25}, {"label":"1u", "x":11.5, "y":5.25}, {"label":"1u", "x":12.5, "y":5.25}, {"label":"Alt", "x":13.5, "y":5.25}, {"label":"Win", "x":14.5, "y":5.25}, {"label":"Menu", "x":15.5, "y":5.25}, {"label":"Ctrl", "x":16.5, "y":5.25}, {"label":"\\u2190", "x":17.75, "y":5.5}, {"label":"\\u2193", "x":18.75, "y":5.5}, {"label":"\\u2192", "x":19.75, "y":5.5}, {"label":"0", "x":21, "y":5.25}, {"label":".", "x":22, "y":5.25}
|
{ "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 7], "w": 1, "x": 20, "y": 0 },
|
||||||
|
{ "matrix": [6, 8], "w": 1, "x": 21, "y": 0 },
|
||||||
|
{ "matrix": [6, 9], "w": 1, "x": 22, "y": 0 },
|
||||||
|
{ "matrix": [6, 10], "w": 1, "x": 23, "y": 0 },
|
||||||
|
{ "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 },
|
||||||
|
{ "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 },
|
||||||
|
{ "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 },
|
||||||
|
{ "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 },
|
||||||
|
{ "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 },
|
||||||
|
{ "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 },
|
||||||
|
{ "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 },
|
||||||
|
{ "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 },
|
||||||
|
{ "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 5], "w": 1, "x": 8.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 7], "w": 1, "x": 13.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 8], "w": 1, "x": 14.5, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 0], "w": 1, "x": 15.5, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 2], "w": 1, "x": 16.5, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 3], "w": 1, "x": 21, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 },
|
||||||
|
{ "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_7u_space": {
|
"LAYOUT_7u_space": {
|
||||||
"key_count": 121,
|
"key_count": 121,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4.75, "y":0}, {"label":"k06", "x":6.25, "y":0}, {"label":"k07", "x":7.25, "y":0}, {"label":"k08", "x":8.25, "y":0}, {"label":"k09", "x":9.25, "y":0}, {"label":"k0a", "x":10.75, "y":0}, {"label":"k60", "x":11.75, "y":0}, {"label":"k61", "x":12.75, "y":0}, {"label":"k62", "x":13.75, "y":0}, {"label":"k63", "x":15.25, "y":0}, {"label":"k64", "x":16.25, "y":0}, {"label":"k65", "x":17.25, "y":0}, {"label":"k66", "x":18.25, "y":0}, {"label":"k67", "x":20, "y":0}, {"label":"k68", "x":21, "y":0}, {"label":"k69", "x":22, "y":0}, {"label":"k6a", "x":23, "y":0},
|
{ "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label":"k10", "x":0, "y":1.25}, {"label":"k11", "x":1, "y":1.25}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1.25}, {"label":"k14", "x":4.5, "y":1.25}, {"label":"k15", "x":5.5, "y":1.25}, {"label":"k16", "x":6.5, "y":1.25}, {"label":"k17", "x":7.5, "y":1.25}, {"label":"k18", "x":8.5, "y":1.25}, {"label":"k19", "x":9.5, "y":1.25}, {"label":"k0a", "x":10.5, "y":1.25}, {"label":"k70", "x":11.5, "y":1.25}, {"label":"k71", "x":12.5, "y":1.25}, {"label":"k72", "x":13.5, "y":1.25}, {"label":"k73", "x":14.5, "y":1.25}, {"label":"k74", "x":15.5, "y":1.25}, {"label":"k75", "x":16.5, "y":1.25}, {"label":"k76", "x":17.5, "y":1.25, "w":2}, {"label":"k77", "x":20, "y":1.25}, {"label":"k78", "x":21, "y":1.25}, {"label":"k79", "x":22, "y":1.25}, {"label":"k7a", "x":23, "y":1.25},
|
{ "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label":"k20", "x":0, "y":2.25, "h":2}, {"label":"k21", "x":1, "y":2.25}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2.25}, {"label":"k24", "x":4.5, "y":2.25, "w":1.5}, {"label":"k25", "x":6, "y":2.25}, {"label":"k26", "x":7, "y":2.25}, {"label":"k27", "x":8, "y":2.25}, {"label":"k28", "x":9, "y":2.25}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2a", "x":11, "y":2.25}, {"label":"k80", "x":12, "y":2.25}, {"label":"k81", "x":13, "y":2.25}, {"label":"k82", "x":14, "y":2.25}, {"label":"k83", "x":15, "y":2.25}, {"label":"k84", "x":16, "y":2.25}, {"label":"k85", "x":17, "y":2.25}, {"label":"k86", "x":18, "y":2.25, "w":1.5}, {"label":"k87", "x":20, "y":2.25}, {"label":"k88", "x":21, "y":2.25}, {"label":"k89", "x":22, "y":2.25}, {"label":"k8a", "x":23, "y":2.25, "h":2},
|
{ "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label":"k31", "x":1, "y":3.25}, {"label":"k32", "x":2, "y":3.25}, {"label":"k33", "x":3, "y":3.25}, {"label":"k34", "x":4.5, "y":3.25, "w":1.75}, {"label":"k35", "x":6.25, "y":3.25}, {"label":"k36", "x":7.25, "y":3.25}, {"label":"k37", "x":8.25, "y":3.25}, {"label":"k38", "x":9.25, "y":3.25}, {"label":"k39", "x":10.25, "y":3.25}, {"label":"k3a", "x":11.25, "y":3.25}, {"label":"k90", "x":12.25, "y":3.25}, {"label":"k91", "x":13.25, "y":3.25}, {"label":"k92", "x":14.25, "y":3.25}, {"label":"k93", "x":15.25, "y":3.25}, {"label":"k94", "x":16.25, "y":3.25}, {"label":"k95", "x":17.25, "y":3.25, "w":2.25}, {"label":"k97", "x":20, "y":3.25}, {"label":"k98", "x":21, "y":3.25}, {"label":"k99", "x":22, "y":3.25},
|
{ "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label":"k40", "x":0, "y":4.25, "h":2}, {"label":"k41", "x":1, "y":4.25}, {"label":"k42", "x":2, "y":4.25}, {"label":"k43", "x":3, "y":4.25}, {"label":"k45", "x":5.5, "y":4.25, "w":1.25}, {"label":"k46", "x":6.75, "y":4.25}, {"label":"k47", "x":7.75, "y":4.25}, {"label":"k48", "x":8.75, "y":4.25}, {"label":"k49", "x":9.75, "y":4.25}, {"label":"k4a", "x":10.75, "y":4.25}, {"label":"ka0", "x":11.75, "y":4.25}, {"label":"ka1", "x":12.75, "y":4.25}, {"label":"ka2", "x":13.75, "y":4.25}, {"label":"ka3", "x":14.75, "y":4.25}, {"label":"ka4", "x":15.75, "y":4.25}, {"label":"ka5", "x":16.75, "y":4.25, "w":1.75}, {"label":"ka7", "x":20, "y":4.25}, {"label":"ka8", "x":21, "y":4.25}, {"label":"ka9", "x":22, "y":4.25}, {"label":"kaa", "x":23, "y":4.25, "h":2}, {"label":"k44", "x":4.25, "y":4.5}, {"label":"k96", "x":18.75, "y":4.5},
|
{ "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 },
|
||||||
{"label":"k51", "x":1, "y":5.25}, {"label":"k52", "x":2, "y":5.25}, {"label":"k56", "x":6.5, "y":5.25}, {"label":"k57", "x":7.5, "y":5.25}, {"label":"kb0", "x":8.5, "y":5.25, "w":7}, {"label":"kb4", "x":15.5, "y":5.25}, {"label":"kb5", "x":16.5, "y":5.25}, {"label":"kb8", "x":21, "y":5.25}, {"label":"kb9", "x":22, "y":5.25}, {"label":"k53", "x":3.25, "y":5.5}, {"label":"k54", "x":4.25, "y":5.5}, {"label":"k55", "x":5.25, "y":5.5}, {"label":"ka6", "x":17.75, "y":5.5}, {"label":"kb6", "x":18.75, "y":5.5}, {"label":"kb7", "x":19.75, "y":5.5}
|
{ "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 },
|
||||||
|
{ "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 },
|
||||||
|
{ "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 },
|
||||||
|
{ "matrix": [6, 7], "w": 1, "x": 20, "y": 0 },
|
||||||
|
{ "matrix": [6, 8], "w": 1, "x": 21, "y": 0 },
|
||||||
|
{ "matrix": [6, 9], "w": 1, "x": 22, "y": 0 },
|
||||||
|
{ "matrix": [6, 10], "w": 1, "x": 23, "y": 0 },
|
||||||
|
{ "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 },
|
||||||
|
{ "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 },
|
||||||
|
{ "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 },
|
||||||
|
{ "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 },
|
||||||
|
{ "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 },
|
||||||
|
{ "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 },
|
||||||
|
{ "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 },
|
||||||
|
{ "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 },
|
||||||
|
{ "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 },
|
||||||
|
{ "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 },
|
||||||
|
{ "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 },
|
||||||
|
{ "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 },
|
||||||
|
{ "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 },
|
||||||
|
{ "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 },
|
||||||
|
{ "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 },
|
||||||
|
{ "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 },
|
||||||
|
{ "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 6], "w": 1, "x": 15.5, "y": 5.25 },
|
||||||
|
{ "matrix": [5, 7], "w": 1, "x": 16.5, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 0], "w": 1, "x": 21, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 },
|
||||||
|
{ "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 },
|
||||||
|
{ "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 },
|
||||||
|
{ "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_4u_space": {
|
"LAYOUT_all": {
|
||||||
"key_count": 124,
|
"key_count": 127,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4.75, "y":0}, {"label":"k06", "x":6.25, "y":0}, {"label":"k07", "x":7.25, "y":0}, {"label":"k08", "x":8.25, "y":0}, {"label":"k09", "x":9.25, "y":0}, {"label":"k0a", "x":10.75, "y":0}, {"label":"k60", "x":11.75, "y":0}, {"label":"k61", "x":12.75, "y":0}, {"label":"k62", "x":13.75, "y":0}, {"label":"k63", "x":15.25, "y":0}, {"label":"k64", "x":16.25, "y":0}, {"label":"k65", "x":17.25, "y":0}, {"label":"k66", "x":18.25, "y":0}, {"label":"k67", "x":20, "y":0}, {"label":"k68", "x":21, "y":0}, {"label":"k69", "x":22, "y":0}, {"label":"k6a", "x":23, "y":0},
|
{ "label": "Home", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label":"k10", "x":0, "y":1.25}, {"label":"k11", "x":1, "y":1.25}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1.25}, {"label":"k14", "x":4.5, "y":1.25}, {"label":"k15", "x":5.5, "y":1.25}, {"label":"k16", "x":6.5, "y":1.25}, {"label":"k17", "x":7.5, "y":1.25}, {"label":"k18", "x":8.5, "y":1.25}, {"label":"k19", "x":9.5, "y":1.25}, {"label":"k0a", "x":10.5, "y":1.25}, {"label":"k70", "x":11.5, "y":1.25}, {"label":"k71", "x":12.5, "y":1.25}, {"label":"k72", "x":13.5, "y":1.25}, {"label":"k73", "x":14.5, "y":1.25}, {"label":"k74", "x":15.5, "y":1.25}, {"label":"k75", "x":16.5, "y":1.25}, {"label":"k76", "x":17.5, "y":1.25, "w":2}, {"label":"k77", "x":20, "y":1.25}, {"label":"k78", "x":21, "y":1.25}, {"label":"k79", "x":22, "y":1.25}, {"label":"k7a", "x":23, "y":1.25},
|
{ "label": "End", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label":"k20", "x":0, "y":2.25, "h":2}, {"label":"k21", "x":1, "y":2.25}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2.25}, {"label":"k24", "x":4.5, "y":2.25, "w":1.5}, {"label":"k25", "x":6, "y":2.25}, {"label":"k26", "x":7, "y":2.25}, {"label":"k27", "x":8, "y":2.25}, {"label":"k28", "x":9, "y":2.25}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2a", "x":11, "y":2.25}, {"label":"k80", "x":12, "y":2.25}, {"label":"k81", "x":13, "y":2.25}, {"label":"k82", "x":14, "y":2.25}, {"label":"k83", "x":15, "y":2.25}, {"label":"k84", "x":16, "y":2.25}, {"label":"k85", "x":17, "y":2.25}, {"label":"k86", "x":18, "y":2.25, "w":1.5}, {"label":"k87", "x":20, "y":2.25}, {"label":"k88", "x":21, "y":2.25}, {"label":"k89", "x":22, "y":2.25}, {"label":"k8a", "x":23, "y":2.25, "h":2},
|
{ "label": "PgUp", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label":"k31", "x":1, "y":3.25}, {"label":"k32", "x":2, "y":3.25}, {"label":"k33", "x":3, "y":3.25}, {"label":"k34", "x":4.5, "y":3.25, "w":1.75}, {"label":"k35", "x":6.25, "y":3.25}, {"label":"k36", "x":7.25, "y":3.25}, {"label":"k37", "x":8.25, "y":3.25}, {"label":"k38", "x":9.25, "y":3.25}, {"label":"k39", "x":10.25, "y":3.25}, {"label":"k3a", "x":11.25, "y":3.25}, {"label":"k90", "x":12.25, "y":3.25}, {"label":"k91", "x":13.25, "y":3.25}, {"label":"k92", "x":14.25, "y":3.25}, {"label":"k93", "x":15.25, "y":3.25}, {"label":"k94", "x":16.25, "y":3.25}, {"label":"k95", "x":17.25, "y":3.25, "w":2.25}, {"label":"k97", "x":20, "y":3.25}, {"label":"k98", "x":21, "y":3.25}, {"label":"k99", "x":22, "y":3.25},
|
{ "label": "PgDn", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label":"k40", "x":0, "y":4.25, "h":2}, {"label":"k41", "x":1, "y":4.25}, {"label":"k42", "x":2, "y":4.25}, {"label":"k43", "x":3, "y":4.25}, {"label":"k45", "x":5.5, "y":4.25, "w":1.25}, {"label":"k46", "x":6.75, "y":4.25}, {"label":"k47", "x":7.75, "y":4.25}, {"label":"k48", "x":8.75, "y":4.25}, {"label":"k49", "x":9.75, "y":4.25}, {"label":"k4a", "x":10.75, "y":4.25}, {"label":"ka0", "x":11.75, "y":4.25}, {"label":"ka1", "x":12.75, "y":4.25}, {"label":"ka2", "x":13.75, "y":4.25}, {"label":"ka3", "x":14.75, "y":4.25}, {"label":"ka4", "x":15.75, "y":4.25}, {"label":"ka5", "x":16.75, "y":4.25, "w":1.75}, {"label":"ka7", "x":20, "y":4.25}, {"label":"ka8", "x":21, "y":4.25}, {"label":"ka9", "x":22, "y":4.25}, {"label":"kaa", "x":23, "y":4.25, "h":2}, {"label":"k44", "x":4.25, "y":4.5}, {"label":"k96", "x":18.75, "y":4.5},
|
{ "label": "Esc", "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 },
|
||||||
{"label":"k51", "x":1, "y":5.25}, {"label":"k52", "x":2, "y":5.25}, {"label":"k56", "x":6.5, "y":5.25}, {"label":"k57", "x":7.5, "y":5.25}, {"label":"k58", "x":8.5, "y":5.25}, {"label":"kb0", "x":9.5, "y":5.25, "w":4}, {"label":"kb2", "x":13.5, "y":5.25}, {"label":"kb3", "x":14.5, "y":5.25}, {"label":"kb4", "x":15.5, "y":5.25}, {"label":"kb5", "x":16.5, "y":5.25}, {"label":"kb8", "x":21, "y":5.25}, {"label":"kb9", "x":22, "y":5.25}, {"label":"k53", "x":3.25, "y":5.5}, {"label":"k54", "x":4.25, "y":5.5}, {"label":"k55", "x":5.25, "y":5.5}, {"label":"ka6", "x":17.75, "y":5.5}, {"label":"kb6", "x":18.75, "y":5.5}, {"label":"kb7", "x":19.75, "y":5.5}
|
{ "label": "F1", "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 },
|
||||||
|
{ "label": "F2", "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 },
|
||||||
|
{ "label": "F3", "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 },
|
||||||
|
{ "label": "F4", "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 },
|
||||||
|
{ "label": "F5", "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 },
|
||||||
|
{ "label": "F6", "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 },
|
||||||
|
{ "label": "F7", "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 },
|
||||||
|
{ "label": "F8", "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 },
|
||||||
|
{ "label": "F9", "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 },
|
||||||
|
{ "label": "F10", "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 },
|
||||||
|
{ "label": "F11", "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 },
|
||||||
|
{ "label": "F12", "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 },
|
||||||
|
{ "label": "PrtSc", "matrix": [6, 7], "w": 1, "x": 20, "y": 0 },
|
||||||
|
{ "label": "Scroll Lock", "matrix": [6, 8], "w": 1, "x": 21, "y": 0 },
|
||||||
|
{ "label": "Pause", "matrix": [6, 9], "w": 1, "x": 22, "y": 0 },
|
||||||
|
{ "label": "Insert", "matrix": [6, 10], "w": 1, "x": 23, "y": 0 },
|
||||||
|
{ "label": "-", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 },
|
||||||
|
{ "label": "Num Lock", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 },
|
||||||
|
{ "label": "/", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 },
|
||||||
|
{ "label": "*", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 },
|
||||||
|
{ "label": "~", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 },
|
||||||
|
{ "label": "!", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 },
|
||||||
|
{ "label": "@", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 },
|
||||||
|
{ "label": "#", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 },
|
||||||
|
{ "label": "$", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 },
|
||||||
|
{ "label": "%", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 },
|
||||||
|
{ "label": "^", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 },
|
||||||
|
{ "label": "&", "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 },
|
||||||
|
{ "label": "*", "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 },
|
||||||
|
{ "label": "(", "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 },
|
||||||
|
{ "label": ")", "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 },
|
||||||
|
{ "label": "_", "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 },
|
||||||
|
{ "label": "+", "matrix": [7, 5], "w": 1, "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], "w": 1, "x": 20, "y": 1.25 },
|
||||||
|
{ "label": "/", "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 },
|
||||||
|
{ "label": "*", "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 },
|
||||||
|
{ "label": "-", "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 },
|
||||||
|
{ "h": 2, "label": "+", "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 },
|
||||||
|
{ "label": "7", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 },
|
||||||
|
{ "label": "8", "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 },
|
||||||
|
{ "label": "9", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 },
|
||||||
|
{ "label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 },
|
||||||
|
{ "label": "Q", "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 },
|
||||||
|
{ "label": "W", "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 },
|
||||||
|
{ "label": "E", "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 },
|
||||||
|
{ "label": "R", "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 },
|
||||||
|
{ "label": "T", "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 },
|
||||||
|
{ "label": "Y", "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 },
|
||||||
|
{ "label": "U", "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 },
|
||||||
|
{ "label": "I", "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 },
|
||||||
|
{ "label": "O", "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 },
|
||||||
|
{ "label": "P", "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 },
|
||||||
|
{ "label": "{", "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 },
|
||||||
|
{ "label": "}", "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 },
|
||||||
|
{ "label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 },
|
||||||
|
{ "label": "7", "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 },
|
||||||
|
{ "label": "8", "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 },
|
||||||
|
{ "label": "9", "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 },
|
||||||
|
{ "h": 2, "label": "+", "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 },
|
||||||
|
{ "label": "4", "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 },
|
||||||
|
{ "label": "5", "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 },
|
||||||
|
{ "label": "6", "matrix": [3, 3], "w": 1, "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], "w": 1, "x": 6.25, "y": 3.25 },
|
||||||
|
{ "label": "S", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 },
|
||||||
|
{ "label": "D", "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 },
|
||||||
|
{ "label": "F", "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 },
|
||||||
|
{ "label": "G", "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 },
|
||||||
|
{ "label": "H", "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 },
|
||||||
|
{ "label": "J", "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 },
|
||||||
|
{ "label": "K", "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 },
|
||||||
|
{ "label": "L", "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 },
|
||||||
|
{ "label": ":", "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 },
|
||||||
|
{ "label": "\"", "matrix": [9, 4], "w": 1, "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], "w": 1, "x": 20, "y": 3.25 },
|
||||||
|
{ "label": "5", "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 },
|
||||||
|
{ "label": "6", "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 },
|
||||||
|
{ "h": 2, "label": "Enter", "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 },
|
||||||
|
{ "label": "1", "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 },
|
||||||
|
{ "label": "2", "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 },
|
||||||
|
{ "label": "3", "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 },
|
||||||
|
{ "label": "\\u2191", "matrix": [4, 4], "w": 1, "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], "w": 1, "x": 6.75, "y": 4.25 },
|
||||||
|
{ "label": "X", "matrix": [4, 7], "w": 1, "x": 7.75, "y": 4.25 },
|
||||||
|
{ "label": "C", "matrix": [4, 8], "w": 1, "x": 8.75, "y": 4.25 },
|
||||||
|
{ "label": "V", "matrix": [4, 9], "w": 1, "x": 9.75, "y": 4.25 },
|
||||||
|
{ "label": "B", "matrix": [4, 10], "w": 1, "x": 10.75, "y": 4.25 },
|
||||||
|
{ "label": "N", "matrix": [10, 0], "w": 1, "x": 11.75, "y": 4.25 },
|
||||||
|
{ "label": "M", "matrix": [10, 1], "w": 1, "x": 12.75, "y": 4.25 },
|
||||||
|
{ "label": "<", "matrix": [10, 2], "w": 1, "x": 13.75, "y": 4.25 },
|
||||||
|
{ "label": ">", "matrix": [10, 3], "w": 1, "x": 14.75, "y": 4.25 },
|
||||||
|
{ "label": "?", "matrix": [10, 4], "w": 1, "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], "w": 1, "x": 18.75, "y": 4.5 },
|
||||||
|
{ "label": "1", "matrix": [10, 7], "w": 1, "x": 20, "y": 4.25 },
|
||||||
|
{ "label": "2", "matrix": [10, 8], "w": 1, "x": 21, "y": 4.25 },
|
||||||
|
{ "label": "3", "matrix": [10, 9], "w": 1, "x": 22, "y": 4.25 },
|
||||||
|
{ "h": 2, "label": "Enter", "matrix": [10, 10], "w": 1, "x": 23, "y": 4.25 },
|
||||||
|
{ "label": "0", "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 },
|
||||||
|
{ "label": ".", "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 },
|
||||||
|
{ "label": "\\u2190", "matrix": [5, 3], "w": 1, "x": 3.25, "y": 5.5 },
|
||||||
|
{ "label": "\\u2193", "matrix": [5, 4], "w": 1, "x": 4.25, "y": 5.5 },
|
||||||
|
{ "label": "\\u2192", "matrix": [5, 5], "w": 1, "x": 5.25, "y": 5.5 },
|
||||||
|
{ "label": "Ctrl", "matrix": [5, 6], "w": 1, "x": 6.5, "y": 5.25 },
|
||||||
|
{ "label": "Win", "matrix": [5, 7], "w": 1, "x": 7.5, "y": 5.25 },
|
||||||
|
{ "label": "Alt", "matrix": [5, 8], "w": 1, "x": 8.5, "y": 5.25 },
|
||||||
|
{ "label": "1u", "matrix": [5, 9], "w": 1, "x": 9.5, "y": 5.25 },
|
||||||
|
{ "label": "1u", "matrix": [5, 10], "w": 1, "x": 10.5, "y": 5.25 },
|
||||||
|
{ "label": "1u", "matrix": [11, 0], "w": 1, "x": 11.5, "y": 5.25 },
|
||||||
|
{ "label": "1u", "matrix": [11, 1], "w": 1, "x": 12.5, "y": 5.25 },
|
||||||
|
{ "label": "Alt", "matrix": [11, 2], "w": 1, "x": 13.5, "y": 5.25 },
|
||||||
|
{ "label": "Win", "matrix": [11, 3], "w": 1, "x": 14.5, "y": 5.25 },
|
||||||
|
{ "label": "Menu", "matrix": [11, 4], "w": 1, "x": 15.5, "y": 5.25 },
|
||||||
|
{ "label": "Ctrl", "matrix": [11, 5], "w": 1, "x": 16.5, "y": 5.25 },
|
||||||
|
{ "label": "\\u2190", "matrix": [10, 6], "w": 1, "x": 17.75, "y": 5.5 },
|
||||||
|
{ "label": "\\u2193", "matrix": [11, 6], "w": 1, "x": 18.75, "y": 5.5 },
|
||||||
|
{ "label": "\\u2192", "matrix": [11, 7], "w": 1, "x": 19.75, "y": 5.5 },
|
||||||
|
{ "label": "0", "matrix": [11, 8], "w": 1, "x": 21, "y": 5.25 },
|
||||||
|
{ "label": ".", "matrix": [11, 9], "w": 1, "x": 22, "y": 5.25 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,15 +10,3 @@ MCU = at90usb1286
|
||||||
# ATmega32A bootloadHID
|
# ATmega32A bootloadHID
|
||||||
# ATmega328P USBasp
|
# ATmega328P USBasp
|
||||||
BOOTLOADER = halfkay
|
BOOTLOADER = halfkay
|
||||||
|
|
||||||
# Build Options
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
|
||||||
MIDI_ENABLE = no # MIDI support
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
RGBLIGHT_ENABLE = yes # RGB on port C6
|
|
||||||
AUDIO_ENABLE = yes # Audio output on port C4 and B7
|
|
||||||
|
|
|
@ -28,227 +28,6 @@ enum TWOx1800_keycodes {
|
||||||
#undef SAFE_RANGE
|
#undef SAFE_RANGE
|
||||||
#define SAFE_RANGE NEW_SAFE_RANGE
|
#define SAFE_RANGE NEW_SAFE_RANGE
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k9a, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9a }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_1u_ansi( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_1u_iso( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k9a, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, KC_NO, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9a }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_2u_ansi( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_2u_iso( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k9a, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, k59, kb0, kb1, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, KC_NO, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9a }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_4u_ansi( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, kb0, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_4u_iso( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k9a, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, k58, kb0, kb2, kb3, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, KC_NO, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9a }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_7u_ansi( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, kb0, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, KC_NO, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, KC_NO }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, KC_NO, KC_NO, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_7u_iso( \
|
|
||||||
e00, e01, e02, e03, \
|
|
||||||
k00, k01, k02, k03, k04, k06, k07, k08, k09, k0a, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k80, k81, k82, k83, k84, k85, k87, k88, k89, k8a, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k90, k91, k92, k93, k94, k9a, k95, k97, k98, k99, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, ka0, ka1, ka2, ka3, ka4, ka5, k96, ka7, ka8, ka9, kaa, \
|
|
||||||
k51, k52, k53, k54, k55, k56, k57, kb0, kb4, kb5, ka6, kb6, kb7, kb8, kb9 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09, k0a }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a }, \
|
|
||||||
{ KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a }, \
|
|
||||||
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, KC_NO, KC_NO, KC_NO }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, KC_NO, k87, k88, k89, k8a }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9a }, \
|
|
||||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa }, \
|
|
||||||
{ kb0, KC_NO, KC_NO, KC_NO, kb4, kb5, kb6, kb7, kb8, kb9, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, KC_NO, e00, e01, KC_NO, KC_NO, KC_NO, KC_NO, e02, e03 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
||||||
// Encoder update function that returns true/false
|
// Encoder update function that returns true/false
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
bool encoder_update_keymap(int8_t index, bool clockwise);
|
bool encoder_update_keymap(int8_t index, bool clockwise);
|
||||||
|
|
|
@ -19,182 +19,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x23A0
|
|
||||||
#define DEVICE_VER 0x0002
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT 2x1800 2019
|
|
||||||
#define DESCRIPTION Mechanical Drawing Toy Edition
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 13
|
|
||||||
#define MATRIX_COLS 11
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Keyboard Matrix Assignments
|
* Encoder Assignments
|
||||||
*
|
*/
|
||||||
* Change this to how you wired your keyboard
|
|
||||||
* COLS: AVR pins used for columns, left to right
|
|
||||||
* ROWS: AVR pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { C0, C1, C2, C3, C7, F7, B1, F2, F3, F4, F5, F6, C6 }
|
|
||||||
#define MATRIX_COL_PINS { D2, D3, D4, D5, D7, E0, E1, B0, E6, B3, B2 }
|
|
||||||
#define UNUSED_PINS { D0, D1, D6, C5, E7, F0, F1 }
|
|
||||||
|
|
||||||
#define ENCODERS_PAD_A { A5, A4, A2, A1 }
|
#define ENCODERS_PAD_A { A5, A4, A2, A1 }
|
||||||
#define ENCODERS_PAD_B { A6, A7, A3, A0 }
|
#define ENCODERS_PAD_B { A6, A7, A3, A0 }
|
||||||
#define ENCODER_RESOLUTION 4
|
#define ENCODER_RESOLUTION 4
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL*/
|
|
||||||
#define DIODE_DIRECTION ROW2COL
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
|
||||||
//#define MATRIX_HAS_GHOST
|
|
||||||
|
|
||||||
/* audio support */
|
/* audio support */
|
||||||
#define B7_AUDIO
|
#define B7_AUDIO
|
||||||
#define C4_AUDIO
|
#define C4_AUDIO
|
||||||
#define AUDIO_CLICKY
|
#define AUDIO_CLICKY
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
// #define BACKLIGHT_PIN B7
|
|
||||||
// #define BACKLIGHT_BREATHING
|
|
||||||
// #define BACKLIGHT_LEVELS 3
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
#define RGB_DI_PIN C5
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 16
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
|
||||||
|
|
||||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
|
||||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
|
||||||
*/
|
|
||||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force NKRO
|
|
||||||
*
|
|
||||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
|
||||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
|
||||||
* makefile for this to work.)
|
|
||||||
*
|
|
||||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
|
||||||
* until the next keyboard reset.
|
|
||||||
*
|
|
||||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
|
||||||
* fully operational during normal computer usage.
|
|
||||||
*
|
|
||||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
|
||||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
|
||||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
|
||||||
* power-up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define FORCE_NKRO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP1 H
|
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MIDI options
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Prevent use of disabled MIDI features in the keymap */
|
|
||||||
//#define MIDI_ENABLE_STRICT 1
|
|
||||||
|
|
||||||
/* enable basic MIDI features:
|
|
||||||
- MIDI notes can be sent when in Music mode is on
|
|
||||||
*/
|
|
||||||
//#define MIDI_BASIC
|
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
|
||||||
- MIDI notes can be added to the keymap
|
|
||||||
- Octave shift and transpose
|
|
||||||
- Virtual sustain, portamento, and modulation wheel
|
|
||||||
- etc.
|
|
||||||
*/
|
|
||||||
//#define MIDI_ADVANCED
|
|
||||||
|
|
||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drawing mode
|
* Drawing mode
|
||||||
*/
|
*/
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"keyboard":"clueboard/2x1800/2019",
|
"keyboard":"clueboard/2x1800/2019",
|
||||||
"keymap":"default",
|
"keymap":"default",
|
||||||
"layout":"LAYOUT",
|
"layout":"LAYOUT_all",
|
||||||
"layers":[
|
"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_SLCK","KC_PAUS","KC_INS","KC_PMNS","KC_NLCK","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_NLCK","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"]
|
["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_SLCK","KC_PAUS","KC_INS","KC_PMNS","KC_NLCK","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_NLCK","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"]
|
||||||
],
|
],
|
||||||
|
|
|
@ -10,16 +10,3 @@ MCU = at90usb1286
|
||||||
# ATmega32A bootloadHID
|
# ATmega32A bootloadHID
|
||||||
# ATmega328P USBasp
|
# ATmega328P USBasp
|
||||||
BOOTLOADER = halfkay
|
BOOTLOADER = halfkay
|
||||||
|
|
||||||
# Build Options
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
ENCODER_ENABLE = yes # Rotary encoder (knob) support
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
|
||||||
MIDI_ENABLE = no # MIDI support
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
RGBLIGHT_ENABLE = yes # RGB on pin C5
|
|
||||||
AUDIO_ENABLE = yes # Audio output on pin C4 and B7
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "Clueboard 2x1800",
|
"diode_direction": "ROW2COL",
|
||||||
"url": "",
|
"width": 24
|
||||||
"maintainer": "skullydazed"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,91 +18,4 @@
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* These are shortcuts to help you work with the various layout options. If your
|
|
||||||
* keymap works with one of the LAYOUT_...() macros you are encouraged to use that
|
|
||||||
* and to contribute your keymap to the corresponding layout in
|
|
||||||
* `qmk_firmware/layouts/community`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* The fully-featured LAYOUT_all() that has every single key available in the matrix.
|
|
||||||
*/
|
|
||||||
#define LAYOUT_all(\
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
|
|
||||||
k40, k41, k42, k47, k4a, k4b, k4c, k4e \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, k1e, }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO, k2e, }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO, k3e, }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, k4a, k4b, k4c, KC_NO, k4e, }, \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* A layout that matches the Apple Extended Keyboard's main area. No split keys,
|
|
||||||
* 3 mods on either side of the spacebar.
|
|
||||||
*/
|
|
||||||
#define LAYOUT_aek(\
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2e, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
|
||||||
k40, k41, k42, k47, k4b, k4c, k4e \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, k1e, }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, KC_NO, k2e, }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO, KC_NO, }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k4b, k4c, KC_NO, k4e, }, \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Standard 60% ANSI layout */
|
|
||||||
#define LAYOUT_60_ansi(\
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2e, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
|
||||||
k40, k41, k42, k47, k4a, k4b, k4c, k4e \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, k1e, }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, KC_NO, k2e, }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO, KC_NO, }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, k4a, k4b, k4c, KC_NO, k4e, }, \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Standard 60% ISO layout */
|
|
||||||
#define LAYOUT_60_iso(\
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
|
||||||
k40, k41, k42, k47, k4a, k4b, k4c, k4e \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, KC_NO, }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO, k2e, }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO, KC_NO, }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, k4a, k4b, k4c, KC_NO, k4e, }, \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Split Backspace and Right Shift ANSI layout. */
|
|
||||||
#define LAYOUT_60_ansi_split_bs_rshift(\
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2e, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
|
|
||||||
k40, k41, k42, k47, k4a, k4b, k4c, k4e \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, k1e, }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, KC_NO, k2e, }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO, k3e, }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, k4a, k4b, k4c, KC_NO, k4e, }, \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
#define KEYMAP LAYOUT_all
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -19,110 +19,12 @@
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2350
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard 60%
|
|
||||||
#define DESCRIPTION Clueboard 60%
|
|
||||||
|
|
||||||
/* Address for jumping to bootloader on STM32 chips. */
|
/* Address for jumping to bootloader on STM32 chips. */
|
||||||
/* It is chip dependent, the correct number can be looked up here:
|
/* It is chip dependent, the correct number can be looked up here:
|
||||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||||
*/
|
*/
|
||||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 5
|
|
||||||
#define MATRIX_COLS 15
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keyboard Matrix Assignments
|
|
||||||
*
|
|
||||||
* COLS: Pins used for columns, left to right
|
|
||||||
* ROWS: Pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 }
|
|
||||||
#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C15, C14, C13, B5, B6 }
|
|
||||||
#define UNUSED_PINS { A0, A1, A9, B7, B8, B9, B10, B11, B12, B13 }
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
|
||||||
#define DEBOUNCE 6
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
//#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
//#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force NKRO
|
|
||||||
*
|
|
||||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
|
||||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
|
||||||
* makefile for this to work.)
|
|
||||||
*
|
|
||||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
|
||||||
* until the next keyboard reset.
|
|
||||||
*
|
|
||||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
|
||||||
* fully operational during normal computer usage.
|
|
||||||
*
|
|
||||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
|
||||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
|
||||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
|
||||||
* power-up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define FORCE_NKRO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MIDI options
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Prevent use of disabled MIDI features in the keymap */
|
|
||||||
//#define MIDI_ENABLE_STRICT 1
|
|
||||||
|
|
||||||
/* enable basic MIDI features:
|
|
||||||
- MIDI notes can be sent when in Music mode is on
|
|
||||||
*/
|
|
||||||
//#define MIDI_BASIC
|
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
|
||||||
- MIDI notes can be added to the keymap
|
|
||||||
- Octave shift and transpose
|
|
||||||
- Virtual sustain, portamento, and modulation wheel
|
|
||||||
- etc.
|
|
||||||
*/
|
|
||||||
//#define MIDI_ADVANCED
|
|
||||||
|
|
||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
|
||||||
|
|
||||||
#define LED_CAPS_LOCK_PIN B7
|
|
||||||
|
|
||||||
/* Backlight configuration
|
/* Backlight configuration
|
||||||
*/
|
*/
|
||||||
#define BACKLIGHT_LEVELS 1
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
|
@ -1,58 +1,373 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "clueboard/60",
|
"manufacturer": "Clueboard",
|
||||||
|
"keyboard_name": "Clueboard 60%",
|
||||||
"maintainer": "skullydazed",
|
"maintainer": "skullydazed",
|
||||||
"url": "",
|
|
||||||
"width": 15,
|
|
||||||
"height": 5,
|
"height": 5,
|
||||||
|
"width": 15,
|
||||||
|
"debounce": "6",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"audio": true,
|
||||||
|
"backlight": false,
|
||||||
|
"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_ver": "0x0001",
|
||||||
|
"pid": "0x2350",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso"],
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_60_ansi": {
|
"LAYOUT_60_ansi": {
|
||||||
"key_count": 61,
|
"key_count": 61,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label": "~", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "@", "x": 2, "y": 0}, {"label": "#", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"label": "Backspace", "x": 13, "y": 0, "w": 2},
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "|", "x": 13.5, "y": 1, "w": 1.5},
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": ":", "x": 10.75, "y": 2}, {"label": "\"", "x": 11.75, "y": 2}, {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label": "Shift", "x": 0, "y": 3, "w": 2.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75},
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label": "Ctrl", "x": 0, "y": 4, "w": 1.25}, {"label": "Win", "x": 1.25, "y": 4, "w": 1.25}, {"label": "Alt", "x": 2.5, "y": 4, "w": 1.25}, {"x": 3.75, "y": 4, "w": 6.25}, {"label": "Alt", "x": 10, "y": 4, "w": 1.25}, {"label": "Win", "x": 11.25, "y": 4, "w": 1.25}, {"label": "Menu", "x": 12.5, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "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], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "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], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "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_iso": {
|
|
||||||
"key_count": 62,
|
|
||||||
"layout": [
|
|
||||||
{"label": "\\u00ac", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "\"", "x": 2, "y": 0}, {"label": "\\u00a3", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"label": "Backspace", "x": 13, "y": 0, "w": 2},
|
|
||||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
|
||||||
{"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": ":", "x": 10.75, "y": 2}, {"label": "@", "x": 11.75, "y": 2}, {"label": "~", "x": 12.75, "y": 2},
|
|
||||||
{"label": "Shift", "x": 0, "y": 3, "w": 1.25}, {"label": "|", "x": 1.25, "y": 3}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75},
|
|
||||||
{"label": "Ctrl", "x": 0, "y": 4, "w": 1.25}, {"label": "Win", "x": 1.25, "y": 4, "w": 1.25}, {"label": "Alt", "x": 2.5, "y": 4, "w": 1.25}, {"x": 3.75, "y": 4, "w": 6.25}, {"label": "AltGr", "x": 10, "y": 4, "w": 1.25}, {"label": "Win", "x": 11.25, "y": 4, "w": 1.25}, {"label": "Menu", "x": 12.5, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"LAYOUT_aek": {
|
|
||||||
"key_count": 60,
|
|
||||||
"layout": [
|
|
||||||
{"label": "~", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "@", "x": 2, "y": 0}, {"label": "#", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"label": "Backspace", "x": 13, "y": 0, "w": 2},
|
|
||||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "|", "x": 13.5, "y": 1, "w": 1.5},
|
|
||||||
{"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": ":", "x": 10.75, "y": 2}, {"label": "\"", "x": 11.75, "y": 2}, {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25},
|
|
||||||
{"label": "Shift", "x": 0, "y": 3, "w": 2.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 2.75},
|
|
||||||
{"label": "Ctrl", "x": 0, "y": 4, "w": 1.5}, {"label": "Win", "x": 1.5, "y": 4, "w": 1.25}, {"label": "Alt", "x": 2.75, "y": 4, "w": 1.5}, {"x": 4.25, "y": 4, "w": 6.5}, {"label": "AltGr", "x": 10.75, "y": 4, "w": 1.5}, {"label": "Win", "x": 12.25, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.5, "y": 4, "w": 1.5 }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"LAYOUT_all": {
|
|
||||||
"key_count": 65,
|
|
||||||
"layout": [
|
|
||||||
{"label": "~", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "@", "x": 2, "y": 0}, {"label": "#", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"x": 13, "y": 0}, {"label": "Back", "x": 14, "y": 0},
|
|
||||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "|", "x": 13.5, "y": 1, "w": 1.5},
|
|
||||||
{"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": ":", "x": 10.75, "y": 2}, {"label": "\"", "x": 11.75, "y": 2}, {"x": 12.75, "y": 2}, {"label": "Enter", "x": 13.75, "y": 2, "w": 1.25},
|
|
||||||
{"x": 0, "y": 3}, {"label": "Shift", "x": 1, "y": 3, "w": 1.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, {"x": 14, "y": 3},
|
|
||||||
{"label": "Ctrl", "x": 0, "y": 4, "w": 1.25}, {"label": "Win", "x": 1.25, "y": 4, "w": 1.25}, {"label": "Alt", "x": 2.5, "y": 4, "w": 1.25}, {"x": 3.75, "y": 4, "w": 6.25}, {"label": "Alt", "x": 10, "y": 4, "w": 1.25}, {"label": "Win", "x": 11.25, "y": 4, "w": 1.25}, {"label": "Menu", "x": 12.5, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"LAYOUT_60_ansi_split_bs_rshift": {
|
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||||
"key_count": 63,
|
"key_count": 63,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label": "~", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "@", "x": 2, "y": 0}, {"label": "#", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"x": 13, "y": 0}, {"label": "Back", "x": 14, "y": 0},
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "|", "x": 13.5, "y": 1, "w": 1.5},
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"label": "Caps Lock", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": ":", "x": 10.75, "y": 2}, {"label": "\"", "x": 11.75, "y": 2}, {"label": "Enter", "x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"label": "Shift", "x": 0, "y": 3, "w": 2.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, {"x": 14, "y": 3},
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"label": "Ctrl", "x": 0, "y": 4, "w": 1.25}, {"label": "Win", "x": 1.25, "y": 4, "w": 1.25}, {"label": "Alt", "x": 2.5, "y": 4, "w": 1.25}, {"x": 3.75, "y": 4, "w": 6.25}, {"label": "Alt", "x": 10, "y": 4, "w": 1.25}, {"label": "Win", "x": 11.25, "y": 4, "w": 1.25}, {"label": "Menu", "x": 12.5, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25}
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "k0d", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Back", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "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], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "k3e", "matrix": [3, 14], "w": 1, "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": {
|
||||||
|
"key_count": 62,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "\\u00ac", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "\"", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "\\u00a3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "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], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "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], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 3], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 4], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 5], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 6], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 7], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 8], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 9], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 10], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 11], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "@", "matrix": [2, 12], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "~", "matrix": [2, 14], "w": 1, "x": 12.75, "y": 2 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
|
||||||
|
{ "label": "|", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "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": {
|
||||||
|
"key_count": 60,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "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], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "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], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "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": {
|
||||||
|
"key_count": 65,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "k0d", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Back", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "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], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "k2c", "matrix": [2, 12], "w": 1, "x": 12.75, "y": 2 },
|
||||||
|
{ "label": "Enter", "matrix": [2, 14], "w": 1.25, "x": 13.75, "y": 2 },
|
||||||
|
{ "label": "k30", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 1], "w": 1.25, "x": 1, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "k3e", "matrix": [3, 14], "w": 1, "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 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,18 +2,5 @@
|
||||||
MCU = STM32F303
|
MCU = STM32F303
|
||||||
BOARD = QMK_PROTON_C
|
BOARD = QMK_PROTON_C
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# comment out to disable the options.
|
|
||||||
#
|
|
||||||
BACKLIGHT_ENABLE = no
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
|
||||||
AUDIO_ENABLE = yes
|
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC = led.c
|
SRC = led.c
|
||||||
LAYOUTS += 60_ansi 60_ansi_split_bs_rshift 60_iso
|
|
||||||
|
|
|
@ -1,36 +1,4 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "Clueboard 66%",
|
|
||||||
"width": 16.5,
|
"width": 16.5,
|
||||||
"height": 5,
|
"height": 5
|
||||||
"layouts": {
|
|
||||||
"LAYOUT_all": {
|
|
||||||
"layout": [
|
|
||||||
{"x": 0, "y": 0, "w": 1, "label": "GRAVE"}, {"x": 1, "y": 0, "w": 1, "label": "1"}, {"x": 2, "y": 0, "w": 1, "label": "2"}, {"x": 3, "y": 0, "w": 1, "label": "3"}, {"x": 4, "y": 0, "w": 1, "label": "4"}, {"x": 5, "y": 0, "w": 1, "label": "5"}, {"x": 6, "y": 0, "w": 1, "label": "6"}, {"x": 7, "y": 0, "w": 1, "label": "7"}, {"x": 8, "y": 0, "w": 1, "label": "8"}, {"x": 9, "y": 0, "w": 1, "label": "9"}, {"x": 10, "y": 0, "w": 1, "label": "0"}, {"x": 11, "y": 0, "w": 1, "label": "DASH"}, {"x": 12, "y": 0, "w": 1, "label": "EQUALSIGN"}, {"x": 13, "y": 0, "w": 1, "label": "YEN"}, {"x": 14, "y": 0, "w": 1, "label": "BACKSPACE"}, {"x": 15.5, "y": 0, "w": 1, "label": "PAGEUP"},
|
|
||||||
{"x": 0, "y": 1, "w": 1.5, "label": "TAB"}, {"x": 1.5, "y": 1, "w": 1, "label": "Q"}, {"x": 2.5, "y": 1, "w": 1, "label": "W"}, {"x": 3.5, "y": 1, "w": 1, "label": "E"}, {"x": 4.5, "y": 1, "w": 1, "label": "R"}, {"x": 5.5, "y": 1, "w": 1, "label": "T"}, {"x": 6.5, "y": 1, "w": 1, "label": "Y"}, {"x": 7.5, "y": 1, "w": 1, "label": "U"}, {"x": 8.5, "y": 1, "w": 1, "label": "I"}, {"x": 9.5, "y": 1, "w": 1, "label": "O"}, {"x": 10.5, "y": 1, "w": 1, "label": "P"}, {"x": 11.5, "y": 1, "w": 1, "label": "LBRACKET"}, {"x": 12.5, "y": 1, "w": 1, "label": "RBRACKET"}, {"x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH"}, {"x": 15.5, "y": 1, "w": 1, "label": "PAGEDOWN"},
|
|
||||||
{"x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK"}, {"x": 1.75, "y": 2, "w": 1, "label": "A"}, {"x": 2.75, "y": 2, "w": 1, "label": "S"}, {"x": 3.75, "y": 2, "w": 1, "label": "D"}, {"x": 4.75, "y": 2, "w": 1, "label": "F"}, {"x": 5.75, "y": 2, "w": 1, "label": "G"}, {"x": 6.75, "y": 2, "w": 1, "label": "H"}, {"x": 7.75, "y": 2, "w": 1, "label": "J"}, {"x": 8.75, "y": 2, "w": 1, "label": "K"}, {"x": 9.75, "y": 2, "w": 1, "label": "L"}, {"x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON"}, {"x": 11.75, "y": 2, "w": 1, "label": "QUOTE"}, {"x": 12.75, "y": 2, "w": 1, "label": "ISOHASH"}, {"x": 13.75, "y": 2, "w": 1.25, "label": "ENTER"},
|
|
||||||
{"x": 0, "y": 3, "w": 1.25, "label": "LSHIFT"}, {"x": 1.25, "y": 3, "w": 1, "label": "ISOBACKSLASH"}, {"x": 2.25, "y": 3, "w": 1, "label": "Z"}, {"x": 3.25, "y": 3, "w": 1, "label": "X"}, {"x": 4.25, "y": 3, "w": 1, "label": "C"}, {"x": 5.25, "y": 3, "w": 1, "label": "V"}, {"x": 6.25, "y": 3, "w": 1, "label": "B"}, {"x": 7.25, "y": 3, "w": 1, "label": "N"}, {"x": 8.25, "y": 3, "w": 1, "label": "M"}, {"x": 9.25, "y": 3, "w": 1, "label": "COMMA"}, {"x": 10.25, "y": 3, "w": 1, "label": "PERIOD"}, {"x": 11.25, "y": 3, "w": 1, "label": "SLASH"}, {"x": 12.25, "y": 3, "w": 1, "label": "JPBACKSLASH"}, {"x": 13.25, "y": 3, "w": 1.25, "label": "RSHIFT"}, {"x": 14.5, "y": 3, "w": 1, "label": "UP"},
|
|
||||||
{"x": 0, "y": 4, "w": 1.25, "label": "LCTRL"}, {"x": 1.25, "y": 4, "w": 1, "label": "LALT"}, {"x": 2.25, "y": 4, "w": 1.25, "label": "LCMD"}, {"x": 3.5, "y": 4, "w": 1.25, "label": "MUHENKAN"}, {"x": 4.75, "y": 4, "w": 2, "label": "SPACE1"}, {"x": 6.75, "y": 4, "w": 2, "label": "SPACE2"}, {"x": 8.75, "y": 4, "w": 1.25, "label": "HENKAN"}, {"x": 10, "y": 4, "w": 1.25, "label": "RCMD"}, {"x": 11.25, "y": 4, "w": 1, "label": "RCTRL"}, {"x": 12.25, "y": 4, "w": 1.25, "label": "FN"}, {"x": 13.5, "y": 4, "w": 1, "label": "LEFT"}, {"x": 14.5, "y": 4, "w": 1, "label": "DOWN"}, {"x": 15.5, "y": 4, "w": 1, "label": "RIGHT"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
"LAYOUT_66_ansi": {
|
|
||||||
"layout": [
|
|
||||||
{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.5, "y":0},
|
|
||||||
{"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1},
|
|
||||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
|
||||||
{"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"x":14.5, "y":3},
|
|
||||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Win", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
"LAYOUT_66_iso": {
|
|
||||||
"layout": [
|
|
||||||
{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15.5, "y":0},
|
|
||||||
{"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":15.5, "y":1},
|
|
||||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
|
|
||||||
{"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"\\", "x":1.25, "y":3, "w":1}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"label":"\u2191", "x":14.5, "y":3},
|
|
||||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Ctrl", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13.5, "y":4}, {"label":"\u2193", "x":14.5, "y":4}, {"label":"\u2192", "x":15.5, "y":4}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,62 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2301
|
|
||||||
#define DEVICE_VER 0x0003
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Clueboard
|
|
||||||
|
|
||||||
/* key matrix size
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROWS 5
|
|
||||||
#define MATRIX_COLS 16
|
|
||||||
|
|
||||||
/* ROWS: Top to bottom, COLS: Left to right
|
|
||||||
*/
|
|
||||||
#define MATRIX_COL_PINS { B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 }
|
|
||||||
#define MATRIX_ROW_PINS { D1, D0, D2, D5, D3 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
#define LED_CAPS_LOCK_PIN F0
|
|
||||||
|
|
||||||
/* Underlight configuration
|
|
||||||
*/
|
|
||||||
#define RGB_DI_PIN B2
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 14 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
|
@ -0,0 +1,273 @@
|
||||||
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
|
"keyboard_name": "Clueboard 66%",
|
||||||
|
"maintainer": "skullydazed",
|
||||||
|
"height": 5,
|
||||||
|
"width": 16.5,
|
||||||
|
"debounce": "5",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"audio": false,
|
||||||
|
"backlight": false,
|
||||||
|
"bluetooth": false,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": false,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"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": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "10",
|
||||||
|
"led_count": "14",
|
||||||
|
"pin": "B2",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2301",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"community_layouts": ["66_ansi", "66_iso"],
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_66_ansi": {
|
||||||
|
"key_count": 66,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "k0F", "matrix": [0, 15], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "k1F", "matrix": [1, 15], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "k3E", "matrix": [3, 14], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "k4E", "matrix": [4, 14], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "k4F", "matrix": [4, 15], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_66_iso": {
|
||||||
|
"key_count": 67,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Insert", "matrix": [0, 15], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "Delete", "matrix": [1, 15], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "", "matrix": [2, 12], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "\u2191", "matrix": [3, 14], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "\u2193", "matrix": [4, 14], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "\u2192", "matrix": [4, 15], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"key_count": 73,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "6", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "7", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "8", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "9", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": "0", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "DASH", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "EQUALSIGN", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "YEN", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "BACKSPACE", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "PAGEUP", "matrix": [0, 15], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "LBRACKET", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "RBRACKET", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "BACKSLASH", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "PAGEDOWN", "matrix": [1, 15], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": "SEMICOLON", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "QUOTE", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "ISOHASH", "matrix": [2, 12], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "COMMA", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": "PERIOD", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "SLASH", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "JPBACKSLASH", "matrix": [3, 12], "w": 1, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "RSHIFT", "matrix": [3, 13], "w": 1.25, "x": 13.25, "y": 3 },
|
||||||
|
{ "label": "UP", "matrix": [3, 14], "w": 1, "x": 14.5, "y": 3 },
|
||||||
|
{ "label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
|
{ "label": "LALT", "matrix": [4, 1], "w": 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], "w": 1, "x": 11.25, "y": 4 },
|
||||||
|
{ "label": "FN", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
|
{ "label": "LEFT", "matrix": [4, 13], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "DOWN", "matrix": [4, 14], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "RIGHT", "matrix": [4, 15], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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).
|
|
@ -1,75 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E| | 0F|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| 1C| 1D| | 1F|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 2A| 2B| 2C| 2D|
|
|
||||||
* |------------------------------------------------------------.
|
|
||||||
* | 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 3A| 3B| 3C| 3D|3E|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 43| 45| 46| 49| 4A| 4B| 4C| 4D| 4E| 4F|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguements
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
|
|
||||||
k40, k41, k42, k43, k45, k46, k49, k4A, k4B, k4C, k4D, k4E, k4F \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
|
|
||||||
{ k40, k41, k42, k43, KC_NO, k45, k46, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D, k4E, k4F } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
|
|
||||||
k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E, k0F }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E, k4F } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_66_iso( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1F, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
|
|
||||||
k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E, k0F }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, KC_NO, KC_NO, k1F }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E, k4F } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define KEYMAP LAYOUT_all
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
|
@ -10,21 +10,3 @@ MCU = atmega32u4
|
||||||
# ATmega32A bootloadHID
|
# ATmega32A bootloadHID
|
||||||
# ATmega328P USBasp
|
# ATmega328P USBasp
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# comment out to disable the options.
|
|
||||||
#
|
|
||||||
BACKLIGHT_ENABLE = no
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
AUDIO_ENABLE = no
|
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
|
|
||||||
LAYOUTS = 66_ansi 66_iso
|
|
||||||
|
|
|
@ -2,68 +2,12 @@
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2320
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Clueboard
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
|
|
||||||
/* ROWS: Top to bottom, COLS: Left to right
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 }
|
|
||||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
#define LED_CAPS_LOCK_PIN B4
|
|
||||||
|
|
||||||
/* Backlight configuration
|
/* Backlight configuration
|
||||||
*/
|
*/
|
||||||
#define BACKLIGHT_LEVELS 1
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN D7
|
|
||||||
#define RGBLED_NUM 14 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 32
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
||||||
|
|
|
@ -0,0 +1,273 @@
|
||||||
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
|
"keyboard_name": "Clueboard 66%",
|
||||||
|
"maintainer": "skullydazed",
|
||||||
|
"height": 5,
|
||||||
|
"width": 16.5,
|
||||||
|
"debounce": "5",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"audio": false,
|
||||||
|
"backlight": true,
|
||||||
|
"bluetooth": false,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": true,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"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": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "32",
|
||||||
|
"led_count": "14",
|
||||||
|
"pin": "D7",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2320",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"community_layouts": ["66_ansi", "66_iso"],
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_66_ansi": {
|
||||||
|
"key_count": 66,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_66_iso": {
|
||||||
|
"key_count": 67,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Insert", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "Delete", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "\u2191", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "\u2193", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "\u2192", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"key_count": 73,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "6", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "7", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "8", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "9", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": "0", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "DASH", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "EQUALSIGN", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "YEN", "matrix": [5, 5], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "BACKSPACE", "matrix": [5, 6], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "PAGEUP", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "LBRACKET", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "RBRACKET", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "PAGEDOWN", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": "SEMICOLON", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "QUOTE", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "ISOHASH", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "COMMA", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": "PERIOD", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "SLASH", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "JPBACKSLASH", "matrix": [8, 4], "w": 1, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3 },
|
||||||
|
{ "label": "UP", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
|
{ "label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
|
{ "label": "LALT", "matrix": [4, 1], "w": 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], "w": 1, "x": 11.25, "y": 4 },
|
||||||
|
{ "label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
|
{ "label": "LEFT", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "DOWN", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "RIGHT", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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).
|
|
@ -2,93 +2,3 @@
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
|
|
||||||
* |------------------------------------------------------------.
|
|
||||||
* | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 43| 45| 46| 90| 92| 93| 94| 95| 96| 97|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
|
||||||
k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_ansi, standard 66 key ANSI layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_iso, standard 67 key ISO layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_iso( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, KC_NO, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define KEYMAP LAYOUT_all
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
|
@ -12,18 +12,4 @@ MCU = atmega32u4
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
BACKLIGHT_ENABLE = yes
|
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
AUDIO_ENABLE = no
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
|
|
||||||
LAYOUTS = 66_ansi 66_iso
|
|
||||||
|
|
|
@ -2,68 +2,10 @@
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2370
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Clueboard
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
|
|
||||||
/* ROWS: Top to bottom, COLS: Left to right
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 }
|
|
||||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
#define LED_CAPS_LOCK_PIN B4
|
|
||||||
|
|
||||||
/* Backlight configuration
|
/* Backlight configuration
|
||||||
*/
|
*/
|
||||||
#define BACKLIGHT_LEVELS 1
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
||||||
/* Underlight configuration
|
|
||||||
*/
|
|
||||||
#define RGB_DI_PIN D7
|
|
||||||
#define RGBLED_NUM 18 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 32
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
||||||
|
|
|
@ -0,0 +1,273 @@
|
||||||
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
|
"keyboard_name": "Clueboard 66% rev3",
|
||||||
|
"maintainer": "skullydazed",
|
||||||
|
"height": 5,
|
||||||
|
"width": 16.5,
|
||||||
|
"debounce": "5",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"audio": false,
|
||||||
|
"backlight": true,
|
||||||
|
"bluetooth": false,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": true,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"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": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "32",
|
||||||
|
"led_count": "18",
|
||||||
|
"pin": "D7",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2370",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"community_layouts": ["66_ansi", "66_iso"],
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_66_ansi": {
|
||||||
|
"key_count": 66,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_66_iso": {
|
||||||
|
"key_count": 67,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Insert", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "Delete", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "\u2191", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "\u2193", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "\u2192", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"key_count": 73,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "6", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "7", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "8", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "9", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": "0", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "DASH", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "EQUALSIGN", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "YEN", "matrix": [5, 5], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "BACKSPACE", "matrix": [5, 6], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "PAGEUP", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "LBRACKET", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "RBRACKET", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "PAGEDOWN", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": "SEMICOLON", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "QUOTE", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "ISOHASH", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "COMMA", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": "PERIOD", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "SLASH", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "JPBACKSLASH", "matrix": [8, 4], "w": 1, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3 },
|
||||||
|
{ "label": "UP", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
|
{ "label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
|
{ "label": "LALT", "matrix": [4, 1], "w": 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], "w": 1, "x": 11.25, "y": 4 },
|
||||||
|
{ "label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
|
{ "label": "LEFT", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "DOWN", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "RIGHT", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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).
|
|
@ -2,93 +2,3 @@
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
|
|
||||||
* |------------------------------------------------------------.
|
|
||||||
* | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 43| 45| 46| 90| 92| 93| 94| 95| 96| 97|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
|
||||||
k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_ansi, standard 66 key ANSI layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_iso, standard 67 key ISO layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_iso( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, KC_NO, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define KEYMAP LAYOUT_all
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
|
@ -14,18 +14,4 @@ BOOTLOADER = atmel-dfu
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BACKLIGHT_ENABLE = yes
|
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
AUDIO_ENABLE = no
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
|
|
||||||
LAYOUTS = 66_ansi 66_iso
|
|
||||||
|
|
|
@ -2,72 +2,18 @@
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2390
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard 66% rev4
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Clueboard
|
|
||||||
|
|
||||||
/* Address for jumping to bootloader on STM32 chips. */
|
/* Address for jumping to bootloader on STM32 chips. */
|
||||||
/* It is chip dependent, the correct number can be looked up here:
|
/* It is chip dependent, the correct number can be looked up here:
|
||||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||||
*/
|
*/
|
||||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
|
|
||||||
/* ROWS: Top to bottom, COLS: Left to right
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B11, A6, A3, A2, A1, B7, B6, C15, C14, C13 }
|
|
||||||
#define MATRIX_COL_PINS { B10, B2, B1, B0, A7, B4, B3, B5 }
|
|
||||||
#define UNUSED_PINS { B15, B14, B13, B12, B9, B8, A15, A10, A9, A8 }
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
/* Backlight configuration
|
/* Backlight configuration
|
||||||
*/
|
*/
|
||||||
#define BACKLIGHT_LEVELS 1
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN D7
|
|
||||||
#define RGBLED_NUM 18 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 32
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
||||||
|
|
|
@ -0,0 +1,270 @@
|
||||||
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
|
"keyboard_name": "Clueboard 66% rev4",
|
||||||
|
"maintainer": "skullydazed",
|
||||||
|
"height": 5,
|
||||||
|
"width": 16.5,
|
||||||
|
"debounce": "5",
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"features": {
|
||||||
|
"audio": true,
|
||||||
|
"backlight": false,
|
||||||
|
"bluetooth": false,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": false,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": true,
|
||||||
|
"rgblight": false,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["B10", " B2", " B1", " B0", " A7", " B4", " B3", " B5"],
|
||||||
|
"rows": ["B11", " A6", " A3", " A2", " A1", " B7", " B6", " C15", " C14", " C13"]
|
||||||
|
},
|
||||||
|
"rgblight": {
|
||||||
|
"animations": {
|
||||||
|
"all": true
|
||||||
|
},
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "32",
|
||||||
|
"led_count": "18",
|
||||||
|
"pin": "D7",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2390",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"community_layouts": ["66_ansi", "66_iso"],
|
||||||
|
"layout_aliases": {
|
||||||
|
"KEYMAP": "LAYOUT_all",
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_66_ansi": {
|
||||||
|
"key_count": 66,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Page Up", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "Page Down", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "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], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "Up", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "Down", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "Up", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_66_iso": {
|
||||||
|
"key_count": 67,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "Insert", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "Delete", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "\"", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "\u2191", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "\u2193", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "\u2192", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"key_count": 73,
|
||||||
|
"layout": [
|
||||||
|
{ "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
|
{ "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
|
{ "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
|
{ "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "6", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
|
{ "label": "7", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
|
{ "label": "8", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
|
{ "label": "9", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
|
{ "label": "0", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "DASH", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "EQUALSIGN", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
|
{ "label": "YEN", "matrix": [5, 5], "w": 1, "x": 13, "y": 0 },
|
||||||
|
{ "label": "BACKSPACE", "matrix": [5, 6], "w": 1, "x": 14, "y": 0 },
|
||||||
|
{ "label": "PAGEUP", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
|
{ "label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
|
{ "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
|
{ "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
|
{ "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
|
{ "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
|
{ "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
|
{ "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
|
{ "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "LBRACKET", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
|
{ "label": "RBRACKET", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
|
{ "label": "PAGEDOWN", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
|
{ "label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
|
{ "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
|
{ "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
|
{ "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
|
{ "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
|
{ "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
|
{ "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
|
{ "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
|
{ "label": "SEMICOLON", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "QUOTE", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
|
{ "label": "ISOHASH", "matrix": [7, 4], "w": 1, "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], "w": 1, "x": 1.25, "y": 3 },
|
||||||
|
{ "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
|
{ "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
|
{ "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
|
{ "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
|
{ "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
|
{ "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "COMMA", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
|
{ "label": "PERIOD", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
|
{ "label": "SLASH", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
|
{ "label": "JPBACKSLASH", "matrix": [8, 4], "w": 1, "x": 12.25, "y": 3 },
|
||||||
|
{ "label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3 },
|
||||||
|
{ "label": "UP", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
|
{ "label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
|
{ "label": "LALT", "matrix": [4, 1], "w": 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], "w": 1, "x": 11.25, "y": 4 },
|
||||||
|
{ "label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
|
{ "label": "LEFT", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "DOWN", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "RIGHT", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
/* THIS FILE WAS GENERATED!
|
||||||
|
*
|
||||||
|
* This file was generated by qmk json2c. You may or may not want to
|
||||||
|
* edit it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(KC_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_RO, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
[1] = 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
|
||||||
|
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
|
||||||
|
};
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
/* THIS FILE WAS GENERATED!
|
||||||
|
*
|
||||||
|
* This file was generated by qmk json2c. You may or may not want to
|
||||||
|
* edit it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(KC_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_RO, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
[1] = 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
|
||||||
|
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
|
||||||
|
};
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
/* THIS FILE WAS GENERATED!
|
||||||
|
*
|
||||||
|
* This file was generated by qmk json2c. You may or may not want to
|
||||||
|
* edit it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(KC_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_RO, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
[1] = 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
|
||||||
|
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
|
||||||
|
};
|
|
@ -1,94 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
|
|
||||||
* |------------------------------------------------------------.
|
|
||||||
* | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 43| 45| 46| 90| 92| 93| 94| 95| 96| 97|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
|
||||||
k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_ansi, standard 66 key ANSI layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUT_66_iso, standard 67 key ISO layout
|
|
||||||
*/
|
|
||||||
#define LAYOUT_66_iso( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, KC_NO, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define KEYMAP LAYOUT_all
|
|
||||||
#define LAYOUT LAYOUT_all
|
|
||||||
|
|
|
@ -1,22 +1,3 @@
|
||||||
# MCU name
|
# MCU name
|
||||||
MCU = STM32F303
|
MCU = STM32F303
|
||||||
BOARD = QMK_PROTON_C
|
BOARD = QMK_PROTON_C
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# comment out to disable the options.
|
|
||||||
#
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
AUDIO_ENABLE = no
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = yes
|
|
||||||
|
|
||||||
LAYOUTS = 66_ansi 66_iso
|
|
||||||
|
|
|
@ -18,32 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT Clueboard 66% HotSwap
|
|
||||||
#define DESCRIPTION QMK keyboard firmware for Clueboard 66%
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
|
||||||
#define DEBOUNCE 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Feature disable options
|
* Feature disable options
|
||||||
* These options are also useful to firmware size reduction.
|
* These options are also useful to firmware size reduction.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define NO_DEBUG
|
|
||||||
//#define NO_PRINT
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
#define NO_ACTION_ONESHOT
|
#define NO_ACTION_ONESHOT
|
||||||
#define NO_ACTION_MACRO
|
#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
|
@ -18,37 +18,12 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2391
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
|
|
||||||
/* Address for jumping to bootloader on STM32 chips. */
|
/* Address for jumping to bootloader on STM32 chips. */
|
||||||
/* It is chip dependent, the correct number can be looked up here:
|
/* It is chip dependent, the correct number can be looked up here:
|
||||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||||
*/
|
*/
|
||||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keyboard Matrix Assignments
|
|
||||||
*
|
|
||||||
* Change this to how you wired your keyboard
|
|
||||||
* COLS: AVR pins used for columns, left to right
|
|
||||||
* ROWS: AVR pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { B11, A6, A3, A2, A1, B5, B6, C15, C14, C13 }
|
|
||||||
#define MATRIX_COL_PINS { B10, B2, B1, B0, A7, B4, B3, B7 }
|
|
||||||
#define UNUSED_PINS { A0, A8, A15, B12, B13, B14, B15 }
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
// #define DEBOUNCE 6
|
// #define DEBOUNCE 6
|
||||||
|
|
||||||
|
|
|
@ -16,74 +16,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* These are shortcuts to help you work with the various layout options. If your
|
|
||||||
* keymap works with one of the LAYOUT_...() macros you are encouraged to use that
|
|
||||||
* and to contribute your keymap to the corresponding layout in
|
|
||||||
* `qmk_firmware/layouts/community`.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 56 | | 57|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 75|
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* | 30 | 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 85 |86|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 45| 46| 90| 92| 93| 94| 95|96| 97|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '|Enter |
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui | Space| Space|Gui |Alt |Fn |Ctrl|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, KC_NO, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, KC_NO, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,165 +1,178 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "Clueboard 66% HotSwap Gen1",
|
"manufacturer": "Clueboard",
|
||||||
"maintainer": "skullydazed",
|
"keyboard_name": "Clueboard 66% HotSwap Gen1",
|
||||||
"width": 16.5,
|
"maintainer": "skullydazed",
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"width": 16.5,
|
||||||
"LAYOUT": {
|
"debounce": "5",
|
||||||
"layout": [
|
"diode_direction": "COL2ROW",
|
||||||
{"x": 0, "y": 0},
|
"features": {
|
||||||
{"x": 1, "y": 0},
|
"audio": true,
|
||||||
{"x": 2, "y": 0},
|
"bootmagic": true,
|
||||||
{"x": 3, "y": 0},
|
"command": true,
|
||||||
{"x": 4, "y": 0},
|
"console": true,
|
||||||
{"x": 5, "y": 0},
|
"extrakey": true,
|
||||||
{"x": 6, "y": 0},
|
"led_matrix": "IS31FL3731",
|
||||||
{"x": 7, "y": 0},
|
"mousekey": true,
|
||||||
{"x": 8, "y": 0},
|
"nkro": true
|
||||||
{"x": 9, "y": 0},
|
},
|
||||||
{"x": 10, "y": 0},
|
"matrix_pins": {
|
||||||
{"x": 11, "y": 0},
|
"cols": ["B10", " B2", " B1", " B0", " A7", " B4", " B3", " B7"],
|
||||||
{"x": 12, "y": 0},
|
"rows": ["B11", " A6", " A3", " A2", " A1", " B5", " B6", " C15", " C14", " C13"]
|
||||||
{"x": 13, "y": 0, "w": 2},
|
},
|
||||||
|
"usb": {
|
||||||
{"x": 15.5, "y": 0},
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2391",
|
||||||
{"x": 0, "y": 1, "w": 1.5},
|
"vid": "0xC1ED"
|
||||||
{"x": 1.5, "y": 1},
|
},
|
||||||
{"x": 2.5, "y": 1},
|
"community_layouts": [],
|
||||||
{"x": 3.5, "y": 1},
|
"layout_aliases": {
|
||||||
{"x": 4.5, "y": 1},
|
"LAYOUT": "LAYOUT_all"
|
||||||
{"x": 5.5, "y": 1},
|
},
|
||||||
{"x": 6.5, "y": 1},
|
"layouts": {
|
||||||
{"x": 7.5, "y": 1},
|
"LAYOUT_66_ansi": {
|
||||||
{"x": 8.5, "y": 1},
|
"key_count": 66,
|
||||||
{"x": 9.5, "y": 1},
|
"layout": [
|
||||||
{"x": 10.5, "y": 1},
|
{ "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"x": 11.5, "y": 1},
|
{ "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"x": 12.5, "y": 1},
|
{ "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"x": 13.5, "y": 1, "w": 1.5},
|
{ "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
|
{ "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
{"x": 15.5, "y": 1},
|
{ "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
|
{ "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
{"x": 0, "y": 2, "w": 1.75},
|
{ "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
{"x": 1.75, "y": 2},
|
{ "label": "k50", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
{"x": 2.75, "y": 2},
|
{ "label": "k51", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
{"x": 3.75, "y": 2},
|
{ "label": "k52", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
{"x": 4.75, "y": 2},
|
{ "label": "k53", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
{"x": 5.75, "y": 2},
|
{ "label": "k54", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
{"x": 6.75, "y": 2},
|
{ "label": "k55", "matrix": [5, 5], "w": 2, "x": 13, "y": 0 },
|
||||||
{"x": 7.75, "y": 2},
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
{"x": 8.75, "y": 2},
|
{ "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
{"x": 9.75, "y": 2},
|
{ "label": "k11", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
{"x": 10.75, "y": 2},
|
{ "label": "k12", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
{"x": 11.75, "y": 2},
|
{ "label": "k13", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
{"x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "k14", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
|
{ "label": "k15", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
{"x": 0, "y": 3, "w": 2.25},
|
{ "label": "k16", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
{"x": 2.25, "y": 3},
|
{ "label": "k17", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
{"x": 3.25, "y": 3},
|
{ "label": "k60", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
{"x": 4.25, "y": 3},
|
{ "label": "k61", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
{"x": 5.25, "y": 3},
|
{ "label": "k62", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
{"x": 6.25, "y": 3},
|
{ "label": "k63", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
{"x": 7.25, "y": 3},
|
{ "label": "k64", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
{"x": 8.25, "y": 3},
|
{ "label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
{"x": 9.25, "y": 3},
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
{"x": 10.25, "y": 3},
|
{ "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
{"x": 11.25, "y": 3},
|
{ "label": "k21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
{"x": 12.25, "y": 3, "w": 2.25},
|
{ "label": "k22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
|
{ "label": "k23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
{"x": 14.5, "y": 3},
|
{ "label": "k24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
|
{ "label": "k25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
{"x": 0, "y": 4, "w": 1.25},
|
{ "label": "k26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
{"x": 1.25, "y": 4, "w": 1.25},
|
{ "label": "k27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
{"x": 2.5, "y": 4, "w": 1.25},
|
{ "label": "k70", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
{"x": 3.75, "y": 4, "w": 2.75},
|
{ "label": "k71", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
{"x": 6.5, "y": 4, "w": 2.25},
|
{ "label": "k72", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
{"x": 8.75, "y": 4, "w": 1.25},
|
{ "label": "k73", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
{"x": 10, "y": 4, "w": 1.25},
|
{ "label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2 },
|
||||||
{"x": 11.25, "y": 4},
|
{ "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||||
{"x": 12.25, "y": 4, "w": 1.25},
|
{ "label": "k32", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
{"x": 13.5, "y": 4},
|
{ "label": "k33", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
{"x": 14.5, "y": 4},
|
{ "label": "k34", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
{"x": 15.5, "y": 4}
|
{ "label": "k35", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
]
|
{ "label": "k36", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
},
|
{ "label": "k37", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
"LAYOUT_66_ansi": {
|
{ "label": "k80", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
"layout": [
|
{ "label": "k81", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
{"x": 0, "y": 0},
|
{ "label": "k82", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
{"x": 1, "y": 0},
|
{ "label": "k83", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
{"x": 2, "y": 0},
|
{ "label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
{"x": 3, "y": 0},
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
{"x": 4, "y": 0},
|
{ "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
{"x": 5, "y": 0},
|
{ "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
|
||||||
{"x": 6, "y": 0},
|
{ "label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||||
{"x": 7, "y": 0},
|
{ "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 },
|
||||||
{"x": 8, "y": 0},
|
{ "label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4 },
|
||||||
{"x": 9, "y": 0},
|
{ "label": "k93", "matrix": [9, 3], "w": 1, "x": 11.25, "y": 4 },
|
||||||
{"x": 10, "y": 0},
|
{ "label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
{"x": 11, "y": 0},
|
{ "label": "k95", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
{"x": 12, "y": 0},
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
{"x": 13, "y": 0, "w": 2},
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
{"x": 15.5, "y": 0},
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
{"x": 0, "y": 1, "w": 1.5},
|
"key_count": 68,
|
||||||
{"x": 1.5, "y": 1},
|
"layout": [
|
||||||
{"x": 2.5, "y": 1},
|
{ "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"x": 3.5, "y": 1},
|
{ "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"x": 4.5, "y": 1},
|
{ "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"x": 5.5, "y": 1},
|
{ "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"x": 6.5, "y": 1},
|
{ "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
{"x": 7.5, "y": 1},
|
{ "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
{"x": 8.5, "y": 1},
|
{ "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
{"x": 9.5, "y": 1},
|
{ "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
{"x": 10.5, "y": 1},
|
{ "label": "k50", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
{"x": 11.5, "y": 1},
|
{ "label": "k51", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
{"x": 12.5, "y": 1},
|
{ "label": "k52", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
{"x": 13.5, "y": 1, "w": 1.5},
|
{ "label": "k53", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
|
{ "label": "k54", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
{"x": 15.5, "y": 1},
|
{ "label": "k55", "matrix": [5, 5], "w": 2, "x": 13, "y": 0 },
|
||||||
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
{"x": 0, "y": 2, "w": 1.75},
|
{ "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
{"x": 1.75, "y": 2},
|
{ "label": "k11", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
{"x": 2.75, "y": 2},
|
{ "label": "k12", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
{"x": 3.75, "y": 2},
|
{ "label": "k13", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
{"x": 4.75, "y": 2},
|
{ "label": "k14", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
{"x": 5.75, "y": 2},
|
{ "label": "k15", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
{"x": 6.75, "y": 2},
|
{ "label": "k16", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
{"x": 7.75, "y": 2},
|
{ "label": "k17", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
{"x": 8.75, "y": 2},
|
{ "label": "k60", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
{"x": 9.75, "y": 2},
|
{ "label": "k61", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
{"x": 10.75, "y": 2},
|
{ "label": "k62", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
{"x": 11.75, "y": 2},
|
{ "label": "k63", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
{"x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "k64", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
|
{ "label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
{"x": 0, "y": 3, "w": 2.25},
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
{"x": 2.25, "y": 3},
|
{ "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
{"x": 3.25, "y": 3},
|
{ "label": "k21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
{"x": 4.25, "y": 3},
|
{ "label": "k22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
{"x": 5.25, "y": 3},
|
{ "label": "k23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
{"x": 6.25, "y": 3},
|
{ "label": "k24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
{"x": 7.25, "y": 3},
|
{ "label": "k25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
{"x": 8.25, "y": 3},
|
{ "label": "k26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
{"x": 9.25, "y": 3},
|
{ "label": "k27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
{"x": 10.25, "y": 3},
|
{ "label": "k70", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
{"x": 11.25, "y": 3},
|
{ "label": "k71", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
{"x": 12.25, "y": 3, "w": 2.25},
|
{ "label": "k72", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
|
{ "label": "k73", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
{"x": 14.5, "y": 3},
|
{ "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 },
|
||||||
{"x": 0, "y": 4, "w": 1.25},
|
{ "label": "k32", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
{"x": 1.25, "y": 4, "w": 1.25},
|
{ "label": "k33", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
{"x": 2.5, "y": 4, "w": 1.25},
|
{ "label": "k34", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
{"x": 3.75, "y": 4, "w": 6.25},
|
{ "label": "k35", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
{"x": 10, "y": 4, "w": 1.25},
|
{ "label": "k36", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
{"x": 11.25, "y": 4},
|
{ "label": "k37", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
{"x": 12.25, "y": 4, "w": 1.25},
|
{ "label": "k80", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "k81", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
{"x": 13.5, "y": 4},
|
{ "label": "k82", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
{"x": 14.5, "y": 4},
|
{ "label": "k83", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
{"x": 15.5, "y": 4}
|
{ "label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
]
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "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], "w": 1, "x": 11.25, "y": 4 },
|
||||||
|
{ "label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
|
{ "label": "k95", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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).
|
|
@ -2,21 +2,5 @@
|
||||||
MCU = STM32F303
|
MCU = STM32F303
|
||||||
BOARD = QMK_PROTON_C
|
BOARD = QMK_PROTON_C
|
||||||
|
|
||||||
# LED Configuration
|
# project specific files
|
||||||
LED_MATRIX_ENABLE = yes
|
SRC = led.c
|
||||||
LED_MATRIX_DRIVER = IS31FL3731
|
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# comment out to disable the options.
|
|
||||||
#
|
|
||||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
|
||||||
AUDIO_ENABLE = yes
|
|
||||||
# SERIAL_LINK_ENABLE = yes
|
|
||||||
|
|
||||||
LAYOUTS = 66_ansi
|
|
||||||
|
|
|
@ -1,27 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
#define PRODUCT_ID 0x2390
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
|
|
||||||
// ROWS: Top to bottom, COLS: Left to right
|
|
||||||
/* Row pin configuration
|
|
||||||
* row: 0 1 2 3 4 5 6 7 8 9
|
|
||||||
* pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 }
|
|
||||||
/* Column pin configuration
|
|
||||||
* col: 0 1 2 3 4 5 6 7
|
|
||||||
* pin: F0 F1 F4 F5 F6 F7 E6 B1
|
|
||||||
*/
|
|
||||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* Speaker configuration
|
/* Speaker configuration
|
||||||
*/
|
*/
|
||||||
#define B7_AUDIO
|
#define B7_AUDIO
|
||||||
|
@ -32,21 +11,12 @@
|
||||||
*/
|
*/
|
||||||
#define NO_ACTION_TAPPING
|
#define NO_ACTION_TAPPING
|
||||||
|
|
||||||
#define LED_CAPS_LOCK_PIN B4
|
|
||||||
|
|
||||||
/* Backlight configuration
|
/* Backlight configuration
|
||||||
*/
|
*/
|
||||||
#define BACKLIGHT_LEVELS 1
|
#define BACKLIGHT_LEVELS 1
|
||||||
|
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN D7
|
|
||||||
#define RGBLED_NUM 26 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 32
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 200
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 666*2
|
||||||
|
|
|
@ -1,245 +1,198 @@
|
||||||
{
|
{
|
||||||
"keyboard_name": "Clueboard 66% HotSwap Prototype",
|
"manufacturer": "Clueboard",
|
||||||
"maintainer": "skullydazed",
|
"keyboard_name": "Clueboard 66% HotSwap Prototype",
|
||||||
"width": 16.5,
|
"maintainer": "skullydazed",
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"width": 16.5,
|
||||||
"LAYOUT_all": {
|
"debounce": "5",
|
||||||
"layout": [
|
"diode_direction": "COL2ROW",
|
||||||
{"x": 0, "y": 0},
|
"features": {
|
||||||
{"x": 1, "y": 0},
|
"audio": true,
|
||||||
{"x": 2, "y": 0},
|
"backlight": true,
|
||||||
{"x": 3, "y": 0},
|
"bluetooth": false,
|
||||||
{"x": 4, "y": 0},
|
"bootmagic": false,
|
||||||
{"x": 5, "y": 0},
|
"command": false,
|
||||||
{"x": 6, "y": 0},
|
"console": true,
|
||||||
{"x": 7, "y": 0},
|
"extrakey": true,
|
||||||
{"x": 8, "y": 0},
|
"midi": false,
|
||||||
{"x": 9, "y": 0},
|
"mousekey": false,
|
||||||
{"x": 10, "y": 0},
|
"nkro": true,
|
||||||
{"x": 11, "y": 0},
|
"rgblight": true,
|
||||||
{"x": 12, "y": 0},
|
"unicode": false
|
||||||
{"x": 13, "y": 0, "w": 2},
|
},
|
||||||
|
"indicators": {
|
||||||
{"x": 15.5, "y": 0},
|
"caps_lock": "B4"
|
||||||
|
},
|
||||||
{"x": 0, "y": 1, "w": 1.5},
|
"matrix_pins": {
|
||||||
{"x": 1.5, "y": 1},
|
"cols": ["F0", " F1", " F4", " F5", " F6", " F7", " E6", " B1"],
|
||||||
{"x": 2.5, "y": 1},
|
"rows": ["B2", " C7", " C6", " B6", " B5", " B0", " B3", " D5", " D3", " D2"]
|
||||||
{"x": 3.5, "y": 1},
|
},
|
||||||
{"x": 4.5, "y": 1},
|
"rgblight": {
|
||||||
{"x": 5.5, "y": 1},
|
"animations": {
|
||||||
{"x": 6.5, "y": 1},
|
"all": true
|
||||||
{"x": 7.5, "y": 1},
|
},
|
||||||
{"x": 8.5, "y": 1},
|
"brightness_steps": "17",
|
||||||
{"x": 9.5, "y": 1},
|
"hue_steps": "32",
|
||||||
{"x": 10.5, "y": 1},
|
"led_count": "26",
|
||||||
{"x": 11.5, "y": 1},
|
"pin": "D7",
|
||||||
{"x": 12.5, "y": 1},
|
"saturation_steps": "17"
|
||||||
{"x": 13.5, "y": 1, "w": 1.5},
|
},
|
||||||
|
"usb": {
|
||||||
{"x": 15.5, "y": 1},
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2390",
|
||||||
{"x": 0, "y": 2, "w": 1.75},
|
"vid": "0xC1ED"
|
||||||
{"x": 1.75, "y": 2},
|
},
|
||||||
{"x": 2.75, "y": 2},
|
"community_layouts": ["66_ansi"],
|
||||||
{"x": 3.75, "y": 2},
|
"layout_aliases": {
|
||||||
{"x": 4.75, "y": 2},
|
"KEYMAP": "LAYOUT_all",
|
||||||
{"x": 5.75, "y": 2},
|
"LAYOUT": "LAYOUT_all"
|
||||||
{"x": 6.75, "y": 2},
|
},
|
||||||
{"x": 7.75, "y": 2},
|
"layouts": {
|
||||||
{"x": 8.75, "y": 2},
|
"LAYOUT_66_ansi": {
|
||||||
{"x": 9.75, "y": 2},
|
"key_count": 66,
|
||||||
{"x": 10.75, "y": 2},
|
"layout": [
|
||||||
{"x": 11.75, "y": 2},
|
{ "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
|
{ "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"x": 0, "y": 3, "w": 1.25},
|
{ "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"x": 1.25, "y": 3},
|
{ "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
{"x": 2.25, "y": 3},
|
{ "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
{"x": 3.25, "y": 3},
|
{ "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
{"x": 4.25, "y": 3},
|
{ "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
{"x": 5.25, "y": 3},
|
{ "label": "k50", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
{"x": 6.25, "y": 3},
|
{ "label": "k51", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
{"x": 7.25, "y": 3},
|
{ "label": "k52", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
{"x": 8.25, "y": 3},
|
{ "label": "k53", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
{"x": 9.25, "y": 3},
|
{ "label": "k54", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
{"x": 10.25, "y": 3},
|
{ "label": "k56", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
{"x": 11.25, "y": 3},
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
{"x": 12.25, "y": 3},
|
{ "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
{"x": 13.25, "y": 3, "w": 1.25},
|
{ "label": "k11", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
{"x": 14.5, "y": 3},
|
{ "label": "k12", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
|
{ "label": "k13", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
{"x": 0, "y": 4, "w": 1.25},
|
{ "label": "k14", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
{"x": 1.25, "y": 4, "w": 1.25},
|
{ "label": "k15", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
{"x": 2.5, "y": 4, "w": 1.25},
|
{ "label": "k16", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
{"x": 3.75, "y": 4, "w": 2.75},
|
{ "label": "k17", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
{"x": 6.5, "y": 4, "w": 2.25},
|
{ "label": "k60", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
{"x": 8.75, "y": 4, "w": 1.25},
|
{ "label": "k61", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
{"x": 10, "y": 4, "w": 1.25},
|
{ "label": "k62", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
{"x": 11.25, "y": 4},
|
{ "label": "k63", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
{"x": 12.25, "y": 4, "w": 1.25},
|
{ "label": "k64", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
{"x": 13.5, "y": 4},
|
{ "label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
{"x": 14.5, "y": 4},
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
{"x": 15.5, "y": 4}
|
{ "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
]
|
{ "label": "k21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
},
|
{ "label": "k22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
"LAYOUT": {
|
{ "label": "k23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
"layout": [
|
{ "label": "k24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
{"x": 0, "y": 0},
|
{ "label": "k25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
{"x": 1, "y": 0},
|
{ "label": "k26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
{"x": 2, "y": 0},
|
{ "label": "k27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
{"x": 3, "y": 0},
|
{ "label": "k70", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
{"x": 4, "y": 0},
|
{ "label": "k71", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
{"x": 5, "y": 0},
|
{ "label": "k72", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
{"x": 6, "y": 0},
|
{ "label": "k73", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
{"x": 7, "y": 0},
|
{ "label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2 },
|
||||||
{"x": 8, "y": 0},
|
{ "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||||
{"x": 9, "y": 0},
|
{ "label": "k32", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
{"x": 10, "y": 0},
|
{ "label": "k33", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
{"x": 11, "y": 0},
|
{ "label": "k34", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
{"x": 12, "y": 0},
|
{ "label": "k35", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
{"x": 13, "y": 0, "w": 2},
|
{ "label": "k36", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
|
{ "label": "k37", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
{"x": 15.5, "y": 0},
|
{ "label": "k80", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
|
{ "label": "k81", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
{"x": 0, "y": 1, "w": 1.5},
|
{ "label": "k82", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
{"x": 1.5, "y": 1},
|
{ "label": "k83", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
{"x": 2.5, "y": 1},
|
{ "label": "k85", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 },
|
||||||
{"x": 3.5, "y": 1},
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
{"x": 4.5, "y": 1},
|
{ "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||||
{"x": 5.5, "y": 1},
|
{ "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
|
||||||
{"x": 6.5, "y": 1},
|
{ "label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||||
{"x": 7.5, "y": 1},
|
{ "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 },
|
||||||
{"x": 8.5, "y": 1},
|
{ "label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4 },
|
||||||
{"x": 9.5, "y": 1},
|
{ "label": "k93", "matrix": [9, 3], "w": 1, "x": 11.25, "y": 4 },
|
||||||
{"x": 10.5, "y": 1},
|
{ "label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
{"x": 11.5, "y": 1},
|
{ "label": "k95", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
{"x": 12.5, "y": 1},
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
{"x": 13.5, "y": 1, "w": 1.5},
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
|
]
|
||||||
{"x": 15.5, "y": 1},
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
{"x": 0, "y": 2, "w": 1.75},
|
"key_count": 70,
|
||||||
{"x": 1.75, "y": 2},
|
"layout": [
|
||||||
{"x": 2.75, "y": 2},
|
{ "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"x": 3.75, "y": 2},
|
{ "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||||
{"x": 4.75, "y": 2},
|
{ "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||||
{"x": 5.75, "y": 2},
|
{ "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||||
{"x": 6.75, "y": 2},
|
{ "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||||
{"x": 7.75, "y": 2},
|
{ "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||||
{"x": 8.75, "y": 2},
|
{ "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||||
{"x": 9.75, "y": 2},
|
{ "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||||
{"x": 10.75, "y": 2},
|
{ "label": "k50", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 },
|
||||||
{"x": 11.75, "y": 2},
|
{ "label": "k51", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 },
|
||||||
{"x": 12.75, "y": 2, "w": 2.25},
|
{ "label": "k52", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 },
|
||||||
|
{ "label": "k53", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 },
|
||||||
{"x": 0, "y": 3, "w": 2.25},
|
{ "label": "k54", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 },
|
||||||
{"x": 2.25, "y": 3},
|
{ "label": "k56", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 },
|
||||||
{"x": 3.25, "y": 3},
|
{ "label": "k57", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 },
|
||||||
{"x": 4.25, "y": 3},
|
{ "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||||
{"x": 5.25, "y": 3},
|
{ "label": "k11", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 },
|
||||||
{"x": 6.25, "y": 3},
|
{ "label": "k12", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 },
|
||||||
{"x": 7.25, "y": 3},
|
{ "label": "k13", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 },
|
||||||
{"x": 8.25, "y": 3},
|
{ "label": "k14", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 },
|
||||||
{"x": 9.25, "y": 3},
|
{ "label": "k15", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 },
|
||||||
{"x": 10.25, "y": 3},
|
{ "label": "k16", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 },
|
||||||
{"x": 11.25, "y": 3},
|
{ "label": "k17", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 },
|
||||||
{"x": 12.25, "y": 3, "w": 2.25},
|
{ "label": "k60", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 },
|
||||||
|
{ "label": "k61", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 },
|
||||||
{"x": 14.5, "y": 3},
|
{ "label": "k62", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 },
|
||||||
|
{ "label": "k63", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 },
|
||||||
{"x": 0, "y": 4, "w": 1.25},
|
{ "label": "k64", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 },
|
||||||
{"x": 1.25, "y": 4, "w": 1.25},
|
{ "label": "k65", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 },
|
||||||
{"x": 2.5, "y": 4, "w": 1.25},
|
{ "label": "k67", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 },
|
||||||
{"x": 3.75, "y": 4, "w": 2.75},
|
{ "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||||
{"x": 6.5, "y": 4, "w": 2.25},
|
{ "label": "k21", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
|
||||||
{"x": 8.75, "y": 4, "w": 1.25},
|
{ "label": "k22", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
|
||||||
{"x": 10, "y": 4, "w": 1.25},
|
{ "label": "k23", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
|
||||||
{"x": 11.25, "y": 4},
|
{ "label": "k24", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
|
||||||
{"x": 12.25, "y": 4, "w": 1.25},
|
{ "label": "k25", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
|
||||||
{"x": 13.5, "y": 4},
|
{ "label": "k26", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
|
||||||
{"x": 14.5, "y": 4},
|
{ "label": "k27", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
|
||||||
{"x": 15.5, "y": 4}
|
{ "label": "k70", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 },
|
||||||
]
|
{ "label": "k71", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 },
|
||||||
},
|
{ "label": "k72", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 },
|
||||||
"LAYOUT_66_ansi": {
|
{ "label": "k73", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 },
|
||||||
"layout": [
|
{ "label": "k75", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2 },
|
||||||
{"x": 0, "y": 0},
|
{ "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
|
||||||
{"x": 1, "y": 0},
|
{ "label": "k31", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 },
|
||||||
{"x": 2, "y": 0},
|
{ "label": "k32", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 },
|
||||||
{"x": 3, "y": 0},
|
{ "label": "k33", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 },
|
||||||
{"x": 4, "y": 0},
|
{ "label": "k34", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 },
|
||||||
{"x": 5, "y": 0},
|
{ "label": "k35", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 },
|
||||||
{"x": 6, "y": 0},
|
{ "label": "k36", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 },
|
||||||
{"x": 7, "y": 0},
|
{ "label": "k37", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 },
|
||||||
{"x": 8, "y": 0},
|
{ "label": "k80", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 },
|
||||||
{"x": 9, "y": 0},
|
{ "label": "k81", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 },
|
||||||
{"x": 10, "y": 0},
|
{ "label": "k82", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 },
|
||||||
{"x": 11, "y": 0},
|
{ "label": "k83", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 },
|
||||||
{"x": 12, "y": 0},
|
{ "label": "k84", "matrix": [8, 4], "w": 1, "x": 12.25, "y": 3 },
|
||||||
{"x": 13, "y": 0, "w": 2},
|
{ "label": "k85", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3 },
|
||||||
|
{ "label": "k86", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 },
|
||||||
{"x": 15.5, "y": 0},
|
{ "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 },
|
||||||
{"x": 0, "y": 1, "w": 1.5},
|
{ "label": "k42", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||||
{"x": 1.5, "y": 1},
|
{ "label": "k45", "matrix": [4, 5], "w": 2.75, "x": 3.75, "y": 4 },
|
||||||
{"x": 2.5, "y": 1},
|
{ "label": "k46", "matrix": [4, 6], "w": 2.25, "x": 6.5, "y": 4 },
|
||||||
{"x": 3.5, "y": 1},
|
{ "label": "k90", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4 },
|
||||||
{"x": 4.5, "y": 1},
|
{ "label": "k92", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4 },
|
||||||
{"x": 5.5, "y": 1},
|
{ "label": "k93", "matrix": [9, 3], "w": 1, "x": 11.25, "y": 4 },
|
||||||
{"x": 6.5, "y": 1},
|
{ "label": "k94", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 },
|
||||||
{"x": 7.5, "y": 1},
|
{ "label": "k95", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 },
|
||||||
{"x": 8.5, "y": 1},
|
{ "label": "k96", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 },
|
||||||
{"x": 9.5, "y": 1},
|
{ "label": "k97", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 }
|
||||||
{"x": 10.5, "y": 1},
|
]
|
||||||
{"x": 11.5, "y": 1},
|
|
||||||
{"x": 12.5, "y": 1},
|
|
||||||
{"x": 13.5, "y": 1, "w": 1.5},
|
|
||||||
|
|
||||||
{"x": 15.5, "y": 1},
|
|
||||||
|
|
||||||
{"x": 0, "y": 2, "w": 1.75},
|
|
||||||
{"x": 1.75, "y": 2},
|
|
||||||
{"x": 2.75, "y": 2},
|
|
||||||
{"x": 3.75, "y": 2},
|
|
||||||
{"x": 4.75, "y": 2},
|
|
||||||
{"x": 5.75, "y": 2},
|
|
||||||
{"x": 6.75, "y": 2},
|
|
||||||
{"x": 7.75, "y": 2},
|
|
||||||
{"x": 8.75, "y": 2},
|
|
||||||
{"x": 9.75, "y": 2},
|
|
||||||
{"x": 10.75, "y": 2},
|
|
||||||
{"x": 11.75, "y": 2},
|
|
||||||
{"x": 12.75, "y": 2, "w": 2.25},
|
|
||||||
|
|
||||||
{"x": 0, "y": 3, "w": 2.25},
|
|
||||||
{"x": 2.25, "y": 3},
|
|
||||||
{"x": 3.25, "y": 3},
|
|
||||||
{"x": 4.25, "y": 3},
|
|
||||||
{"x": 5.25, "y": 3},
|
|
||||||
{"x": 6.25, "y": 3},
|
|
||||||
{"x": 7.25, "y": 3},
|
|
||||||
{"x": 8.25, "y": 3},
|
|
||||||
{"x": 9.25, "y": 3},
|
|
||||||
{"x": 10.25, "y": 3},
|
|
||||||
{"x": 11.25, "y": 3},
|
|
||||||
{"x": 12.25, "y": 3, "w": 2.25},
|
|
||||||
|
|
||||||
{"x": 14.5, "y": 3},
|
|
||||||
|
|
||||||
{"x": 0, "y": 4, "w": 1.25},
|
|
||||||
{"x": 1.25, "y": 4, "w": 1.25},
|
|
||||||
{"x": 2.5, "y": 4, "w": 1.25},
|
|
||||||
{"x": 3.75, "y": 4, "w": 6.25},
|
|
||||||
{"x": 10, "y": 4, "w": 1.25},
|
|
||||||
{"x": 11.25, "y": 4},
|
|
||||||
{"x": 12.25, "y": 4, "w": 1.25},
|
|
||||||
|
|
||||||
{"x": 13.5, "y": 4},
|
|
||||||
{"x": 14.5, "y": 4},
|
|
||||||
{"x": 15.5, "y": 4}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,86 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
/* Clueboard matrix layout
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 56 | | 57|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
|
|
||||||
* |------------------------------------------------------------.
|
|
||||||
* | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* | 40| 41| 42| 43| 45| 46| 90| 92| 93| 94| 95| 96| 97|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
* ,-----------------------------------------------------------. ,---.
|
|
||||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |Ins|
|
|
||||||
* |-----------------------------------------------------------| |---|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
|
|
||||||
* |-----------------------------------------------------------| `---'
|
|
||||||
* |Caps | A| S| D| F| G| H| J| k| L| ;| '|Enter |
|
|
||||||
* |--------------------------------------------------------------.
|
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
|
|
||||||
* |------------------------------------------------------------------.
|
|
||||||
* |Ctrl|Alt|Gui | Space| Space|Gui |Alt |Fn |Ctrl|Left|Down|Rgt|
|
|
||||||
* `------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguments
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
|
|
||||||
#define LAYOUT_all( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
|
||||||
k40, k41, k42, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, k45, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_66_ansi( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k56, k57, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k75, \
|
|
||||||
k30, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k85, k86, \
|
|
||||||
k40, k41, k42, k46, k92, k93, k94, k95, k96, k97 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, KC_NO, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO }, \
|
|
||||||
{ k50, k51, k52, k53, k54, KC_NO, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, KC_NO, k75, KC_NO, KC_NO }, \
|
|
||||||
{ k80, k81, k82, k83, KC_NO, k85, k86, KC_NO }, \
|
|
||||||
{ KC_NO, KC_NO, k92, k93, k94, k95, k96, k97 } \
|
|
||||||
}
|
|
||||||
|
|
|
@ -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).
|
|
@ -14,19 +14,6 @@ BOOTLOADER = atmel-dfu
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BACKLIGHT_ENABLE = yes
|
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
BOOTMAGIC_ENABLE = no
|
|
||||||
MOUSEKEY_ENABLE = no
|
|
||||||
EXTRAKEY_ENABLE = yes
|
|
||||||
CONSOLE_ENABLE = yes
|
|
||||||
COMMAND_ENABLE = no
|
|
||||||
NKRO_ENABLE = yes
|
|
||||||
AUDIO_ENABLE = yes
|
|
||||||
RGBLIGHT_ENABLE = yes
|
|
||||||
MIDI_ENABLE = no
|
|
||||||
UNICODE_ENABLE = no
|
|
||||||
BLUETOOTH_ENABLE = no
|
|
||||||
|
|
||||||
EXTRAFLAGS += -flto
|
EXTRAFLAGS += -flto
|
||||||
LAYOUTS = 66_ansi
|
|
||||||
|
|
|
@ -1,21 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// Any changes to the layout names and/or definitions must also be made to info.json
|
|
||||||
|
|
||||||
#define LAYOUT( \
|
|
||||||
K00, K01, \
|
|
||||||
K10, K11, \
|
|
||||||
K21, \
|
|
||||||
K30, K31, \
|
|
||||||
K40, K41, \
|
|
||||||
K51 \
|
|
||||||
) { \
|
|
||||||
{ K00, K01 }, \
|
|
||||||
{ K10, K11 }, \
|
|
||||||
{ KC_NO, K21 }, \
|
|
||||||
{ K30, K31 }, \
|
|
||||||
{ K40, K41 }, \
|
|
||||||
{ KC_NO, K51 } \
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,24 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x23B0
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT California Macropad
|
|
||||||
#define DESCRIPTION A 10-key macropad shaped like California
|
|
||||||
|
|
||||||
/* key matrix pins */
|
|
||||||
#define MATRIX_ROWS 6
|
|
||||||
#define MATRIX_COLS 2
|
|
||||||
#define DIRECT_PINS { \
|
|
||||||
{ A10, A9 }, \
|
|
||||||
{ A0, B8 }, \
|
|
||||||
{ NO_PIN, B11 }, \
|
|
||||||
{ B9, A8 }, \
|
|
||||||
{ A7, B1 }, \
|
|
||||||
{ NO_PIN, B2 } \
|
|
||||||
}
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
|
@ -2,9 +2,31 @@
|
||||||
"keyboard_name": "Clueboard California",
|
"keyboard_name": "Clueboard California",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "skullydazed",
|
"maintainer": "skullydazed",
|
||||||
|
"matrix_pins": {
|
||||||
|
"direct": [
|
||||||
|
["A10", "A9"],
|
||||||
|
["A0", "B8"],
|
||||||
|
[null, "B11"],
|
||||||
|
["B9", "A8"],
|
||||||
|
["A7", "B1"],
|
||||||
|
[null, "B2"]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"usb": {"pid": "0x23B0"},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":1, "y":2}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":3.75, "y":5}]
|
"layout": [
|
||||||
|
{"x": 0, "y": 0, "w": 1, "matrix": [0, 0]},
|
||||||
|
{"x": 1, "y": 0, "w": 1, "matrix": [0, 1]},
|
||||||
|
{"x": 0, "y": 1, "w": 1, "matrix": [1, 0]},
|
||||||
|
{"x": 1, "y": 1, "w": 1, "matrix": [1, 1]},
|
||||||
|
{"x": 1, "y": 2, "w": 1, "matrix": [2, 1]},
|
||||||
|
{"x": 1.25, "y": 3, "w": 1, "matrix": [3, 0]},
|
||||||
|
{"x": 2.25, "y": 3, "w": 1, "matrix": [3, 1]},
|
||||||
|
{"x": 2, "y": 4, "w": 1, "matrix": [4, 0]},
|
||||||
|
{"x": 3, "y": 4, "w": 1, "matrix": [4, 1]},
|
||||||
|
{"x": 3.75, "y": 5, "w": 1, "matrix": [5, 1]}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Default keymap for the Clueboard California Macropad.
|
|
@ -1,19 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
|
||||||
// The first section contains all of the arguements
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT( \
|
|
||||||
k00, k01, k02, \
|
|
||||||
k10, k12, \
|
|
||||||
k20, k21, k22, \
|
|
||||||
k11, \
|
|
||||||
k30, k31, k32 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, }, \
|
|
||||||
{ k10, k11, k12, }, \
|
|
||||||
{ k20, k21, k22, }, \
|
|
||||||
{ k30, k31, k32, } \
|
|
||||||
}
|
|
||||||
|
|
|
@ -19,137 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
|
||||||
#define VENDOR_ID 0xC1ED
|
|
||||||
#define PRODUCT_ID 0x2330
|
|
||||||
#define DEVICE_VER 0x0001
|
|
||||||
#define MANUFACTURER Clueboard
|
|
||||||
#define PRODUCT ATMEGA32U4 Firmware Dev Kit
|
|
||||||
#define DESCRIPTION A small board to help you hack on QMK.
|
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
#define MATRIX_ROWS 4
|
|
||||||
#define MATRIX_COLS 3
|
|
||||||
|
|
||||||
/* Keyboard Matrix Assignments
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { F0, F5, F4, B4 }
|
|
||||||
#define MATRIX_COL_PINS { F1, F7, F6 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION ROW2COL
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
|
||||||
#define DEBOUNCE 20
|
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
|
||||||
//#define MATRIX_HAS_GHOST
|
|
||||||
|
|
||||||
/* number of backlight levels */
|
/* number of backlight levels */
|
||||||
#define BACKLIGHT_LEVELS 6
|
#define BACKLIGHT_LEVELS 6
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
|
||||||
//#define LOCKING_SUPPORT_ENABLE
|
|
||||||
/* Locking resynchronize hack */
|
|
||||||
//#define LOCKING_RESYNC_ENABLE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force NKRO
|
|
||||||
*
|
|
||||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
|
||||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
|
||||||
* makefile for this to work.)
|
|
||||||
*
|
|
||||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
|
||||||
* until the next keyboard reset.
|
|
||||||
*
|
|
||||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
|
||||||
* fully operational during normal computer usage.
|
|
||||||
*
|
|
||||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
|
||||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
|
||||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
|
||||||
* power-up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define FORCE_NKRO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP1 H
|
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/* Underlight configuration
|
|
||||||
*/
|
|
||||||
#define RGB_DI_PIN E6
|
|
||||||
//#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 4 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
|
||||||
//#define NO_ACTION_LAYER
|
|
||||||
//#define NO_ACTION_TAPPING
|
|
||||||
//#define NO_ACTION_ONESHOT
|
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
|
|
||||||
// Enable audio
|
// Enable audio
|
||||||
#define C6_AUDIO
|
#define C6_AUDIO
|
||||||
|
|
|
@ -1,19 +1,61 @@
|
||||||
{
|
{
|
||||||
|
"manufacturer": "Clueboard",
|
||||||
"keyboard_name": "Cluecard",
|
"keyboard_name": "Cluecard",
|
||||||
"keyboard_folder": "clueboard/card",
|
|
||||||
"url": "",
|
|
||||||
"maintainer": "skullydazed",
|
"maintainer": "skullydazed",
|
||||||
"width": 10,
|
|
||||||
"height": 8,
|
"height": 8,
|
||||||
|
"width": 10,
|
||||||
|
"debounce": "20",
|
||||||
|
"diode_direction": "ROW2COL",
|
||||||
|
"features": {
|
||||||
|
"audio": true,
|
||||||
|
"backlight": true,
|
||||||
|
"bluetooth": false,
|
||||||
|
"bootmagic": false,
|
||||||
|
"command": true,
|
||||||
|
"console": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"lto": true,
|
||||||
|
"midi": false,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": false,
|
||||||
|
"rgblight": true,
|
||||||
|
"unicode": false
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["F1", " F7", " F6"],
|
||||||
|
"rows": ["F0", " F5", " F4", " B4"]
|
||||||
|
},
|
||||||
|
"rgblight": {
|
||||||
|
"brightness_steps": "17",
|
||||||
|
"hue_steps": "10",
|
||||||
|
"led_count": "4",
|
||||||
|
"pin": "E6",
|
||||||
|
"saturation_steps": "17"
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"pid": "0x2330",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
},
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_all": {
|
||||||
|
"key_count": 12,
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"ON/OFF", "x":0, "y":0}, {"label":"SAT+", "x":4, "y":0}, {"label":"BRIGHT+", "x":8, "y":0},
|
{ "label": "ON/OFF", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||||
{"label":"HUE-", "x":2, "y":1}, {"label":"HUE+", "x":6, "y":1},
|
{ "label": "SAT+", "matrix": [0, 1], "w": 1, "x": 4, "y": 0 },
|
||||||
{"label":"MODE", "x":0, "y":2}, {"label":"SAT-", "x":4, "y":2}, {"label":"BRIGHT-", "x":8, "y":2},
|
{ "label": "BRIGHT+", "matrix": [0, 2], "w": 1, "x": 8, "y": 0 },
|
||||||
{"label":"LAYER", "x":2, "y":4},
|
{ "label": "HUE-", "matrix": [1, 0], "w": 1, "x": 2, "y": 1 },
|
||||||
|
{ "label": "HUE+", "matrix": [1, 2], "w": 1, "x": 6, "y": 1 },
|
||||||
{"label":"MX1", "x":4, "y":6, "w":2, "h":2}, {"label":"MX2", "x":6, "y":6, "w":2, "h":2}, {"label":"MX3", "x":8, "y":6, "w":2, "h":2}
|
{ "label": "MODE", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 },
|
||||||
|
{ "label": "SAT-", "matrix": [2, 1], "w": 1, "x": 4, "y": 2 },
|
||||||
|
{ "label": "BRIGHT-", "matrix": [2, 2], "w": 1, "x": 8, "y": 2 },
|
||||||
|
{ "label": "LAYER", "matrix": [1, 1], "w": 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 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,18 +12,4 @@ MCU = atmega32u4
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = yes # Audio output on port C6
|
|
||||||
|
|
||||||
LTO_ENABLE = yes
|
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
"manufacturer": "Clueboard",
|
"manufacturer": "Clueboard",
|
||||||
"maintainer": "skullydazed"
|
"maintainer": "skullydazed",
|
||||||
|
"usb": {
|
||||||
|
"device_ver": "0x0001",
|
||||||
|
"vid": "0xC1ED"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ from milc import cli
|
||||||
|
|
||||||
import qmk.keymap
|
import qmk.keymap
|
||||||
import qmk.path
|
import qmk.path
|
||||||
|
from qmk.info_json_encoder import InfoJSONEncoder
|
||||||
|
|
||||||
|
|
||||||
@cli.argument('--no-cpp', arg_only=True, action='store_false', help='Do not use \'cpp\' on keymap.c')
|
@cli.argument('--no-cpp', arg_only=True, action='store_false', help='Do not use \'cpp\' on keymap.c')
|
||||||
|
@ -47,7 +48,7 @@ def c2json(cli):
|
||||||
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
|
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||||
if cli.args.output.exists():
|
if cli.args.output.exists():
|
||||||
cli.args.output.replace(cli.args.output.name + '.bak')
|
cli.args.output.replace(cli.args.output.name + '.bak')
|
||||||
cli.args.output.write_text(json.dumps(keymap_json))
|
cli.args.output.write_text(json.dumps(keymap_json, cls=InfoJSONEncoder))
|
||||||
|
|
||||||
if not cli.args.quiet:
|
if not cli.args.quiet:
|
||||||
cli.log.info('Wrote keymap to %s.', cli.args.output)
|
cli.log.info('Wrote keymap to %s.', cli.args.output)
|
||||||
|
|
|
@ -13,7 +13,7 @@ def eprint(*args, **kwargs):
|
||||||
print(*args, file=sys.stderr, **kwargs)
|
print(*args, file=sys.stderr, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
fileHeader = """\
|
file_header = """\
|
||||||
/* Copyright 2020 QMK
|
/* Copyright 2020 QMK
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -77,7 +77,7 @@ def check_diffs(input_defs, reference_defs):
|
||||||
|
|
||||||
|
|
||||||
def migrate_chconf_h(to_override, outfile):
|
def migrate_chconf_h(to_override, outfile):
|
||||||
print(fileHeader.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
print(file_header.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
||||||
|
|
||||||
for override in to_override:
|
for override in to_override:
|
||||||
print("#define %s %s" % (override[0], override[1]), file=outfile)
|
print("#define %s %s" % (override[0], override[1]), file=outfile)
|
||||||
|
@ -87,7 +87,7 @@ def migrate_chconf_h(to_override, outfile):
|
||||||
|
|
||||||
|
|
||||||
def migrate_halconf_h(to_override, outfile):
|
def migrate_halconf_h(to_override, outfile):
|
||||||
print(fileHeader.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
print(file_header.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
||||||
|
|
||||||
for override in to_override:
|
for override in to_override:
|
||||||
print("#define %s %s" % (override[0], override[1]), file=outfile)
|
print("#define %s %s" % (override[0], override[1]), file=outfile)
|
||||||
|
@ -97,7 +97,7 @@ def migrate_halconf_h(to_override, outfile):
|
||||||
|
|
||||||
|
|
||||||
def migrate_mcuconf_h(to_override, outfile):
|
def migrate_mcuconf_h(to_override, outfile):
|
||||||
print(fileHeader.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
print(file_header.format(cli.args.input.relative_to(QMK_FIRMWARE), cli.args.reference.relative_to(QMK_FIRMWARE)), file=outfile)
|
||||||
|
|
||||||
print("#include_next <mcuconf.h>\n", file=outfile)
|
print("#include_next <mcuconf.h>\n", file=outfile)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
from . import api
|
from . import api
|
||||||
|
from . import config_h
|
||||||
from . import docs
|
from . import docs
|
||||||
|
from . import info_json
|
||||||
|
from . import layouts
|
||||||
from . import rgb_breathe_table
|
from . import rgb_breathe_table
|
||||||
|
from . import rules_mk
|
||||||
|
|
|
@ -8,6 +8,7 @@ from milc import cli
|
||||||
|
|
||||||
from qmk.datetime import current_datetime
|
from qmk.datetime import current_datetime
|
||||||
from qmk.info import info_json
|
from qmk.info import info_json
|
||||||
|
from qmk.info_json_encoder import InfoJSONEncoder
|
||||||
from qmk.keyboard import list_keyboards
|
from qmk.keyboard import list_keyboards
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,15 +45,16 @@ def generate_api(cli):
|
||||||
if 'usb' in kb_all['keyboards'][keyboard_name]:
|
if 'usb' in kb_all['keyboards'][keyboard_name]:
|
||||||
usb = kb_all['keyboards'][keyboard_name]['usb']
|
usb = kb_all['keyboards'][keyboard_name]['usb']
|
||||||
|
|
||||||
if usb['vid'] not in usb_list['devices']:
|
if 'vid' in usb and usb['vid'] not in usb_list['devices']:
|
||||||
usb_list['devices'][usb['vid']] = {}
|
usb_list['devices'][usb['vid']] = {}
|
||||||
|
|
||||||
if usb['pid'] not in usb_list['devices'][usb['vid']]:
|
if 'pid' in usb and usb['pid'] not in usb_list['devices'][usb['vid']]:
|
||||||
usb_list['devices'][usb['vid']][usb['pid']] = {}
|
usb_list['devices'][usb['vid']][usb['pid']] = {}
|
||||||
|
|
||||||
usb_list['devices'][usb['vid']][usb['pid']][keyboard_name] = usb
|
if 'vid' in usb and 'pid' in usb:
|
||||||
|
usb_list['devices'][usb['vid']][usb['pid']][keyboard_name] = usb
|
||||||
|
|
||||||
# Write the global JSON files
|
# Write the global JSON files
|
||||||
keyboard_list.write_text(json.dumps({'last_updated': current_datetime(), 'keyboards': sorted(kb_all['keyboards'])}))
|
keyboard_list.write_text(json.dumps({'last_updated': current_datetime(), 'keyboards': sorted(kb_all['keyboards'])}, cls=InfoJSONEncoder))
|
||||||
keyboard_all.write_text(json.dumps(kb_all))
|
keyboard_all.write_text(json.dumps(kb_all, cls=InfoJSONEncoder))
|
||||||
usb_file.write_text(json.dumps(usb_list))
|
usb_file.write_text(json.dumps(usb_list, cls=InfoJSONEncoder))
|
||||||
|
|
|
@ -0,0 +1,277 @@
|
||||||
|
"""Used by the make system to generate info_config.h from info.json.
|
||||||
|
"""
|
||||||
|
from milc import cli
|
||||||
|
|
||||||
|
from qmk.constants import LED_INDICATORS
|
||||||
|
from qmk.decorators import automagic_keyboard, automagic_keymap
|
||||||
|
from qmk.info import info_json, rgblight_animations, rgblight_properties, rgblight_toggles
|
||||||
|
from qmk.path import is_keyboard, normpath
|
||||||
|
|
||||||
|
usb_properties = {
|
||||||
|
'vid': 'VENDOR_ID',
|
||||||
|
'pid': 'PRODUCT_ID',
|
||||||
|
'device_ver': 'DEVICE_VER',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def debounce(debounce):
|
||||||
|
"""Return the config.h lines that set debounce
|
||||||
|
"""
|
||||||
|
return """
|
||||||
|
#ifndef DEBOUNCE
|
||||||
|
# define DEBOUNCE %s
|
||||||
|
#endif // DEBOUNCE
|
||||||
|
""" % debounce
|
||||||
|
|
||||||
|
|
||||||
|
def diode_direction(diode_direction):
|
||||||
|
"""Return the config.h lines that set diode direction
|
||||||
|
"""
|
||||||
|
return """
|
||||||
|
#ifndef DIODE_DIRECTION
|
||||||
|
# define DIODE_DIRECTION %s
|
||||||
|
#endif // DIODE_DIRECTION
|
||||||
|
""" % diode_direction
|
||||||
|
|
||||||
|
|
||||||
|
def keyboard_name(keyboard_name):
|
||||||
|
"""Return the config.h lines that set the keyboard's name.
|
||||||
|
"""
|
||||||
|
return """
|
||||||
|
#ifndef DESCRIPTION
|
||||||
|
# define DESCRIPTION %s
|
||||||
|
#endif // DESCRIPTION
|
||||||
|
|
||||||
|
#ifndef PRODUCT
|
||||||
|
# define PRODUCT %s
|
||||||
|
#endif // PRODUCT
|
||||||
|
""" % (keyboard_name, keyboard_name)
|
||||||
|
|
||||||
|
|
||||||
|
def manufacturer(manufacturer):
|
||||||
|
"""Return the config.h lines that set the manufacturer.
|
||||||
|
"""
|
||||||
|
return """
|
||||||
|
#ifndef MANUFACTURER
|
||||||
|
# define MANUFACTURER %s
|
||||||
|
#endif // MANUFACTURER
|
||||||
|
""" % (manufacturer)
|
||||||
|
|
||||||
|
|
||||||
|
def direct_pins(direct_pins):
|
||||||
|
"""Return the config.h lines that set the direct pins.
|
||||||
|
"""
|
||||||
|
rows = []
|
||||||
|
|
||||||
|
for row in direct_pins:
|
||||||
|
cols = ','.join([col or 'NO_PIN' for col in row])
|
||||||
|
rows.append('{' + cols + '}')
|
||||||
|
|
||||||
|
col_count = len(direct_pins[0])
|
||||||
|
row_count = len(direct_pins)
|
||||||
|
|
||||||
|
return """
|
||||||
|
#ifndef MATRIX_COLS
|
||||||
|
# define MATRIX_COLS %s
|
||||||
|
#endif // MATRIX_COLS
|
||||||
|
|
||||||
|
#ifndef MATRIX_ROWS
|
||||||
|
# define MATRIX_ROWS %s
|
||||||
|
#endif // MATRIX_ROWS
|
||||||
|
|
||||||
|
#ifndef DIRECT_PINS
|
||||||
|
# define DIRECT_PINS {%s}
|
||||||
|
#endif // DIRECT_PINS
|
||||||
|
""" % (col_count, row_count, ','.join(rows))
|
||||||
|
|
||||||
|
|
||||||
|
def col_pins(col_pins):
|
||||||
|
"""Return the config.h lines that set the column pins.
|
||||||
|
"""
|
||||||
|
cols = ','.join(col_pins)
|
||||||
|
col_num = len(col_pins)
|
||||||
|
|
||||||
|
return """
|
||||||
|
#ifndef MATRIX_COLS
|
||||||
|
# define MATRIX_COLS %s
|
||||||
|
#endif // MATRIX_COLS
|
||||||
|
|
||||||
|
#ifndef MATRIX_COL_PINS
|
||||||
|
# define MATRIX_COL_PINS {%s}
|
||||||
|
#endif // MATRIX_COL_PINS
|
||||||
|
""" % (col_num, cols)
|
||||||
|
|
||||||
|
|
||||||
|
def row_pins(row_pins):
|
||||||
|
"""Return the config.h lines that set the row pins.
|
||||||
|
"""
|
||||||
|
rows = ','.join(row_pins)
|
||||||
|
row_num = len(row_pins)
|
||||||
|
|
||||||
|
return """
|
||||||
|
#ifndef MATRIX_ROWS
|
||||||
|
# define MATRIX_ROWS %s
|
||||||
|
#endif // MATRIX_ROWS
|
||||||
|
|
||||||
|
#ifndef MATRIX_ROW_PINS
|
||||||
|
# define MATRIX_ROW_PINS {%s}
|
||||||
|
#endif // MATRIX_ROW_PINS
|
||||||
|
""" % (row_num, rows)
|
||||||
|
|
||||||
|
|
||||||
|
def indicators(config):
|
||||||
|
"""Return the config.h lines that setup LED indicators.
|
||||||
|
"""
|
||||||
|
defines = []
|
||||||
|
|
||||||
|
for led, define in LED_INDICATORS.items():
|
||||||
|
if led in config:
|
||||||
|
defines.append('')
|
||||||
|
defines.append('#ifndef %s' % (define,))
|
||||||
|
defines.append('# define %s %s' % (define, config[led]))
|
||||||
|
defines.append('#endif // %s' % (define,))
|
||||||
|
|
||||||
|
return '\n'.join(defines)
|
||||||
|
|
||||||
|
|
||||||
|
def layout_aliases(layout_aliases):
|
||||||
|
"""Return the config.h lines that setup layout aliases.
|
||||||
|
"""
|
||||||
|
defines = []
|
||||||
|
|
||||||
|
for alias, layout in layout_aliases.items():
|
||||||
|
defines.append('')
|
||||||
|
defines.append('#ifndef %s' % (alias,))
|
||||||
|
defines.append('# define %s %s' % (alias, layout))
|
||||||
|
defines.append('#endif // %s' % (alias,))
|
||||||
|
|
||||||
|
return '\n'.join(defines)
|
||||||
|
|
||||||
|
|
||||||
|
def matrix_pins(matrix_pins):
|
||||||
|
"""Add the matrix config to the config.h.
|
||||||
|
"""
|
||||||
|
pins = []
|
||||||
|
|
||||||
|
if 'direct' in matrix_pins:
|
||||||
|
pins.append(direct_pins(matrix_pins['direct']))
|
||||||
|
|
||||||
|
if 'cols' in matrix_pins:
|
||||||
|
pins.append(col_pins(matrix_pins['cols']))
|
||||||
|
|
||||||
|
if 'rows' in matrix_pins:
|
||||||
|
pins.append(row_pins(matrix_pins['rows']))
|
||||||
|
|
||||||
|
return '\n'.join(pins)
|
||||||
|
|
||||||
|
|
||||||
|
def rgblight(config):
|
||||||
|
"""Return the config.h lines that setup rgblight.
|
||||||
|
"""
|
||||||
|
rgblight_config = []
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_properties.items():
|
||||||
|
if json_key in config:
|
||||||
|
rgblight_config.append('')
|
||||||
|
rgblight_config.append('#ifndef %s' % (config_key,))
|
||||||
|
rgblight_config.append('# define %s %s' % (config_key, config[json_key]))
|
||||||
|
rgblight_config.append('#endif // %s' % (config_key,))
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_toggles.items():
|
||||||
|
if config.get(json_key):
|
||||||
|
rgblight_config.append('')
|
||||||
|
rgblight_config.append('#ifndef %s' % (config_key,))
|
||||||
|
rgblight_config.append('# define %s' % (config_key,))
|
||||||
|
rgblight_config.append('#endif // %s' % (config_key,))
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_animations.items():
|
||||||
|
if 'animations' in config and config['animations'].get(json_key):
|
||||||
|
rgblight_config.append('')
|
||||||
|
rgblight_config.append('#ifndef %s' % (config_key,))
|
||||||
|
rgblight_config.append('# define %s' % (config_key,))
|
||||||
|
rgblight_config.append('#endif // %s' % (config_key,))
|
||||||
|
|
||||||
|
return '\n'.join(rgblight_config)
|
||||||
|
|
||||||
|
|
||||||
|
def usb_properties(usb_props):
|
||||||
|
"""Return the config.h lines that setup USB params.
|
||||||
|
"""
|
||||||
|
usb_lines = []
|
||||||
|
|
||||||
|
for info_name, config_name in usb_props.items():
|
||||||
|
if info_name in usb_props:
|
||||||
|
usb_lines.append('')
|
||||||
|
usb_lines.append('#ifndef ' + config_name)
|
||||||
|
usb_lines.append('# define %s %s' % (config_name, usb_props[info_name]))
|
||||||
|
usb_lines.append('#endif // ' + config_name)
|
||||||
|
|
||||||
|
return '\n'.join(usb_lines)
|
||||||
|
|
||||||
|
|
||||||
|
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
|
||||||
|
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
|
||||||
|
@cli.argument('-kb', '--keyboard', help='Keyboard to generate config.h for.')
|
||||||
|
@cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True)
|
||||||
|
@automagic_keyboard
|
||||||
|
@automagic_keymap
|
||||||
|
def generate_config_h(cli):
|
||||||
|
"""Generates the info_config.h file.
|
||||||
|
"""
|
||||||
|
# Determine our keyboard(s)
|
||||||
|
if not cli.config.generate_config_h.keyboard:
|
||||||
|
cli.log.error('Missing paramater: --keyboard')
|
||||||
|
cli.subcommands['info'].print_help()
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not is_keyboard(cli.config.generate_config_h.keyboard):
|
||||||
|
cli.log.error('Invalid keyboard: "%s"', cli.config.generate_config_h.keyboard)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Build the info.json file
|
||||||
|
kb_info_json = info_json(cli.config.generate_config_h.keyboard)
|
||||||
|
|
||||||
|
# Build the info_config.h file.
|
||||||
|
config_h_lines = ['/* This file was generated by `qmk generate-config-h`. Do not edit or copy.' ' */', '', '#pragma once']
|
||||||
|
|
||||||
|
if 'debounce' in kb_info_json:
|
||||||
|
config_h_lines.append(debounce(kb_info_json['debounce']))
|
||||||
|
|
||||||
|
if 'diode_direction' in kb_info_json:
|
||||||
|
config_h_lines.append(diode_direction(kb_info_json['diode_direction']))
|
||||||
|
|
||||||
|
if 'indicators' in kb_info_json:
|
||||||
|
config_h_lines.append(indicators(kb_info_json['indicators']))
|
||||||
|
|
||||||
|
if 'keyboard_name' in kb_info_json:
|
||||||
|
config_h_lines.append(keyboard_name(kb_info_json['keyboard_name']))
|
||||||
|
|
||||||
|
if 'layout_aliases' in kb_info_json:
|
||||||
|
config_h_lines.append(layout_aliases(kb_info_json['layout_aliases']))
|
||||||
|
|
||||||
|
if 'manufacturer' in kb_info_json:
|
||||||
|
config_h_lines.append(manufacturer(kb_info_json['manufacturer']))
|
||||||
|
|
||||||
|
if 'rgblight' in kb_info_json:
|
||||||
|
config_h_lines.append(rgblight(kb_info_json['rgblight']))
|
||||||
|
|
||||||
|
if 'matrix_pins' in kb_info_json:
|
||||||
|
config_h_lines.append(matrix_pins(kb_info_json['matrix_pins']))
|
||||||
|
|
||||||
|
if 'usb' in kb_info_json:
|
||||||
|
config_h_lines.append(usb_properties(kb_info_json['usb']))
|
||||||
|
|
||||||
|
# Show the results
|
||||||
|
config_h = '\n'.join(config_h_lines)
|
||||||
|
|
||||||
|
if cli.args.output:
|
||||||
|
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
if cli.args.output.exists():
|
||||||
|
cli.args.output.replace(cli.args.output.name + '.bak')
|
||||||
|
cli.args.output.write_text(config_h)
|
||||||
|
|
||||||
|
if not cli.args.quiet:
|
||||||
|
cli.log.info('Wrote info_config.h to %s.', cli.args.output)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(config_h)
|
|
@ -0,0 +1,49 @@
|
||||||
|
"""Keyboard information script.
|
||||||
|
|
||||||
|
Compile an info.json for a particular keyboard and pretty-print it.
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
|
||||||
|
from milc import cli
|
||||||
|
|
||||||
|
from qmk.info_json_encoder import InfoJSONEncoder
|
||||||
|
from qmk.decorators import automagic_keyboard, automagic_keymap
|
||||||
|
from qmk.info import info_json
|
||||||
|
from qmk.path import is_keyboard
|
||||||
|
|
||||||
|
|
||||||
|
@cli.argument('-kb', '--keyboard', help='Keyboard to show info for.')
|
||||||
|
@cli.argument('-km', '--keymap', help='Show the layers for a JSON keymap too.')
|
||||||
|
@cli.subcommand('Generate an info.json file for a keyboard.', hidden=False if cli.config.user.developer else True)
|
||||||
|
@automagic_keyboard
|
||||||
|
@automagic_keymap
|
||||||
|
def generate_info_json(cli):
|
||||||
|
"""Generate an info.json file for a keyboard
|
||||||
|
"""
|
||||||
|
# Determine our keyboard(s)
|
||||||
|
if not cli.config.generate_info_json.keyboard:
|
||||||
|
cli.log.error('Missing paramater: --keyboard')
|
||||||
|
cli.subcommands['info'].print_help()
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not is_keyboard(cli.config.generate_info_json.keyboard):
|
||||||
|
cli.log.error('Invalid keyboard: "%s"', cli.config.generate_info_json.keyboard)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Build the info.json file
|
||||||
|
kb_info_json = info_json(cli.config.generate_info_json.keyboard)
|
||||||
|
pared_down_json = {}
|
||||||
|
|
||||||
|
for key in ('manufacturer', 'maintainer', 'usb', 'keyboard_name', 'width', 'height', 'debounce', 'diode_direction', 'features', 'community_layouts', 'layout_aliases', 'matrix_pins', 'rgblight', 'url'):
|
||||||
|
if key in kb_info_json:
|
||||||
|
pared_down_json[key] = kb_info_json[key]
|
||||||
|
|
||||||
|
pared_down_json['layouts'] = {}
|
||||||
|
if 'layouts' in pared_down_json:
|
||||||
|
for layout_name, layout in kb_info_json['layouts'].items():
|
||||||
|
pared_down_json['layouts'][layout_name] = {}
|
||||||
|
pared_down_json['layouts'][layout_name]['key_count'] = layout.get('key_count', len(layout['layout']))
|
||||||
|
pared_down_json['layouts'][layout_name]['layout'] = layout['layout']
|
||||||
|
|
||||||
|
# Display the results
|
||||||
|
print(json.dumps(pared_down_json, indent=2, cls=InfoJSONEncoder))
|
|
@ -0,0 +1,93 @@
|
||||||
|
"""Used by the make system to generate layouts.h from info.json.
|
||||||
|
"""
|
||||||
|
from milc import cli
|
||||||
|
|
||||||
|
from qmk.constants import COL_LETTERS, ROW_LETTERS
|
||||||
|
from qmk.decorators import automagic_keyboard, automagic_keymap
|
||||||
|
from qmk.info import info_json
|
||||||
|
from qmk.path import is_keyboard, normpath
|
||||||
|
|
||||||
|
usb_properties = {
|
||||||
|
'vid': 'VENDOR_ID',
|
||||||
|
'pid': 'PRODUCT_ID',
|
||||||
|
'device_ver': 'DEVICE_VER',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
|
||||||
|
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
|
||||||
|
@cli.argument('-kb', '--keyboard', help='Keyboard to generate config.h for.')
|
||||||
|
@cli.subcommand('Used by the make system to generate layouts.h from info.json', hidden=True)
|
||||||
|
@automagic_keyboard
|
||||||
|
@automagic_keymap
|
||||||
|
def generate_layouts(cli):
|
||||||
|
"""Generates the layouts.h file.
|
||||||
|
"""
|
||||||
|
# Determine our keyboard(s)
|
||||||
|
if not cli.config.generate_layouts.keyboard:
|
||||||
|
cli.log.error('Missing paramater: --keyboard')
|
||||||
|
cli.subcommands['info'].print_help()
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not is_keyboard(cli.config.generate_layouts.keyboard):
|
||||||
|
cli.log.error('Invalid keyboard: "%s"', cli.config.generate_layouts.keyboard)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Build the info.json file
|
||||||
|
kb_info_json = info_json(cli.config.generate_layouts.keyboard)
|
||||||
|
|
||||||
|
# Build the layouts.h file.
|
||||||
|
layouts_h_lines = ['/* This file was generated by `qmk generate-layouts`. Do not edit or copy.' ' */', '', '#pragma once']
|
||||||
|
|
||||||
|
if 'direct' in kb_info_json['matrix_pins']:
|
||||||
|
col_num = len(kb_info_json['matrix_pins']['direct'][0])
|
||||||
|
row_num = len(kb_info_json['matrix_pins']['direct'])
|
||||||
|
elif 'cols' in kb_info_json['matrix_pins'] and 'rows' in kb_info_json['matrix_pins']:
|
||||||
|
col_num = len(kb_info_json['matrix_pins']['cols'])
|
||||||
|
row_num = len(kb_info_json['matrix_pins']['rows'])
|
||||||
|
else:
|
||||||
|
cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard)
|
||||||
|
return False
|
||||||
|
|
||||||
|
for layout_name in kb_info_json['layouts']:
|
||||||
|
if kb_info_json['layouts'][layout_name]['c_macro']:
|
||||||
|
continue
|
||||||
|
|
||||||
|
layout_keys = []
|
||||||
|
layout_matrix = [['KC_NO' for i in range(col_num)] for i in range(row_num)]
|
||||||
|
|
||||||
|
for i, key in enumerate(kb_info_json['layouts'][layout_name]['layout']):
|
||||||
|
row = key['matrix'][0]
|
||||||
|
col = key['matrix'][1]
|
||||||
|
identifier = 'k%s%s' % (ROW_LETTERS[row], COL_LETTERS[col])
|
||||||
|
|
||||||
|
try:
|
||||||
|
layout_matrix[row][col] = identifier
|
||||||
|
layout_keys.append(identifier)
|
||||||
|
except IndexError:
|
||||||
|
key_name = key.get('label', identifier)
|
||||||
|
cli.log.error('Matrix data out of bounds for layout %s at index %s (%s): %s, %s', layout_name, i, key_name, row, col)
|
||||||
|
return False
|
||||||
|
|
||||||
|
layouts_h_lines.append('')
|
||||||
|
layouts_h_lines.append('#define %s(%s) {\\' % (layout_name, ', '.join(layout_keys)))
|
||||||
|
|
||||||
|
rows = ', \\\n'.join(['\t {' + ', '.join(row) + '}' for row in layout_matrix])
|
||||||
|
rows += ' \\'
|
||||||
|
layouts_h_lines.append(rows)
|
||||||
|
layouts_h_lines.append('}')
|
||||||
|
|
||||||
|
# Show the results
|
||||||
|
layouts_h = '\n'.join(layouts_h_lines) + '\n'
|
||||||
|
|
||||||
|
if cli.args.output:
|
||||||
|
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
if cli.args.output.exists():
|
||||||
|
cli.args.output.replace(cli.args.output.name + '.bak')
|
||||||
|
cli.args.output.write_text(layouts_h)
|
||||||
|
|
||||||
|
if not cli.args.quiet:
|
||||||
|
cli.log.info('Wrote info_config.h to %s.', cli.args.output)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(layouts_h)
|
|
@ -0,0 +1,59 @@
|
||||||
|
"""Used by the make system to generate a rules.mk
|
||||||
|
"""
|
||||||
|
from milc import cli
|
||||||
|
|
||||||
|
from qmk.decorators import automagic_keyboard, automagic_keymap
|
||||||
|
from qmk.info import info_json
|
||||||
|
from qmk.path import is_keyboard, normpath
|
||||||
|
|
||||||
|
|
||||||
|
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
|
||||||
|
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
|
||||||
|
@cli.argument('-kb', '--keyboard', help='Keyboard to generate config.h for.')
|
||||||
|
@cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True)
|
||||||
|
@automagic_keyboard
|
||||||
|
@automagic_keymap
|
||||||
|
def generate_rules_mk(cli):
|
||||||
|
"""Generates a rules.mk file from info.json.
|
||||||
|
"""
|
||||||
|
# Determine our keyboard(s)
|
||||||
|
if not cli.config.generate_rules_mk.keyboard:
|
||||||
|
cli.log.error('Missing paramater: --keyboard')
|
||||||
|
cli.subcommands['info'].print_help()
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not is_keyboard(cli.config.generate_rules_mk.keyboard):
|
||||||
|
cli.log.error('Invalid keyboard: "%s"', cli.config.generate_rules_mk.keyboard)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Build the info.json file
|
||||||
|
kb_info_json = info_json(cli.config.generate_rules_mk.keyboard)
|
||||||
|
rules_mk_lines = ['# This file was generated by `qmk generate-rules-mk`. Do not edit or copy.', '']
|
||||||
|
|
||||||
|
# Find features that should be enabled
|
||||||
|
if 'features' in kb_info_json:
|
||||||
|
for feature, enabled in kb_info_json['features'].items():
|
||||||
|
feature = feature.upper()
|
||||||
|
enabled = 'yes' if enabled else 'no'
|
||||||
|
rules_mk_lines.append(f'{feature}_ENABLE := {enabled}')
|
||||||
|
|
||||||
|
# Add community layouts
|
||||||
|
if 'community_layouts' in kb_info_json:
|
||||||
|
rules_mk_lines.append(f'LAYOUTS = {" ".join(kb_info_json["community_layouts"])}')
|
||||||
|
|
||||||
|
# Show the results
|
||||||
|
rules_mk = '\n'.join(rules_mk_lines) + '\n'
|
||||||
|
|
||||||
|
if cli.args.output:
|
||||||
|
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
if cli.args.output.exists():
|
||||||
|
cli.args.output.replace(cli.args.output.name + '.bak')
|
||||||
|
cli.args.output.write_text(rules_mk)
|
||||||
|
|
||||||
|
if cli.args.quiet:
|
||||||
|
print(cli.args.output)
|
||||||
|
else:
|
||||||
|
cli.log.info('Wrote info_config.h to %s.', cli.args.output)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(rules_mk)
|
|
@ -7,6 +7,8 @@ import platform
|
||||||
|
|
||||||
from milc import cli
|
from milc import cli
|
||||||
|
|
||||||
|
from qmk.info_json_encoder import InfoJSONEncoder
|
||||||
|
from qmk.constants import COL_LETTERS, ROW_LETTERS
|
||||||
from qmk.decorators import automagic_keyboard, automagic_keymap
|
from qmk.decorators import automagic_keyboard, automagic_keymap
|
||||||
from qmk.keyboard import render_layouts, render_layout
|
from qmk.keyboard import render_layouts, render_layout
|
||||||
from qmk.keymap import locate_keymap
|
from qmk.keymap import locate_keymap
|
||||||
|
@ -15,9 +17,6 @@ from qmk.path import is_keyboard
|
||||||
|
|
||||||
platform_id = platform.platform().lower()
|
platform_id = platform.platform().lower()
|
||||||
|
|
||||||
ROW_LETTERS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop'
|
|
||||||
COL_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijilmnopqrstuvwxyz'
|
|
||||||
|
|
||||||
|
|
||||||
def show_keymap(kb_info_json, title_caps=True):
|
def show_keymap(kb_info_json, title_caps=True):
|
||||||
"""Render the keymap in ascii art.
|
"""Render the keymap in ascii art.
|
||||||
|
@ -149,7 +148,7 @@ def info(cli):
|
||||||
|
|
||||||
# Output in the requested format
|
# Output in the requested format
|
||||||
if cli.args.format == 'json':
|
if cli.args.format == 'json':
|
||||||
print(json.dumps(kb_info_json))
|
print(json.dumps(kb_info_json, cls=InfoJSONEncoder))
|
||||||
elif cli.args.format == 'text':
|
elif cli.args.format == 'text':
|
||||||
print_text_output(kb_info_json)
|
print_text_output(kb_info_json)
|
||||||
elif cli.args.format == 'friendly':
|
elif cli.args.format == 'friendly':
|
||||||
|
|
|
@ -3,25 +3,12 @@
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from decimal import Decimal
|
|
||||||
from collections import OrderedDict
|
|
||||||
|
|
||||||
from milc import cli
|
from milc import cli
|
||||||
from kle2xy import KLE2xy
|
from kle2xy import KLE2xy
|
||||||
|
|
||||||
from qmk.converter import kle2qmk
|
from qmk.converter import kle2qmk
|
||||||
|
from qmk.info_json_encoder import InfoJSONEncoder
|
||||||
|
|
||||||
class CustomJSONEncoder(json.JSONEncoder):
|
|
||||||
def default(self, obj):
|
|
||||||
try:
|
|
||||||
if isinstance(obj, Decimal):
|
|
||||||
if obj % 2 in (Decimal(0), Decimal(1)):
|
|
||||||
return int(obj)
|
|
||||||
return float(obj)
|
|
||||||
except TypeError:
|
|
||||||
pass
|
|
||||||
return json.JSONEncoder.default(self, obj)
|
|
||||||
|
|
||||||
|
|
||||||
@cli.argument('filename', help='The KLE raw txt to convert')
|
@cli.argument('filename', help='The KLE raw txt to convert')
|
||||||
|
@ -52,24 +39,22 @@ def kle2json(cli):
|
||||||
cli.log.error('Could not parse KLE raw data: %s', raw_code)
|
cli.log.error('Could not parse KLE raw data: %s', raw_code)
|
||||||
cli.log.exception(e)
|
cli.log.exception(e)
|
||||||
return False
|
return False
|
||||||
keyboard = OrderedDict(
|
keyboard = {
|
||||||
keyboard_name=kle.name,
|
'keyboard_name': kle.name,
|
||||||
url='',
|
'url': '',
|
||||||
maintainer='qmk',
|
'maintainer': 'qmk',
|
||||||
width=kle.columns,
|
'width': kle.columns,
|
||||||
height=kle.rows,
|
'height': kle.rows,
|
||||||
layouts={'LAYOUT': {
|
'layouts': {
|
||||||
'layout': 'LAYOUT_JSON_HERE'
|
'LAYOUT': {
|
||||||
}},
|
'layout': kle2qmk(kle)
|
||||||
)
|
}
|
||||||
# Initialize keyboard with json encoded from ordered dict
|
},
|
||||||
keyboard = json.dumps(keyboard, indent=4, separators=(', ', ': '), sort_keys=False, cls=CustomJSONEncoder)
|
}
|
||||||
# Initialize layout with kle2qmk from converter module
|
|
||||||
layout = json.dumps(kle2qmk(kle), separators=(', ', ':'), cls=CustomJSONEncoder)
|
|
||||||
# Replace layout in keyboard json
|
|
||||||
keyboard = keyboard.replace('"LAYOUT_JSON_HERE"', layout)
|
|
||||||
# Write our info.json
|
# Write our info.json
|
||||||
file = open(out_path / "info.json", "w")
|
keyboard = json.dumps(keyboard, indent=4, separators=(', ', ': '), sort_keys=False, cls=InfoJSONEncoder)
|
||||||
file.write(keyboard)
|
info_json_file = out_path / 'info.json'
|
||||||
file.close()
|
|
||||||
|
info_json_file.write_text(keyboard)
|
||||||
cli.log.info('Wrote out {fg_cyan}%s/info.json', out_path)
|
cli.log.info('Wrote out {fg_cyan}%s/info.json', out_path)
|
||||||
|
|
|
@ -17,3 +17,14 @@ VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
|
||||||
DATE_FORMAT = '%Y-%m-%d'
|
DATE_FORMAT = '%Y-%m-%d'
|
||||||
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z'
|
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z'
|
||||||
TIME_FORMAT = '%H:%M:%S'
|
TIME_FORMAT = '%H:%M:%S'
|
||||||
|
|
||||||
|
# Used when generating matrix locations
|
||||||
|
COL_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijilmnopqrstuvwxyz'
|
||||||
|
ROW_LETTERS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop'
|
||||||
|
|
||||||
|
# Mapping between info.json and config.h keys
|
||||||
|
LED_INDICATORS = {
|
||||||
|
'caps_lock': 'LED_CAPS_LOCK_PIN',
|
||||||
|
'num_lock': 'LED_NUM_LOCK_PIN',
|
||||||
|
'scrol_lock': 'LED_SCROLL_LOCK_PIN'
|
||||||
|
}
|
||||||
|
|
|
@ -6,13 +6,45 @@ from pathlib import Path
|
||||||
|
|
||||||
from milc import cli
|
from milc import cli
|
||||||
|
|
||||||
from qmk.constants import CHIBIOS_PROCESSORS, LUFA_PROCESSORS, VUSB_PROCESSORS
|
from qmk.constants import CHIBIOS_PROCESSORS, LUFA_PROCESSORS, VUSB_PROCESSORS, LED_INDICATORS
|
||||||
from qmk.c_parse import find_layouts
|
from qmk.c_parse import find_layouts
|
||||||
from qmk.keyboard import config_h, rules_mk
|
from qmk.keyboard import config_h, rules_mk
|
||||||
from qmk.keymap import list_keymaps
|
from qmk.keymap import list_keymaps
|
||||||
from qmk.makefile import parse_rules_mk_file
|
from qmk.makefile import parse_rules_mk_file
|
||||||
from qmk.math import compute
|
from qmk.math import compute
|
||||||
|
|
||||||
|
rgblight_properties = {
|
||||||
|
'led_count': 'RGBLED_NUM',
|
||||||
|
'pin': 'RGB_DI_PIN',
|
||||||
|
'split_count': 'RGBLED_SPLIT',
|
||||||
|
'max_brightness': 'RGBLIGHT_LIMIT_VAL',
|
||||||
|
'hue_steps': 'RGBLIGHT_HUE_STEP',
|
||||||
|
'saturation_steps': 'RGBLIGHT_SAT_STEP',
|
||||||
|
'brightness_steps': 'RGBLIGHT_VAL_STEP'
|
||||||
|
}
|
||||||
|
|
||||||
|
rgblight_toggles = {
|
||||||
|
'sleep': 'RGBLIGHT_SLEEP',
|
||||||
|
'split': 'RGBLIGHT_SPLIT',
|
||||||
|
}
|
||||||
|
|
||||||
|
rgblight_animations = {
|
||||||
|
'all': 'RGBLIGHT_ANIMATIONS',
|
||||||
|
'alternating': 'RGBLIGHT_EFFECT_ALTERNATING',
|
||||||
|
'breathing': 'RGBLIGHT_EFFECT_BREATHING',
|
||||||
|
'christmas': 'RGBLIGHT_EFFECT_CHRISTMAS',
|
||||||
|
'knight': 'RGBLIGHT_EFFECT_KNIGHT',
|
||||||
|
'rainbow_mood': 'RGBLIGHT_EFFECT_RAINBOW_MOOD',
|
||||||
|
'rainbow_swirl': 'RGBLIGHT_EFFECT_RAINBOW_SWIRL',
|
||||||
|
'rgb_test': 'RGBLIGHT_EFFECT_RGB_TEST',
|
||||||
|
'snake': 'RGBLIGHT_EFFECT_SNAKE',
|
||||||
|
'static_gradient': 'RGBLIGHT_EFFECT_STATIC_GRADIENT',
|
||||||
|
'twinkle': 'RGBLIGHT_EFFECT_TWINKLE'
|
||||||
|
}
|
||||||
|
|
||||||
|
true_values = ['1', 'on', 'yes']
|
||||||
|
false_values = ['0', 'off', 'no']
|
||||||
|
|
||||||
|
|
||||||
def info_json(keyboard):
|
def info_json(keyboard):
|
||||||
"""Generate the info.json data for a specific keyboard.
|
"""Generate the info.json data for a specific keyboard.
|
||||||
|
@ -38,8 +70,9 @@ def info_json(keyboard):
|
||||||
info_data['keymaps'][keymap.name] = {'url': f'https://raw.githubusercontent.com/qmk/qmk_firmware/master/{keymap}/keymap.json'}
|
info_data['keymaps'][keymap.name] = {'url': f'https://raw.githubusercontent.com/qmk/qmk_firmware/master/{keymap}/keymap.json'}
|
||||||
|
|
||||||
# Populate layout data
|
# Populate layout data
|
||||||
for layout_name, layout_json in _find_all_layouts(info_data, keyboard, rules).items():
|
for layout_name, layout_json in _find_all_layouts(info_data, keyboard).items():
|
||||||
if not layout_name.startswith('LAYOUT_kc'):
|
if not layout_name.startswith('LAYOUT_kc'):
|
||||||
|
layout_json['c_macro'] = True
|
||||||
info_data['layouts'][layout_name] = layout_json
|
info_data['layouts'][layout_name] = layout_json
|
||||||
|
|
||||||
# Merge in the data from info.json, config.h, and rules.mk
|
# Merge in the data from info.json, config.h, and rules.mk
|
||||||
|
@ -47,34 +80,179 @@ def info_json(keyboard):
|
||||||
info_data = _extract_config_h(info_data)
|
info_data = _extract_config_h(info_data)
|
||||||
info_data = _extract_rules_mk(info_data)
|
info_data = _extract_rules_mk(info_data)
|
||||||
|
|
||||||
|
# Make sure we have at least one layout
|
||||||
|
if not info_data.get('layouts'):
|
||||||
|
_log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.')
|
||||||
|
|
||||||
|
# Make sure we supply layout macros for the community layouts we claim to support
|
||||||
|
# FIXME(skullydazed): This should be populated into info.json and read from there instead
|
||||||
|
if 'LAYOUTS' in rules and info_data.get('layouts'):
|
||||||
|
# Match these up against the supplied layouts
|
||||||
|
supported_layouts = rules['LAYOUTS'].strip().split()
|
||||||
|
for layout_name in sorted(info_data['layouts']):
|
||||||
|
layout_name = layout_name[7:]
|
||||||
|
|
||||||
|
if layout_name in supported_layouts:
|
||||||
|
supported_layouts.remove(layout_name)
|
||||||
|
|
||||||
|
if supported_layouts:
|
||||||
|
for supported_layout in supported_layouts:
|
||||||
|
_log_error(info_data, 'Claims to support community layout %s but no LAYOUT_%s() macro found' % (supported_layout, supported_layout))
|
||||||
|
|
||||||
return info_data
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
def _extract_config_h(info_data):
|
def _extract_debounce(info_data, config_c):
|
||||||
"""Pull some keyboard information from existing rules.mk files
|
"""Handle debounce.
|
||||||
|
"""
|
||||||
|
if 'debounce' in info_data and 'DEBOUNCE' in config_c:
|
||||||
|
_log_warning(info_data, 'Debounce is specified in both info.json and config.h, the config.h value wins.')
|
||||||
|
|
||||||
|
if 'DEBOUNCE' in config_c:
|
||||||
|
info_data['debounce'] = config_c.get('DEBOUNCE')
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_diode_direction(info_data, config_c):
|
||||||
|
"""Handle the diode direction.
|
||||||
|
"""
|
||||||
|
if 'diode_direction' in info_data and 'DIODE_DIRECTION' in config_c:
|
||||||
|
_log_warning(info_data, 'Diode direction is specified in both info.json and config.h, the config.h value wins.')
|
||||||
|
|
||||||
|
if 'DIODE_DIRECTION' in config_c:
|
||||||
|
info_data['diode_direction'] = config_c.get('DIODE_DIRECTION')
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_indicators(info_data, config_c):
|
||||||
|
"""Find the LED indicator information.
|
||||||
|
"""
|
||||||
|
for json_key, config_key in LED_INDICATORS.items():
|
||||||
|
if json_key in info_data.get('indicators', []) and config_key in config_c:
|
||||||
|
_log_warning(info_data, f'Indicator {json_key} is specified in both info.json and config.h, the config.h value wins.')
|
||||||
|
|
||||||
|
if config_key in config_c:
|
||||||
|
info_data['indicators'][json_key] = config_c.get(config_key)
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_community_layouts(info_data, rules):
|
||||||
|
"""Find the community layouts in rules.mk.
|
||||||
|
"""
|
||||||
|
community_layouts = rules['LAYOUTS'].split() if 'LAYOUTS' in rules else []
|
||||||
|
|
||||||
|
if 'community_layouts' in info_data:
|
||||||
|
for layout in community_layouts:
|
||||||
|
if layout not in info_data['community_layouts']:
|
||||||
|
community_layouts.append(layout)
|
||||||
|
|
||||||
|
else:
|
||||||
|
info_data['community_layouts'] = community_layouts
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_features(info_data, rules):
|
||||||
|
"""Find all the features enabled in rules.mk.
|
||||||
|
"""
|
||||||
|
for key, value in rules.items():
|
||||||
|
if key.endswith('_ENABLE'):
|
||||||
|
key = '_'.join(key.split('_')[:-1]).lower()
|
||||||
|
value = True if value in true_values else False if value in false_values else value
|
||||||
|
|
||||||
|
if 'config_h_features' not in info_data:
|
||||||
|
info_data['config_h_features'] = {}
|
||||||
|
|
||||||
|
if 'features' not in info_data:
|
||||||
|
info_data['features'] = {}
|
||||||
|
|
||||||
|
if key in info_data['features']:
|
||||||
|
_log_warning(info_data, 'Feature %s is specified in both info.json and rules.mk, the rules.mk value wins.' % (key,))
|
||||||
|
|
||||||
|
info_data['features'][key] = value
|
||||||
|
info_data['config_h_features'][key] = value
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_rgblight(info_data, config_c):
|
||||||
|
"""Handle the rgblight configuration
|
||||||
|
"""
|
||||||
|
rgblight = info_data.get('rgblight', {})
|
||||||
|
animations = rgblight.get('animations', {})
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_properties.items():
|
||||||
|
if config_key in config_c:
|
||||||
|
if json_key in rgblight:
|
||||||
|
_log_warning(info_data, 'RGB Light: %s is specified in both info.json and config.h, the config.h value wins.' % (json_key,))
|
||||||
|
|
||||||
|
rgblight[json_key] = config_c[config_key]
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_toggles.items():
|
||||||
|
if config_key in config_c:
|
||||||
|
if json_key in rgblight:
|
||||||
|
_log_warning(info_data, 'RGB Light: %s is specified in both info.json and config.h, the config.h value wins.', json_key)
|
||||||
|
|
||||||
|
rgblight[json_key] = config_c[config_key]
|
||||||
|
|
||||||
|
for json_key, config_key in rgblight_animations.items():
|
||||||
|
if config_key in config_c:
|
||||||
|
if json_key in animations:
|
||||||
|
_log_warning(info_data, 'RGB Light: animations: %s is specified in both info.json and config.h, the config.h value wins.' % (json_key,))
|
||||||
|
|
||||||
|
animations[json_key] = config_c[config_key]
|
||||||
|
|
||||||
|
if animations:
|
||||||
|
rgblight['animations'] = animations
|
||||||
|
|
||||||
|
if rgblight:
|
||||||
|
info_data['rgblight'] = rgblight
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_matrix_info(info_data, config_c):
|
||||||
|
"""Populate the matrix information.
|
||||||
"""
|
"""
|
||||||
config_c = config_h(info_data['keyboard_folder'])
|
|
||||||
row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip()
|
row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip()
|
||||||
col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip()
|
col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip()
|
||||||
direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1]
|
direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1]
|
||||||
|
|
||||||
info_data['diode_direction'] = config_c.get('DIODE_DIRECTION')
|
if 'MATRIX_ROWS' in config_c and 'MATRIX_COLS' in config_c:
|
||||||
info_data['matrix_size'] = {
|
if 'matrix_size' in info_data:
|
||||||
'rows': compute(config_c.get('MATRIX_ROWS', '0')),
|
_log_warning(info_data, 'Matrix size is specified in both info.json and config.h, the config.h values win.')
|
||||||
'cols': compute(config_c.get('MATRIX_COLS', '0')),
|
|
||||||
}
|
|
||||||
info_data['matrix_pins'] = {}
|
|
||||||
|
|
||||||
if row_pins:
|
info_data['matrix_size'] = {
|
||||||
info_data['matrix_pins']['rows'] = row_pins.split(',')
|
'rows': compute(config_c.get('MATRIX_ROWS', '0')),
|
||||||
if col_pins:
|
'cols': compute(config_c.get('MATRIX_COLS', '0')),
|
||||||
info_data['matrix_pins']['cols'] = col_pins.split(',')
|
}
|
||||||
|
|
||||||
|
if row_pins and col_pins:
|
||||||
|
if 'matrix_pins' in info_data:
|
||||||
|
_log_warning(info_data, 'Matrix pins are specified in both info.json and config.h, the config.h values win.')
|
||||||
|
|
||||||
|
info_data['matrix_pins'] = {}
|
||||||
|
|
||||||
|
if row_pins:
|
||||||
|
info_data['matrix_pins']['rows'] = row_pins.split(',')
|
||||||
|
|
||||||
|
if col_pins:
|
||||||
|
info_data['matrix_pins']['cols'] = col_pins.split(',')
|
||||||
|
|
||||||
if direct_pins:
|
if direct_pins:
|
||||||
|
if 'matrix_pins' in info_data:
|
||||||
|
_log_warning(info_data, 'Direct pins are specified in both info.json and config.h, the config.h values win.')
|
||||||
|
|
||||||
|
info_data['matrix_pins'] = {}
|
||||||
direct_pin_array = []
|
direct_pin_array = []
|
||||||
|
|
||||||
for row in direct_pins.split('},{'):
|
for row in direct_pins.split('},{'):
|
||||||
if row.startswith('{'):
|
if row.startswith('{'):
|
||||||
row = row[1:]
|
row = row[1:]
|
||||||
|
|
||||||
if row.endswith('}'):
|
if row.endswith('}'):
|
||||||
row = row[:-1]
|
row = row[:-1]
|
||||||
|
|
||||||
|
@ -86,15 +264,43 @@ def _extract_config_h(info_data):
|
||||||
|
|
||||||
direct_pin_array[-1].append(pin)
|
direct_pin_array[-1].append(pin)
|
||||||
|
|
||||||
info_data['matrix_pins']['direct'] = direct_pin_array
|
info_data['matrix_pins']['direct'] = direct_pin_array
|
||||||
|
|
||||||
info_data['usb'] = {
|
return info_data
|
||||||
'vid': config_c.get('VENDOR_ID'),
|
|
||||||
'pid': config_c.get('PRODUCT_ID'),
|
|
||||||
'device_ver': config_c.get('DEVICE_VER'),
|
def _extract_usb_info(info_data, config_c):
|
||||||
'manufacturer': config_c.get('MANUFACTURER'),
|
"""Populate the USB information.
|
||||||
'product': config_c.get('PRODUCT'),
|
"""
|
||||||
}
|
usb_properties = {'vid': 'VENDOR_ID', 'pid': 'PRODUCT_ID', 'device_ver': 'DEVICE_VER'}
|
||||||
|
|
||||||
|
if 'usb' not in info_data:
|
||||||
|
info_data['usb'] = {}
|
||||||
|
|
||||||
|
for info_name, config_name in usb_properties.items():
|
||||||
|
if config_name in config_c:
|
||||||
|
if info_name in info_data['usb']:
|
||||||
|
_log_warning(info_data, '%s in config.h is overwriting usb.%s in info.json' % (config_name, info_name))
|
||||||
|
|
||||||
|
info_data['usb'][info_name] = config_c[config_name]
|
||||||
|
|
||||||
|
elif info_name not in info_data['usb']:
|
||||||
|
_log_error(info_data, '%s not specified in config.h, and %s not specified in info.json. One is required.' % (config_name, info_name))
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_config_h(info_data):
|
||||||
|
"""Pull some keyboard information from existing config.h files
|
||||||
|
"""
|
||||||
|
config_c = config_h(info_data['keyboard_folder'])
|
||||||
|
|
||||||
|
_extract_debounce(info_data, config_c)
|
||||||
|
_extract_diode_direction(info_data, config_c)
|
||||||
|
_extract_indicators(info_data, config_c)
|
||||||
|
_extract_matrix_info(info_data, config_c)
|
||||||
|
_extract_usb_info(info_data, config_c)
|
||||||
|
_extract_rgblight(info_data, config_c)
|
||||||
|
|
||||||
return info_data
|
return info_data
|
||||||
|
|
||||||
|
@ -106,16 +312,52 @@ def _extract_rules_mk(info_data):
|
||||||
mcu = rules.get('MCU')
|
mcu = rules.get('MCU')
|
||||||
|
|
||||||
if mcu in CHIBIOS_PROCESSORS:
|
if mcu in CHIBIOS_PROCESSORS:
|
||||||
return arm_processor_rules(info_data, rules)
|
arm_processor_rules(info_data, rules)
|
||||||
|
|
||||||
elif mcu in LUFA_PROCESSORS + VUSB_PROCESSORS:
|
elif mcu in LUFA_PROCESSORS + VUSB_PROCESSORS:
|
||||||
return avr_processor_rules(info_data, rules)
|
avr_processor_rules(info_data, rules)
|
||||||
|
|
||||||
msg = "Unknown MCU: " + str(mcu)
|
else:
|
||||||
|
cli.log.warning("%s: Unknown MCU: %s" % (info_data['keyboard_folder'], mcu))
|
||||||
|
unknown_processor_rules(info_data, rules)
|
||||||
|
|
||||||
_log_warning(info_data, msg)
|
_extract_community_layouts(info_data, rules)
|
||||||
|
_extract_features(info_data, rules)
|
||||||
|
|
||||||
return unknown_processor_rules(info_data, rules)
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
|
def _merge_layouts(info_data, new_info_data):
|
||||||
|
"""Merge new_info_data into info_data in an intelligent way.
|
||||||
|
"""
|
||||||
|
for layout_name, layout_json in new_info_data['layouts'].items():
|
||||||
|
if layout_name in info_data['layouts']:
|
||||||
|
# Pull in layouts we have a macro for
|
||||||
|
if len(info_data['layouts'][layout_name]['layout']) != len(layout_json['layout']):
|
||||||
|
msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s'
|
||||||
|
_log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout_json['layout']), layout_name, len(info_data['layouts'][layout_name]['layout'])))
|
||||||
|
else:
|
||||||
|
for i, key in enumerate(info_data['layouts'][layout_name]['layout']):
|
||||||
|
key.update(layout_json['layout'][i])
|
||||||
|
else:
|
||||||
|
# Pull in layouts that have matrix data
|
||||||
|
missing_matrix = False
|
||||||
|
for key in layout_json['layout']:
|
||||||
|
if 'matrix' not in key:
|
||||||
|
missing_matrix = True
|
||||||
|
|
||||||
|
if not missing_matrix:
|
||||||
|
if layout_name in info_data['layouts']:
|
||||||
|
# Update an existing layout with new data
|
||||||
|
for i, key in enumerate(info_data['layouts'][layout_name]['layout']):
|
||||||
|
key.update(layout_json['layout'][i])
|
||||||
|
|
||||||
|
else:
|
||||||
|
# Copy in the new layout wholesale
|
||||||
|
layout_json['c_macro'] = False
|
||||||
|
info_data['layouts'][layout_name] = layout_json
|
||||||
|
|
||||||
|
return info_data
|
||||||
|
|
||||||
|
|
||||||
def _search_keyboard_h(path):
|
def _search_keyboard_h(path):
|
||||||
|
@ -131,34 +373,21 @@ def _search_keyboard_h(path):
|
||||||
return layouts
|
return layouts
|
||||||
|
|
||||||
|
|
||||||
def _find_all_layouts(info_data, keyboard, rules):
|
def _find_all_layouts(info_data, keyboard):
|
||||||
"""Looks for layout macros associated with this keyboard.
|
"""Looks for layout macros associated with this keyboard.
|
||||||
"""
|
"""
|
||||||
layouts = _search_keyboard_h(Path(keyboard))
|
layouts = _search_keyboard_h(Path(keyboard))
|
||||||
|
|
||||||
if not layouts:
|
if not layouts:
|
||||||
# If we didn't find any layouts above we widen our search. This is error
|
# If we don't find any layouts from info.json or keyboard.h we widen our search. This is error prone which is why we want to encourage people to follow the standard above.
|
||||||
# prone which is why we want to encourage people to follow the standard above.
|
info_data['parse_warnings'].append('%s: Falling back to searching for KEYMAP/LAYOUT macros.' % (keyboard))
|
||||||
_log_warning(info_data, 'Falling back to searching for KEYMAP/LAYOUT macros.')
|
|
||||||
for file in glob('keyboards/%s/*.h' % keyboard):
|
for file in glob('keyboards/%s/*.h' % keyboard):
|
||||||
if file.endswith('.h'):
|
if file.endswith('.h'):
|
||||||
these_layouts = find_layouts(file)
|
these_layouts = find_layouts(file)
|
||||||
if these_layouts:
|
if these_layouts:
|
||||||
layouts.update(these_layouts)
|
layouts.update(these_layouts)
|
||||||
|
|
||||||
if 'LAYOUTS' in rules:
|
|
||||||
# Match these up against the supplied layouts
|
|
||||||
supported_layouts = rules['LAYOUTS'].strip().split()
|
|
||||||
for layout_name in sorted(layouts):
|
|
||||||
if not layout_name.startswith('LAYOUT_'):
|
|
||||||
continue
|
|
||||||
layout_name = layout_name[7:]
|
|
||||||
if layout_name in supported_layouts:
|
|
||||||
supported_layouts.remove(layout_name)
|
|
||||||
|
|
||||||
if supported_layouts:
|
|
||||||
_log_error(info_data, 'Missing LAYOUT() macro for %s' % (', '.join(supported_layouts)))
|
|
||||||
|
|
||||||
return layouts
|
return layouts
|
||||||
|
|
||||||
|
|
||||||
|
@ -231,32 +460,40 @@ def merge_info_jsons(keyboard, info_data):
|
||||||
for info_file in find_info_json(keyboard):
|
for info_file in find_info_json(keyboard):
|
||||||
# Load and validate the JSON data
|
# Load and validate the JSON data
|
||||||
try:
|
try:
|
||||||
with info_file.open('r') as info_fd:
|
new_info_data = json.load(info_file.open('r'))
|
||||||
new_info_data = json.load(info_fd)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_log_error(info_data, "Invalid JSON in file %s: %s: %s" % (str(info_file), e.__class__.__name__, e))
|
_log_error(info_data, "Invalid JSON in file %s: %s: %s" % (str(info_file), e.__class__.__name__, e))
|
||||||
continue
|
new_info_data = {}
|
||||||
|
|
||||||
if not isinstance(new_info_data, dict):
|
if not isinstance(new_info_data, dict):
|
||||||
_log_error(info_data, "Invalid file %s, root object should be a dictionary." % (str(info_file),))
|
_log_error(info_data, "Invalid file %s, root object should be a dictionary." % (str(info_file),))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Copy whitelisted keys into `info_data`
|
# Copy whitelisted keys into `info_data`
|
||||||
for key in ('keyboard_name', 'manufacturer', 'identifier', 'url', 'maintainer', 'processor', 'bootloader', 'width', 'height'):
|
for key in ('debounce', 'diode_direction', 'indicators', 'keyboard_name', 'manufacturer', 'identifier', 'url', 'maintainer', 'processor', 'bootloader', 'width', 'height'):
|
||||||
if key in new_info_data:
|
if key in new_info_data:
|
||||||
info_data[key] = new_info_data[key]
|
info_data[key] = new_info_data[key]
|
||||||
|
|
||||||
# Merge the layouts in
|
# Deep merge certain keys
|
||||||
|
# FIXME(skullydazed/anyone): this should be generalized more so that we can inteligently merge more than one level deep. It would be nice if we could filter on valid keys too. That may have to wait for a future where we use openapi or something.
|
||||||
|
for key in ('features', 'layout_aliases', 'matrix_pins', 'rgblight', 'usb'):
|
||||||
|
if key in new_info_data:
|
||||||
|
if key not in info_data:
|
||||||
|
info_data[key] = {}
|
||||||
|
|
||||||
|
info_data[key].update(new_info_data[key])
|
||||||
|
|
||||||
|
# Merge the layouts
|
||||||
|
if 'community_layouts' in new_info_data:
|
||||||
|
if 'community_layouts' in info_data:
|
||||||
|
for layout in new_info_data['community_layouts']:
|
||||||
|
if layout not in info_data['community_layouts']:
|
||||||
|
info_data['community_layouts'].append(layout)
|
||||||
|
else:
|
||||||
|
info_data['community_layouts'] = new_info_data['community_layouts']
|
||||||
|
|
||||||
if 'layouts' in new_info_data:
|
if 'layouts' in new_info_data:
|
||||||
for layout_name, json_layout in new_info_data['layouts'].items():
|
_merge_layouts(info_data, new_info_data)
|
||||||
# Only pull in layouts we have a macro for
|
|
||||||
if layout_name in info_data['layouts']:
|
|
||||||
if info_data['layouts'][layout_name]['key_count'] != len(json_layout['layout']):
|
|
||||||
msg = '%s: Number of elements in info.json does not match! info.json:%s != %s:%s'
|
|
||||||
_log_error(info_data, msg % (layout_name, len(json_layout['layout']), layout_name, len(info_data['layouts'][layout_name]['layout'])))
|
|
||||||
else:
|
|
||||||
for i, key in enumerate(info_data['layouts'][layout_name]['layout']):
|
|
||||||
key.update(json_layout['layout'][i])
|
|
||||||
|
|
||||||
return info_data
|
return info_data
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
"""Class that pretty-prints QMK info.json files.
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
|
|
||||||
|
class InfoJSONEncoder(json.JSONEncoder):
|
||||||
|
"""Custom encoder to make info.json's a little nicer to work with.
|
||||||
|
"""
|
||||||
|
container_types = (list, tuple, dict)
|
||||||
|
indentation_char = " "
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.indentation_level = 0
|
||||||
|
|
||||||
|
if not self.indent:
|
||||||
|
self.indent = 4
|
||||||
|
|
||||||
|
def encode(self, obj):
|
||||||
|
"""Encode JSON objects for QMK.
|
||||||
|
"""
|
||||||
|
if isinstance(obj, Decimal):
|
||||||
|
if obj == int(obj): # I can't believe Decimal objects don't have .is_integer()
|
||||||
|
return int(obj)
|
||||||
|
return float(obj)
|
||||||
|
|
||||||
|
elif isinstance(obj, (list, tuple)):
|
||||||
|
if self._primitives_only(obj):
|
||||||
|
return "[" + ", ".join(self.encode(element) for element in obj) + "]"
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.indentation_level += 1
|
||||||
|
output = [self.indent_str + self.encode(element) for element in obj]
|
||||||
|
self.indentation_level -= 1
|
||||||
|
return "[\n" + ",\n".join(output) + "\n" + self.indent_str + "]"
|
||||||
|
|
||||||
|
elif isinstance(obj, dict):
|
||||||
|
if obj:
|
||||||
|
if self.indentation_level == 4:
|
||||||
|
# These are part of a layout, put them on a single line.
|
||||||
|
return "{ " + ", ".join(f"{self.encode(key)}: {self.encode(element)}" for key, element in sorted(obj.items())) + " }"
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.indentation_level += 1
|
||||||
|
output = [self.indent_str + f"{json.dumps(key)}: {self.encode(value)}" for key, value in sorted(obj.items(), key=self.sort_root_dict)]
|
||||||
|
self.indentation_level -= 1
|
||||||
|
return "{\n" + ",\n".join(output) + "\n" + self.indent_str + "}"
|
||||||
|
else:
|
||||||
|
return "{}"
|
||||||
|
else:
|
||||||
|
return super().encode(obj)
|
||||||
|
|
||||||
|
def _primitives_only(self, obj):
|
||||||
|
"""Returns true if the object doesn't have any container type objects (list, tuple, dict).
|
||||||
|
"""
|
||||||
|
if isinstance(obj, dict):
|
||||||
|
obj = obj.values()
|
||||||
|
|
||||||
|
return not any(isinstance(element, self.container_types) for element in obj)
|
||||||
|
|
||||||
|
def sort_root_dict(self, key):
|
||||||
|
"""Forces layout to the back of the sort order.
|
||||||
|
"""
|
||||||
|
key = key[0]
|
||||||
|
|
||||||
|
if self.indentation_level == 1:
|
||||||
|
if key == 'manufacturer':
|
||||||
|
return '10keyboard_name'
|
||||||
|
|
||||||
|
elif key == 'keyboard_name':
|
||||||
|
return '11keyboard_name'
|
||||||
|
|
||||||
|
elif key == 'maintainer':
|
||||||
|
return '12maintainer'
|
||||||
|
|
||||||
|
elif key in ('height', 'width'):
|
||||||
|
return '40' + str(key)
|
||||||
|
|
||||||
|
elif key == 'community_layouts':
|
||||||
|
return '97community_layouts'
|
||||||
|
|
||||||
|
elif key == 'layout_aliases':
|
||||||
|
return '98layout_aliases'
|
||||||
|
|
||||||
|
elif key == 'layouts':
|
||||||
|
return '99layouts'
|
||||||
|
|
||||||
|
else:
|
||||||
|
return '50' + str(key)
|
||||||
|
|
||||||
|
return key
|
||||||
|
|
||||||
|
@property
|
||||||
|
def indent_str(self):
|
||||||
|
return self.indentation_char * (self.indentation_level * self.indent)
|
|
@ -86,8 +86,7 @@ MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT
|
||||||
MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n
|
MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n
|
||||||
MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
|
MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
|
||||||
MSG_FILE_NEAR_LIMIT = The firmware size is approaching the maximum - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
|
MSG_FILE_NEAR_LIMIT = The firmware size is approaching the maximum - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
|
||||||
MSG_PYTHON_MISSING = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \
|
MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Can not run bin/qmk!\n\n\
|
||||||
Can not run bin/qmk! This tool will be required when the develop branch is merged on 2020 Aug 29.\n\n\
|
|
||||||
Please run $(BOLD)util/qmk_install.sh$(NO_COLOR) to install all the dependencies QMK requires.\n\n
|
Please run $(BOLD)util/qmk_install.sh$(NO_COLOR) to install all the dependencies QMK requires.\n\n
|
||||||
MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
|
MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
|
||||||
MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
|
MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
|
||||||
|
|
Loading…
Reference in New Issue