Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add m2 keyboard. #19853

Open
wants to merge 95 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 71 commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
55c34ae
Add m2 keyboard
jonylee1986 Feb 15, 2023
78d694e
Update keyboards/hfdkb/m2/config.h
jonylee1986 Feb 17, 2023
c93c02b
Update keyboards/hfdkb/m2/keymaps/default/keymap.c
jonylee1986 Feb 17, 2023
bd8f0bb
Update keyboards/hfdkb/m2/keymaps/via/keymap.c
jonylee1986 Feb 17, 2023
3c9a643
Revised the code according to the suggestions,added readme.md and add…
jonylee1986 Feb 17, 2023
88a2af2
add Hardware Availability in readme.md
jonylee1986 Feb 18, 2023
0bdc407
RGB_MATRIX_*_STEP --->RGBLIGHT_*_STEP
jonylee1986 Feb 18, 2023
5cc519d
Recall changes
jonylee1986 Feb 18, 2023
2201d10
override the behavior of the keycodes to control RGB
jonylee1986 Feb 21, 2023
839b640
Folder path modified,removed 'hfdkb/';Two customized keys have been d…
jonylee1986 Mar 6, 2023
c659405
Update keyboards/monsgeek/m2/keymaps/default/keymap.c
jonylee1986 Mar 8, 2023
ab4726c
Update keyboards/monsgeek/m2/config.h
jonylee1986 Mar 8, 2023
639f8bf
Update keyboards/monsgeek/m2/config.h
jonylee1986 Mar 8, 2023
237117d
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Mar 8, 2023
b61cbfa
Update keyboards/monsgeek/m2/keymaps/via/keymap.c
jonylee1986 Mar 8, 2023
856e3e3
Move the relevant settings to info.json, and use '_____,' for the sam…
jonylee1986 Mar 8, 2023
49d9d6a
Update info.json
jonylee1986 Mar 8, 2023
5a5af53
Update config.h
jonylee1986 Mar 8, 2023
30dba7c
Update config.h
jonylee1986 Mar 8, 2023
124031a
update m2.c,Make 'RGB_ HUI 'key seven-gear cycle
jonylee1986 Mar 8, 2023
3683304
Update keymap.c
jonylee1986 Mar 9, 2023
648bab7
Update keymap.c
jonylee1986 Mar 9, 2023
7e0f932
Update info.json
jonylee1986 Mar 11, 2023
73e0236
Delete m2.h
jonylee1986 Mar 11, 2023
c3c35ca
Update m2.c
jonylee1986 Mar 11, 2023
6bb9426
Update info.json
jonylee1986 Apr 3, 2023
7ee5771
Update keyboards/monsgeek/m2/keymaps/via/rules.mk
jonylee1986 Apr 7, 2023
e6cb15f
add USB_SUSPEND_WAKEUP_DELAY
jonylee1986 Apr 22, 2023
708e142
Move some settings from rules.mk to info.json
jonylee1986 Apr 24, 2023
de58387
updata config.h and delete rgb_matrix_kb.inc
jonylee1986 Apr 25, 2023
48664eb
add DISABLE_M2_KEYCODES
jonylee1986 Apr 25, 2023
4a87c85
Move code to info.json,and removed redundant features
jonylee1986 May 24, 2023
bc8d6f6
Update keyboards/monsgeek/m2/readme.md
itarze May 24, 2023
0fb6d2a
Update info.json
jonylee1986 Jun 1, 2023
ed31803
Update readme.md
jonylee1986 Jun 9, 2023
a2c9013
Update keyboards/monsgeek/m2/config.h
jonylee1986 Aug 18, 2023
cdf9651
Update keyboards/monsgeek/m2/info.json
jonylee1986 Aug 18, 2023
1e622ed
Update keyboards/monsgeek/m2/rules.mk
jonylee1986 Aug 18, 2023
fc256a3
Update info.json
jonylee1986 Aug 18, 2023
016017f
Update config.h
jonylee1986 Aug 18, 2023
7df8eed
Update keyboards/monsgeek/m2/readme.md
jonylee1986 Aug 18, 2023
ab2628f
Update keyboards/monsgeek/m2/readme.md
jonylee1986 Aug 18, 2023
260e342
Update keyboards/monsgeek/m2/info.json
jonylee1986 Aug 18, 2023
5876fb5
Update keyboards/monsgeek/m2/info.json
jonylee1986 Aug 30, 2023
653d620
Update m2.c
jonylee1986 Aug 30, 2023
8cfe0de
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Sep 18, 2023
f42f6ed
Update keyboards/monsgeek/m2/info.json
jonylee1986 Sep 18, 2023
f8b698f
Update keyboards/monsgeek/m2/info.json
jonylee1986 Sep 18, 2023
32f8318
Update keymap.c
jonylee1986 Sep 27, 2023
61a6d2c
Update keymap.c
jonylee1986 Sep 27, 2023
750d800
Update keyboards/monsgeek/m2/info.json
jonylee1986 Oct 12, 2023
914477e
Update keyboards/monsgeek/m2/readme.md
jonylee1986 Oct 12, 2023
e7b7769
Update keyboards/monsgeek/m2/readme.md
jonylee1986 Oct 18, 2023
112eba4
Update keyboards/monsgeek/m2/info.json
jonylee1986 Dec 6, 2023
19aed9e
Update keyboards/monsgeek/m2/config.h
jonylee1986 Dec 6, 2023
a4a319c
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Dec 6, 2023
e31c35c
Update info.json
jonylee1986 Dec 6, 2023
7d40b1e
Update keymap.c
jonylee1986 Dec 20, 2023
c8501fc
Update keymap.c
jonylee1986 Dec 20, 2023
208df61
Update info.json
jonylee1986 Dec 21, 2023
2b2f16f
Update m2.c
jonylee1986 Dec 21, 2023
40357a0
Update keymap.c
jonylee1986 Dec 21, 2023
1432d53
Update keymap.c
jonylee1986 Dec 21, 2023
770c722
Merge branch 'qmk:master' into hfdkb_m2
jonylee1986 Jan 17, 2024
9c9f96b
Merge branch 'qmk:master' into hfdkb_m2
jonylee1986 Feb 22, 2024
f4ae67e
Merge branch 'master' into hfdkb_m2
jonylee1986 Mar 19, 2024
7399518
Update config.h
jonylee1986 Mar 20, 2024
0ec8759
Update keyboards/monsgeek/m2/config.h
jonylee1986 Mar 23, 2024
5d7f50a
Update keyboards/monsgeek/m2/info.json
jonylee1986 Mar 23, 2024
772335c
Merge branch 'master' into hfdkb_m2
jonylee1986 Mar 23, 2024
56eabf6
Update readme.md
jonylee1986 Mar 23, 2024
2ac2a9b
Update keyboards/monsgeek/m2/keymaps/default/keymap.c
jonylee1986 May 15, 2024
c789f41
Update keyboards/monsgeek/m2/keymaps/via/keymap.c
jonylee1986 May 15, 2024
5ee0949
Update keyboards/monsgeek/m2/config.h
jonylee1986 May 15, 2024
6db953c
Update keyboards/monsgeek/m2/config.h
jonylee1986 May 15, 2024
4d98fcb
Update keyboards/monsgeek/m2/info.json
jonylee1986 May 15, 2024
b85d1ff
Update m2.c
jonylee1986 May 15, 2024
8dc7c21
Update m2.c
jonylee1986 May 15, 2024
6b146a6
Rename info.json to keyboard.json
jonylee1986 Jun 5, 2024
fb8699f
Delete keyboards/monsgeek/m2/rules.mk
jonylee1986 Jun 5, 2024
e156043
Update keyboard.json
jonylee1986 Jun 5, 2024
f0e6c7c
Update keyboards/monsgeek/m2/config.h
jonylee1986 Jun 12, 2024
107aa60
Update config.h
jonylee1986 Jun 26, 2024
f9b6fed
delete via keymap
jonylee1986 Sep 14, 2024
84981f0
Merge branch 'qmk:master' into hfdkb_m2
jonylee1986 Sep 14, 2024
27dc897
Update keymap.c
jonylee1986 Sep 14, 2024
6cc0005
Update readme.md
jonylee1986 Sep 14, 2024
c9d67cb
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Oct 22, 2024
b99eed7
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Oct 22, 2024
0982de4
Update keyboards/monsgeek/m2/m2.c
jonylee1986 Oct 22, 2024
63bab54
Update keyboards/monsgeek/m2/config.h
jonylee1986 Oct 26, 2024
f03ec60
Merge branch 'qmk:master' into hfdkb_m2
jonylee1986 Oct 26, 2024
d7df5e4
Update config.h
jonylee1986 Oct 26, 2024
8432145
Update keyboard.json
jonylee1986 Nov 12, 2024
67526c0
Update keyboard.json
jonylee1986 Nov 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions keyboards/monsgeek/m2/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* Copyright (C) 2023 jonylee@hfd
*
* 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

