Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2022-12-13 02:36:41 +00:00
commit a137edf5df
15 changed files with 1063 additions and 186 deletions

View file

@ -1,5 +1,4 @@
/* Copyright 2022 Moritz Plattner
*
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
@ -16,37 +15,14 @@
#pragma once
#include "config_common.h"
/* Limit layer count to fit in storage with VIA enabled */
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 19
#define MATRIX_ROW_PINS { B7, B3, D2, C12, C11, C10, A15 }
#define MATRIX_COL_PINS { A1, A0, C3, C2, F1, F0, C15, C14, C13, C4, C5, B0, B1, B2, B9, A13, A8, C9, C8 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
#define LED_NUM_LOCK_PIN B6
#define LED_CAPS_LOCK_PIN B5
#define LED_SCROLL_LOCK_PIN B4
#define LED_PIN_ON_STATE 0
/* Backlight */
#define BACKLIGHT_PIN A9
#define BACKLIGHT_BREATHING // don't disable even if you don't want breathing - it will not compile without
#define BACKLIGHT_PWM_DRIVER PWMD1
#define BACKLIGHT_PWM_CHANNEL 2
#define BACKLIGHT_PAL_MODE 2
#define BACKLIGHT_LEVELS 5
#define BACKLIGHT_ON_STATE 1
#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000
/* I2C for OLED */
#ifdef OLED_ENABLE
/* I2C for OLED - only enable defines if driver is enabled */
#define I2C_DRIVER I2CD2
#define I2C1_SCL_PIN B10
#define I2C1_SDA_PIN B11
@ -57,3 +33,5 @@
#define I2C1_TIMINGR_SDADEL 1U
#define I2C1_TIMINGR_SCLH 3U
#define I2C1_TIMINGR_SCLL 9U
#endif

View file

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

View file

