diff options
Diffstat (limited to 'keyboards/kinesis')
29 files changed, 566 insertions, 23 deletions
diff --git a/keyboards/kinesis/alvicstep/alvicstep.c b/keyboards/kinesis/alvicstep/alvicstep.c index 274ac083c5..e803125681 100644 --- a/keyboards/kinesis/alvicstep/alvicstep.c +++ b/keyboards/kinesis/alvicstep/alvicstep.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include "alvicstep.h" // begin section origin https://github.com/alvicstep/tmk_keyboard diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h index 7bd56c4678..bd52bbeb98 100644 --- a/keyboards/kinesis/alvicstep/alvicstep.h +++ b/keyboards/kinesis/alvicstep/alvicstep.h @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #pragma once #include "quantum.h" diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h index bb3357ea57..82b8deca93 100644 --- a/keyboards/kinesis/alvicstep/config.h +++ b/keyboards/kinesis/alvicstep/config.h @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #pragma once /* key matrix size */ diff --git a/keyboards/kinesis/alvicstep/info.json b/keyboards/kinesis/alvicstep/info.json index 82c68367ab..293b0168a4 100644 --- a/keyboards/kinesis/alvicstep/info.json +++ b/keyboards/kinesis/alvicstep/info.json @@ -6,6 +6,16 @@ "pid": "0x6060", "device_version": "0.0.1" }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, "processor": "at90usb1286", "bootloader": "halfkay", "layouts": { diff --git a/keyboards/kinesis/keymaps/alvicstep/keymap.c b/keyboards/kinesis/keymaps/alvicstep/keymap.c new file mode 100644 index 0000000000..e9373ea214 --- /dev/null +++ b/keyboards/kinesis/keymaps/alvicstep/keymap.c @@ -0,0 +1,135 @@ +// Copyright 2023 Alex Stepanov (@alvicstep) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, // default layer + _KEYPAD, // arrow keys, shifted symbols, HOME, END, PGUP, PGDN, FKeys, CTRL(TAB) + _NUMPAD // numpad keys +}; + +/* ,------------------------------------------------------------------------------------------------------------------------. +* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 |PSCR|SLCK|PAUS|KPAD|BOOT| +* |--------+------+------+------+-------+------+--------------------------------+------+------+------+------+------+--------| +* | -_ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | =+ | +* |--------+------+------+------+-------+------| +------+------+------+------+------+--------| +* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | +* |--------+------+------+------+-------+------| |------+------+------+------+------+--------| +* | Del | A | S | D | F | G | | H | J | K | L | ;: | '" | +* |--------+------+------+------+-------+------| |------+------+------+------+------+--------| +* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? |Sht/Ent | +* `--------+------+------+------+-------+------- `------+------+------+------+------+--------' +* | `~ | Gui | Esc |MO(Num)| | [{ | ]} | | | +* `----------------------------' `---------------------------' +* ,---------------. ,---------------. +* |Alt+Tab| Alt | | Alt |TO(Num)| +* ,------|------ |-------| |-------+-------+------. +* | | | Shift | | Shift | | | +* | BkSp | KPAD |-------| |------ | KPAD | Space| +* | | | Ctrl | | Ctrl | | | +* `----------------------' `----------------------' +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BASE] = LAYOUT( +KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8, KC_F9,KC_F10,KC_F11,KC_F12,KC_PSCR,KC_SCRL,KC_PAUS,TO(_KEYPAD),QK_BOOT, +KC_MINS,KC_1,KC_2,KC_3,KC_4,KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_EQL, +KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T, KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS, +KC_DEL,KC_A,KC_S,KC_D,KC_F,KC_G, KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT, +KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,SC_SENT, +KC_GRV,KC_LGUI,KC_ESC,MO(_NUMPAD), KC_LBRC,KC_RBRC,KC_NO,KC_NO, + LALT(KC_TAB),KC_LALT, KC_RALT,TO(_NUMPAD), + KC_LSFT, KC_RSFT, + KC_BSPC,MO(_KEYPAD),KC_LCTL, KC_RCTL,MO(_KEYPAD),KC_SPC +), +/* ,------------------------------------------------------------------------------------------------------------------------. +* | | | | | | | | | | | | | | | | | TO(BASE) | | +* |--------+------+------+------+------+------+---------------------------------+------+------+------+------+------+--------| +* | _ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | F1 | F2 | F3 | F4 | F5 | | | Home | Up | End | | | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | F6 | F7 | F8 | F9 | F10 | | Pgup | Lft | Dwn | Rgt | : | " | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | CapsLk | | | | F11 | F12 | | Pgdn | | < | > | ? | | +* `--------+------+------+------+------+------' `------+------+------+------+------+--------' +* | ~ | INS | | | | { | } | | | +* `---------------------------' `---------------------------' +* ,--------------. ,--------------------. +* |Ctl+Tab| | | | | | +* ,------|------ |------| |------+------+------. +* | | |Shift | |Shift | | | +* | | |------| |------| | | +* | | | Ctrl | | Ctrl | | | +* `-------------- ------' `--------------------' +*/ +[_KEYPAD] = LAYOUT( + KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,TO(_BASE),KC_NO, + KC_UNDS,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_PLUS, + KC_NO,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5, KC_NO,KC_HOME,KC_UP,KC_END,KC_NO,KC_PIPE, + KC_CAPS,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10, KC_PGUP,KC_LEFT,KC_DOWN,KC_RGHT,KC_COLN,KC_DQUO, + KC_NO,KC_NO,KC_NO,KC_NO,KC_F11,KC_F12, KC_PGDN,KC_NO,KC_LT,KC_GT,KC_QUES,KC_NO, + KC_TILD,KC_INS,KC_NO,KC_NO, KC_LCBR,KC_RCBR,KC_NO,KC_NO, + LCTL(KC_TAB),KC_NO, KC_NO,KC_NO, + KC_LSFT, KC_RSFT, + KC_NO,KC_NO,KC_LCTL, KC_RCTL,KC_NO,KC_NO +), +/*,--------+------+------+------+------+------+ +------+------+------+------+------+--------. +* | | | | | | | | | Base | = | / | * | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | | | | | | | | 7 | 8 | 9 | - | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | Del | | | | | | | | 4 | 5 | 6 | + | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | BkSp | | | | | | | | 1 | 2 | 3 |Enter | Enter | +* `--------+------+------+------+------+------' `------+------+------+------+------+--------' +* | | | | | | . |Enter | | | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | | | | | Base | +* ,------|------|------| |------+------+------. +* | | | | | | | | +* | BkSp | |------| |------| | 0 | +* | | | | | | | | +* `--------------------' `--------------------' +*/ + +[_NUMPAD] = LAYOUT( + KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, + KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,TO(_BASE),KC_EQL,KC_SLSH,KC_ASTR,KC_NO, + KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_7,KC_8,KC_9,KC_MINS,KC_NO, + KC_DEL,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_4,KC_5,KC_6,KC_PLUS,KC_NO, + KC_BSPC,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_1,KC_2,KC_3,KC_ENT,KC_ENT, + KC_NO,KC_NO,KC_NO,KC_NO, KC_DOT,KC_ENT,KC_NO,KC_NO, + KC_NO,KC_NO, KC_NO,TO(_BASE), + KC_NO, KC_NO, + KC_BSPC,KC_NO,KC_NO, KC_NO,KC_NO,KC_0 +) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + //set LEDs which are triggered by a layer change + #ifdef LED_COMPOSE_PIN + writePin(LED_COMPOSE_PIN, !layer_state_cmp(state, _KEYPAD)); + #endif + + #ifdef LED_NUM_LOCK_PIN + writePin(LED_NUM_LOCK_PIN, !layer_state_cmp(state, _NUMPAD)); + #endif + + return state; +}; + +bool led_update_user(led_t led_state) { + #ifdef LED_CAPS_LOCK_PIN + writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock); + #endif + + #ifdef LED_SCROLL_LOCK_PIN + writePin(LED_SCROLL_LOCK_PIN, !led_state.scroll_lock); + #endif + + //disable default processing of LEDs + return false; +}
\ No newline at end of file diff --git a/keyboards/kinesis/keymaps/alvicstep/readme.md b/keyboards/kinesis/keymaps/alvicstep/readme.md new file mode 100644 index 0000000000..c21618a1dc --- /dev/null +++ b/keyboards/kinesis/keymaps/alvicstep/readme.md @@ -0,0 +1,105 @@ +## Custom Layout +Kinesis Contoured family of keyboards belong to a relatively small group of keyboards that utilize thumb clusters. The keycap profiles of thumb cluster keys make it easy to press multiple keys simultaneously by a thumb finger. Co-locating CTRL, SHIFT and KEYPAD modifiers in the thumb cluster gives truly unique capabilities to these keyboards. + +### "alvicstep" Layout +The **alvicstep** layout is optimized for software development on a Windows machine. It is a result of many years of daily usage. It is a great starting point for your own design. + +#### Layout Features +- 3 layers: default layer, keypad layer, numpad layer +- keypad layer allows for 2 finger operation using **arrow** keys together with + - **CTRL** and/or **SHIFT** modifiers OR + - **HOME/END** keys OR + - **PAGEUP/PAGEDOWN** keys. +- two finger operations can be achieved by holding up to 3 modifier keys (KEYPAD/SHIFT/CTRL) with a thumb finger and using index/middle/ring finger by pressing keywell keys. For example, you can fully control caret position and text selection of: + - each letter + - each word + - from a current caret position to the beginning of the line + - from a current caret position to the end of the line + - multiple lines + - multiple pages +- with little practice you will be able to string together different key combinations. For example, executing `KEYPAD + O` and then `KEYPAD + SHIFT + U` selects the whole line of text with barely any finger movement. The best part is that it works in any text editor! +- keypad layer allows accessing **F1-F12** and **ESC** keys by moving only a single finger away from the home row, making it very fast and convenient +- **KEYPAD** key can be used to access US ANSI Shifted Symbols instead of pressing a SHIFT key. This gives you two advantages: it makes KEYPAD key a "go to" key which is used in almost all operations unrelated to typing of letters. To understand the second advantage, compare pressing `SHIFT + 0` and `KEYPAD + 0` using the right hand +- **NUMPAD** "momentary" modifier key can be used to quickly switch to a numeric pad while typing alphanumeric strings. In a stock Kinesis firmware you would have to switch to KEYPAD layer and then press NUMLOCK key which makes it unusable for this task +- **NUMPAD** key in the right thumb cluster can be used to switch to a numeric pad for long numeric sequences + +#### Layout Layers + +![](https://i.imgur.com/86LCI3zh.jpg) +![](https://i.imgur.com/Gv4WBw7h.jpg) +![](https://i.imgur.com/gKXMUI2h.jpg) + +#### Notes +- MO(1) - switch to **KEYPAD** layer while key is being pressed +- MO(2) - switch to **NUMPAD** layer while key is being pressed +- TO(0) - switch to **BASE** layer +- TO(2) - switch to **NUMPAD** layer +- Rsft(Enter) - acts as an ENTER key when pressed and released. Acts as a SHIFT modifier in combination with other keys +- Bt - enter bootloader mode +- Alt(Tab) - toggle between last two active applications +- Ctrl(Tab) - toggle between last two active tabs + + +### Differences From Stock +- **{}[]** keys are moved to the left side of the keywell to be easily accessible +- **-** and **+** keys are switched +- **CAPS LOCK** key is moved to **KEYPAD** layer and is mapped to **DELETE** on **BASE** layer + +### Shortcuts + + +|Shortcut | Control Caret | +|---------------------|---------------------------------------| +|`KEYPAD + J` | move caret one character left | +|`KEYPAD + L` | move caret one character right | +|`KEYPAD + I` | move caret one line up | +|`KEYPAD + K` | move caret one line down | +|`KEYPAD + CTRL + J` | move caret one word to the left | +|`KEYPAD + CTRL + L` | move caret one word to the right | +|`KEYPAD + U` | move caret to the start of the line | +|`KEYPAD + O` | move caret to the end of the line | +|`KEYPAD + H` | move caret one page up | +|`KEYPAD + N` | move caret one page down | + + +|Shortcut | Scroll Lock | +|---------------------|---------------------------------------| +|`KEYPAD + CTRL + I` | scroll page up | +|`KEYPAD + CTRL + K` | scroll page down | + + +|Shortcut | Select Text | +|-----------------------------|-------------------------------| +|`KEYPAD + CTRL + SHIFT + J` | select one word to the left | +|`KEYPAD + CTRL + SHIFT + L` | select one word to the right | +|`KEYPAD + CTRL + SHIFT + I` | select one line up | +|`KEYPAD + CTRL + SHIFT + K` | select one line down | +|`KEYPAD + SHIFT + H` | select one page up | +|`KEYPAD + SHIFT + N` | select one page down | +|`KEYPAD + CTRL + SHIFT + U` | select from beginning of the file up to the caret position | +|`KEYPAD + CTRL + SHIFT + O` | select from caret position to the end of the file | + + +|Shortcut | US ANSI Shifted Symbols | +|---------------------|---------------------------------------| +|`KEYPAD + -` | _ | +|`KEYPAD + 1` | ! | +|`KEYPAD + 2` | @ | +|`KEYPAD + 3` | # | +|`KEYPAD + 4` | $ | +|`KEYPAD + 5` | % | +|`KEYPAD + 6` | ^ | +|`KEYPAD + 7` | & | +|`KEYPAD + 8` | * | +|`KEYPAD + 9` | ( | +|`KEYPAD + 0` | ) | +|`KEYPAD + =` | + | +|`KEYPAD + \` | \| | +|`KEYPAD + '` | " | +|`KEYPAD + ;` | : | +|`KEYPAD + /` | ? | +|`KEYPAD + [` | { | +|`KEYPAD + ]` | } | +|`KEYPAD + ,` | < | +|`KEYPAD + .` | > | +|`KEYPAD + BACKTICK` | ~ |
\ No newline at end of file diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c index 130dbd2b87..c9449c5408 100644 --- a/keyboards/kinesis/keymaps/default/keymap.c +++ b/keyboards/kinesis/keymaps/default/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H #define QWERTY 0 // Base qwerty diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c index a763f1a948..f8a5b4ed4f 100644 --- a/keyboards/kinesis/keymaps/dvorak/keymap.c +++ b/keyboards/kinesis/keymaps/dvorak/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H #define _DVORAK 0 // Base Dvorak layer diff --git a/keyboards/kinesis/keymaps/dvorak_nguyenvietyen/keymap.c b/keyboards/kinesis/keymaps/dvorak_nguyenvietyen/keymap.c index 4708f15ce9..7dbb4b9159 100644 --- a/keyboards/kinesis/keymaps/dvorak_nguyenvietyen/keymap.c +++ b/keyboards/kinesis/keymaps/dvorak_nguyenvietyen/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H #define DVORAK_MAC_MODE 0 // Base Dvorak in Kinesis's Mac Mode with (Cmd, Option, Ctrl, Cmd) thumbkeys diff --git a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c index 15e8927889..6275ed0a8d 100644 --- a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c +++ b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H extern keymap_config_t keymap_config; diff --git a/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c index fa230d38d0..ffcb1c3a8d 100644 --- a/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c +++ b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H extern keymap_config_t keymap_config; diff --git a/keyboards/kinesis/keymaps/tw1t611/keymap.c b/keyboards/kinesis/keymaps/tw1t611/keymap.c index 169cac82f9..e5fb5519dc 100644 --- a/keyboards/kinesis/keymaps/tw1t611/keymap.c +++ b/keyboards/kinesis/keymaps/tw1t611/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H #include "keymap_german.h" diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c index 7509544283..1dff9053a8 100644 --- a/keyboards/kinesis/keymaps/xyverz/keymap.c +++ b/keyboards/kinesis/keymaps/xyverz/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H enum layer_names { diff --git a/keyboards/kinesis/kint2pp/info.json b/keyboards/kinesis/kint2pp/info.json index 77986bea0a..ecf86658a8 100644 --- a/keyboards/kinesis/kint2pp/info.json +++ b/keyboards/kinesis/kint2pp/info.json @@ -7,6 +7,16 @@ "device_version": "0.0.2", "max_power": 100 }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, "build": { "debounce_type": "sym_eager_pk" }, diff --git a/keyboards/kinesis/kint36/info.json b/keyboards/kinesis/kint36/info.json index 608a18e178..969f819f80 100644 --- a/keyboards/kinesis/kint36/info.json +++ b/keyboards/kinesis/kint36/info.json @@ -7,6 +7,16 @@ "device_version": "0.0.1", "max_power": 100 }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, "build": { "debounce_type": "sym_eager_pk" }, diff --git a/keyboards/kinesis/kint41/info.json b/keyboards/kinesis/kint41/info.json index ced47d6213..eec726cf51 100644 --- a/keyboards/kinesis/kint41/info.json +++ b/keyboards/kinesis/kint41/info.json @@ -7,6 +7,16 @@ "device_version": "0.0.1", "max_power": 100 }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, "build": { "debounce_type": "sym_eager_pk" }, diff --git a/keyboards/kinesis/kintlc/info.json b/keyboards/kinesis/kintlc/info.json index 4206cacf1e..13c2f9a55c 100644 --- a/keyboards/kinesis/kintlc/info.json +++ b/keyboards/kinesis/kintlc/info.json @@ -7,6 +7,16 @@ "device_version": "0.0.1", "max_power": 50 }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, "build": { "debounce_type": "sym_eager_pk" }, diff --git a/keyboards/kinesis/kintwin/info.json b/keyboards/kinesis/kintwin/info.json new file mode 100644 index 0000000000..ed67c36af3 --- /dev/null +++ b/keyboards/kinesis/kintwin/info.json @@ -0,0 +1,146 @@ +{ + "development_board": "blackpill_f401", + "keyboard_name": "Kinesis", + "url": "https://github.com/alvicstep/kintwin", + "manufacturer": "https://github.com/alvicstep/kintwin", + "maintainer": "Alex Stepanov", + "usb": { + "device_version": "0.0.1", + "vid": "0x4B53", + "pid": "0x0001", + "shared_endpoint": { + "keyboard": true + } + }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "mousekey": true, + "extrakey": true, + "nkro": true, + "audio": false, + "backlight": false + }, + "matrix_pins": { + "rows": ["A0", "A1", "A2", "A3", "A4", "A5", "A6"], + "cols": ["A7", "B0", "B1", "B10", "B9", "B8", "B7", "B14", "B13", "B12", "C14", "C15", "B15", "B6", "B5"] + }, + "diode_direction": "ROW2COL", + "indicators": { + "caps_lock": "A15", + "scroll_lock": "B3", + "num_lock": "B4", + "compose": "C13", + "on_state": 0 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 12], "x": 0, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [0, 13], "x": 0.7, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [0, 14], "x": 1.39, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [1, 12], "x": 2.09, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [1, 13], "x": 2.78, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [1, 14], "x": 3.48, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [2, 12], "x": 4.17, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [2, 13], "x": 4.87, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [2, 14], "x": 5.56, "y": 0, "w": 0.69, "h": 0.85}, + + {"matrix": [3, 12], "x": 9.25, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [3, 13], "x": 9.95, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [3, 14], "x": 10.64, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [4, 12], "x": 11.34, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [4, 13], "x": 12.03, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [4, 14], "x": 12.73, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [5, 12], "x": 13.42, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [5, 14], "x": 14.12, "y": 0, "w": 0.69, "h": 0.85}, + {"matrix": [5, 13], "x": 14.81, "y": 0, "w": 0.69, "h": 0.85}, + + {"matrix": [0, 0], "x": 0, "y": 1.25, "w": 1.25}, + {"matrix": [0, 1], "x": 1.25, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1}, + {"matrix": [0, 3], "x": 3.25, "y": 1}, + {"matrix": [0, 4], "x": 4.25, "y": 1}, + {"matrix": [0, 5], "x": 5.25, "y": 1}, + + {"matrix": [0, 6], "x": 9.25, "y": 1}, + {"matrix": [0, 7], "x": 10.25, "y": 1}, + {"matrix": [0, 8], "x": 11.25, "y": 1}, + {"matrix": [0, 9], "x": 12.25, "y": 1}, + {"matrix": [0, 10], "x": 13.25, "y": 1.25}, + {"matrix": [0, 11], "x": 14.25, "y": 1.25, "w": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2}, + {"matrix": [1, 3], "x": 3.25, "y": 2}, + {"matrix": [1, 4], "x": 4.25, "y": 2}, + {"matrix": [1, 5], "x": 5.25, "y": 2}, + + {"matrix": [1, 6], "x": 11.25, "y": 2.25}, + {"matrix": [1, 7], "x": 12.25, "y": 2.25}, + {"matrix": [1, 8], "x": 13.25, "y": 2.25}, + {"matrix": [1, 9], "x": 14.25, "y": 2.25}, + {"matrix": [1, 10], "x": 15.25, "y": 2.25}, + {"matrix": [1, 11], "x": 16.25, "y": 2.25, "w": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25, "w": 1.25}, + {"matrix": [2, 1], "x": 1.25, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3}, + {"matrix": [2, 3], "x": 3.25, "y": 3}, + {"matrix": [2, 4], "x": 4.25, "y": 3}, + {"matrix": [2, 5], "x": 5.25, "y": 3}, + + {"matrix": [2, 6], "x": 9.25, "y": 3}, + {"matrix": [2, 7], "x": 10.25, "y": 3}, + {"matrix": [2, 8], "x": 11.25, "y": 3}, + {"matrix": [2, 9], "x": 12.25, "y": 3}, + {"matrix": [2, 10], "x": 13.25, "y": 3.25}, + {"matrix": [2, 11], "x": 14.25, "y": 3.25, "w": 1.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4}, + {"matrix": [3, 3], "x": 3.25, "y": 4}, + {"matrix": [3, 4], "x": 4.25, "y": 4}, + {"matrix": [3, 5], "x": 5.25, "y": 4}, + + {"matrix": [3, 6], "x": 9.25, "y": 4}, + {"matrix": [3, 7], "x": 10.25, "y": 4}, + {"matrix": [3, 8], "x": 11.25, "y": 4}, + {"matrix": [3, 9], "x": 12.25, "y": 4}, + {"matrix": [3, 10], "x": 13.25, "y": 4.25}, + {"matrix": [3, 11], "x": 14.25, "y": 4.25, "w": 1.25}, + + {"matrix": [4, 1], "x": 1.25, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5}, + {"matrix": [4, 3], "x": 3.25, "y": 5}, + {"matrix": [4, 5], "x": 4.25, "y": 5}, + + {"matrix": [4, 6], "x": |