/* LED Indicators */
#define LED_WIN_LOCK_PIN C11

/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
#define SPI_MOSI_PIN B5
#define SPI_MISO_PIN B4
#define SPI_MOSI_PAL_MODE 5

#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)

/* I2C Config for LED Driver */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
#define I2C1_OPMODE OPMODE_I2C
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
#define I2C1_CLOCK_SPEED 400000 /* 400000 */

#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 38
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
#define RGB_TRIGGER_ON_KEYDOWN
#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved

23 changes: 23 additions & 0 deletions keyboards/monsgeek/m2/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/* Copyright (C) 2023 jonylee@hfd
*
* 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

#define HAL_USE_I2C TRUE
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD

#include_next <halconf.h>
269 changes: 269 additions & 0 deletions keyboards/monsgeek/m2/info.json
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
{
"manufacturer": "MonsGeek",
"keyboard_name": "M2",
"maintainer": "jonylee@hfd",
"bootloader": "wb32-dfu",
"diode_direction": "ROW2COL",
"dynamic_keymap": {
"layer_count": 6
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true,
"rgb_matrix": true
},
"indicators": {
"caps_lock": "A15",
"num_lock": "C10"
},
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"matrix_pins": {
"cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14"],
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
},
"processor": "WB32FQ95",
"rgb_matrix": {
"animations": {
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"dual_beacon": true,
"multisplash": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"raindrops": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_simple": true,
"typing_heatmap": true
},
"driver": "snled27351",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 13, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 26, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 39, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 52, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 65, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 79, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 92, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 105, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 118, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 131, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 144, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 158, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 171, "y": 0, "flags": 1},
{"matrix": [0, 17], "x": 184, "y": 0, "flags": 1},
{"matrix": [0, 18], "x": 197, "y": 0, "flags": 1},
{"matrix": [0, 19], "x": 210, "y": 0, "flags": 1},
{"matrix": [0, 20], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
{"matrix": [1, 1], "x": 13, "y": 12, "flags": 4},
{"matrix": [1, 2], "x": 26, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 39, "y": 12, "flags": 4},
{"matrix": [1, 4], "x": 52, "y": 12, "flags": 4},
{"matrix": [1, 5], "x": 65, "y": 12, "flags": 4},
{"matrix": [1, 6], "x": 79, "y": 12, "flags": 4},
{"matrix": [1, 7], "x": 92, "y": 12, "flags": 4},
{"matrix": [1, 8], "x": 105, "y": 12, "flags": 4},
{"matrix": [1, 9], "x": 118, "y": 12, "flags": 4},
{"matrix": [1, 10], "x": 131, "y": 12, "flags": 4},
{"matrix": [1, 11], "x": 144, "y": 12, "flags": 4},
{"matrix": [1, 12], "x": 158, "y": 12, "flags": 4},
{"matrix": [1, 13], "x": 171, "y": 12, "flags": 1},
{"matrix": [1, 17], "x": 184, "y": 12, "flags": 4},
{"matrix": [1, 18], "x": 197, "y": 12, "flags": 4},
{"matrix": [1, 19], "x": 210, "y": 12, "flags": 4},
{"matrix": [2, 20], "x": 224, "y": 12, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 1},
{"matrix": [2, 1], "x": 13, "y": 25, "flags": 4},
{"matrix": [2, 2], "x": 26, "y": 25, "flags": 4},
{"matrix": [2, 3], "x": 39, "y": 25, "flags": 4},
{"matrix": [2, 4], "x": 52, "y": 25, "flags": 4},
{"matrix": [2, 5], "x": 65, "y": 25, "flags": 4},
{"matrix": [2, 6], "x": 79, "y": 25, "flags": 4},
{"matrix": [2, 7], "x": 92, "y": 25, "flags": 4},
{"matrix": [2, 8], "x": 105, "y": 25, "flags": 4},
{"matrix": [2, 9], "x": 118, "y": 25, "flags": 4},
{"matrix": [2, 10], "x": 131, "y": 25, "flags": 4},
{"matrix": [2, 11], "x": 144, "y": 25, "flags": 4},
{"matrix": [2, 12], "x": 158, "y": 25, "flags": 4},
{"matrix": [2, 13], "x": 171, "y": 25, "flags": 1},
{"matrix": [2, 17], "x": 184, "y": 25, "flags": 1},
{"matrix": [2, 18], "x": 197, "y": 25, "flags": 4},
{"matrix": [2, 19], "x": 210, "y": 25, "flags": 4},
{"matrix": [2, 20], "x": 224, "y": 25, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 1},
{"matrix": [3, 1], "x": 13, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 26, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 39, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 52, "y": 38, "flags": 4},
{"matrix": [3, 5], "x": 65, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 79, "y": 38, "flags": 4},
{"matrix": [3, 7], "x": 92, "y": 38, "flags": 4},
{"matrix": [3, 8], "x": 105, "y": 38, "flags": 4},
{"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
{"matrix": [3, 10], "x": 131, "y": 38, "flags": 4},
{"matrix": [3, 11], "x": 144, "y": 38, "flags": 4},
{"matrix": [3, 13], "x": 163, "y": 38, "flags": 1},
{"matrix": [3, 17], "x": 184, "y": 38, "flags": 4},
{"matrix": [3, 18], "x": 197, "y": 38, "flags": 4},
{"matrix": [3, 19], "x": 210, "y": 38, "flags": 4},
{"matrix": [4, 0], "x": 0, "y": 51, "flags": 1},
{"matrix": [4, 1], "x": 26, "y": 51, "flags": 4},
{"matrix": [4, 2], "x": 39, "y": 51, "flags": 4},
{"matrix": [4, 3], "x": 52, "y": 51, "flags": 4},
{"matrix": [4, 4], "x": 65, "y": 51, "flags": 4},
{"matrix": [4, 5], "x": 79, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 92, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 105, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 118, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 131, "y": 51, "flags": 4},
{"matrix": [4, 10], "x": 144, "y": 51, "flags": 4},
{"matrix": [4, 13], "x": 158, "y": 51, "flags": 1},
{"matrix": [4, 15], "x": 171, "y": 51, "flags": 1},
{"matrix": [4, 17], "x": 184, "y": 51, "flags": 4},
{"matrix": [4, 18], "x": 197, "y": 51, "flags": 4},
{"matrix": [4, 19], "x": 210, "y": 51, "flags": 4},
{"matrix": [4, 20], "x": 224, "y": 51, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 37, "y": 64, "flags": 1},
{"matrix": [5, 5], "x": 92, "y": 64, "flags": 4},
{"matrix": [5, 9], "x": 130, "y": 64, "flags": 1},
{"matrix": [5, 10], "x": 145, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 158, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 171, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 184, "y": 64, "flags": 1},
{"matrix": [5, 18], "x": 197, "y": 64, "flags": 4},
{"matrix": [5, 19], "x": 210, "y": 64, "flags": 4}
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
],
"max_brightness": 200,
"val_steps": 20
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
},
"usb": {
"device_version": "1.0.4",
"force_nkro": true,
"pid": "0x0008",
"suspend_wakeup_delay": 400,
"vid": "0xFFFE"
},
"layouts": {
"LAYOUT": {
jonylee1986 marked this conversation as resolved.
Show resolved Hide resolved
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
{"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
{"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
{"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
{"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label": "Delete", "matrix": [0, 13], "x": 14, "y": 0},
{"label": "PrtSc", "matrix": [0, 17], "x": 15.5, "y": 0},
{"label": "Home", "matrix": [0, 18], "x": 16.5, "y": 0},
{"label": "Pgup", "matrix": [0, 19], "x": 17.5, "y": 0},
{"label": "Pgdn", "matrix": [0, 20], "x": 18.5, "y": 0},
{"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25},
{"label": "!", "matrix": [1, 1], "x": 1, "y": 1.25},
{"label": "@", "matrix": [1, 2], "x": 2, "y": 1.25},
{"label": "#", "matrix": [1, 3], "x": 3, "y": 1.25},
{"label": "$", "matrix": [1, 4], "x": 4, "y": 1.25},
{"label": "%", "matrix": [1, 5], "x": 5, "y": 1.25},
{"label": "^", "matrix": [1, 6], "x": 6, "y": 1.25},
{"label": "&", "matrix": [1, 7], "x": 7, "y": 1.25},
{"label": "*", "matrix": [1, 8], "x": 8, "y": 1.25},
{"label": "(", "matrix": [1, 9], "x": 9, "y": 1.25},
{"label": ")", "matrix": [1, 10], "x": 10, "y": 1.25},
{"label": "_", "matrix": [1, 11], "x": 11, "y": 1.25},
{"label": "+", "matrix": [1, 12], "x": 12, "y": 1.25},
{"label": "Bksp", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
{"label": "Numlock", "matrix": [1, 17], "x": 15.5, "y": 1.25},
{"label": "/", "matrix": [1, 18], "x": 16.5, "y": 1.25},
{"label": "*", "matrix": [1, 19], "x": 17.5, "y": 1.25},
{"label": "-", "matrix": [1, 20], "x": 18.5, "y": 1.25},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
{"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
{"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
{"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
{"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
{"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
{"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
{"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
{"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
{"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
{"label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25},
{"label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25},
{"label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
{"label": "7", "matrix": [2, 17], "x": 15.5, "y": 2.25},
{"label": "8", "matrix": [2, 18], "x": 16.5, "y": 2.25},
{"label": "9", "matrix": [2, 19], "x": 17.5, "y": 2.25},
{"label": "+", "matrix": [2, 20], "x": 18.5, "y": 2.25, "h": 2},
{"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
{"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
{"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
{"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
{"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
{"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
{"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
{"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
{"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
{"label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25},
{"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
{"label": "4", "matrix": [3, 17], "x": 15.5, "y": 3.25},
{"label": "5", "matrix": [3, 18], "x": 16.5, "y": 3.25},
{"label": "6", "matrix": [3, 19], "x": 17.5, "y": 3.25},
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
{"label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25},
{"label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25},
{"label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25},
{"label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25},
{"label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25},
{"label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25},
{"label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25},
{"label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25},
{"label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25},
{"label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25},
{"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
{"label": "Up", "matrix": [4, 15], "x": 14.25, "y": 4.5},
{"label": "1", "matrix": [4, 17], "x": 15.5, "y": 4.25},
{"label": "2", "matrix": [4, 18], "x": 16.5, "y": 4.25},
{"label": "3", "matrix": [4, 19], "x": 17.5, "y": 4.25},
{"label": "Enter", "matrix": [4, 20], "x": 18.5, "y": 4.25, "h": 2},
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25},
{"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.5},
{"label": "Fn", "matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.5},
{"label": "Left", "matrix": [5, 11], "x": 13.25, "y": 5.5},
{"label": "Down", "matrix": [5, 15], "x": 14.25, "y": 5.5},
{"label": "Right", "matrix": [5, 16], "x": 15.25, "y": 5.5},
{"label": "0", "matrix": [5, 18], "x": 16.5, "y": 5.25},
{"label": ".", "matrix": [5, 19], "x": 17.5, "y": 5.25}
]
}
}
}
Loading
Loading