@ -1,109 +0,0 @@
/* Copyright 2022 Moritz Plattner
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_1800_all( \
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K015, K016, K017, K018, \
K115, K116, K117, K118, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, \
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K514, K515, K516, K517, K518, \
K600, K601, K602, K606, K609, K610, K611, K612, K613, K614, K615, K616, K617 \
) { \
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, K016, K017, K018 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, K218 }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318 }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, K514, K515, K516, K517, K518 }, \
{ K600, K601, K602, KC_NO, KC_NO, KC_NO, K606, KC_NO, KC_NO, K609, K610, K611, K612, K613, K614, K615, K616, K617, KC_NO } \
}
#define LAYOUT_1800_iso_6u( \
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K015, K016, K017, K018, \
K115, K116, K117, K118, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, K318, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, \
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K514, K515, K516, K517, K518, \
K600, K601, K602, K606, K609, K610, K611, K612, K613, K614, K615, K616, K617 \
) { \
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, K016, K017, K018 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, K218 }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317, K318 }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, K514, K515, K516, K517, K518 }, \
{ K600, K601, K602, KC_NO, KC_NO, KC_NO, K606, KC_NO, KC_NO, K609, K610, K611, K612, K613, K614, K615, K616, K617, KC_NO } \
}
#define LAYOUT_1800_iso_7u( \
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K015, K016, K017, K018, \
K115, K116, K117, K118, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, K318, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, \
K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K514, K515, K516, K517, K518, \
K600, K602, K606, K609, K612, K613, K614, K615, K616, K617 \
) { \
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, K016, K017, K018 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, K218 }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317, K318 }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, K514, K515, K516, K517, K518 }, \
{ K600, KC_NO, K602, KC_NO, KC_NO, KC_NO, K606, KC_NO, KC_NO, K609, KC_NO, KC_NO, K612, K613, K614, K615, K616, K617, KC_NO } \
}
#define LAYOUT_1800_ansi_6u( \
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K015, K016, K017, K018, \
K115, K116, K117, K118, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, K415, K416, K417, K418, \
K500, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K514, K515, K516, K517, K518, \
K600, K601, K602, K606, K609, K610, K611, K612, K613, K614, K615, K616, K617 \
) { \
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, K016, K017, K018 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K314, K115, K116, K117, K118 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, K218 }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317, K318 }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, K415, K416, K417, K418 }, \
{ K500, KC_NO, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, K514, K515, K516, K517, K518 }, \
{ K600, K601, K602, KC_NO, KC_NO, KC_NO, K606, KC_NO, KC_NO, K609, K610, K611, K612, K613, K614, K615, K616, K617, KC_NO } \
}
#define LAYOUT_1800_ansi_7u( \
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K015, K016, K017, K018, \
K314, K115, K116, K117, K118, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, K318, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, K415, K416, K417, K418, \
K500, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K514, K515, K516, K517, K518, \
K600, K602, K606, K609, K612, K613, K614, K615, K616, K617 \
) { \
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, K016, K017, K018 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K314, K115, K116, K117, K118 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, K218 }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317, K318 }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, K415, K416, K417, K418 }, \
{ K500, KC_NO, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, K514, K515, K516, K517, K518 }, \
{ K600, KC_NO, K602, KC_NO, KC_NO, KC_NO, K606, KC_NO, KC_NO, K609, KC_NO, KC_NO, K612, K613, K614, K615, K616, K617, KC_NO } \
}

View file

@ -1,28 +1,607 @@
{
"keyboard_name": "E80_1800",
"manufacturer": "ebastler",
"url": "https://github.com/ebastler/E80-1800",
"maintainer": "ebastler",
"url": "https://mpwr.xyz/projects/e80-1800.html",
"bootloader": "stm32-dfu",
"processor": "STM32F072",
"board": "GENERIC_STM32_F072XB",
"usb": {
"vid": "0x6562",
"pid": "0x1338",
"device_version": "0.0.1"
"device_version": "1.0.0"
},
"debounce": 5,
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"backlight": true,
"nkro": true,
"command": false,
"console": false,
"mousekey": false
},
"matrix_pins": {
"cols": [ "A1", "A0", "C3", "C2", "F1", "F0", "C15", "C14", "C13", "C4", "C5", "B0", "B1", "B2", "B9", "A13", "A8", "C9", "C8" ],
"rows": [ "B7", "B3", "D2", "C12", "C11", "C10", "A15" ]
},
"backlight": {
"breathing": true,
"breathing_period": 5,
"levels": 5,
"pin": "A9",
"on_state": 1
},
"indicators": {
"num_lock": "B6",
"caps_lock": "B5",
"scroll_lock": "B4",
"on_state": 0
},
"layouts": {
"LAYOUT_1800_all": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"\u00ac", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"~", "x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"label":"|", "x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"AltGr", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
"layout": [
{"matrix":[0,0], "label":"Esc", "x":0, "y":0},
{"matrix":[0,1], "label":"F1", "x":1.25, "y":0},
{"matrix":[0,2], "label":"F2", "x":2.25, "y":0},
{"matrix":[0,3], "label":"F3", "x":3.25, "y":0},
{"matrix":[0,4], "label":"F4", "x":4.25, "y":0},
{"matrix":[0,6], "label":"F5", "x":5.5, "y":0},
{"matrix":[0,7], "label":"F6", "x":6.5, "y":0},
{"matrix":[0,8], "label":"F7", "x":7.5, "y":0},
{"matrix":[0,9], "label":"F8", "x":8.5, "y":0},
{"matrix":[0,10], "label":"F9", "x":9.75, "y":0},
{"matrix":[0,11], "label":"F10", "x":10.75, "y":0},
{"matrix":[0,12], "label":"F11", "x":11.75, "y":0},
{"matrix":[0,13], "label":"F12", "x":12.75, "y":0},
{"matrix":[0,15], "label":"Insert", "x":15.5, "y":0},
{"matrix":[0,16], "label":"Home", "x":16.5, "y":0},
{"matrix":[0,17], "label":"PgUp", "x":17.5, "y":0},
{"matrix":[0,18], "label":"PrtSc", "x":18.5, "y":0},
{"matrix":[1,15], "label":"Delete", "x":15.5, "y":1},
{"matrix":[1,16], "label":"End", "x":16.5, "y":1},
{"matrix":[1,17], "label":"PgDn", "x":17.5, "y":1},
{"matrix":[1,18], "label":"Scroll Lock", "x":18.5, "y":1},
{"matrix":[2,0], "label":"tild", "x":0, "y":2},
{"matrix":[2,1], "label":"1", "x":1, "y":2},
{"matrix":[2,2], "label":"2", "x":2, "y":2},
{"matrix":[2,3], "label":"3", "x":3, "y":2},
{"matrix":[2,4], "label":"4", "x":4, "y":2},
{"matrix":[2,5], "label":"5", "x":5, "y":2},
{"matrix":[2,6], "label":"6", "x":6, "y":2},
{"matrix":[2,7], "label":"7", "x":7, "y":2},
{"matrix":[2,8], "label":"8", "x":8, "y":2},
{"matrix":[2,9], "label":"9", "x":9, "y":2},
{"matrix":[2,10], "label":"0", "x":10, "y":2},
{"matrix":[2,11], "label":"-", "x":11, "y":2},
{"matrix":[2,12], "label":"=", "x":12, "y":2},
{"matrix":[2,14], "label":"Backspace", "x":13, "y":2, "w":2},
{"matrix":[2,15], "label":"Num Lock", "x":15.5, "y":2},
{"matrix":[2,16], "label":"/", "x":16.5, "y":2},
{"matrix":[2,17], "label":"*", "x":17.5, "y":2},
{"matrix":[2,18], "label":"Pause", "x":18.5, "y":2},
{"matrix":[3,0], "label":"Tab", "x":0, "y":3, "w":1.5},
{"matrix":[3,2], "label":"Q", "x":1.5, "y":3},
{"matrix":[3,3], "label":"W", "x":2.5, "y":3},
{"matrix":[3,4], "label":"E", "x":3.5, "y":3},
{"matrix":[3,5], "label":"R", "x":4.5, "y":3},
{"matrix":[3,6], "label":"T", "x":5.5, "y":3},
{"matrix":[3,7], "label":"Y", "x":6.5, "y":3},
{"matrix":[3,8], "label":"U", "x":7.5, "y":3},
{"matrix":[3,9], "label":"I", "x":8.5, "y":3},
{"matrix":[3,10], "label":"O", "x":9.5, "y":3},
{"matrix":[3,11], "label":"P", "x":10.5, "y":3},
{"matrix":[3,12], "label":"[", "x":11.5, "y":3},
{"matrix":[3,13], "label":"]", "x":12.5, "y":3},
{"matrix":[3,14], "label":"|", "x":13.5, "y":3, "w":1.5},
{"matrix":[3,15], "label":"7", "x":15.5, "y":3},
{"matrix":[3,16], "label":"8", "x":16.5, "y":3},
{"matrix":[3,17], "label":"9", "x":17.5, "y":3},
{"matrix":[3,18], "label":"-", "x":18.5, "y":3},
{"matrix":[4,0], "label":"Caps Lock", "x":0, "y":4, "w":1.75},
{"matrix":[4,2], "label":"A", "x":1.75, "y":4},
{"matrix":[4,3], "label":"S", "x":2.75, "y":4},
{"matrix":[4,4], "label":"D", "x":3.75, "y":4},
{"matrix":[4,5], "label":"F", "x":4.75, "y":4},
{"matrix":[4,6], "label":"G", "x":5.75, "y":4},
{"matrix":[4,7], "label":"H", "x":6.75, "y":4},
{"matrix":[4,8], "label":"J", "x":7.75, "y":4},
{"matrix":[4,9], "label":"K", "x":8.75, "y":4},
{"matrix":[4,10], "label":"L", "x":9.75, "y":4},
{"matrix":[4,11], "label":";", "x":10.75, "y":4},
{"matrix":[4,12], "label":"'", "x":11.75, "y":4},
{"matrix":[4,13], "label":"#", "x":12.75, "y":4},
{"matrix":[4,14], "label":"Enter", "x":13.75, "y":3, "w":1.25},
{"matrix":[4,15], "label":"4", "x":15.5, "y":4},
{"matrix":[4,16], "label":"5", "x":16.5, "y":4},
{"matrix":[4,17], "label":"6", "x":17.5, "y":4},
{"matrix":[4,18], "label":"+", "x":18.5, "y":4},
{"matrix":[5,0], "label":"Shift", "x":0, "y":5, "w":1.25},
{"matrix":[5,1], "label":"|", "x":1.25, "y":5},
{"matrix":[5,2], "label":"Z", "x":2.25, "y":5},
{"matrix":[5,3], "label":"X", "x":3.25, "y":5},
{"matrix":[5,4], "label":"C", "x":4.25, "y":5},
{"matrix":[5,5], "label":"V", "x":5.25, "y":5},
{"matrix":[5,6], "label":"B", "x":6.25, "y":5},
{"matrix":[5,7], "label":"N", "x":7.25, "y":5},
{"matrix":[5,8], "label":"M", "x":8.25, "y":5},
{"matrix":[5,9], "label":"<", "x":9.25, "y":5},
{"matrix":[5,10], "label":">", "x":10.25, "y":5},
{"matrix":[5,11], "label":"?", "x":11.25, "y":5},
{"matrix":[5,13], "label":"Shift", "x":12.25, "y":5, "w":1.75},
{"matrix":[5,14], "label":"up", "x":14.25, "y":5.25},
{"matrix":[5,15], "label":"1", "x":15.5, "y":5},
{"matrix":[5,16], "label":"2", "x":16.5, "y":5},
{"matrix":[5,17], "label":"3", "x":17.5, "y":5},
{"matrix":[5,18], "label":"Enter", "x":18.5, "y":5, "h":2},
{"matrix":[6,0], "label":"Ctrl", "x":0, "y":6},
{"matrix":[6,1], "label":"Win", "x":1, "y":6},
{"matrix":[6,2], "label":"Alt", "x":2, "y":6},
{"matrix":[6,6], "label":"Space", "x":3, "y":6, "w":6},
{"matrix":[6,9], "label":"AltGr", "x":9, "y":6},
{"matrix":[6,10], "label":"Win", "x":10, "y":6},
{"matrix":[6,11], "label":"Menu", "x":11, "y":6},
{"matrix":[6,12], "label":"Ctrl", "x":12, "y":6},
{"matrix":[6,13], "label":"left", "x":13.25, "y":6.25},
{"matrix":[6,14], "label":"down", "x":14.25, "y":6.25},
{"matrix":[6,15], "label":"right", "x":15.25, "y":6.25},
{"matrix":[6,16], "label":"0", "x":16.5, "y":6},
{"matrix":[6,17], "label":".", "x":17.5, "y":6}]
},
"LAYOUT_1800_iso_6u": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"\u00ac", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"~", "x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"label":"|", "x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"AltGr", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
"layout": [
{"matrix":[0,0], "label":"Esc", "x":0, "y":0},
{"matrix":[0,1], "label":"F1", "x":1.25, "y":0},
{"matrix":[0,2], "label":"F2", "x":2.25, "y":0},
{"matrix":[0,3], "label":"F3", "x":3.25, "y":0},
{"matrix":[0,4], "label":"F4", "x":4.25, "y":0},
{"matrix":[0,6], "label":"F5", "x":5.5, "y":0},
{"matrix":[0,7], "label":"F6", "x":6.5, "y":0},
{"matrix":[0,8], "label":"F7", "x":7.5, "y":0},
{"matrix":[0,9], "label":"F8", "x":8.5, "y":0},
{"matrix":[0,10], "label":"F9", "x":9.75, "y":0},
{"matrix":[0,11], "label":"F10", "x":10.75, "y":0},
{"matrix":[0,12], "label":"F11", "x":11.75, "y":0},
{"matrix":[0,13], "label":"F12", "x":12.75, "y":0},
{"matrix":[0,15], "label":"Insert", "x":15.5, "y":0},
{"matrix":[0,16], "label":"Home", "x":16.5, "y":0},
{"matrix":[0,17], "label":"PgUp", "x":17.5, "y":0},
{"matrix":[0,18], "label":"PrtSc", "x":18.5, "y":0},
{"matrix":[1,15], "label":"Delete", "x":15.5, "y":1},
{"matrix":[1,16], "label":"End", "x":16.5, "y":1},
{"matrix":[1,17], "label":"PgDn", "x":17.5, "y":1},
{"matrix":[1,18], "label":"Scroll Lock", "x":18.5, "y":1},
{"matrix":[2,0], "label":"tild", "x":0, "y":2},
{"matrix":[2,1], "label":"1", "x":1, "y":2},
{"matrix":[2,2], "label":"2", "x":2, "y":2},
{"matrix":[2,3], "label":"3", "x":3, "y":2},
{"matrix":[2,4], "label":"4", "x":4, "y":2},
{"matrix":[2,5], "label":"5", "x":5, "y":2},
{"matrix":[2,6], "label":"6", "x":6, "y":2},
{"matrix":[2,7], "label":"7", "x":7, "y":2},
{"matrix":[2,8], "label":"8", "x":8, "y":2},
{"matrix":[2,9], "label":"9", "x":9, "y":2},
{"matrix":[2,10], "label":"0", "x":10, "y":2},
{"matrix":[2,11], "label":"-", "x":11, "y":2},
{"matrix":[2,12], "label":"=", "x":12, "y":2},
{"matrix":[2,14], "label":"Backspace", "x":13, "y":2, "w":2},
{"matrix":[2,15], "label":"Num Lock", "x":15.5, "y":2},
{"matrix":[2,16], "label":"/", "x":16.5, "y":2},
{"matrix":[2,17], "label":"*", "x":17.5, "y":2},
{"matrix":[2,18], "label":"Pause", "x":18.5, "y":2},
{"matrix":[3,0], "label":"Tab", "x":0, "y":3, "w":1.5},
{"matrix":[3,2], "label":"Q", "x":1.5, "y":3},
{"matrix":[3,3], "label":"W", "x":2.5, "y":3},
{"matrix":[3,4], "label":"E", "x":3.5, "y":3},
{"matrix":[3,5], "label":"R", "x":4.5, "y":3},
{"matrix":[3,6], "label":"T", "x":5.5, "y":3},
{"matrix":[3,7], "label":"Y", "x":6.5, "y":3},
{"matrix":[3,8], "label":"U", "x":7.5, "y":3},
{"matrix":[3,9], "label":"I", "x":8.5, "y":3},
{"matrix":[3,10], "label":"O", "x":9.5, "y":3},
{"matrix":[3,11], "label":"P", "x":10.5, "y":3},
{"matrix":[3,12], "label":"[", "x":11.5, "y":3},
{"matrix":[3,13], "label":"]", "x":12.5, "y":3},
{"matrix":[3,15], "label":"7", "x":15.5, "y":3},
{"matrix":[3,16], "label":"8", "x":16.5, "y":3},
{"matrix":[3,17], "label":"9", "x":17.5, "y":3},
{"matrix":[3,18], "label":"-", "x":18.5, "y":3},
{"matrix":[4,0], "label":"Caps Lock", "x":0, "y":4, "w":1.75},
{"matrix":[4,2], "label":"A", "x":1.75, "y":4},
{"matrix":[4,3], "label":"S", "x":2.75, "y":4},
{"matrix":[4,4], "label":"D", "x":3.75, "y":4},
{"matrix":[4,5], "label":"F", "x":4.75, "y":4},
{"matrix":[4,6], "label":"G", "x":5.75, "y":4},
{"matrix":[4,7], "label":"H", "x":6.75, "y":4},
{"matrix":[4,8], "label":"J", "x":7.75, "y":4},
{"matrix":[4,9], "label":"K", "x":8.75, "y":4},
{"matrix":[4,10], "label":"L", "x":9.75, "y":4},
{"matrix":[4,11], "label":";", "x":10.75, "y":4},
{"matrix":[4,12], "label":"'", "x":11.75, "y":4},
{"matrix":[4,13], "label":"#", "x":12.75, "y":4},
{"matrix":[4,14], "label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2},
{"matrix":[4,15], "label":"4", "x":15.5, "y":4},
{"matrix":[4,16], "label":"5", "x":16.5, "y":4},
{"matrix":[4,17], "label":"6", "x":17.5, "y":4},
{"matrix":[4,18], "label":"+", "x":18.5, "y":4},
{"matrix":[5,0], "label":"Shift", "x":0, "y":5, "w":1.25},
{"matrix":[5,1], "label":"|", "x":1.25, "y":5},
{"matrix":[5,2], "label":"Z", "x":2.25, "y":5},
{"matrix":[5,3], "label":"X", "x":3.25, "y":5},
{"matrix":[5,4], "label":"C", "x":4.25, "y":5},
{"matrix":[5,5], "label":"V", "x":5.25, "y":5},
{"matrix":[5,6], "label":"B", "x":6.25, "y":5},
{"matrix":[5,7], "label":"N", "x":7.25, "y":5},
{"matrix":[5,8], "label":"M", "x":8.25, "y":5},
{"matrix":[5,9], "label":"<", "x":9.25, "y":5},
{"matrix":[5,10], "label":">", "x":10.25, "y":5},
{"matrix":[5,11], "label":"?", "x":11.25, "y":5},
{"matrix":[5,13], "label":"Shift", "x":12.25, "y":5, "w":1.75},
{"matrix":[5,14], "label":"up", "x":14.25, "y":5.25},
{"matrix":[5,15], "label":"1", "x":15.5, "y":5},
{"matrix":[5,16], "label":"2", "x":16.5, "y":5},
{"matrix":[5,17], "label":"3", "x":17.5, "y":5},
{"matrix":[5,18], "label":"Enter", "x":18.5, "y":5, "h":2},
{"matrix":[6,0], "label":"Ctrl", "x":0, "y":6},
{"matrix":[6,1], "label":"Win", "x":1, "y":6},
{"matrix":[6,2], "label":"Alt", "x":2, "y":6},
{"matrix":[6,6], "label":"Space", "x":3, "y":6, "w":6},
{"matrix":[6,9], "label":"AltGr", "x":9, "y":6},
{"matrix":[6,10], "label":"Win", "x":10, "y":6},
{"matrix":[6,11], "label":"Menu", "x":11, "y":6},
{"matrix":[6,12], "label":"Ctrl", "x":12, "y":6},
{"matrix":[6,13], "label":"left", "x":13.25, "y":6.25},
{"matrix":[6,14], "label":"down", "x":14.25, "y":6.25},
{"matrix":[6,15], "label":"right", "x":15.25, "y":6.25},
{"matrix":[6,16], "label":"0", "x":16.5, "y":6},
{"matrix":[6,17], "label":".", "x":17.5, "y":6}]
},
"LAYOUT_1800_iso_7u": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"\u00ac", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"~", "x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"label":"|", "x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6, "w":1.5}, {"label":"Alt", "x":1.5, "y":6, "w":1.5}, {"x":3, "y":6, "w":7}, {"label":"AltGr", "x":10, "y":6, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":6, "w":1.5}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
"layout": [
{"matrix":[0,0], "label":"Esc", "x":0, "y":0},
{"matrix":[0,1], "label":"F1", "x":1.25, "y":0},
{"matrix":[0,2], "label":"F2", "x":2.25, "y":0},
{"matrix":[0,3], "label":"F3", "x":3.25, "y":0},
{"matrix":[0,4], "label":"F4", "x":4.25, "y":0},
{"matrix":[0,6], "label":"F5", "x":5.5, "y":0},
{"matrix":[0,7], "label":"F6", "x":6.5, "y":0},
{"matrix":[0,8], "label":"F7", "x":7.5, "y":0},
{"matrix":[0,9], "label":"F8", "x":8.5, "y":0},
{"matrix":[0,10], "label":"F9", "x":9.75, "y":0},
{"matrix":[0,11], "label":"F10", "x":10.75, "y":0},
{"matrix":[0,12], "label":"F11", "x":11.75, "y":0},
{"matrix":[0,13], "label":"F12", "x":12.75, "y":0},
{"matrix":[0,15], "label":"Insert", "x":15.5, "y":0},
{"matrix":[0,16], "label":"Home", "x":16.5, "y":0},
{"matrix":[0,17], "label":"PgUp", "x":17.5, "y":0},
{"matrix":[0,18], "label":"PrtSc", "x":18.5, "y":0},
{"matrix":[1,15], "label":"Delete", "x":15.5, "y":1},
{"matrix":[1,16], "label":"End", "x":16.5, "y":1},
{"matrix":[1,17], "label":"PgDn", "x":17.5, "y":1},
{"matrix":[1,18], "label":"Scroll Lock", "x":18.5, "y":1},
{"matrix":[2,0], "label":"tild", "x":0, "y":2},
{"matrix":[2,1], "label":"1", "x":1, "y":2},
{"matrix":[2,2], "label":"2", "x":2, "y":2},
{"matrix":[2,3], "label":"3", "x":3, "y":2},
{"matrix":[2,4], "label":"4", "x":4, "y":2},
{"matrix":[2,5], "label":"5", "x":5, "y":2},
{"matrix":[2,6], "label":"6", "x":6, "y":2},
{"matrix":[2,7], "label":"7", "x":7, "y":2},
{"matrix":[2,8], "label":"8", "x":8, "y":2},
{"matrix":[2,9], "label":"9", "x":9, "y":2},
{"matrix":[2,10], "label":"0", "x":10, "y":2},
{"matrix":[2,11], "label":"-", "x":11, "y":2},
{"matrix":[2,12], "label":"=", "x":12, "y":2},
{"matrix":[2,14], "label":"Backspace", "x":13, "y":2, "w":2},
{"matrix":[2,15], "label":"Num Lock", "x":15.5, "y":2},
{"matrix":[2,16], "label":"/", "x":16.5, "y":2},
{"matrix":[2,17], "label":"*", "x":17.5, "y":2},
{"matrix":[2,18], "label":"Pause", "x":18.5, "y":2},
{"matrix":[3,0], "label":"Tab", "x":0, "y":3, "w":1.5},
{"matrix":[3,2], "label":"Q", "x":1.5, "y":3},
{"matrix":[3,3], "label":"W", "x":2.5, "y":3},
{"matrix":[3,4], "label":"E", "x":3.5, "y":3},
{"matrix":[3,5], "label":"R", "x":4.5, "y":3},
{"matrix":[3,6], "label":"T", "x":5.5, "y":3},
{"matrix":[3,7], "label":"Y", "x":6.5, "y":3},
{"matrix":[3,8], "label":"U", "x":7.5, "y":3},
{"matrix":[3,9], "label":"I", "x":8.5, "y":3},
{"matrix":[3,10], "label":"O", "x":9.5, "y":3},
{"matrix":[3,11], "label":"P", "x":10.5, "y":3},
{"matrix":[3,12], "label":"[", "x":11.5, "y":3},
{"matrix":[3,13], "label":"]", "x":12.5, "y":3},
{"matrix":[3,15], "label":"7", "x":15.5, "y":3},
{"matrix":[3,16], "label":"8", "x":16.5, "y":3},
{"matrix":[3,17], "label":"9", "x":17.5, "y":3},
{"matrix":[3,18], "label":"-", "x":18.5, "y":3},
{"matrix":[4,0], "label":"Caps Lock", "x":0, "y":4, "w":1.75},
{"matrix":[4,2], "label":"A", "x":1.75, "y":4},
{"matrix":[4,3], "label":"S", "x":2.75, "y":4},
{"matrix":[4,4], "label":"D", "x":3.75, "y":4},
{"matrix":[4,5], "label":"F", "x":4.75, "y":4},
{"matrix":[4,6], "label":"G", "x":5.75, "y":4},
{"matrix":[4,7], "label":"H", "x":6.75, "y":4},
{"matrix":[4,8], "label":"J", "x":7.75, "y":4},
{"matrix":[4,9], "label":"K", "x":8.75, "y":4},
{"matrix":[4,10], "label":"L", "x":9.75, "y":4},
{"matrix":[4,11], "label":";", "x":10.75, "y":4},
{"matrix":[4,12], "label":"'", "x":11.75, "y":4},
{"matrix":[4,13], "label":"#", "x":12.75, "y":4},
{"matrix":[4,14], "label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2},
{"matrix":[4,15], "label":"4", "x":15.5, "y":4},
{"matrix":[4,16], "label":"5", "x":16.5, "y":4},
{"matrix":[4,17], "label":"6", "x":17.5, "y":4},
{"matrix":[4,18], "label":"+", "x":18.5, "y":4},
{"matrix":[5,0], "label":"Shift", "x":0, "y":5, "w":1.25},
{"matrix":[5,1], "label":"|", "x":1.25, "y":5},
{"matrix":[5,2], "label":"Z", "x":2.25, "y":5},
{"matrix":[5,3], "label":"X", "x":3.25, "y":5},
{"matrix":[5,4], "label":"C", "x":4.25, "y":5},
{"matrix":[5,5], "label":"V", "x":5.25, "y":5},
{"matrix":[5,6], "label":"B", "x":6.25, "y":5},
{"matrix":[5,7], "label":"N", "x":7.25, "y":5},
{"matrix":[5,8], "label":"M", "x":8.25, "y":5},
{"matrix":[5,9], "label":"<", "x":9.25, "y":5},
{"matrix":[5,10], "label":">", "x":10.25, "y":5},
{"matrix":[5,11], "label":"?", "x":11.25, "y":5},
{"matrix":[5,13], "label":"Shift", "x":12.25, "y":5, "w":1.75},
{"matrix":[5,14], "label":"up", "x":14.25, "y":5.25},
{"matrix":[5,15], "label":"1", "x":15.5, "y":5},
{"matrix":[5,16], "label":"2", "x":16.5, "y":5},
{"matrix":[5,17], "label":"3", "x":17.5, "y":5},
{"matrix":[5,18], "label":"Enter", "x":18.5, "y":5, "h":2},
{"matrix":[6,0], "label":"Ctrl", "x":0, "y":6, "w":1.5},
{"matrix":[6,2], "label":"Alt", "x":1.5, "y":6, "w":1.5},
{"matrix":[6,6], "label":"Space", "x":3, "y":6, "w":7},
{"matrix":[6,9], "label":"AltGr", "x":10, "y":6, "w":1.5},
{"matrix":[6,12], "label":"Ctrl", "x":11.5, "y":6, "w":1.5},
{"matrix":[6,13], "label":"left", "x":13.25, "y":6.25},
{"matrix":[6,14], "label":"down", "x":14.25, "y":6.25},
{"matrix":[6,15], "label":"right", "x":15.25, "y":6.25},
{"matrix":[6,16], "label":"0", "x":16.5, "y":6},
{"matrix":[6,17], "label":".", "x":17.5, "y":6}]
},
"LAYOUT_1800_ansi_6u": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"Enter", "x":12.75, "y":4, "w":2.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":2.25}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"Alt", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
"layout": [
{"matrix":[0,0], "label":"Esc", "x":0, "y":0},
{"matrix":[0,1], "label":"F1", "x":1.25, "y":0},
{"matrix":[0,2], "label":"F2", "x":2.25, "y":0},
{"matrix":[0,3], "label":"F3", "x":3.25, "y":0},
{"matrix":[0,4], "label":"F4", "x":4.25, "y":0},
{"matrix":[0,6], "label":"F5", "x":5.5, "y":0},
{"matrix":[0,7], "label":"F6", "x":6.5, "y":0},
{"matrix":[0,8], "label":"F7", "x":7.5, "y":0},
{"matrix":[0,9], "label":"F8", "x":8.5, "y":0},
{"matrix":[0,10], "label":"F9", "x":9.75, "y":0},
{"matrix":[0,11], "label":"F10", "x":10.75, "y":0},
{"matrix":[0,12], "label":"F11", "x":11.75, "y":0},
{"matrix":[0,13], "label":"F12", "x":12.75, "y":0},
{"matrix":[0,15], "label":"Insert", "x":15.5, "y":0},
{"matrix":[0,16], "label":"Home", "x":16.5, "y":0},
{"matrix":[0,17], "label":"PgUp", "x":17.5, "y":0},
{"matrix":[0,18], "label":"PrtSc", "x":18.5, "y":0},
{"matrix":[1,15], "label":"Delete", "x":15.5, "y":1},
{"matrix":[1,16], "label":"End", "x":16.5, "y":1},
{"matrix":[1,17], "label":"PgDn", "x":17.5, "y":1},
{"matrix":[1,18], "label":"Scroll Lock", "x":18.5, "y":1},
{"matrix":[2,0], "label":"tild", "x":0, "y":2},
{"matrix":[2,1], "label":"1", "x":1, "y":2},
{"matrix":[2,2], "label":"2", "x":2, "y":2},
{"matrix":[2,3], "label":"3", "x":3, "y":2},
{"matrix":[2,4], "label":"4", "x":4, "y":2},
{"matrix":[2,5], "label":"5", "x":5, "y":2},
{"matrix":[2,6], "label":"6", "x":6, "y":2},
{"matrix":[2,7], "label":"7", "x":7, "y":2},
{"matrix":[2,8], "label":"8", "x":8, "y":2},
{"matrix":[2,9], "label":"9", "x":9, "y":2},
{"matrix":[2,10], "label":"0", "x":10, "y":2},
{"matrix":[2,11], "label":"-", "x":11, "y":2},
{"matrix":[2,12], "label":"=", "x":12, "y":2},
{"matrix":[2,14], "label":"Backspace", "x":13, "y":2, "w":2},
{"matrix":[2,15], "label":"Num Lock", "x":15.5, "y":2},
{"matrix":[2,16], "label":"/", "x":16.5, "y":2},
{"matrix":[2,17], "label":"*", "x":17.5, "y":2},
{"matrix":[2,18], "label":"Pause", "x":18.5, "y":2},
{"matrix":[3,0], "label":"Tab", "x":0, "y":3, "w":1.5},
{"matrix":[3,2], "label":"Q", "x":1.5, "y":3},
{"matrix":[3,3], "label":"W", "x":2.5, "y":3},
{"matrix":[3,4], "label":"E", "x":3.5, "y":3},
{"matrix":[3,5], "label":"R", "x":4.5, "y":3},
{"matrix":[3,6], "label":"T", "x":5.5, "y":3},
{"matrix":[3,7], "label":"Y", "x":6.5, "y":3},
{"matrix":[3,8], "label":"U", "x":7.5, "y":3},
{"matrix":[3,9], "label":"I", "x":8.5, "y":3},
{"matrix":[3,10], "label":"O", "x":9.5, "y":3},
{"matrix":[3,11], "label":"P", "x":10.5, "y":3},
{"matrix":[3,12], "label":"[", "x":11.5, "y":3},
{"matrix":[3,13], "label":"]", "x":12.5, "y":3},
{"matrix":[3,14], "label":"|", "x":13.5, "y":3, "w":1.5},
{"matrix":[3,15], "label":"7", "x":15.5, "y":3},
{"matrix":[3,16], "label":"8", "x":16.5, "y":3},
{"matrix":[3,17], "label":"9", "x":17.5, "y":3},
{"matrix":[3,18], "label":"-", "x":18.5, "y":3},
{"matrix":[4,0], "label":"Caps Lock", "x":0, "y":4, "w":1.75},
{"matrix":[4,2], "label":"A", "x":1.75, "y":4},
{"matrix":[4,3], "label":"S", "x":2.75, "y":4},
{"matrix":[4,4], "label":"D", "x":3.75, "y":4},
{"matrix":[4,5], "label":"F", "x":4.75, "y":4},
{"matrix":[4,6], "label":"G", "x":5.75, "y":4},
{"matrix":[4,7], "label":"H", "x":6.75, "y":4},
{"matrix":[4,8], "label":"J", "x":7.75, "y":4},
{"matrix":[4,9], "label":"K", "x":8.75, "y":4},
{"matrix":[4,10], "label":"L", "x":9.75, "y":4},
{"matrix":[4,11], "label":";", "x":10.75, "y":4},
{"matrix":[4,12], "label":"'", "x":11.75, "y":4},
{"matrix":[4,14], "label":"Enter", "x":12.75, "y":3, "w":2.25},
{"matrix":[4,15], "label":"4", "x":15.5, "y":4},
{"matrix":[4,16], "label":"5", "x":16.5, "y":4},
{"matrix":[4,17], "label":"6", "x":17.5, "y":4},
{"matrix":[4,18], "label":"+", "x":18.5, "y":4},
{"matrix":[5,0], "label":"Shift", "x":0, "y":5, "w":2.25},
{"matrix":[5,2], "label":"Z", "x":2.25, "y":5},
{"matrix":[5,3], "label":"X", "x":3.25, "y":5},
{"matrix":[5,4], "label":"C", "x":4.25, "y":5},
{"matrix":[5,5], "label":"V", "x":5.25, "y":5},
{"matrix":[5,6], "label":"B", "x":6.25, "y":5},
{"matrix":[5,7], "label":"N", "x":7.25, "y":5},
{"matrix":[5,8], "label":"M", "x":8.25, "y":5},
{"matrix":[5,9], "label":"<", "x":9.25, "y":5},
{"matrix":[5,10], "label":">", "x":10.25, "y":5},
{"matrix":[5,11], "label":"?", "x":11.25, "y":5},
{"matrix":[5,13], "label":"Shift", "x":12.25, "y":5, "w":1.75},
{"matrix":[5,14], "label":"up", "x":14.25, "y":5.25},
{"matrix":[5,15], "label":"1", "x":15.5, "y":5},
{"matrix":[5,16], "label":"2", "x":16.5, "y":5},
{"matrix":[5,17], "label":"3", "x":17.5, "y":5},
{"matrix":[5,18], "label":"Enter", "x":18.5, "y":5, "h":2},
{"matrix":[6,0], "label":"Ctrl", "x":0, "y":6},
{"matrix":[6,1], "label":"Win", "x":1, "y":6},
{"matrix":[6,2], "label":"Alt", "x":2, "y":6},
{"matrix":[6,6], "label":"Space", "x":3, "y":6, "w":6},
{"matrix":[6,9], "label":"AltGr", "x":9, "y":6},
{"matrix":[6,10], "label":"Win", "x":10, "y":6},
{"matrix":[6,11], "label":"Menu", "x":11, "y":6},
{"matrix":[6,12], "label":"Ctrl", "x":12, "y":6},
{"matrix":[6,13], "label":"left", "x":13.25, "y":6.25},
{"matrix":[6,14], "label":"down", "x":14.25, "y":6.25},
{"matrix":[6,15], "label":"right", "x":15.25, "y":6.25},
{"matrix":[6,16], "label":"0", "x":16.5, "y":6},
{"matrix":[6,17], "label":".", "x":17.5, "y":6}]
},
"LAYOUT_1800_ansi_7u": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"Enter", "x":12.75, "y":4, "w":2.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":2.25}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6, "w":1.5}, {"label":"Alt", "x":1.5, "y":6, "w":1.5}, {"x":3, "y":6, "w":7}, {"label":"Alt", "x":10, "y":6, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":6, "w":1.5}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
"layout": [
{"matrix":[0,0], "label":"Esc", "x":0, "y":0},
{"matrix":[0,1], "label":"F1", "x":1.25, "y":0},
{"matrix":[0,2], "label":"F2", "x":2.25, "y":0},
{"matrix":[0,3], "label":"F3", "x":3.25, "y":0},
{"matrix":[0,4], "label":"F4", "x":4.25, "y":0},
{"matrix":[0,6], "label":"F5", "x":5.5, "y":0},
{"matrix":[0,7], "label":"F6", "x":6.5, "y":0},
{"matrix":[0,8], "label":"F7", "x":7.5, "y":0},
{"matrix":[0,9], "label":"F8", "x":8.5, "y":0},
{"matrix":[0,10], "label":"F9", "x":9.75, "y":0},
{"matrix":[0,11], "label":"F10", "x":10.75, "y":0},
{"matrix":[0,12], "label":"F11", "x":11.75, "y":0},
{"matrix":[0,13], "label":"F12", "x":12.75, "y":0},
{"matrix":[0,15], "label":"Insert", "x":15.5, "y":0},
{"matrix":[0,16], "label":"Home", "x":16.5, "y":0},
{"matrix":[0,17], "label":"PgUp", "x":17.5, "y":0},
{"matrix":[0,18], "label":"PrtSc", "x":18.5, "y":0},
{"matrix":[1,15], "label":"Delete", "x":15.5, "y":1},
{"matrix":[1,16], "label":"End", "x":16.5, "y":1},
{"matrix":[1,17], "label":"PgDn", "x":17.5, "y":1},
{"matrix":[1,18], "label":"Scroll Lock", "x":18.5, "y":1},
{"matrix":[2,0], "label":"tild", "x":0, "y":2},
{"matrix":[2,1], "label":"1", "x":1, "y":2},
{"matrix":[2,2], "label":"2", "x":2, "y":2},
{"matrix":[2,3], "label":"3", "x":3, "y":2},
{"matrix":[2,4], "label":"4", "x":4, "y":2},
{"matrix":[2,5], "label":"5", "x":5, "y":2},
{"matrix":[2,6], "label":"6", "x":6, "y":2},
{"matrix":[2,7], "label":"7", "x":7, "y":2},
{"matrix":[2,8], "label":"8", "x":8, "y":2},
{"matrix":[2,9], "label":"9", "x":9, "y":2},
{"matrix":[2,10], "label":"0", "x":10, "y":2},
{"matrix":[2,11], "label":"-", "x":11, "y":2},
{"matrix":[2,12], "label":"=", "x":12, "y":2},
{"matrix":[2,14], "label":"Backspace", "x":13, "y":2, "w":2},
{"matrix":[2,15], "label":"Num Lock", "x":15.5, "y":2},
{"matrix":[2,16], "label":"/", "x":16.5, "y":2},
{"matrix":[2,17], "label":"*", "x":17.5, "y":2},
{"matrix":[2,18], "label":"Pause", "x":18.5, "y":2},
{"matrix":[3,0], "label":"Tab", "x":0, "y":3, "w":1.5},
{"matrix":[3,2], "label":"Q", "x":1.5, "y":3},
{"matrix":[3,3], "label":"W", "x":2.5, "y":3},
{"matrix":[3,4], "label":"E", "x":3.5, "y":3},
{"matrix":[3,5], "label":"R", "x":4.5, "y":3},
{"matrix":[3,6], "label":"T", "x":5.5, "y":3},
{"matrix":[3,7], "label":"Y", "x":6.5, "y":3},
{"matrix":[3,8], "label":"U", "x":7.5, "y":3},
{"matrix":[3,9], "label":"I", "x":8.5, "y":3},
{"matrix":[3,10], "label":"O", "x":9.5, "y":3},
{"matrix":[3,11], "label":"P", "x":10.5, "y":3},
{"matrix":[3,12], "label":"[", "x":11.5, "y":3},
{"matrix":[3,13], "label":"]", "x":12.5, "y":3},
{"matrix":[3,14], "label":"|", "x":13.5, "y":3, "w":1.5},
{"matrix":[3,15], "label":"7", "x":15.5, "y":3},
{"matrix":[3,16], "label":"8", "x":16.5, "y":3},
{"matrix":[3,17], "label":"9", "x":17.5, "y":3},
{"matrix":[3,18], "label":"-", "x":18.5, "y":3},
{"matrix":[4,0], "label":"Caps Lock", "x":0, "y":4, "w":1.75},
{"matrix":[4,2], "label":"A", "x":1.75, "y":4},
{"matrix":[4,3], "label":"S", "x":2.75, "y":4},
{"matrix":[4,4], "label":"D", "x":3.75, "y":4},
{"matrix":[4,5], "label":"F", "x":4.75, "y":4},
{"matrix":[4,6], "label":"G", "x":5.75, "y":4},
{"matrix":[4,7], "label":"H", "x":6.75, "y":4},
{"matrix":[4,8], "label":"J", "x":7.75, "y":4},
{"matrix":[4,9], "label":"K", "x":8.75, "y":4},
{"matrix":[4,10], "label":"L", "x":9.75, "y":4},
{"matrix":[4,11], "label":";", "x":10.75, "y":4},
{"matrix":[4,12], "label":"'", "x":11.75, "y":4},
{"matrix":[4,14], "label":"Enter", "x":12.75, "y":3, "w":2.25},
{"matrix":[4,15], "label":"4", "x":15.5, "y":4},
{"matrix":[4,16], "label":"5", "x":16.5, "y":4},
{"matrix":[4,17], "label":"6", "x":17.5, "y":4},
{"matrix":[4,18], "label":"+", "x":18.5, "y":4},
{"matrix":[5,0], "label":"Shift", "x":0, "y":5, "w":2.25},
{"matrix":[5,2], "label":"Z", "x":2.25, "y":5},
{"matrix":[5,3], "label":"X", "x":3.25, "y":5},
{"matrix":[5,4], "label":"C", "x":4.25, "y":5},
{"matrix":[5,5], "label":"V", "x":5.25, "y":5},
{"matrix":[5,6], "label":"B", "x":6.25, "y":5},
{"matrix":[5,7], "label":"N", "x":7.25, "y":5},
{"matrix":[5,8], "label":"M", "x":8.25, "y":5},
{"matrix":[5,9], "label":"<", "x":9.25, "y":5},
{"matrix":[5,10], "label":">", "x":10.25, "y":5},
{"matrix":[5,11], "label":"?", "x":11.25, "y":5},
{"matrix":[5,13], "label":"Shift", "x":12.25, "y":5, "w":1.75},
{"matrix":[5,14], "label":"up", "x":14.25, "y":5.25},
{"matrix":[5,15], "label":"1", "x":15.5, "y":5},
{"matrix":[5,16], "label":"2", "x":16.5, "y":5},
{"matrix":[5,17], "label":"3", "x":17.5, "y":5},
{"matrix":[5,18], "label":"Enter", "x":18.5, "y":5, "h":2},
{"matrix":[6,0], "label":"Ctrl", "x":0, "y":6, "w":1.5},
{"matrix":[6,2], "label":"Alt", "x":1.5, "y":6, "w":1.5},
{"matrix":[6,6], "label":"Space", "x":3, "y":6, "w":7},
{"matrix":[6,9], "label":"AltGr", "x":10, "y":6, "w":1.5},
{"matrix":[6,12], "label":"Ctrl", "x":11.5, "y":6, "w":1.5},
{"matrix":[6,13], "label":"left", "x":13.25, "y":6.25},
{"matrix":[6,14], "label":"down", "x":14.25, "y":6.25},
{"matrix":[6,15], "label":"right", "x":15.25, "y":6.25},
{"matrix":[6,16], "label":"0", "x":16.5, "y":6},
{"matrix":[6,17], "label":".", "x":17.5, "y":6}]
}
}
}

View file

@ -31,8 +31,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, BL_TOGG, BL_DOWN, BL_BRTG,
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_MPLY,
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_VOLU, 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_MPRV, KC_MUTE, KC_MNXT, 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_VOLD, KC_TRNS, KC_TRNS,
CL_TOGG, 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_MPRV, KC_MUTE, KC_MNXT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, 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),
[2] = LAYOUT_1800_all( /* keymap for layer 2 */

View file

@ -1,22 +1 @@
# MCU name
MCU = STM32F072
# Bootloader selection
BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
# This file intentionally left blank

116
keyboards/ghs/xls/info.json Normal file
View file

@ -0,0 +1,116 @@
{
"manufacturer": "Gone Hacking Studio",
"keyboard_name": "GHS.XLS",
"maintainer": "ramonimbao",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"encoder": true,
"nkro": true
},
"matrix_pins": {
"cols": ["C15", "C14", "C13", "A3"],
"rows": ["A4", "B12", "A6", "A10", "A5", "B2"]
},
"indicators": {
"num_lock": "B0"
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0002",
"vid": "0x0645"
},
"encoder": {
"rotary": [
{ "pin_a": "B3", "pin_b": "A15" },
{ "pin_a": "B4", "pin_b": "B5" },
{ "pin_a": "B9", "pin_b": "B8" },
{ "pin_a": "F0", "pin_b": "F1" }
]
},
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1.5 },
{ "matrix": [1, 1], "x": 1, "y": 1.5 },
{ "matrix": [1, 2], "x": 2, "y": 1.5 },
{ "matrix": [1, 3], "x": 3, "y": 1.5 },
{ "matrix": [2, 0], "x": 0, "y": 2.5 },
{ "matrix": [2, 1], "x": 1, "y": 2.5 },
{ "matrix": [2, 2], "x": 2, "y": 2.5 },
{ "matrix": [3, 0], "x": 0, "y": 3.5 },
{ "matrix": [3, 1], "x": 1, "y": 3.5 },
{ "matrix": [3, 2], "x": 2, "y": 3.5 },
{ "h": 2, "matrix": [2, 3], "x": 3, "y": 2.5 },
{ "matrix": [4, 0], "x": 0, "y": 4.5 },
{ "matrix": [4, 1], "x": 1, "y": 4.5 },
{ "matrix": [4, 2], "x": 2, "y": 4.5 },
{ "matrix": [5, 0], "w": 2, "x": 0, "y": 5.5 },
{ "matrix": [5, 2], "x": 2, "y": 5.5 },
{ "h": 2, "matrix": [4, 3], "x": 3, "y": 4.5 }
]
},
"LAYOUT_numpad_6x4_southpaw": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1.5 },
{ "matrix": [1, 1], "x": 1, "y": 1.5 },
{ "matrix": [1, 2], "x": 2, "y": 1.5 },
{ "matrix": [1, 3], "x": 3, "y": 1.5 },
{ "matrix": [2, 0], "h": 2, "x": 0, "y": 2.5 },
{ "matrix": [2, 1], "x": 1, "y": 2.5 },
{ "matrix": [2, 2], "x": 2, "y": 2.5 },
{ "matrix": [2, 3], "x": 3, "y": 2.5 },
{ "matrix": [3, 1], "x": 1, "y": 3.5 },
{ "matrix": [3, 2], "x": 2, "y": 3.5 },
{ "matrix": [3, 3], "x": 3, "y": 3.5 },
{ "matrix": [5, 0], "h": 2, "x": 0, "y": 4.5 },
{ "matrix": [4, 1], "x": 1, "y": 4.5 },
{ "matrix": [4, 2], "x": 2, "y": 4.5 },
{ "matrix": [4, 3], "x": 3, "y": 4.5 },
{ "matrix": [5, 1], "x": 1, "y": 5.5 },
{ "matrix": [5, 2], "w": 2, "x": 2, "y": 5.5 }
]
},
"LAYOUT_all": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1.5 },
{ "matrix": [1, 1], "x": 1, "y": 1.5 },
{ "matrix": [1, 2], "x": 2, "y": 1.5 },
{ "matrix": [1, 3], "x": 3, "y": 1.5 },
{ "matrix": [2, 0], "x": 0, "y": 2.5 },
{ "matrix": [2, 1], "x": 1, "y": 2.5 },
{ "matrix": [2, 2], "x": 2, "y": 2.5 },
{ "matrix": [2, 3], "x": 3, "y": 2.5 },
{ "matrix": [3, 0], "x": 0, "y": 3.5 },
{ "matrix": [3, 1], "x": 1, "y": 3.5 },
{ "matrix": [3, 2], "x": 2, "y": 3.5 },
{ "matrix": [3, 3], "x": 3, "y": 3.5 },
{ "matrix": [4, 0], "x": 0, "y": 4.5 },
{ "matrix": [4, 1], "x": 1, "y": 4.5 },
{ "matrix": [4, 2], "x": 2, "y": 4.5 },
{ "matrix": [4, 3], "x": 3, "y": 4.5 },
{ "matrix": [5, 0], "x": 0, "y": 5.5 },
{ "matrix": [5, 1], "x": 1, "y": 5.5 },
{ "matrix": [5, 2], "x": 2, "y": 5.5 },
{ "matrix": [5, 3], "x": 3, "y": 5.5 }
]
}
}
}

View file

@ -0,0 +1,73 @@
/* Copyright 2022 Ramon Imbao
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* F13F14F15F16
*
* Num / * -
*
* 7 8 9
* +
* 4 5 6
*
* 1 2 3
* Ent
* 0 .
*
*/
[0] = LAYOUT_numpad_6x4(
KC_F13, KC_F14, KC_F15, KC_F16,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT
)
};
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
} else if (index == 1) {
if (clockwise) {
tap_code_delay(KC_BRIU, 10);
} else {
tap_code_delay(KC_BRID, 10);
}
} else if (index == 2) {
if (clockwise) {
tap_code(KC_RGHT);
} else {
tap_code(KC_LEFT);
}
} else {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
return false;
}

View file

@ -0,0 +1,73 @@
/* Copyright 2022 Ramon Imbao
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* F13F14F15F16
*
* - * / Num
*
* 7 8 9
* +
* 4 5 6
*
* 1 2 3
* Ent
* . 0
*
*/
[0] = LAYOUT_numpad_6x4_southpaw(
KC_F13, KC_F14, KC_F15, KC_F16,
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,
KC_PPLS, KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6,
KC_PENT, KC_P1, KC_P2, KC_P3,
KC_PDOT, KC_P0
)
};
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
} else if (index == 1) {
if (clockwise) {
tap_code_delay(KC_BRIU, 10);
} else {
tap_code_delay(KC_BRID, 10);
}
} else if (index == 2) {
if (clockwise) {
tap_code(KC_RGHT);
} else {
tap_code(KC_LEFT);
}
} else {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
return false;
}

View file

@ -0,0 +1,76 @@
/* Copyright 2022 Ramon Imbao
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* F13F14F15F16
*
* Num / * -
*
* 7 8 9
* +
* 4 5 6
*
* 1 2 3
* Ent
* 0 .
*
*/
[0] = LAYOUT_all(
KC_F13, KC_F14, KC_F15, KC_F16,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3, KC_PENT,
KC_P0, KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_all(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______
),
[2] = LAYOUT_all(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______
),
[3] = LAYOUT_all(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______
),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(KC_DOWN, KC_UP ), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
[1] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
[2] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
[3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
};
#endif

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View file

@ -0,0 +1,26 @@
# GHS.XLS
![GHS.XLS](https://i.imgur.com/5g5kw2sl.jpg)
The perfect partner numpad with the GHS.RAR. Can do normal, southpaw, and macro layouts.
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
* Hardware Supported: STM32F072
* Hardware Availability: [Gone Hacking Studio](https://gonehacking.studio/)
Make example for this keyboard (after setting up your build environment):
make ghs/xls:default
Flashing example for this keyboard:
make ghs/xls:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1,8 @@
# MCU name
MCU = STM32F072
# Bootloader selection
BOOTLOADER = stm32-dfu
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View file

@ -0,0 +1,86 @@
/* Copyright 2022 Simon Fell
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum custom_layers {
_NUMPAD,
_CONTROL,
_ADJUST,
};
#define RGBLIGHT_TIMEOUT 30000 // 30 seconds
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT(
TO(_CONTROL), KC_DOT,
KC_7 , KC_8, KC_9,
KC_4, KC_5, KC_6, KC_0,
KC_1 , KC_2 , KC_3
),
[_CONTROL] = LAYOUT(
TO(_ADJUST), _______,
LGUI(KC_X), LGUI(KC_C), LGUI(KC_V),
LGUI(KC_Q), LGUI(KC_W), LGUI(KC_N), LGUI(KC_S),
KC_VOLD , KC_MUTE , KC_VOLU
),
[_ADJUST] = LAYOUT(
TO(_NUMPAD), QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX,
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_TOG, RGB_VAD, RGB_VAI
),
};
// clang-format on
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _NUMPAD:
rgblight_sethsv_noeeprom(170, 255, 128);
rgblight_mode_noeeprom(2);
break;
case _CONTROL:
rgblight_mode_noeeprom(3);
break;
case _ADJUST:
rgblight_mode_noeeprom(4);
break;
}
return state;
}
// turn rgb off after some amount of inactivity
static uint16_t key_timer; // timer to track the last keyboard activity
static bool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean
/* Runs at the end of each scan loop, check if RGB timeout has occurred */
void housekeeping_task_user(void) {
if (!is_rgb_timeout && timer_elapsed(key_timer) > RGBLIGHT_TIMEOUT) {
rgblight_disable_noeeprom();
is_rgb_timeout = true;
}
}
/* Runs after each key press, check if activity occurred */
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
key_timer = timer_read(); // store time of last refresh
if (is_rgb_timeout) { // only do something if rgb has timed out
is_rgb_timeout = false;
rgblight_enable_noeeprom();
}
}
}

View file

@ -0,0 +1,7 @@
# 0xC.pad Layout
This is a 3 layer layout comprising of numpad, a number of osx shortcuts and an adjust layer
that can put it into boot mode.
The top left key cycles between the layers.
The layers all have unique rgb animations so you can easily tell which layer is active.