diff options
Diffstat (limited to 'keyboards/clueboard')
223 files changed, 10157 insertions, 0 deletions
diff --git a/keyboards/clueboard/17/.noci b/keyboards/clueboard/17/.noci new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/keyboards/clueboard/17/.noci | |||
diff --git a/keyboards/clueboard/17/17.c b/keyboards/clueboard/17/17.c new file mode 100644 index 000000000..44b55a323 --- /dev/null +++ b/keyboards/clueboard/17/17.c | |||
@@ -0,0 +1,43 @@ | |||
1 | #include "17.h" | ||
2 | |||
3 | int pwm_level; | ||
4 | |||
5 | void backlight_init_ports(void) { | ||
6 | // Set C7 to output | ||
7 | DDRC |= (1<<7); | ||
8 | |||
9 | // Initialize the timer | ||
10 | TC4H = 0x03; | ||
11 | OCR4C = 0xFF; | ||
12 | TCCR4A = 0b10000010; | ||
13 | TCCR4B = 0b00000001; | ||
14 | } | ||
15 | |||
16 | void backlight_set(uint8_t level) { | ||
17 | // Determine the PWM level | ||
18 | switch (level) | ||
19 | { | ||
20 | case 0: | ||
21 | // 33% | ||
22 | pwm_level = 0x54; | ||
23 | break; | ||
24 | case 1: | ||
25 | // 66% | ||
26 | pwm_level = 0xA8; | ||
27 | break; | ||
28 | case 2: | ||
29 | // 100% | ||
30 | pwm_level = 0xFF; | ||
31 | break; | ||
32 | case 3: | ||
33 | // 0% | ||
34 | pwm_level = 0x00; | ||
35 | break; | ||
36 | default: | ||
37 | xprintf("Unknown level: %d\n", level); | ||
38 | } | ||
39 | |||
40 | // Write the PWM level to the timer | ||
41 | TC4H = pwm_level >> 8; | ||
42 | OCR4A = 0xFF & pwm_level; | ||
43 | } | ||
diff --git a/keyboards/clueboard/17/17.h b/keyboards/clueboard/17/17.h new file mode 100644 index 000000000..ef5b3f3e0 --- /dev/null +++ b/keyboards/clueboard/17/17.h | |||
@@ -0,0 +1,3 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "quantum.h" | ||
diff --git a/keyboards/clueboard/17/config.h b/keyboards/clueboard/17/config.h new file mode 100644 index 000000000..e2d0d1a23 --- /dev/null +++ b/keyboards/clueboard/17/config.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <[email protected]> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #include "config_common.h" | ||
21 | |||
22 | /* Number of backlighting levels */ | ||
23 | #define BACKLIGHT_LEVELS 3 | ||
diff --git a/keyboards/clueboard/17/info.json b/keyboards/clueboard/17/info.json new file mode 100644 index 000000000..fb12f7dcc --- /dev/null +++ b/keyboards/clueboard/17/info.json | |||
@@ -0,0 +1,65 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 17% (Cluepad)", | ||
4 | "maintainer": "skullydazed", | ||
5 | "diode_direction": "COL2ROW", | ||
6 | "processor": "atmega32u4", | ||
7 | "features": { | ||
8 | "backlight": true, | ||
9 | "bootmagic": false, | ||
10 | "command": false, | ||
11 | "console": true, | ||
12 | "extrakey": true, | ||
13 | "midi": false, | ||
14 | "mousekey": true, | ||
15 | "nkro": true, | ||
16 | "rgblight": true, | ||
17 | "unicode": false | ||
18 | }, | ||
19 | "matrix_pins": { | ||
20 | "cols": ["F4", "E6", "B1", "D2"], | ||
21 | "rows": ["B0", "D3", "D5", "D4", "D6"] | ||
22 | }, | ||
23 | "rgblight": { | ||
24 | "animations": { | ||
25 | "all": true | ||
26 | }, | ||
27 | "brightness_steps": 17, | ||
28 | "hue_steps": 10, | ||
29 | "led_count": 4, | ||
30 | "pin": "F6", | ||
31 | "saturation_steps": 17 | ||
32 | }, | ||
33 | "url": "", | ||
34 | "usb": { | ||
35 | "device_ver": "0x0001", | ||
36 | "pid": "0x2312", | ||
37 | "vid": "0xC1ED" | ||
38 | }, | ||
39 | "layout_aliases": { | ||
40 | "LAYOUT": "LAYOUT_numpad_5x4" | ||
41 | }, | ||
42 | "layouts": { | ||
43 | "LAYOUT_numpad_5x4": { | ||
44 | "layout": [ | ||
45 | { "label": "Num Lock", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
46 | { "label": "/", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
47 | { "label": "*", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
48 | { "label": "-", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
49 | { "label": "7", "matrix": [1, 0], "w": 1, "x": 0, "y": 1 }, | ||
50 | { "label": "8", "matrix": [1, 1], "w": 1, "x": 1, "y": 1 }, | ||
51 | { "label": "9", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 }, | ||
52 | { "label": "4", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 }, | ||
53 | { "label": "5", "matrix": [2, 1], "w": 1, "x": 1, "y": 2 }, | ||
54 | { "label": "6", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 }, | ||
55 | { "h": 2, "label": "+", "matrix": [1, 3], "w": 1, "x": 3, "y": 1 }, | ||
56 | { "label": "1", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 }, | ||
57 | { "label": "2", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 }, | ||
58 | { "label": "3", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 }, | ||
59 | { "label": "0", "matrix": [4, 0], "w": 2, "x": 0, "y": 4 }, | ||
60 | { "label": ".", "matrix": [4, 2], "w": 1, "x": 2, "y": 4 }, | ||
61 | { "h": 2, "label": "Enter", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 } | ||
62 | ] | ||
63 | } | ||
64 | } | ||
65 | } | ||
diff --git a/keyboards/clueboard/17/keymaps/default/keymap.c b/keyboards/clueboard/17/keymaps/default/keymap.c new file mode 100644 index 000000000..155eb6e6e --- /dev/null +++ b/keyboards/clueboard/17/keymaps/default/keymap.c | |||
@@ -0,0 +1,52 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | |||
10 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
11 | /* Keymap _BL: (Base Layer) Default Layer | ||
12 | * .-------------------. | ||
13 | * |NL F| /| *| -| | ||
14 | * |-------------------| | ||
15 | * | 7| 8| 9| | | ||
16 | * |--------------| | | ||
17 | * | 4| 5| 6| +| | ||
18 | * |-------------------| | ||
19 | * | 1| 2| 3| | | ||
20 | * |--------------| | | ||
21 | * | 0| .| Ent| | ||
22 | * '-------------------' | ||
23 | */ | ||
24 | [_BL] = LAYOUT_numpad_5x4( | ||
25 | LT(_FL, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS, | ||
26 | KC_P7, KC_P8, KC_P9, | ||
27 | KC_P4, KC_P5, KC_P6, KC_PPLS, | ||
28 | KC_P1, KC_P2, KC_P3, | ||
29 | KC_P0, KC_PDOT, KC_PENT | ||
30 | ), | ||
31 | |||
32 | /* Keymap _FL: Function Layer | ||
33 | * .-------------------. | ||
34 | * |NL F| | | Fn0| | ||
35 | * |-------------------| | ||
36 | * | | Fn4| | | | ||
37 | * |--------------| | | ||
38 | * | Fn3|BL_S| Fn2| Fn6| | ||
39 | * |-------------------| | ||
40 | * | | Fn5| | | | ||
41 | * |--------------| | | ||
42 | * | Fn1| | Fn7| | ||
43 | * '-------------------' | ||
44 | */ | ||
45 | [_FL] = LAYOUT_numpad_5x4( | ||
46 | LT(_FL, KC_NLCK), _______, _______, RGB_TOG, | ||
47 | _______, RGB_SAI, _______, | ||
48 | RGB_HUD, BL_STEP, RGB_HUI, RGB_VAI, | ||
49 | _______, RGB_SAD, _______, | ||
50 | RGB_MOD, _______, RGB_VAD | ||
51 | ) | ||
52 | }; | ||
diff --git a/keyboards/clueboard/17/keymaps/default/readme.md b/keyboards/clueboard/17/keymaps/default/readme.md new file mode 100644 index 000000000..4fc9092b3 --- /dev/null +++ b/keyboards/clueboard/17/keymaps/default/readme.md | |||
@@ -0,0 +1 @@ | |||
Default keymap for the Clueboard 17. | |||
diff --git a/keyboards/clueboard/17/readme.md b/keyboards/clueboard/17/readme.md new file mode 100644 index 000000000..c183657f9 --- /dev/null +++ b/keyboards/clueboard/17/readme.md | |||
@@ -0,0 +1,16 @@ | |||
1 | # Clueboard 17% (Formerly Cluepad) | ||
2 | |||
3 |  | ||
4 | |||
5 | A basic 17 key numpad PCB. | ||
6 | |||
7 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
8 | * Hardware Supported: | ||
9 | * Cluepad PCB 1.0 | ||
10 | * Hardware Availability: [clueboard.co](https://clueboard.co/) | ||
11 | |||
12 | Make example for this keyboard (after setting up your build environment): | ||
13 | |||
14 | make clueboard/17:default | ||
15 | |||
16 | 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). | ||
diff --git a/keyboards/clueboard/17/rules.mk b/keyboards/clueboard/17/rules.mk new file mode 100644 index 000000000..d2e52d56b --- /dev/null +++ b/keyboards/clueboard/17/rules.mk | |||
@@ -0,0 +1,2 @@ | |||
1 | # Build Options | ||
2 | BACKLIGHT_DRIVER = custom | ||
diff --git a/keyboards/clueboard/2x1800/2018/.noci b/keyboards/clueboard/2x1800/2018/.noci new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/.noci | |||
diff --git a/keyboards/clueboard/2x1800/2018/2018.c b/keyboards/clueboard/2x1800/2018/2018.c new file mode 100644 index 000000000..dee0c01b5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/2018.c | |||
@@ -0,0 +1,16 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "2018.h" | ||
diff --git a/keyboards/clueboard/2x1800/2018/2018.h b/keyboards/clueboard/2x1800/2018/2018.h new file mode 100644 index 000000000..6e2d3b383 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/2018.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #pragma once | ||
18 | |||
19 | #include "quantum.h" | ||
diff --git a/keyboards/clueboard/2x1800/2018/config.h b/keyboards/clueboard/2x1800/2018/config.h new file mode 100644 index 000000000..9d5b9b514 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/config.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | Copyright 2017 Zach White <[email protected]> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #include "config_common.h" | ||
21 | |||
22 | /* audio support */ | ||
23 | #define AUDIO_PIN_ALT B7 | ||
24 | #define AUDIO_PIN C4 | ||
25 | #define AUDIO_CLICKY | ||
26 | |||
27 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
28 | #define LOCKING_SUPPORT_ENABLE | ||
29 | |||
30 | /* Locking resynchronize hack */ | ||
31 | #define LOCKING_RESYNC_ENABLE | ||
diff --git a/keyboards/clueboard/2x1800/2018/info.json b/keyboards/clueboard/2x1800/2018/info.json new file mode 100644 index 000000000..38e7421a1 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/info.json | |||
@@ -0,0 +1,432 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 2x1800 2018", | ||
4 | "maintainer": "skullydazed", | ||
5 | "processor": "at90usb1286", | ||
6 | "bootloader": "halfkay", | ||
7 | "debounce": 5, | ||
8 | "diode_direction": "ROW2COL", | ||
9 | "features": { | ||
10 | "audio": true, | ||
11 | "bootmagic": false, | ||
12 | "command": false, | ||
13 | "console": true, | ||
14 | "extrakey": true, | ||
15 | "midi": false, | ||
16 | "mousekey": true, | ||
17 | "nkro": true, | ||
18 | "rgblight": true, | ||
19 | "unicode": false | ||
20 | }, | ||
21 | "indicators": { | ||
22 | "num_lock": "B4", | ||
23 | "caps_lock": "B5", | ||
24 | "scroll_lock": "B6" | ||
25 | }, | ||
26 | "matrix_pins": { | ||
27 | "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "B0", "E6", "B3", "B2"], | ||
28 | "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "B1", "F2", "F3", "F4", "F5", "F6"] | ||
29 | }, | ||
30 | "rgblight": { | ||
31 | "animations": { | ||
32 | "all": true | ||
33 | }, | ||
34 | "brightness_steps": 8, | ||
35 | "hue_steps": 8, | ||
36 | "led_count": 16, | ||
37 | "pin": "C6", | ||
38 | "saturation_steps": 8 | ||
39 | }, | ||
40 | "usb": { | ||
41 | "pid": "0x23A0" | ||
42 | }, | ||
43 | "layout_aliases": { | ||
44 | "LAYOUT": "LAYOUT_all" | ||
45 | }, | ||
46 | "layouts": { | ||
47 | "LAYOUT_4u_space": { | ||
48 | "layout": [ | ||
49 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
50 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
51 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
52 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
53 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
54 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
55 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
56 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
57 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
58 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
59 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
60 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
61 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
62 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
63 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
64 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
65 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
66 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
67 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
68 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
69 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
70 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
71 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
72 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
73 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
74 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
75 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
76 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
77 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
78 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
79 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
80 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
81 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
82 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
83 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
84 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
85 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
86 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
87 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
88 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
89 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
90 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
91 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
92 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
93 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
94 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
95 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
96 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
97 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
98 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
99 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
100 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
101 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
102 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
103 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
104 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
105 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
106 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
107 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
108 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
109 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
110 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
111 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
112 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
113 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
114 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
115 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
116 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
117 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
118 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
119 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
120 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
121 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
122 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
123 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
124 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
125 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
126 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
127 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
128 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
129 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
130 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
131 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
132 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
133 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
134 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
135 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
136 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
137 | { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
138 | { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, | ||
139 | { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, | ||
140 | { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, | ||
141 | { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, | ||
142 | { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, | ||
143 | { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, | ||
144 | { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, | ||
145 | { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, | ||
146 | { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, | ||
147 | { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, | ||
148 | { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
149 | { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, | ||
150 | { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, | ||
151 | { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, | ||
152 | { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, | ||
153 | { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, | ||
154 | { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, | ||
155 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
156 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
157 | { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, | ||
158 | { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, | ||
159 | { "matrix": [5, 5], "w": 1, "x": 8.5, "y": 5.25 }, | ||
160 | { "matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25 }, | ||
161 | { "matrix": [5, 7], "w": 1, "x": 13.5, "y": 5.25 }, | ||
162 | { "matrix": [5, 8], "w": 1, "x": 14.5, "y": 5.25 }, | ||
163 | { "matrix": [11, 0], "w": 1, "x": 15.5, "y": 5.25 }, | ||
164 | { "matrix": [11, 2], "w": 1, "x": 16.5, "y": 5.25 }, | ||
165 | { "matrix": [11, 3], "w": 1, "x": 21, "y": 5.25 }, | ||
166 | { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, | ||
167 | { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, | ||
168 | { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, | ||
169 | { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, | ||
170 | { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, | ||
171 | { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, | ||
172 | { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } | ||
173 | ] | ||
174 | }, | ||
175 | "LAYOUT_7u_space": { | ||
176 | "layout": [ | ||
177 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
178 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
179 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
180 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
181 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
182 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
183 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
184 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
185 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
186 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
187 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
188 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
189 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
190 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
191 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
192 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
193 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
194 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
195 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
196 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
197 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
198 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
199 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
200 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
201 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
202 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
203 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
204 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
205 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
206 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
207 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
208 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
209 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
210 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
211 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
212 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
213 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
214 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
215 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
216 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
217 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
218 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
219 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
220 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
221 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
222 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
223 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
224 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
225 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
226 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
227 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
228 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
229 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
230 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
231 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
232 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
233 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
234 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
235 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
236 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
237 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
238 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
239 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
240 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
241 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
242 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
243 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
244 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
245 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
246 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
247 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
248 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
249 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
250 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
251 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
252 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
253 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
254 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
255 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
256 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
257 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
258 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
259 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
260 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
261 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
262 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
263 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
264 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
265 | { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
266 | { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, | ||
267 | { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, | ||
268 | { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, | ||
269 | { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, | ||
270 | { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, | ||
271 | { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, | ||
272 | { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, | ||
273 | { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, | ||
274 | { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, | ||
275 | { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, | ||
276 | { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
277 | { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, | ||
278 | { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, | ||
279 | { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, | ||
280 | { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, | ||
281 | { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, | ||
282 | { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, | ||
283 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
284 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
285 | { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, | ||
286 | { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, | ||
287 | { "matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25 }, | ||
288 | { "matrix": [5, 6], "w": 1, "x": 15.5, "y": 5.25 }, | ||
289 | { "matrix": [5, 7], "w": 1, "x": 16.5, "y": 5.25 }, | ||
290 | { "matrix": [11, 0], "w": 1, "x": 21, "y": 5.25 }, | ||
291 | { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, | ||
292 | { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, | ||
293 | { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, | ||
294 | { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, | ||
295 | { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, | ||
296 | { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, | ||
297 | { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } | ||
298 | ] | ||
299 | }, | ||
300 | "LAYOUT_all": { | ||
301 | "layout": [ | ||
302 | { "label": "Home", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
303 | { "label": "End", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
304 | { "label": "PgUp", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
305 | { "label": "PgDn", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
306 | { "label": "Esc", "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
307 | { "label": "F1", "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
308 | { "label": "F2", "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
309 | { "label": "F3", "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
310 | { "label": "F4", "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
311 | { "label": "F5", "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
312 | { "label": "F6", "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
313 | { "label": "F7", "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
314 | { "label": "F8", "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
315 | { "label": "F9", "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
316 | { "label": "F10", "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
317 | { "label": "F11", "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
318 | { "label": "F12", "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
319 | { "label": "PrtSc", "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
320 | { "label": "Scroll Lock", "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
321 | { "label": "Pause", "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
322 | { "label": "Insert", "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
323 | { "label": "-", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
324 | { "label": "Num Lock", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
325 | { "label": "/", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
326 | { "label": "*", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
327 | { "label": "~", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
328 | { "label": "!", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
329 | { "label": "@", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
330 | { "label": "#", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
331 | { "label": "$", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
332 | { "label": "%", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
333 | { "label": "^", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
334 | { "label": "&", "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
335 | { "label": "*", "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
336 | { "label": "(", "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
337 | { "label": ")", "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
338 | { "label": "_", "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
339 | { "label": "+", "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
340 | { "label": "Backspace", "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
341 | { "label": "Num Lock", "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
342 | { "label": "/", "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
343 | { "label": "*", "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
344 | { "label": "-", "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
345 | { "h": 2, "label": "+", "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
346 | { "label": "7", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
347 | { "label": "8", "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
348 | { "label": "9", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
349 | { "label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
350 | { "label": "Q", "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
351 | { "label": "W", "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
352 | { "label": "E", "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
353 | { "label": "R", "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
354 | { "label": "T", "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
355 | { "label": "Y", "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
356 | { "label": "U", "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
357 | { "label": "I", "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
358 | { "label": "O", "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
359 | { "label": "P", "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
360 | { "label": "{", "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
361 | { "label": "}", "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
362 | { "label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
363 | { "label": "7", "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
364 | { "label": "8", "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
365 | { "label": "9", "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
366 | { "h": 2, "label": "+", "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
367 | { "label": "4", "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
368 | { "label": "5", "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
369 | { "label": "6", "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
370 | { "label": "Caps Lock", "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
371 | { "label": "A", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
372 | { "label": "S", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
373 | { "label": "D", "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
374 | { "label": "F", "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
375 | { "label": "G", "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
376 | { "label": "H", "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
377 | { "label": "J", "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
378 | { "label": "K", "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
379 | { "label": "L", "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
380 | { "label": ":", "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
381 | { "label": "\"", "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
382 | { "label": "Enter", "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
383 | { "label": "4", "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
384 | { "label": "5", "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
385 | { "label": "6", "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
386 | { "h": 2, "label": "Enter", "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
387 | { "label": "1", "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
388 | { "label": "2", "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
389 | { "label": "3", "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
390 | { "label": "\\u2191", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, | ||
391 | { "label": "Shift", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
392 | { "label": "Z", "matrix": [4, 6], "w": 1, "x": 6.75, "y": 4.25 }, | ||
393 | { "label": "X", "matrix": [4, 7], "w": 1, "x": 7.75, "y": 4.25 }, | ||
394 | { "label": "C", "matrix": [4, 8], "w": 1, "x": 8.75, "y": 4.25 }, | ||
395 | { "label": "V", "matrix": [4, 9], "w": 1, "x": 9.75, "y": 4.25 }, | ||
396 | { "label": "B", "matrix": [4, 10], "w": 1, "x": 10.75, "y": 4.25 }, | ||
397 | { "label": "N", "matrix": [10, 0], "w": 1, "x": 11.75, "y": 4.25 }, | ||
398 | { "label": "M", "matrix": [10, 1], "w": 1, "x": 12.75, "y": 4.25 }, | ||
399 | { "label": "<", "matrix": [10, 2], "w": 1, "x": 13.75, "y": 4.25 }, | ||
400 | { "label": ">", "matrix": [10, 3], "w": 1, "x": 14.75, "y": 4.25 }, | ||
401 | { "label": "?", "matrix": [10, 4], "w": 1, "x": 15.75, "y": 4.25 }, | ||
402 | { "label": "Shift", "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
403 | { "label": "\\u2191", "matrix": [9, 6], "w": 1, "x": 18.75, "y": 4.5 }, | ||
404 | { "label": "1", "matrix": [10, 7], "w": 1, "x": 20, "y": 4.25 }, | ||
405 | { "label": "2", "matrix": [10, 8], "w": 1, "x": 21, "y": 4.25 }, | ||
406 | { "label": "3", "matrix": [10, 9], "w": 1, "x": 22, "y": 4.25 }, | ||
407 | { "h": 2, "label": "Enter", "matrix": [10, 10], "w": 1, "x": 23, "y": 4.25 }, | ||
408 | { "label": "0", "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
409 | { "label": ".", "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
410 | { "label": "\\u2190", "matrix": [5, 3], "w": 1, "x": 3.25, "y": 5.5 }, | ||
411 | { "label": "\\u2193", "matrix": [5, 4], "w": 1, "x": 4.25, "y": 5.5 }, | ||
412 | { "label": "\\u2192", "matrix": [5, 5], "w": 1, "x": 5.25, "y": 5.5 }, | ||
413 | { "label": "Ctrl", "matrix": [5, 6], "w": 1, "x": 6.5, "y": 5.25 }, | ||
414 | { "label": "Win", "matrix": [5, 7], "w": 1, "x": 7.5, "y": 5.25 }, | ||
415 | { "label": "Alt", "matrix": [5, 8], "w": 1, "x": 8.5, "y": 5.25 }, | ||
416 | { "label": "1u", "matrix": [5, 9], "w": 1, "x": 9.5, "y": 5.25 }, | ||
417 | { "label": "1u", "matrix": [5, 10], "w": 1, "x": 10.5, "y": 5.25 }, | ||
418 | { "label": "1u", "matrix": [11, 0], "w": 1, "x": 11.5, "y": 5.25 }, | ||
419 | { "label": "1u", "matrix": [11, 1], "w": 1, "x": 12.5, "y": 5.25 }, | ||
420 | { "label": "Alt", "matrix": [11, 2], "w": 1, "x": 13.5, "y": 5.25 }, | ||
421 | { "label": "Win", "matrix": [11, 3], "w": 1, "x": 14.5, "y": 5.25 }, | ||
422 | { "label": "Menu", "matrix": [11, 4], "w": 1, "x": 15.5, "y": 5.25 }, | ||
423 | { "label": "Ctrl", "matrix": [11, 5], "w": 1, "x": 16.5, "y": 5.25 }, | ||
424 | { "label": "\\u2190", "matrix": [10, 6], "w": 1, "x": 17.75, "y": 5.5 }, | ||
425 | { "label": "\\u2193", "matrix": [11, 6], "w": 1, "x": 18.75, "y": 5.5 }, | ||
426 | { "label": "\\u2192", "matrix": [11, 7], "w": 1, "x": 19.75, "y": 5.5 }, | ||
427 | { "label": "0", "matrix": [11, 8], "w": 1, "x": 21, "y": 5.25 }, | ||
428 | { "label": ".", "matrix": [11, 9], "w": 1, "x": 22, "y": 5.25 } | ||
429 | ] | ||
430 | } | ||
431 | } | ||
432 | } | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json new file mode 100644 index 000000000..f7316001c --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default/keymap.json | |||
@@ -0,0 +1,11 @@ | |||
1 | { | ||
2 | "keyboard":"clueboard/2x1800/2018", | ||
3 | "keymap":"default", | ||
4 | "layout":"LAYOUT", | ||
5 | "layers":[ | ||
6 | ["KC_HOME","KC_END","KC_PGUP","KC_PGDN","KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_PSCR","KC_SLCK","KC_PAUS","KC_INS","KC_PMNS","KC_NLCK","KC_PSLS","KC_PAST","KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_BSPC","KC_NLCK","KC_PSLS","KC_PAST","KC_PMNS","KC_PPLS","KC_P7","KC_P8","KC_P9","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_P7","KC_P8","KC_P9","KC_PSLS","KC_P4","KC_P5","KC_P6","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_ENT","KC_P4","KC_P5","KC_P6","KC_PENT","KC_P1","KC_P2","KC_P3","KC_UP","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_SLSH","KC_COMM","KC_DOT","KC_RSFT","KC_UP","KC_P1","KC_P2","KC_P3","KC_PENT","KC_P0","KC_PDOT","KC_LEFT","KC_DOWN","KC_RGHT","KC_LCTL","KC_LGUI","KC_LALT","KC_SPC","KC_SPC","KC_SPC","KC_SPC","KC_RALT","KC_RGUI","KC_APP","KC_RCTL","KC_LEFT","KC_DOWN","KC_RGHT","KC_P0","KC_PDOT"] | ||
7 | ], | ||
8 | "author":"skullydazed", | ||
9 | "notes":"", | ||
10 | "version":1 | ||
11 | } | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/default/readme.md new file mode 100644 index 000000000..4e3457efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 | |||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c new file mode 100644 index 000000000..71c5226ec --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_4u_space( | ||
20 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
21 | |||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_4u/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/readme.md new file mode 100644 index 000000000..a696972e8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 4u Spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c new file mode 100644 index 000000000..5a1a00c19 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_7u_space( | ||
20 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, | ||
21 | |||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
29 | |||
30 | |||
31 | #ifdef AUDIO_ENABLE | ||
32 | float song_one_up[][2] = SONG(ONE_UP_SOUND); | ||
33 | #endif | ||
34 | |||
35 | volatile uint8_t runonce = true; | ||
36 | static uint16_t my_timer; | ||
37 | |||
38 | void matrix_init_user(void) { | ||
39 | my_timer = timer_read(); | ||
40 | } | ||
41 | |||
42 | void matrix_scan_user(void) { | ||
43 | if (runonce && timer_elapsed(my_timer) > 500) { | ||
44 | runonce = false; | ||
45 | #ifdef AUDIO_ENABLE | ||
46 | PLAY_SONG(song_one_up); | ||
47 | #endif | ||
48 | } | ||
49 | } | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_7u/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/readme.md new file mode 100644 index 000000000..f5718e842 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 7u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c new file mode 100644 index 000000000..8a1e4ac5c --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c | |||
@@ -0,0 +1,123 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | enum custom_keycodes { | ||
19 | MACRO01 = SAFE_RANGE, | ||
20 | MACRO02, | ||
21 | MACRO03, | ||
22 | MACRO04, | ||
23 | MACRO05, | ||
24 | MACRO06, | ||
25 | MACRO07, | ||
26 | MACRO08, | ||
27 | MACRO09, | ||
28 | MACRO10, | ||
29 | MACRO11, | ||
30 | MACRO12, | ||
31 | MACRO13, | ||
32 | MACRO14, | ||
33 | MACRO15, | ||
34 | MACRO16, | ||
35 | MACRO17, | ||
36 | MACRO18, | ||
37 | MACRO19, | ||
38 | MACRO20, | ||
39 | MACRO21, | ||
40 | }; | ||
41 | |||
42 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
43 | [0] = LAYOUT( | ||
44 | MACRO01, MACRO02, MACRO03, MACRO04, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
45 | |||
46 | MACRO05, MACRO06, MACRO07, MACRO08, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
47 | MACRO09, MACRO10, MACRO11, MACRO12, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
48 | MACRO13, MACRO14, MACRO15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
49 | MACRO16, MACRO17, MACRO18, MACRO19, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
50 | MACRO20, MACRO21, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
51 | ) | ||
52 | }; | ||
53 | |||
54 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
55 | if (record->event.pressed) { | ||
56 | switch(keycode) { | ||
57 | case MACRO01: | ||
58 | SEND_STRING("This is macro 01"); | ||
59 | return false; | ||
60 | case MACRO02: | ||
61 | SEND_STRING("This is macro 02"); | ||
62 | return false; | ||
63 | case MACRO03: | ||
64 | SEND_STRING("This is macro 03"); | ||
65 | return false; | ||
66 | case MACRO04: | ||
67 | SEND_STRING("This is macro 04"); | ||
68 | return false; | ||
69 | case MACRO05: | ||
70 | SEND_STRING("This is macro 05"); | ||
71 | return false; | ||
72 | case MACRO06: | ||
73 | SEND_STRING("This is macro 06"); | ||
74 | return false; | ||
75 | case MACRO07: | ||
76 | SEND_STRING("This is macro 07"); | ||
77 | return false; | ||
78 | case MACRO08: | ||
79 | SEND_STRING("This is macro 08"); | ||
80 | return false; | ||
81 | case MACRO09: | ||
82 | SEND_STRING("This is macro 09"); | ||
83 | return false; | ||
84 | case MACRO10: | ||
85 | SEND_STRING("This is macro 10"); | ||
86 | return false; | ||
87 | case MACRO11: | ||
88 | SEND_STRING("This is macro 11"); | ||
89 | return false; | ||
90 | case MACRO12: | ||
91 | SEND_STRING("This is macro 12"); | ||
92 | return false; | ||
93 | case MACRO13: | ||
94 | SEND_STRING("This is macro 13"); | ||
95 | return false; | ||
96 | case MACRO14: | ||
97 | SEND_STRING("This is macro 14"); | ||
98 | return false; | ||
99 | case MACRO15: | ||
100 | SEND_STRING("This is macro 15"); | ||
101 | return false; | ||
102 | case MACRO16: | ||
103 | SEND_STRING("This is macro 16"); | ||
104 | return false; | ||
105 | case MACRO17: | ||
106 | SEND_STRING("This is macro 17"); | ||
107 | return false; | ||
108 | case MACRO18: | ||
109 | SEND_STRING("This is macro 18"); | ||
110 | return false; | ||
111 | case MACRO19: | ||
112 | SEND_STRING("This is macro 19"); | ||
113 | return false; | ||
114 | case MACRO20: | ||
115 | SEND_STRING("This is macro 20"); | ||
116 | return false; | ||
117 | case MACRO21: | ||
118 | SEND_STRING("This is macro 21"); | ||
119 | return false; | ||
120 | } | ||
121 | } | ||
122 | return true; | ||
123 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/macroboard/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/readme.md new file mode 100644 index 000000000..61c9468e7 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/readme.md | |||
@@ -0,0 +1 @@ | |||
# A macro keymap template | |||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c new file mode 100644 index 000000000..02d142132 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT( | ||
20 | KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
21 | |||
22 | KC_NO, KC_NO, KC_BTN4, KC_BTN5, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_WH_U, KC_NO, KC_MS_U, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_MS_L, KC_BTN3, KC_MS_R, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_WH_D, KC_BTN1, KC_MS_D, KC_BTN2, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_WH_L, KC_WH_R, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/readme.md new file mode 100644 index 000000000..41304eca5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/readme.md | |||
@@ -0,0 +1 @@ | |||
# Mouse keys in the left numpad | |||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c new file mode 100644 index 000000000..1640229f9 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT( | ||
20 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
21 | |||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_NO, KC_MS_U, KC_NO, KC_WH_U, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MS_L, KC_BTN3, KC_MS_R, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_WH_L, KC_WH_R | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/readme.md b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/readme.md new file mode 100644 index 000000000..51939d634 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/readme.md | |||
@@ -0,0 +1 @@ | |||
# Mouse keys in the right numpad | |||
diff --git a/keyboards/clueboard/2x1800/2018/readme.md b/keyboards/clueboard/2x1800/2018/readme.md new file mode 100644 index 000000000..df4412de4 --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/readme.md | |||
@@ -0,0 +1,13 @@ | |||
1 | # Clueboard 2x1800 | ||
2 | |||
3 | Clueboard Double 1800 All The Way | ||
4 | |||
5 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
6 | * Hardware Supported: Clueboard 2x1800 PCB | ||
7 | * Hardware Availability: 2018 Apr 1 Group Buy | ||
8 | |||
9 | Make example for this keyboard: | ||
10 | |||
11 | make clueboard/2x1800/2018:default | ||
12 | |||
13 | 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). | ||
diff --git a/keyboards/clueboard/2x1800/2018/rules.mk b/keyboards/clueboard/2x1800/2018/rules.mk new file mode 100644 index 000000000..6e7633bfe --- /dev/null +++ b/keyboards/clueboard/2x1800/2018/rules.mk | |||
@@ -0,0 +1 @@ | |||
# This file intentionally left blank | |||
diff --git a/keyboards/clueboard/2x1800/2019/2019.c b/keyboards/clueboard/2x1800/2019/2019.c new file mode 100644 index 000000000..40032cd66 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/2019.c | |||
@@ -0,0 +1,181 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "2019.h" | ||
17 | |||
18 | void matrix_init_kb(void) { | ||
19 | // Set our LED pins as output | ||
20 | setPinOutput(D6); | ||
21 | setPinOutput(B4); | ||
22 | setPinOutput(B5); | ||
23 | setPinOutput(B6); | ||
24 | |||
25 | // Set our Tilt Sensor pins as input | ||
26 | setPinInputHigh(SHAKE_PIN_A); | ||
27 | setPinInputHigh(SHAKE_PIN_B); | ||
28 | |||
29 | // Run the keymap level init | ||
30 | matrix_init_user(); | ||
31 | } | ||
32 | |||
33 | #ifdef DRAWING_ENABLE | ||
34 | bool drawing_mode = false; | ||
35 | bool btn1_pressed = false; | ||
36 | bool btn2_pressed = false; | ||
37 | bool btn3_pressed = false; | ||
38 | bool btn4_pressed = false; | ||
39 | |||
40 | void check_encoder_buttons(void) { | ||
41 | if (btn1_pressed && btn2_pressed && btn3_pressed && btn4_pressed) { | ||
42 | // All 4 buttons pressed, toggle drawing mode | ||
43 | if (drawing_mode) { | ||
44 | dprintf("Turning drawing mode off.\n"); | ||
45 | drawing_mode = false; | ||
46 | writePinLow(D6); | ||
47 | unregister_code(KC_BTN1); | ||
48 | } else { | ||
49 | dprintf("Turning drawing mode on.\n"); | ||
50 | drawing_mode = true; | ||
51 | writePinHigh(D6); | ||
52 | register_code(KC_BTN1); | ||
53 | } | ||
54 | } | ||
55 | } | ||
56 | #endif | ||
57 | |||
58 | #ifdef SHAKE_ENABLE | ||
59 | uint8_t tilt_state = 0x11; | ||
60 | uint8_t detected_shakes = 0; | ||
61 | static uint16_t shake_timer; | ||
62 | #endif | ||
63 | |||
64 | void matrix_scan_kb(void) { | ||
65 | #ifdef SHAKE_ENABLE | ||
66 | // Read the current state of the tilt sensor. It is physically | ||
67 | // impossible for both pins to register a low state at the same time. | ||
68 | uint8_t tilt_read = (readPin(SHAKE_PIN_A) << 4) | readPin(SHAKE_PIN_B); | ||
69 | |||
70 | // Check to see if the tilt sensor has changed state since our last read | ||
71 | if (tilt_state != tilt_read) { | ||
72 | shake_timer = timer_read(); | ||
73 | detected_shakes++; | ||
74 | tilt_state = tilt_read; | ||
75 | } | ||
76 | |||
77 | if ((detected_shakes > 0) && (timer_elapsed(shake_timer) > SHAKE_TIMEOUT)) { | ||
78 | if (detected_shakes > SHAKE_COUNT) { | ||
79 | dprintf("Shake triggered! We detected %d shakes.\n", detected_shakes); | ||
80 | tap_code16(SHAKE_KEY); | ||
81 | } else { | ||
82 | dprintf("Shake not triggered! We detected %d shakes.\n", detected_shakes); | ||
83 | } | ||
84 | detected_shakes = 0; | ||
85 | } | ||
86 | #endif | ||
87 | |||
88 | matrix_scan_user(); | ||
89 | } | ||
90 | |||
91 | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||
92 | #ifdef DRAWING_ENABLE | ||
93 | if (keycode == ENC_BTN1) { | ||
94 | if (record->event.pressed) { | ||
95 | btn1_pressed = true; | ||
96 | register_code(KC_BTN1); | ||
97 | } else { | ||
98 | btn1_pressed = false; | ||
99 | unregister_code(KC_BTN1); | ||
100 | } | ||
101 | } | ||
102 | if (keycode == ENC_BTN2) { | ||
103 | if (record->event.pressed) { | ||
104 | btn2_pressed = true; | ||
105 | register_code(KC_BTN2); | ||
106 | } else { | ||
107 | btn2_pressed = false; | ||
108 | unregister_code(KC_BTN2); | ||
109 | } | ||
110 | } | ||
111 | if (keycode == ENC_BTN3) { | ||
112 | if (record->event.pressed) { | ||
113 | btn3_pressed = true; | ||
114 | register_code(KC_BTN3); | ||
115 | } else { | ||
116 | btn3_pressed = false; | ||
117 | unregister_code(KC_BTN3); | ||
118 | } | ||
119 | } | ||
120 | if (keycode == ENC_BTN4) { | ||
121 | if (record->event.pressed) { | ||
122 | btn4_pressed = true; | ||
123 | register_code(KC_BTN4); | ||
124 | } else { | ||
125 | btn4_pressed = false; | ||
126 | unregister_code(KC_BTN4); | ||
127 | } | ||
128 | } | ||
129 | |||
130 | check_encoder_buttons(); | ||
131 | #endif | ||
132 | |||
133 | return process_record_user(keycode, record); | ||
134 | } | ||
135 | |||
136 | bool led_update_kb(led_t led_state) { | ||
137 | bool res = led_update_user(led_state); | ||
138 | if(res) { | ||
139 | writePin(B4, !led_state.num_lock); | ||
140 | writePin(B5, !led_state.caps_lock); | ||
141 | writePin(B6, !led_state.scroll_lock); | ||
142 | } | ||
143 | |||
144 | return res; | ||
145 | } | ||
146 | |||
147 | __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } | ||
148 | __attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return encoder_update_keymap(index, clockwise); } | ||
149 | |||
150 | bool encoder_update_kb(uint8_t index, bool clockwise) { | ||
151 | if (!encoder_update_user(index, clockwise)) { | ||
152 | // Encoder 1, outside left | ||
153 | if (index == 0 && clockwise) { | ||
154 | tap_code(KC_MS_U); // turned right | ||
155 | } else if (index == 0) { | ||
156 | tap_code(KC_MS_D); // turned left | ||
157 | } | ||
158 | |||
159 | // Encoder 2, inside left | ||
160 | else if (index == 1 && clockwise) { | ||
161 | tap_code(KC_WH_D); // turned right | ||
162 | } else if (index == 1) { | ||
163 | tap_code(KC_WH_U); // turned left | ||
164 | } | ||
165 | |||
166 | // Encoder 3, inside right | ||
167 | else if (index == 2 && clockwise) { | ||
168 | tap_code(KC_VOLU); // turned right | ||
169 | } else if (index == 2) { | ||
170 | tap_code(KC_VOLD); // turned left | ||
171 | } | ||
172 | |||
173 | // Encoder 4, outside right | ||
174 | else if (index == 3 && clockwise) { | ||
175 | tap_code(KC_MS_R); // turned right | ||
176 | } else if (index == 3) { | ||
177 | tap_code(KC_MS_L); // turned left | ||
178 | } | ||
179 | } | ||
180 | return true; | ||
181 | } | ||
diff --git a/keyboards/clueboard/2x1800/2019/2019.h b/keyboards/clueboard/2x1800/2019/2019.h new file mode 100644 index 000000000..5debfacc5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/2019.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include "quantum.h" | ||
19 | |||
20 | enum TWOx1800_keycodes { | ||
21 | ENC_BTN1 = SAFE_RANGE, | ||
22 | ENC_BTN2, | ||
23 | ENC_BTN3, | ||
24 | ENC_BTN4, | ||
25 | NEW_SAFE_RANGE | ||
26 | }; | ||
27 | |||
28 | #undef SAFE_RANGE | ||
29 | #define SAFE_RANGE NEW_SAFE_RANGE | ||
30 | |||
31 | // Encoder update function that returns true/false | ||
32 | bool encoder_update_keymap(uint8_t index, bool clockwise); | ||
33 | |||
34 | // Encoder button combo check | ||
35 | void check_encoder_buttons(void); | ||
diff --git a/keyboards/clueboard/2x1800/2019/config.h b/keyboards/clueboard/2x1800/2019/config.h new file mode 100644 index 000000000..162d41a2e --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/config.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | Copyright 2017 Zach White <[email protected]> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #include "config_common.h" | ||
21 | |||
22 | /* | ||
23 | * Encoder Assignments | ||
24 | */ | ||
25 | #define ENCODERS_PAD_A { A5, A4, A2, A1 } | ||
26 | #define ENCODERS_PAD_B { A6, A7, A3, A0 } | ||
27 | #define ENCODER_RESOLUTION 4 | ||
28 | |||
29 | /* audio support */ | ||
30 | #define AUDIO_PIN_ALT B7 | ||
31 | #define AUDIO_PIN C4 | ||
32 | #define AUDIO_CLICKY | ||
33 | |||
34 | /* | ||
35 | * Drawing mode | ||
36 | */ | ||
37 | #define DRAWING_ENABLE | ||
38 | //#define UNDO_KEY LGUI(KC_Z) // What key to send for undo | ||
39 | //#define UNDO_KEY LCTL(KC_Z) | ||
40 | #define UNDO_KEY LGUI(KC_SLSH) | ||
41 | |||
42 | /* | ||
43 | * Shake to undo configuration | ||
44 | */ | ||
45 | #define SHAKE_ENABLE | ||
46 | #define SHAKE_PIN_A E4 | ||
47 | #define SHAKE_PIN_B E5 | ||
48 | #define SHAKE_TIMEOUT 500 // How long after shaking stops before we register it | ||
49 | #define SHAKE_COUNT 8 // How many shakes it takes to activate | ||
50 | #define SHAKE_KEY UNDO_KEY // What key to send after a shake | ||
diff --git a/keyboards/clueboard/2x1800/2019/info.json b/keyboards/clueboard/2x1800/2019/info.json new file mode 100644 index 000000000..a877cae8b --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/info.json | |||
@@ -0,0 +1,1232 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 2x1800 2019", | ||
4 | "maintainer": "skullydazed", | ||
5 | "debounce": 5, | ||
6 | "processor": "at90usb1286", | ||
7 | "bootloader": "halfkay", | ||
8 | "diode_direction": "ROW2COL", | ||
9 | "features": { | ||
10 | "audio": true, | ||
11 | "bootmagic": false, | ||
12 | "command": true, | ||
13 | "console": true, | ||
14 | "encoder": true, | ||
15 | "extrakey": true, | ||
16 | "midi": false, | ||
17 | "mousekey": true, | ||
18 | "nkro": true, | ||
19 | "rgblight": false, | ||
20 | "unicode": false | ||
21 | }, | ||
22 | "matrix_pins": { | ||
23 | "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "B0", "E6", "B3", "B2"], | ||
24 | "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "B1", "F2", "F3", "F4", "F5", "F6", "C6"] | ||
25 | }, | ||
26 | "usb": { | ||
27 | "device_ver": "0x0001", | ||
28 | "pid": "0x23A0", | ||
29 | "vid": "0xC1ED" | ||
30 | }, | ||
31 | "layout_aliases": { | ||
32 | "LAYOUT": "LAYOUT_all" | ||
33 | }, | ||
34 | "layouts": { | ||
35 | "LAYOUT_1u_ansi": { | ||
36 | "layout": [ | ||
37 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
38 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
39 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
40 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
41 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
42 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
43 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
44 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
45 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
46 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
47 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
48 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
49 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
50 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
51 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
52 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
53 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
54 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
55 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
56 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
57 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
58 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
59 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
60 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
61 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
62 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
63 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
64 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
65 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
66 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
67 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
68 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
69 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
70 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
71 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
72 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
73 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
74 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
75 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
76 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
77 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
78 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
79 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
80 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
81 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
82 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
83 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
84 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
85 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
86 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
87 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
88 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
89 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
90 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
91 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
92 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
93 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
94 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
95 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
96 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
97 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
98 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
99 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
100 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
101 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75 }, | ||
102 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
103 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
104 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
105 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
106 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
107 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
108 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
109 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
110 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
111 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
112 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
113 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
114 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
115 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
116 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
117 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
118 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
119 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
120 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
121 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75 }, | ||
122 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
123 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
124 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
125 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
126 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
127 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
128 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
129 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
130 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
131 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
132 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
133 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
134 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
135 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
136 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
137 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
138 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
139 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
140 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
141 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
142 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
143 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
144 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
145 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
146 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
147 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
148 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
149 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
150 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
151 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
152 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
153 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
154 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
155 | { "matrix": [5, 9], "w": 1, "x": 9.5, "y": 6.75 }, | ||
156 | { "matrix": [5, 10], "w": 1, "x": 10.5, "y": 6.75 }, | ||
157 | { "matrix": [11, 0], "w": 1, "x": 11.5, "y": 6.75 }, | ||
158 | { "matrix": [11, 1], "w": 1, "x": 12.5, "y": 6.75 }, | ||
159 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
160 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
161 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
162 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
163 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
164 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
165 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
166 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
167 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
168 | ] | ||
169 | }, | ||
170 | "LAYOUT_1u_iso": { | ||
171 | "layout": [ | ||
172 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
173 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
174 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
175 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
176 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
177 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
178 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
179 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
180 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
181 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
182 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
183 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
184 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
185 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
186 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
187 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
188 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
189 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
190 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
191 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
192 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
193 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
194 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
195 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
196 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
197 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
198 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
199 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
200 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
201 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
202 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
203 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
204 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
205 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
206 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
207 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
208 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
209 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
210 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
211 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
212 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
213 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
214 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
215 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
216 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
217 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
218 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
219 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
220 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
221 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
222 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
223 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
224 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
225 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
226 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
227 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
228 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
229 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
230 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
231 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
232 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
233 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
234 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
235 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
236 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
237 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
238 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
239 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
240 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
241 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
242 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
243 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
244 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
245 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
246 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
247 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
248 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
249 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
250 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
251 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
252 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
253 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
254 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
255 | { "matrix": [9, 10], "w": 1, "x": 17.25, "y": 4.75 }, | ||
256 | { "h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75 }, | ||
257 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
258 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
259 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
260 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
261 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
262 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
263 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
264 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
265 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
266 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
267 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
268 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
269 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
270 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
271 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
272 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
273 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
274 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
275 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
276 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
277 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
278 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
279 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
280 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
281 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
282 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
283 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
284 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
285 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
286 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
287 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
288 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
289 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
290 | { "matrix": [5, 9], "w": 1, "x": 9.5, "y": 6.75 }, | ||
291 | { "matrix": [5, 10], "w": 1, "x": 10.5, "y": 6.75 }, | ||
292 | { "matrix": [11, 0], "w": 1, "x": 11.5, "y": 6.75 }, | ||
293 | { "matrix": [11, 1], "w": 1, "x": 12.5, "y": 6.75 }, | ||
294 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
295 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
296 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
297 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
298 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
299 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
300 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
301 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
302 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
303 | ] | ||
304 | }, | ||
305 | "LAYOUT_2u_ansi": { | ||
306 | "layout": [ | ||
307 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
308 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
309 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
310 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
311 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
312 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
313 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
314 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
315 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
316 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
317 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
318 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
319 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
320 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
321 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
322 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
323 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
324 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
325 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
326 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
327 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
328 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
329 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
330 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
331 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
332 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
333 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
334 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
335 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
336 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
337 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
338 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
339 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
340 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
341 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
342 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
343 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
344 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
345 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
346 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
347 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
348 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
349 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
350 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
351 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
352 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
353 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
354 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
355 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
356 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
357 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
358 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
359 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
360 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
361 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
362 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
363 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
364 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
365 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
366 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
367 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
368 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
369 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
370 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
371 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75 }, | ||
372 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
373 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
374 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
375 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
376 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
377 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
378 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
379 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
380 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
381 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
382 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
383 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
384 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
385 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
386 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
387 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
388 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
389 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
390 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
391 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75 }, | ||
392 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
393 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
394 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
395 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
396 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
397 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
398 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
399 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
400 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
401 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
402 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
403 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
404 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
405 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
406 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
407 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
408 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
409 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
410 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
411 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
412 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
413 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
414 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
415 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
416 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
417 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
418 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
419 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
420 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
421 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
422 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
423 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
424 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
425 | { "matrix": [5, 9], "w": 1, "x": 9.5, "y": 6.75 }, | ||
426 | { "matrix": [11, 0], "w": 2, "x": 10.5, "y": 6.75 }, | ||
427 | { "matrix": [11, 1], "w": 1, "x": 12.5, "y": 6.75 }, | ||
428 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
429 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
430 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
431 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
432 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
433 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
434 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
435 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
436 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
437 | ] | ||
438 | }, | ||
439 | "LAYOUT_2u_iso": { | ||
440 | "layout": [ | ||
441 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
442 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
443 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
444 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
445 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
446 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
447 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
448 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
449 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
450 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
451 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
452 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
453 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
454 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
455 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
456 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
457 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
458 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
459 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
460 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
461 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
462 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
463 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
464 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
465 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
466 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
467 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
468 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
469 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
470 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
471 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
472 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
473 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
474 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
475 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
476 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
477 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
478 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
479 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
480 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
481 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
482 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
483 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
484 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
485 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
486 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
487 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
488 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
489 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
490 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
491 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
492 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
493 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
494 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
495 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
496 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
497 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
498 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
499 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
500 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
501 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
502 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
503 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
504 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
505 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
506 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
507 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
508 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
509 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
510 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
511 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
512 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
513 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
514 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
515 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
516 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
517 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
518 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
519 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
520 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
521 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
522 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
523 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
524 | { "matrix": [9, 10], "w": 1, "x": 17.25, "y": 4.75 }, | ||
525 | { "h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75 }, | ||
526 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
527 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
528 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
529 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
530 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
531 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
532 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
533 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
534 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
535 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
536 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
537 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
538 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
539 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
540 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
541 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
542 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
543 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
544 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
545 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
546 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
547 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
548 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
549 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
550 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
551 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
552 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
553 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
554 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
555 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
556 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
557 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
558 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
559 | { "matrix": [5, 9], "w": 1, "x": 9.5, "y": 6.75 }, | ||
560 | { "matrix": [11, 0], "w": 2, "x": 10.5, "y": 6.75 }, | ||
561 | { "matrix": [11, 1], "w": 1, "x": 12.5, "y": 6.75 }, | ||
562 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
563 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
564 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
565 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
566 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
567 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
568 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
569 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
570 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
571 | ] | ||
572 | }, | ||
573 | "LAYOUT_4u_ansi": { | ||
574 | "layout": [ | ||
575 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
576 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
577 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
578 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
579 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
580 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
581 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
582 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
583 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
584 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
585 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
586 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
587 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
588 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
589 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
590 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
591 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
592 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
593 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
594 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
595 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
596 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
597 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
598 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
599 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
600 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
601 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
602 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
603 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
604 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
605 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
606 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
607 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
608 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
609 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
610 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
611 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
612 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
613 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
614 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
615 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
616 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
617 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
618 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
619 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
620 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
621 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
622 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
623 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
624 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
625 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
626 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
627 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
628 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
629 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
630 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
631 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
632 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
633 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
634 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
635 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
636 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
637 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
638 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
639 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75 }, | ||
640 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
641 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
642 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
643 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
644 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
645 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
646 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
647 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
648 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
649 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
650 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
651 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
652 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
653 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
654 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
655 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
656 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
657 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
658 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
659 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75 }, | ||
660 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
661 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
662 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
663 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
664 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
665 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
666 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
667 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
668 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
669 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
670 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
671 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
672 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
673 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
674 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
675 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
676 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
677 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
678 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
679 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
680 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
681 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
682 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
683 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
684 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
685 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
686 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
687 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
688 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
689 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
690 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
691 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
692 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
693 | { "matrix": [11, 0], "w": 4, "x": 9.5, "y": 6.75 }, | ||
694 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
695 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
696 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
697 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
698 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
699 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
700 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
701 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
702 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
703 | ] | ||
704 | }, | ||
705 | "LAYOUT_4u_iso": { | ||
706 | "layout": [ | ||
707 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
708 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
709 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
710 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
711 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
712 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
713 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
714 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
715 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
716 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
717 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
718 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
719 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
720 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
721 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
722 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
723 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
724 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
725 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
726 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
727 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
728 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
729 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
730 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
731 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
732 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
733 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
734 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
735 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
736 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
737 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
738 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
739 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
740 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
741 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
742 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
743 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
744 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
745 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
746 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
747 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
748 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
749 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
750 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
751 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
752 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
753 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
754 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
755 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
756 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
757 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
758 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
759 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
760 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
761 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
762 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
763 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
764 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
765 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
766 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
767 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
768 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
769 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
770 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
771 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
772 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
773 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
774 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
775 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
776 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
777 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
778 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
779 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
780 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
781 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
782 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
783 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
784 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
785 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
786 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
787 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
788 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
789 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
790 | { "matrix": [9, 10], "w": 1, "x": 17.25, "y": 4.75 }, | ||
791 | { "h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75 }, | ||
792 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
793 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
794 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
795 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
796 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
797 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
798 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
799 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
800 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
801 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
802 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
803 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
804 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
805 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
806 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
807 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
808 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
809 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
810 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
811 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
812 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
813 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
814 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
815 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
816 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
817 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
818 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
819 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
820 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
821 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
822 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
823 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
824 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
825 | { "matrix": [11, 0], "w": 4, "x": 9.5, "y": 6.75 }, | ||
826 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
827 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
828 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
829 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
830 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
831 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
832 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
833 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
834 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
835 | ] | ||
836 | }, | ||
837 | "LAYOUT_7u_ansi": { | ||
838 | "layout": [ | ||
839 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
840 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
841 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
842 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
843 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
844 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
845 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
846 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
847 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
848 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
849 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
850 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
851 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
852 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
853 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
854 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
855 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
856 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
857 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
858 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
859 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
860 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
861 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
862 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
863 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
864 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
865 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
866 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
867 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
868 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
869 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
870 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
871 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
872 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
873 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
874 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
875 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
876 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
877 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
878 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
879 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
880 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
881 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
882 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
883 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
884 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
885 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
886 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
887 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
888 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
889 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
890 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
891 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
892 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
893 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
894 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
895 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
896 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
897 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
898 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
899 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
900 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
901 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
902 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
903 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75 }, | ||
904 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
905 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
906 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
907 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
908 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
909 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
910 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
911 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
912 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
913 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
914 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
915 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
916 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
917 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
918 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
919 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
920 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
921 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
922 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
923 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 4.75 }, | ||
924 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
925 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
926 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
927 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
928 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
929 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
930 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
931 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
932 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
933 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
934 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
935 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
936 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
937 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
938 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
939 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
940 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
941 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
942 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
943 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
944 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
945 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
946 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
947 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
948 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
949 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
950 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
951 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
952 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
953 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
954 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
955 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
956 | { "matrix": [11, 0], "w": 7, "x": 8.5, "y": 6.75 }, | ||
957 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
958 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
959 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
960 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
961 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
962 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
963 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
964 | ] | ||
965 | }, | ||
966 | "LAYOUT_7u_iso": { | ||
967 | "layout": [ | ||
968 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
969 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
970 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
971 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
972 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
973 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
974 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
975 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
976 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
977 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
978 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
979 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
980 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
981 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
982 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
983 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
984 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
985 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
986 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
987 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
988 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
989 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
990 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
991 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
992 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
993 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
994 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
995 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
996 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
997 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
998 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
999 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
1000 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
1001 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
1002 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
1003 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
1004 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
1005 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
1006 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
1007 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
1008 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
1009 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
1010 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
1011 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
1012 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
1013 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
1014 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
1015 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
1016 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
1017 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
1018 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
1019 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
1020 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
1021 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
1022 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
1023 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
1024 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
1025 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
1026 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
1027 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
1028 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
1029 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
1030 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
1031 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
1032 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
1033 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
1034 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
1035 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
1036 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
1037 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
1038 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
1039 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
1040 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
1041 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
1042 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
1043 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
1044 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
1045 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
1046 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
1047 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
1048 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
1049 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
1050 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
1051 | { "matrix": [9, 10], "w": 1, "x": 17.25, "y": 4.75 }, | ||
1052 | { "h": 2, "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 3.75 }, | ||
1053 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
1054 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
1055 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
1056 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
1057 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
1058 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
1059 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
1060 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
1061 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
1062 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
1063 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
1064 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
1065 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
1066 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
1067 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
1068 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
1069 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
1070 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
1071 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
1072 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
1073 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
1074 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
1075 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
1076 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
1077 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
1078 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
1079 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
1080 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
1081 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
1082 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
1083 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
1084 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
1085 | { "matrix": [11, 0], "w": 7, "x": 8.5, "y": 6.75 }, | ||
1086 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
1087 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
1088 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
1089 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
1090 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
1091 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
1092 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
1093 | ] | ||
1094 | }, | ||
1095 | "LAYOUT_all": { | ||
1096 | "layout": [ | ||
1097 | { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, | ||
1098 | { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, | ||
1099 | { "matrix": [12, 9], "w": 1, "x": 19, "y": 0 }, | ||
1100 | { "matrix": [12, 10], "w": 1, "x": 20, "y": 0 }, | ||
1101 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 1.5 }, | ||
1102 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 1.5 }, | ||
1103 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 1.5 }, | ||
1104 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 1.5 }, | ||
1105 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 1.5 }, | ||
1106 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 1.5 }, | ||
1107 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 1.5 }, | ||
1108 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 1.5 }, | ||
1109 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 1.5 }, | ||
1110 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 1.5 }, | ||
1111 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 1.5 }, | ||
1112 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 1.5 }, | ||
1113 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 1.5 }, | ||
1114 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 1.5 }, | ||
1115 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 1.5 }, | ||
1116 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 1.5 }, | ||
1117 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 1.5 }, | ||
1118 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 1.5 }, | ||
1119 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 1.5 }, | ||
1120 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 1.5 }, | ||
1121 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 1.5 }, | ||
1122 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 2.75 }, | ||
1123 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 2.75 }, | ||
1124 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 2.75 }, | ||
1125 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 2.75 }, | ||
1126 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 2.75 }, | ||
1127 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 2.75 }, | ||
1128 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 2.75 }, | ||
1129 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 2.75 }, | ||
1130 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 2.75 }, | ||
1131 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 2.75 }, | ||
1132 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 2.75 }, | ||
1133 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 2.75 }, | ||
1134 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 2.75 }, | ||
1135 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 2.75 }, | ||
1136 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 2.75 }, | ||
1137 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 2.75 }, | ||
1138 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 2.75 }, | ||
1139 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 2.75 }, | ||
1140 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 2.75 }, | ||
1141 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 2.75 }, | ||
1142 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 2.75 }, | ||
1143 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 2.75 }, | ||
1144 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 3.75 }, | ||
1145 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 3.75 }, | ||
1146 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 3.75 }, | ||
1147 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 3.75 }, | ||
1148 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 3.75 }, | ||
1149 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 3.75 }, | ||
1150 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 3.75 }, | ||
1151 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 3.75 }, | ||
1152 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 3.75 }, | ||
1153 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 3.75 }, | ||
1154 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 3.75 }, | ||
1155 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 3.75 }, | ||
1156 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 3.75 }, | ||
1157 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 3.75 }, | ||
1158 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 3.75 }, | ||
1159 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 3.75 }, | ||
1160 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 3.75 }, | ||
1161 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 3.75 }, | ||
1162 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 3.75 }, | ||
1163 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 3.75 }, | ||
1164 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 3.75 }, | ||
1165 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 3.75 }, | ||
1166 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 4.75 }, | ||
1167 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 4.75 }, | ||
1168 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 4.75 }, | ||
1169 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 4.75 }, | ||
1170 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 4.75 }, | ||
1171 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 4.75 }, | ||
1172 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 4.75 }, | ||
1173 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 4.75 }, | ||
1174 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 4.75 }, | ||
1175 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 4.75 }, | ||
1176 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 4.75 }, | ||
1177 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 4.75 }, | ||
1178 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 4.75 }, | ||
1179 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 4.75 }, | ||
1180 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 4.75 }, | ||
1181 | { "matrix": [9, 10], "w": 1, "x": 17.25, "y": 4.75 }, | ||
1182 | { "matrix": [9, 5], "w": 1.25, "x": 18.25, "y": 4.75 }, | ||
1183 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 4.75 }, | ||
1184 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 4.75 }, | ||
1185 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 4.75 }, | ||
1186 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 5.75 }, | ||
1187 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 5.75 }, | ||
1188 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 5.75 }, | ||
1189 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 5.75 }, | ||
1190 | { "matrix": [4, 4], "w": 1, "x": 4.25, "y": 6 }, | ||
1191 | { "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 5.75 }, | ||
1192 | { "matrix": [4, 6], "w": 1, "x": 6.75, "y": 5.75 }, | ||
1193 | { "matrix": [4, 7], "w": 1, "x": 7.75, "y": 5.75 }, | ||
1194 | { "matrix": [4, 8], "w": 1, "x": 8.75, "y": 5.75 }, | ||
1195 | { "matrix": [4, 9], "w": 1, "x": 9.75, "y": 5.75 }, | ||
1196 | { "matrix": [4, 10], "w": 1, "x": 10.75, "y": 5.75 }, | ||
1197 | { "matrix": [10, 0], "w": 1, "x": 11.75, "y": 5.75 }, | ||
1198 | { "matrix": [10, 1], "w": 1, "x": 12.75, "y": 5.75 }, | ||
1199 | { "matrix": [10, 2], "w": 1, "x": 13.75, "y": 5.75 }, | ||
1200 | { "matrix": [10, 3], "w": 1, "x": 14.75, "y": 5.75 }, | ||
1201 | { "matrix": [10, 4], "w": 1, "x": 15.75, "y": 5.75 }, | ||
1202 | { "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 5.75 }, | ||
1203 | { "matrix": [9, 6], "w": 1, "x": 18.75, "y": 6 }, | ||
1204 | { "matrix": [10, 7], "w": 1, "x": 20, "y": 5.75 }, | ||
1205 | { "matrix": [10, 8], "w": 1, "x": 21, "y": 5.75 }, | ||
1206 | { "matrix": [10, 9], "w": 1, "x": 22, "y": 5.75 }, | ||
1207 | { "h": 2, "matrix": [10, 10], "w": 1, "x": 23, "y": 5.75 }, | ||
1208 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 6.75 }, | ||
1209 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 6.75 }, | ||
1210 | { "matrix": [5, 3], "w": 1, "x": 3.25, "y": 7 }, | ||
1211 | { "matrix": [5, 4], "w": 1, "x": 4.25, "y": 7 }, | ||
1212 | { "matrix": [5, 5], "w": 1, "x": 5.25, "y": 7 }, | ||
1213 | { "matrix": [5, 6], "w": 1, "x": 6.5, "y": 6.75 }, | ||
1214 | { "matrix": [5, 7], "w": 1, "x": 7.5, "y": 6.75 }, | ||
1215 | { "matrix": [5, 8], "w": 1, "x": 8.5, "y": 6.75 }, | ||
1216 | { "matrix": [5, 9], "w": 1, "x": 9.5, "y": 6.75 }, | ||
1217 | { "matrix": [5, 10], "w": 1, "x": 10.5, "y": 6.75 }, | ||
1218 | { "matrix": [11, 0], "w": 1, "x": 11.5, "y": 6.75 }, | ||
1219 | { "matrix": [11, 1], "w": 1, "x": 12.5, "y": 6.75 }, | ||
1220 | { "matrix": [11, 2], "w": 1, "x": 13.5, "y": 6.75 }, | ||
1221 | { "matrix": [11, 3], "w": 1, "x": 14.5, "y": 6.75 }, | ||
1222 | { "matrix": [11, 4], "w": 1, "x": 15.5, "y": 6.75 }, | ||
1223 | { "matrix": [11, 5], "w": 1, "x": 16.5, "y": 6.75 }, | ||
1224 | { "matrix": [10, 6], "w": 1, "x": 17.75, "y": 7 }, | ||
1225 | { "matrix": [11, 6], "w": 1, "x": 18.75, "y": 7 }, | ||
1226 | { "matrix": [11, 7], "w": 1, "x": 19.75, "y": 7 }, | ||
1227 | { "matrix": [11, 8], "w": 1, "x": 21, "y": 6.75 }, | ||
1228 | { "matrix": [11, 9], "w": 1, "x": 22, "y": 6.75 } | ||
1229 | ] | ||
1230 | } | ||
1231 | } | ||
1232 | } | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json new file mode 100644 index 000000000..3a60ce9c8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default/keymap.json | |||
@@ -0,0 +1,11 @@ | |||
1 | { | ||
2 | "keyboard":"clueboard/2x1800/2019", | ||
3 | "keymap":"default", | ||
4 | "layout":"LAYOUT_all", | ||
5 | "layers":[ | ||
6 | ["ENC_BTN1","ENC_BTN2","ENC_BTN3","ENC_BTN4","KC_HOME","KC_END","KC_PGUP","KC_PGDN","KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_PSCR","KC_SLCK","KC_PAUS","KC_INS","KC_PMNS","KC_NLCK","KC_PSLS","KC_PAST","KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_BSPC","KC_NLCK","KC_PSLS","KC_PAST","KC_PMNS","KC_PPLS","KC_P7","KC_P8","KC_P9","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_P7","KC_P8","KC_P9","KC_PSLS","KC_P4","KC_P5","KC_P6","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_P4","KC_P5","KC_P6","KC_PENT","KC_P1","KC_P2","KC_P3","KC_UP","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_SLSH","KC_COMM","KC_DOT","KC_RSFT","KC_UP","KC_P1","KC_P2","KC_P3","KC_PENT","KC_P0","KC_PDOT","KC_LEFT","KC_DOWN","KC_RGHT","KC_LCTL","KC_LGUI","KC_LALT","KC_SPC","KC_SPC","KC_SPC","KC_SPC","KC_RALT","KC_RGUI","KC_APP","KC_RCTL","KC_LEFT","KC_DOWN","KC_RGHT","KC_P0","KC_PDOT"] | ||
7 | ], | ||
8 | "author":"skullydazed", | ||
9 | "notes":"", | ||
10 | "version":1 | ||
11 | } | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default/readme.md new file mode 100644 index 000000000..4e3457efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c new file mode 100644 index 000000000..3c504930d --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_1u_ansi( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/readme.md new file mode 100644 index 000000000..4e3457efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c new file mode 100644 index 000000000..17cb57abe --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_1u_iso( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/readme.md new file mode 100644 index 000000000..4e3457efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c new file mode 100644 index 000000000..2bd91000b --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_2u_ansi( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/readme.md new file mode 100644 index 000000000..c933ee3ed --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 2u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c new file mode 100644 index 000000000..5e1c96d14 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_2u_iso( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/readme.md new file mode 100644 index 000000000..c933ee3ed --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 2u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c new file mode 100644 index 000000000..9e1c211a8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_4u_ansi( | ||
20 | KC_1, KC_2, KC_3, KC_4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/readme.md new file mode 100644 index 000000000..a696972e8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 4u Spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c new file mode 100644 index 000000000..261f578cd --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_4u_iso( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/readme.md new file mode 100644 index 000000000..a696972e8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 4u Spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c new file mode 100644 index 000000000..f8f9d820d --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_7u_ansi( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/readme.md new file mode 100644 index 000000000..f5718e842 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 7u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c new file mode 100644 index 000000000..88ea3fb85 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_7u_iso( | ||
20 | KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, | ||
21 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, | ||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PSLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/readme.md b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/readme.md new file mode 100644 index 000000000..f5718e842 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 7u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2019/readme.md b/keyboards/clueboard/2x1800/2019/readme.md new file mode 100644 index 000000000..538c15324 --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/readme.md | |||
@@ -0,0 +1,13 @@ | |||
1 | # Clueboard 2x1800 | ||
2 | |||
3 | Clueboard 2x1800 Mechanical Drawing Toy Edition | ||
4 | |||
5 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
6 | * Hardware Supported: Clueboard 2x1800 2019 PCB | ||
7 | * Hardware Availability: 2019 Apr 1 Group Buy | ||
8 | |||
9 | Make example for this keyboard: | ||
10 | |||
11 | make clueboard/2x1800/2019:default | ||
12 | |||
13 | 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). | ||
diff --git a/keyboards/clueboard/2x1800/2019/rules.mk b/keyboards/clueboard/2x1800/2019/rules.mk new file mode 100644 index 000000000..6e7633bfe --- /dev/null +++ b/keyboards/clueboard/2x1800/2019/rules.mk | |||
@@ -0,0 +1 @@ | |||
# This file intentionally left blank | |||
diff --git a/keyboards/clueboard/2x1800/2021/.noci b/keyboards/clueboard/2x1800/2021/.noci new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/.noci | |||
diff --git a/keyboards/clueboard/2x1800/2021/2021.c b/keyboards/clueboard/2x1800/2021/2021.c new file mode 100644 index 000000000..40f2a2ed6 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/2021.c | |||
@@ -0,0 +1,154 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #include "2021.h" | ||
18 | #include "max7219.h" | ||
19 | #include "font.h" | ||
20 | |||
21 | #ifndef DRAWING_TOY_MODE | ||
22 | static uint16_t led_frame_timer = 0; | ||
23 | |||
24 | void matrix_scan_kb(void) { | ||
25 | if (timer_elapsed(led_frame_timer) > 100) { | ||
26 | max7219_message_sign_task(true); | ||
27 | led_frame_timer = timer_read(); | ||
28 | } | ||
29 | } | ||
30 | #endif | ||
31 | |||
32 | void matrix_init_kb(void) { | ||
33 | max7219_init(); | ||
34 | |||
35 | #if defined(MAX7219_LED_TEST) | ||
36 | while(1) { | ||
37 | for (int i=0; i<MAX7219_CONTROLLERS; i++) { | ||
38 | max7219_display_test(i, true); | ||
39 | wait_ms(500); | ||
40 | max7219_display_test(i, false); | ||
41 | } | ||
42 | } | ||
43 | #elif defined(MAX7219_LED_ITERATE) | ||
44 | while (1) { | ||
45 | for (int row=0; row<8; row++) { | ||
46 | for(int col=0;col<8*MAX7219_CONTROLLERS;col++) { | ||
47 | max7219_set_led(row, col, true); | ||
48 | wait_ms(500); | ||
49 | max7219_set_led(row, col, false); | ||
50 | } | ||
51 | } | ||
52 | } | ||
53 | #elif defined(MAX7219_LED_DANCE) | ||
54 | while (1) { | ||
55 | for (int col=0; col<8; col++) { | ||
56 | for (int device_num=0; device_num<MAX7219_CONTROLLERS; device_num++) { | ||
57 | if (col % 2 == 0) { | ||
58 | max7219_led_a[col][device_num] = 0b01010101; | ||
59 | } else { | ||
60 | max7219_led_a[col][device_num] = 0b10101010; | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | max7219_write_frame(); | ||
65 | wait_ms(500); | ||
66 | for (int col=0; col<8; col++) { | ||
67 | for (int device_num=0; device_num<MAX7219_CONTROLLERS; device_num++) { | ||
68 | if (col % 2 == 0) { | ||
69 | max7219_led_a[col][device_num] = 0b10101010; | ||
70 | } else { | ||
71 | max7219_led_a[col][device_num] = 0b01010101; | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | max7219_write_frame(); | ||
76 | wait_ms(500); | ||
77 | } | ||
78 | #elif defined(MAX7219_LED_FONTTEST) | ||
79 | uint8_t message[MSG_FONTTEST_LEN][6] = MSG_FONTTEST; | ||
80 | max7219_message_sign(message, MSG_FONTTEST_LEN); | ||
81 | #elif defined(MAX7219_LED_CLUEBOARD) | ||
82 | uint8_t message[MSG_CLUEBOARD_LEN][6] = MSG_CLUEBOARD; | ||
83 | max7219_message_sign(message, MSG_CLUEBOARD_LEN); | ||
84 | #elif defined(MAX7219_LED_KONAMI) | ||
85 | uint8_t message[MSG_KONAMI_LEN][6] = MSG_KONAMI; | ||
86 | max7219_message_sign(message, MSG_KONAMI_LEN); | ||
87 | #elif defined(MAX7219_LED_QMK_POWERED) | ||
88 | uint8_t message[MSG_QMK_POWERED_LEN][6] = MSG_QMK_POWERED; | ||
89 | max7219_message_sign(message, MSG_QMK_POWERED_LEN); | ||
90 | #elif defined(DRAWING_TOY_MODE) | ||
91 | max7219_set_led(0, 0, true); | ||
92 | #endif | ||
93 | } | ||
94 | |||
95 | __attribute__ ((weak)) | ||
96 | bool encoder_update_keymap(int8_t index, bool clockwise) { | ||
97 | return false; | ||
98 | } | ||
99 | |||
100 | #define NUM_COLUMNS 8*MAX7219_CONTROLLERS | ||
101 | uint8_t led_position[2] = {0,0}; // The location of the cursor in the matrix | ||
102 | |||
103 | bool encoder_update_kb(uint8_t index, bool clockwise) { | ||
104 | if (!encoder_update_keymap(index, clockwise)) { | ||
105 | #if defined(DRAWING_TOY_MODE) | ||
106 | // Encoder 1, left | ||
107 | if (index == 0 && clockwise) { | ||
108 | if (led_position[0] < NUM_COLUMNS-1) { // turned right | ||
109 | led_position[0]++; | ||
110 | } else { | ||
111 | led_position[0]=0; | ||
112 | } | ||
113 | } else if (index == 0) { | ||
114 | if (led_position[0] > 0) { // turned left | ||
115 | led_position[0]--; | ||
116 | } else { | ||
117 | led_position[0]=NUM_COLUMNS-1; | ||
118 | } | ||
119 | } | ||
120 | |||
121 | // Encoder 2, right | ||
122 | else if (index == 1 && clockwise) { | ||
123 | if (led_position[1] < 7) { // turned right | ||
124 | led_position[1]++; | ||
125 | } else { | ||
126 | led_position[1]=0; | ||
127 | } | ||
128 | } else if (index == 1) { | ||
129 | if (led_position[1] > 0) { // turned left | ||
130 | led_position[1]--; | ||
131 | } else { | ||
132 | led_position[1]=7; | ||
133 | } | ||
134 | } | ||
135 | |||
136 | max7219_set_led(led_position[1], led_position[0], true); | ||
137 | #else | ||
138 | // Encoder 1, left | ||
139 | if (index == 0 && clockwise) { | ||
140 | tap_code(KC_MS_R); // turned right | ||
141 | } else if (index == 0) { | ||
142 | tap_code(KC_MS_L); // turned left | ||
143 | } | ||
144 | |||
145 | // Encoder 2, right | ||
146 | else if (index == 1 && clockwise) { | ||
147 | tap_code(KC_MS_U); // turned right | ||
148 | } else if (index == 1) { | ||
149 | tap_code(KC_MS_D); // turned left | ||
150 | } | ||
151 | #endif | ||
152 | } | ||
153 | return true; | ||
154 | } | ||
diff --git a/keyboards/clueboard/2x1800/2021/2021.h b/keyboards/clueboard/2x1800/2021/2021.h new file mode 100644 index 000000000..ecb9e00c4 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/2021.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #pragma once | ||
17 | |||
18 | #include "quantum.h" | ||
diff --git a/keyboards/clueboard/2x1800/2021/config.h b/keyboards/clueboard/2x1800/2021/config.h new file mode 100644 index 000000000..eccede6a4 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/config.h | |||
@@ -0,0 +1,96 @@ | |||
1 | /* | ||
2 | Copyright 2017 Zach White <[email protected]> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #include "config_common.h" | ||
21 | |||
22 | /* audio support */ | ||
23 | #define AUDIO_PIN_ALT B7 | ||
24 | #define AUDIO_PIN C4 | ||
25 | #define AUDIO_CLICKY | ||
26 | |||
27 | /* | ||
28 | * Encoder Assignments | ||
29 | */ | ||
30 | #define ENCODERS_PAD_A { D0, C5 } | ||
31 | #define ENCODERS_PAD_B { D1, C6 } | ||
32 | #define ENCODER_RESOLUTION 4 | ||
33 | |||
34 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
35 | #define LOCKING_SUPPORT_ENABLE | ||
36 | |||
37 | /* Locking resynchronize hack */ | ||
38 | #define LOCKING_RESYNC_ENABLE | ||
39 | |||
40 | // Configure our MAX7219's | ||
41 | //#define MAX7219_LOAD B0 | ||
42 | //#define MAX7219_CONTROLLERS 4 | ||
43 | //#define MAX7219_LED_INTENSITY 1 // Max: 15 | ||
44 | |||
45 | // Define this to disable the startup test | ||
46 | //#define MAX7219_NO_STARTUP_TEST | ||
47 | |||
48 | /* This controls the speed of the sign, lower is faster. This is the minimal | ||
49 | * time between animation frames, in ms. Actual time between frames will | ||
50 | * always be slightly longer due to other keyboard tasks. | ||
51 | */ | ||
52 | //#define MAX7219_SCROLL_TIME 100 | ||
53 | |||
54 | /* This setting controls how big the scrollable area for your message sign | ||
55 | * is. If you set it to 0 your display will not work. If you set it to 1 | ||
56 | * you will have no buffer area, and you will only be able to display a | ||
57 | * total of 6 characters. Every number after that increases the buffer area | ||
58 | * by 32 columns. | ||
59 | * | ||
60 | * You can calculate how big to make this for the number of characters you | ||
61 | * want to display: | ||
62 | * | ||
63 | * <number of characters in message> * 6 / 32 + 1 | ||
64 | * | ||
65 | * You do not need to tune this unless you are trying to save ram. | ||
66 | */ | ||
67 | //#define MAX7219_BUFFER_MULTIPLIER 24 | ||
68 | |||
69 | // You can only define one of these at a time: | ||
70 | |||
71 | // Define this to test all LEDs. Keyboard functions will not work. | ||
72 | //#define MAX7219_LED_TEST | ||
73 | |||
74 | // Define this to iterate through LEDs 1 by 1. Keyboard functions will not work. | ||
75 | //#define MAX7219_LED_ITERATE | ||
76 | |||
77 | // Define this to show a simple animation. Keyboard functions will not work. | ||
78 | //#define MAX7219_LED_DANCE | ||
79 | |||
80 | // Define this to show all the characters available | ||
81 | //#define MAX7219_LED_FONTTEST | ||
82 | |||
83 | // Define this to show Clueboard on the sign | ||
84 | //#define MAX7219_LED_CLUEBOARD | ||
85 | |||
86 | // Define this to show the Konami code on the sign | ||
87 | //#define MAX7219_LED_KONAMI | ||
88 | |||
89 | // Define this to show QMK on the sign | ||
90 | //#define MAX7219_LED_QMK_POWERED | ||
91 | |||
92 | // Define this to treat the message board like an etch-a-sketch | ||
93 | //#define DRAWING_TOY_MODE | ||
94 | |||
95 | // Define this if you don't want any of the above | ||
96 | //#define MAX7219_LED_CUSTOM | ||
diff --git a/keyboards/clueboard/2x1800/2021/font.h b/keyboards/clueboard/2x1800/2021/font.h new file mode 100644 index 000000000..5ddcbfba5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/font.h | |||
@@ -0,0 +1,156 @@ | |||
1 | /* 5x8 Font for Clueboard 2x1800. | ||
2 | * | ||
3 | * Copyright (c) 2021 Zach White <[email protected]> | ||
4 | * | ||
5 | * Permission is hereby granted, free of charge, to any person | ||
6 | * obtaining a copy of this software and associated documentation | ||
7 | * files (the "Software"), to deal in the Software without | ||
8 | * restriction, including without limitation the rights to use, | ||
9 | * copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | * copies of the Software, and to permit persons to whom the | ||
11 | * Software is furnished to do so, subject to the following | ||
12 | * conditions: | ||
13 | * | ||
14 | * This permission notice shall be included in all copies or | ||
15 | * substantial portions of the Software. | ||
16 | * | ||
17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
18 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
19 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
20 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
21 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
22 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
23 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
24 | * OTHER DEALINGS IN THE SOFTWARE. | ||
25 | */ | ||
26 | |||
27 | // Top row of keyboard, when shift held | ||
28 | #define CHR_TILDE {0b00110000, 0b01000000, 0b00110000, 0b00001000, 0b00110000, 0b00000000} | ||
29 | #define CHR_BANG {0b00000000, 0b00000000, 0b11111010, 0b10000000, 0b00000000, 0b00000000} | ||
30 | #define CHR_AT {0b01001100, 0b10010010, 0b10011110, 0b10000010, 0b01111100, 0b00000000} | ||
31 | #define CHR_POUND {0b00101000, 0b11111110, 0b00101000, 0b11111110, 0b00101000, 0b00000000} | ||
32 | #define CHR_DOLLAR {0b00100100, 0b01010100, 0b11111110, 0b10101010, 0b01001000, 0b00000000} | ||
33 | #define CHR_PERCENT {0b11000010, 0b11000100, 0b00010000, 0b00100110, 0b01000110, 0b00000000} | ||
34 | #define CHR_CARET {0b00100000, 0b01000000, 0b10000000, 0b01000000, 0b00100000, 0b00000000} | ||
35 | #define CHR_AMPERSAND {0b01101100, 0b10010010, 0b10101010, 0b01000100, 0b00001010, 0b00000000} | ||
36 | #define CHR_ASTERISK {0b00101000, 0b00010000, 0b01111100, 0b00010000, 0b00101000, 0b00000000} | ||
37 | #define CHR_LPAREN {0b00000000, 0b00111000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} | ||
38 | #define CHR_RPAREN {0b00000000, 0b10000010, 0b01000100, 0b00111000, 0b00000000, 0b00000000} | ||
39 | #define CHR_UNDERSCORE {0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000000} | ||
40 | #define CHR_PLUS {0b00010000, 0b00010000, 0b01111100, 0b00010000, 0b00010000, 0b00000000} | ||
41 | |||
42 | // Top row of keyboard, without shift | ||
43 | #define CHR_BACKTICK {0b00000000, 0b11000000, 0b01100000, 0b10000000, 0b00000000, 0b00000000} | ||
44 | #define CHR_1 {0b00100000, 0b01000010, 0b11111110, 0b00000010, 0b00000010, 0b00000000} | ||
45 | #define CHR_2 {0b01000010, 0b10000110, 0b10001010, 0b10010010, 0b01100010, 0b00000000} | ||
46 | #define CHR_3 {0b10000100, 0b10000010, 0b10100010, 0b11010010, 0b10001100, 0b00000000} | ||
47 | #define CHR_4 {0b00011000, 0b00101000, 0b01001000, 0b11111110, 0b00001000, 0b00000000} | ||
48 | #define CHR_5 {0b11100100, 0b10100010, 0b10100010, 0b10100010, 0b10011100, 0b00000000} | ||
49 | #define CHR_6 {0b00111100, 0b01010010, 0b10010010, 0b10010010, 0b00001100, 0b00000000} | ||
50 | #define CHR_7 {0b11000000, 0b10001110, 0b10010000, 0b10100000, 0b11000000, 0b00000000} | ||
51 | #define CHR_8 {0b01101100, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} | ||
52 | #define CHR_9 {0b01100000, 0b10010010, 0b10010010, 0b10010010, 0b01111000, 0b00000000} | ||
53 | #define CHR_0 {0b01111100, 0b10001010, 0b10010010, 0b10100010, 0b01111100, 0b00000000} | ||
54 | #define CHR_DASH {0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00000000, 0b00000000} | ||
55 | #define CHR_EQUAL {0b00000000, 0b00101000, 0b00101000, 0b00101000, 0b00000000, 0b00000000} | ||
56 | |||
57 | // Letters | ||
58 | #define CHR_A {0b01111110, 0b10001000, 0b10001000, 0b10001000, 0b01111110, 0b00000000} | ||
59 | #define CHR_B {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} | ||
60 | #define CHR_C {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01000100, 0b00000000} | ||
61 | #define CHR_D {0b11111110, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} | ||
62 | #define CHR_E {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b10000010, 0b00000000} | ||
63 | #define CHR_F {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b10000000, 0b00000000} | ||
64 | #define CHR_G {0b01111100, 0b10000010, 0b10010010, 0b10010010, 0b01011100, 0b00000000} | ||
65 | #define CHR_H {0b11111110, 0b00010000, 0b00010000, 0b00010000, 0b11111110, 0b00000000} | ||
66 | #define CHR_I {0b00000000, 0b10000010, 0b11111110, 0b10000010, 0b00000000, 0b00000000} | ||
67 | #define CHR_J {0b00000100, 0b00000010, 0b10000010, 0b11111100, 0b10000000, 0b00000000} | ||
68 | #define CHR_K {0b11111110, 0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000} | ||
69 | #define CHR_L {0b00000000, 0b11111110, 0b00000010, 0b00000010, 0b00000010, 0b00000000} | ||
70 | #define CHR_M {0b11111110, 0b01000000, 0b00110000, 0b01000000, 0b11111110, 0b00000000} | ||
71 | #define CHR_N {0b11111110, 0b01100000, 0b00010000, 0b00001100, 0b11111110, 0b00000000} | ||
72 | #define CHR_O {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} | ||
73 | #define CHR_P {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b01100000, 0b00000000} | ||
74 | #define CHR_Q {0b01111100, 0b10000010, 0b10001010, 0b10000100, 0b01111010, 0b00000000} | ||
75 | #define CHR_R {0b11111110, 0b10010000, 0b10011000, 0b10010100, 0b01100010, 0b00000000} | ||
76 | #define CHR_S {0b01100100, 0b10010010, 0b10010010, 0b10010010, 0b01001100, 0b00000000} | ||
77 | #define CHR_T {0b10000000, 0b10000000, 0b11111110, 0b10000000, 0b10000000, 0b00000000} | ||
78 | #define CHR_U {0b11111100, 0b00000010, 0b00000010, 0b00000010, 0b11111100, 0b00000000} | ||
79 | #define CHR_V {0b11111000, 0b00000100, 0b00000010, 0b00000100, 0b11111000, 0b00000000} | ||
80 | #define CHR_W {0b11111100, 0b00000010, 0b00011100, 0b00000010, 0b11111110, 0b00000000} | ||
81 | #define CHR_X {0b11000110, 0b00101000, 0b00010000, 0b00101000, 0b11000110, 0b00000000} | ||
82 | #define CHR_Y {0b11100000, 0b00010000, 0b00001110, 0b00010000, 0b11100000, 0b00000000} | ||
83 | #define CHR_Z {0b10000110, 0b10001010, 0b10010010, 0b10100010, 0b11000010, 0b00000000} | ||
84 | |||
85 | #define CHR_a {0b00000100, 0b00101010, 0b00101010, 0b00101010, 0b00011110, 0b00000000} | ||
86 | #define CHR_b {0b11111110, 0b00010010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} | ||
87 | #define CHR_c {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00000100, 0b00000000} | ||
88 | #define CHR_d {0b00011100, 0b00100010, 0b00100010, 0b00010010, 0b11111110, 0b00000000} | ||
89 | #define CHR_e {0b00011100, 0b00101010, 0b00101010, 0b00101010, 0b00011000, 0b00000000} | ||
90 | #define CHR_f {0b00000000, 0b00010000, 0b01111110, 0b10010000, 0b10000000, 0b01000000} | ||
91 | #define CHR_g {0b00011000, 0b00100101, 0b00100101, 0b00100101, 0b00111110, 0b00000000} | ||
92 | #define CHR_h {0b11111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} | ||
93 | #define CHR_i {0b00000000, 0b00010010, 0b10111110, 0b00000010, 0b00000000, 0b00000000} | ||
94 | #define CHR_j {0b00000100, 0b00000010, 0b00100010, 0b10111100, 0b00000000, 0b00000000} | ||
95 | #define CHR_k {0b11111110, 0b00001000, 0b00010100, 0b00100010, 0b00000000, 0b00000000} | ||
96 | #define CHR_l {0b00000000, 0b10000010, 0b11111110, 0b00000010, 0b00000000, 0b00000000} | ||
97 | #define CHR_m {0b00111110, 0b00100000, 0b00111110, 0b00100000, 0b00111110, 0b00000000} | ||
98 | #define CHR_n {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} | ||
99 | #define CHR_o {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} | ||
100 | #define CHR_p {0b00111111, 0b00100100, 0b00100100, 0b00100100, 0b00011000, 0b00000000} | ||
101 | #define CHR_q {0b00011000, 0b00100100, 0b00100100, 0b00011000, 0b00111111, 0b00000000} | ||
102 | #define CHR_r {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00010000, 0b00000000} | ||
103 | #define CHR_s {0b00010010, 0b00101010, 0b00101010, 0b00101010, 0b00000100, 0b00000000} | ||
104 | #define CHR_t {0b00100000, 0b11111100, 0b00100010, 0b00000010, 0b00000100, 0b00000000} | ||
105 | #define CHR_u {0b00111100, 0b00000010, 0b00000010, 0b00000100, 0b00111110, 0b00000000} | ||
106 | #define CHR_v {0b00111000, 0b00000100, 0b00000010, 0b00000100, 0b00111000, 0b00000000} | ||
107 | #define CHR_w {0b00111100, 0b00000010, 0b00111100, 0b00000010, 0b00111100, 0b00000000} | ||
108 | #define CHR_x {0b00100010, 0b00010100, 0b00001000, 0b00010100, 0b00100010, 0b00000000} | ||
109 | #define CHR_y {0b00111000, 0b00000101, 0b00000101, 0b00000101, 0b00111110, 0b00000000} | ||
110 | #define CHR_z {0b00100010, 0b00100110, 0b00101010, 0b00110010, 0b00100010, 0b00000000} | ||
111 | |||
112 | // Punctuation | ||
113 | #define CHR_LCURLY {0b00000000, 0b00010000, 0b01101100, 0b10000010, 0b00000000, 0b00000000} | ||
114 | #define CHR_RCURLY {0b00000000, 0b10000010, 0b01101100, 0b00010000, 0b00000000, 0b00000000} | ||
115 | #define CHR_PIPE {0b00000000, 0b00000000, 0b11101110, 0b00000000, 0b00000000, 0b00000000} | ||
116 | #define CHR_COLON {0b00000000, 0b00000000, 0b01101100, 0b01101100, 0b00000000, 0b00000000} | ||
117 | #define CHR_QUOTE {0b00000000, 0b01110000, 0b00000000, 0b01110000, 0b00000000, 0b00000000} | ||
118 | #define CHR_LESSTHAN {0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} | ||
119 | #define CHR_GREATERTHAN {0b10000010, 0b01000100, 0b00101000, 0b00010000, 0b00000000, 0b00000000} | ||
120 | #define CHR_QUESTIONMARK {0b01000000, 0b10000000, 0b10001010, 0b10010000, 0b01100000, 0b00000000} | ||
121 | #define CHR_INTERROBANG {0b01100000, 0b10000000, 0b11101010, 0b10010000, 0b01100000, 0b00000000} | ||
122 | #define CHR_LBRACKET {0b00000000, 0b11111110, 0b10000010, 0b10000010, 0b00000000, 0b00000000} | ||
123 | #define CHR_RBRACKET {0b00000000, 0b10000010, 0b10000010, 0b11111110, 0b00000000, 0b00000000} | ||
124 | #define CHR_BACKSLASH {0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000000} | ||
125 | #define CHR_SEMICOLON {0b00000000, 0b00000000, 0b01101010, 0b01101100, 0b00000000, 0b00000000} | ||
126 | #define CHR_APOSTROPHE {0b00000000, 0b00000000, 0b01110000, 0b00000000, 0b00000000, 0b00000000} | ||
127 | #define CHR_COMMA {0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00000000, 0b00000000} | ||
128 | #define CHR_PERIOD {0b00000000, 0b00000000, 0b00000110, 0b00000110, 0b00000000, 0b00000000} | ||
129 | #define CHR_SLASH {0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b00000000} | ||
130 | #define CHR_SPACE {0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} | ||
131 | #define CHR_DEGREES {0b11000000, 0b11000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} | ||
132 | |||
133 | // Graphics | ||
134 | #define CHR_CENT {0b00111000, 0b01000100, 0b11111110, 0b01000100, 0b00101000, 0b00000000} | ||
135 | #define CHR_DEGREES_C {0b11000000, 0b11001100, 0b00010010, 0b00010010, 0b00000000, 0b00000000} | ||
136 | #define CHR_DEGREES_F {0b11000000, 0b11011110, 0b00010100, 0b00010000, 0b00000000, 0b00000000} | ||
137 | #define CHR_DIVISION {0b00010000, 0b00010000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} | ||
138 | #define CHR_LEFT_ARROW {0b00010000, 0b00111000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} | ||
139 | #define CHR_RIGHT_ARROW {0b00010000, 0b00010000, 0b01010100, 0b00111000, 0b00010000, 0b00000000} | ||
140 | #define CHR_UP_ARROW {0b00010000, 0b00100000, 0b01111110, 0b00100000, 0b00010000, 0b00000000} | ||
141 | #define CHR_DOWN_ARROW {0b00001000, 0b00000100, 0b01111110, 0b00000100, 0b00001000, 0b00000000} | ||
142 | #define CHR_PI {0b00100010, 0b00111100, 0b00100000, 0b00111110, 0b00100010, 0b00000000} | ||
143 | #define CHR_PSI {0b01111000, 0b00001000, 0b01111110, 0b00001000, 0b01111000, 0b00000000} | ||
144 | |||
145 | // Predefined messages | ||
146 | #define MSG_FONTTEST {CHR_TILDE, CHR_BANG, CHR_AT, CHR_POUND, CHR_PERCENT, CHR_CARET, CHR_AMPERSAND, CHR_LPAREN, CHR_RPAREN, CHR_UNDERSCORE, CHR_PLUS, CHR_BACKTICK, CHR_1, CHR_2, CHR_3, CHR_4, CHR_5, CHR_6, CHR_7, CHR_8, CHR_9, CHR_0, CHR_DASH, CHR_EQUAL, CHR_A, CHR_B, CHR_C, CHR_D, CHR_E, CHR_F, CHR_G, CHR_H, CHR_I, CHR_J, CHR_K, CHR_L, CHR_M, CHR_N, CHR_O, CHR_P, CHR_Q, CHR_R, CHR_S, CHR_T, CHR_U, CHR_V, CHR_W, CHR_X, CHR_Y, CHR_Z, CHR_a, CHR_b, CHR_c, CHR_d, CHR_e, CHR_f, CHR_g, CHR_h, CHR_i, CHR_j, CHR_k, CHR_l, CHR_m, CHR_n, CHR_o, CHR_p, CHR_q, CHR_r, CHR_s, CHR_t, CHR_u, CHR_v, CHR_w, CHR_x, CHR_y, CHR_z, CHR_LCURLY, CHR_RCURLY, CHR_PIPE, CHR_COLON, CHR_QUOTE, CHR_LESSTHAN, CHR_GREATERTHAN, CHR_QUESTIONMARK, CHR_INTERROBANG, CHR_LBRACKET, CHR_RBRACKET, CHR_BACKSLASH, CHR_SEMICOLON, CHR_APOSTROPHE, CHR_COMMA, CHR_PERIOD, CHR_SLASH, CHR_CENT, CHR_DEGREES, CHR_DEGREES_C, CHR_DEGREES_F, CHR_DIVISION, CHR_LEFT_ARROW, CHR_RIGHT_ARROW, CHR_UP_ARROW, CHR_DOWN_ARROW, CHR_PI, CHR_PSI} | ||
147 | #define MSG_FONTTEST_LEN 104 | ||
148 | |||
149 | #define MSG_CLUEBOARD {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d} | ||
150 | #define MSG_CLUEBOARD_LEN 10 | ||
151 | |||
152 | #define MSG_KONAMI {CHR_UP_ARROW, CHR_SPACE, CHR_UP_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_B, CHR_SPACE, CHR_A, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_E, CHR_L, CHR_E, CHR_C, CHR_T, CHR_GREATERTHAN, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_T, CHR_A, CHR_R, CHR_T, CHR_GREATERTHAN} | ||
153 | #define MSG_KONAMI_LEN 36 | ||
154 | |||
155 | #define MSG_QMK_POWERED {CHR_PSI, CHR_P, CHR_o, CHR_w, CHR_e, CHR_r, CHR_e, CHR_d, CHR_SPACE, CHR_b, CHR_y, CHR_SPACE, CHR_Q, CHR_M, CHR_K} | ||
156 | #define MSG_QMK_POWERED_LEN 15 | ||
diff --git a/keyboards/clueboard/2x1800/2021/info.json b/keyboards/clueboard/2x1800/2021/info.json new file mode 100644 index 000000000..088ce343d --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/info.json | |||
@@ -0,0 +1,419 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 2x1800 2021", | ||
4 | "maintainer": "skullydazed", | ||
5 | "bootloader": "halfkay", | ||
6 | "debounce": 5, | ||
7 | "diode_direction": "ROW2COL", | ||
8 | "features": { | ||
9 | "audio": true, | ||
10 | "bootmagic": false, | ||
11 | "console": true, | ||
12 | "encoder": true, | ||
13 | "extrakey": true, | ||
14 | "mousekey": true, | ||
15 | "nkro": true | ||
16 | }, | ||
17 | "indicators": { | ||
18 | "caps_lock": "B5", | ||
19 | "num_lock": "B4", | ||
20 | "scroll_lock": "B6" | ||
21 | }, | ||
22 | "matrix_pins": { | ||
23 | "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "F0", "E6", "A0", "E7"], | ||
24 | "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "F1", "F2", "F3", "F4", "F5", "F6"] | ||
25 | }, | ||
26 | "processor": "at90usb1286", | ||
27 | "usb": { | ||
28 | "pid": "0x23A0" | ||
29 | }, | ||
30 | "layout_aliases": { | ||
31 | "LAYOUT": "LAYOUT_all" | ||
32 | }, | ||
33 | "layouts": { | ||
34 | "LAYOUT_4u_space": { | ||
35 | "layout": [ | ||
36 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
37 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
38 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
39 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
40 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
41 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
42 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
43 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
44 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
45 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
46 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
47 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
48 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
49 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
50 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
51 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
52 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
53 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
54 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
55 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
56 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
57 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
58 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
59 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
60 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
61 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
62 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
63 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
64 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
65 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
66 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
67 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
68 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
69 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
70 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
71 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
72 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
73 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
74 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
75 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
76 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
77 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
78 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
79 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
80 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
81 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
82 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
83 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
84 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
85 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
86 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
87 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
88 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
89 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
90 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
91 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
92 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
93 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
94 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
95 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
96 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
97 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
98 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
99 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
100 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
101 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
102 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
103 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
104 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
105 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
106 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
107 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
108 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
109 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
110 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
111 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
112 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
113 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
114 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
115 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
116 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
117 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
118 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
119 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
120 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
121 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
122 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
123 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
124 | { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
125 | { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, | ||
126 | { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, | ||
127 | { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, | ||
128 | { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, | ||
129 | { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, | ||
130 | { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, | ||
131 | { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, | ||
132 | { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, | ||
133 | { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, | ||
134 | { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, | ||
135 | { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
136 | { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, | ||
137 | { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, | ||
138 | { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, | ||
139 | { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, | ||
140 | { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, | ||
141 | { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, | ||
142 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
143 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
144 | { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, | ||
145 | { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, | ||
146 | { "matrix": [5, 5], "w": 1, "x": 8.5, "y": 5.25 }, | ||
147 | { "matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25 }, | ||
148 | { "matrix": [5, 7], "w": 1, "x": 13.5, "y": 5.25 }, | ||
149 | { "matrix": [5, 8], "w": 1, "x": 14.5, "y": 5.25 }, | ||
150 | { "matrix": [11, 0], "w": 1, "x": 15.5, "y": 5.25 }, | ||
151 | { "matrix": [11, 2], "w": 1, "x": 16.5, "y": 5.25 }, | ||
152 | { "matrix": [11, 3], "w": 1, "x": 21, "y": 5.25 }, | ||
153 | { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, | ||
154 | { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, | ||
155 | { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, | ||
156 | { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, | ||
157 | { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, | ||
158 | { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, | ||
159 | { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } | ||
160 | ] | ||
161 | }, | ||
162 | "LAYOUT_7u_space": { | ||
163 | "layout": [ | ||
164 | { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
165 | { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
166 | { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
167 | { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
168 | { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
169 | { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
170 | { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
171 | { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
172 | { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
173 | { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
174 | { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
175 | { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
176 | { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
177 | { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
178 | { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
179 | { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
180 | { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
181 | { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
182 | { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
183 | { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
184 | { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
185 | { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
186 | { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
187 | { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
188 | { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
189 | { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
190 | { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
191 | { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
192 | { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
193 | { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
194 | { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
195 | { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
196 | { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
197 | { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
198 | { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
199 | { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
200 | { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
201 | { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
202 | { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
203 | { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
204 | { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
205 | { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
206 | { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
207 | { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
208 | { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
209 | { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
210 | { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
211 | { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
212 | { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
213 | { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
214 | { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
215 | { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
216 | { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
217 | { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
218 | { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
219 | { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
220 | { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
221 | { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
222 | { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
223 | { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
224 | { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
225 | { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
226 | { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
227 | { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
228 | { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
229 | { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
230 | { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
231 | { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
232 | { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
233 | { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
234 | { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
235 | { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
236 | { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
237 | { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
238 | { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
239 | { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
240 | { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
241 | { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
242 | { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
243 | { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
244 | { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
245 | { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
246 | { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
247 | { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
248 | { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
249 | { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
250 | { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
251 | { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
252 | { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
253 | { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, | ||
254 | { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, | ||
255 | { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, | ||
256 | { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, | ||
257 | { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, | ||
258 | { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, | ||
259 | { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, | ||
260 | { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, | ||
261 | { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, | ||
262 | { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, | ||
263 | { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
264 | { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, | ||
265 | { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, | ||
266 | { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, | ||
267 | { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, | ||
268 | { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, | ||
269 | { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, | ||
270 | { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
271 | { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
272 | { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, | ||
273 | { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, | ||
274 | { "matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25 }, | ||
275 | { "matrix": [5, 6], "w": 1, "x": 15.5, "y": 5.25 }, | ||
276 | { "matrix": [5, 7], "w": 1, "x": 16.5, "y": 5.25 }, | ||
277 | { "matrix": [11, 0], "w": 1, "x": 21, "y": 5.25 }, | ||
278 | { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, | ||
279 | { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, | ||
280 | { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, | ||
281 | { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, | ||
282 | { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, | ||
283 | { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, | ||
284 | { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } | ||
285 | ] | ||
286 | }, | ||
287 | "LAYOUT_all": { | ||
288 | "layout": [ | ||
289 | { "label": "Home", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
290 | { "label": "End", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
291 | { "label": "PgUp", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
292 | { "label": "PgDn", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
293 | { "label": "Esc", "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, | ||
294 | { "label": "F1", "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, | ||
295 | { "label": "F2", "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, | ||
296 | { "label": "F3", "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, | ||
297 | { "label": "F4", "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, | ||
298 | { "label": "F5", "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, | ||
299 | { "label": "F6", "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, | ||
300 | { "label": "F7", "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, | ||
301 | { "label": "F8", "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, | ||
302 | { "label": "F9", "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, | ||
303 | { "label": "F10", "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, | ||
304 | { "label": "F11", "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, | ||
305 | { "label": "F12", "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, | ||
306 | { "label": "PrtSc", "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, | ||
307 | { "label": "Scroll Lock", "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, | ||
308 | { "label": "Pause", "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, | ||
309 | { "label": "Insert", "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, | ||
310 | { "label": "-", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, | ||
311 | { "label": "Num Lock", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, | ||
312 | { "label": "/", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, | ||
313 | { "label": "*", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, | ||
314 | { "label": "~", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, | ||
315 | { "label": "!", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, | ||
316 | { "label": "@", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, | ||
317 | { "label": "#", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, | ||
318 | { "label": "$", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, | ||
319 | { "label": "%", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, | ||
320 | { "label": "^", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, | ||
321 | { "label": "&", "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, | ||
322 | { "label": "*", "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, | ||
323 | { "label": "(", "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, | ||
324 | { "label": ")", "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, | ||
325 | { "label": "_", "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, | ||
326 | { "label": "+", "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, | ||
327 | { "label": "Backspace", "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, | ||
328 | { "label": "Num Lock", "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, | ||
329 | { "label": "/", "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, | ||
330 | { "label": "*", "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, | ||
331 | { "label": "-", "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, | ||
332 | { "h": 2, "label": "+", "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, | ||
333 | { "label": "7", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, | ||
334 | { "label": "8", "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, | ||
335 | { "label": "9", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, | ||
336 | { "label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, | ||
337 | { "label": "Q", "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, | ||
338 | { "label": "W", "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, | ||
339 | { "label": "E", "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, | ||
340 | { "label": "R", "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, | ||
341 | { "label": "T", "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, | ||
342 | { "label": "Y", "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, | ||
343 | { "label": "U", "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, | ||
344 | { "label": "I", "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, | ||
345 | { "label": "O", "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, | ||
346 | { "label": "P", "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, | ||
347 | { "label": "{", "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, | ||
348 | { "label": "}", "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, | ||
349 | { "label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, | ||
350 | { "label": "7", "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, | ||
351 | { "label": "8", "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, | ||
352 | { "label": "9", "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, | ||
353 | { "h": 2, "label": "+", "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, | ||
354 | { "label": "4", "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, | ||
355 | { "label": "5", "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, | ||
356 | { "label": "6", "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, | ||
357 | { "label": "Caps Lock", "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, | ||
358 | { "label": "A", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, | ||
359 | { "label": "S", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, | ||
360 | { "label": "D", "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, | ||
361 | { "label": "F", "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, | ||
362 | { "label": "G", "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, | ||
363 | { "label": "H", "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, | ||
364 | { "label": "J", "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, | ||
365 | { "label": "K", "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, | ||
366 | { "label": "L", "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, | ||
367 | { "label": ":", "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, | ||
368 | { "label": "\"", "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, | ||
369 | { "label": "Enter", "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, | ||
370 | { "label": "4", "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, | ||
371 | { "label": "5", "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, | ||
372 | { "label": "6", "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, | ||
373 | { "h": 2, "label": "Enter", "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, | ||
374 | { "label": "1", "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, | ||
375 | { "label": "2", "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, | ||
376 | { "label": "3", "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, | ||
377 | { "label": "\\u2191", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, | ||
378 | { "label": "Shift", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.25 }, | ||
379 | { "label": "Z", "matrix": [4, 6], "w": 1, "x": 6.75, "y": 4.25 }, | ||
380 | { "label": "X", "matrix": [4, 7], "w": 1, "x": 7.75, "y": 4.25 }, | ||
381 | { "label": "C", "matrix": [4, 8], "w": 1, "x": 8.75, "y": 4.25 }, | ||
382 | { "label": "V", "matrix": [4, 9], "w": 1, "x": 9.75, "y": 4.25 }, | ||
383 | { "label": "B", "matrix": [4, 10], "w": 1, "x": 10.75, "y": 4.25 }, | ||
384 | { "label": "N", "matrix": [10, 0], "w": 1, "x": 11.75, "y": 4.25 }, | ||
385 | { "label": "M", "matrix": [10, 1], "w": 1, "x": 12.75, "y": 4.25 }, | ||
386 | { "label": "<", "matrix": [10, 2], "w": 1, "x": 13.75, "y": 4.25 }, | ||
387 | { "label": ">", "matrix": [10, 3], "w": 1, "x": 14.75, "y": 4.25 }, | ||
388 | { "label": "?", "matrix": [10, 4], "w": 1, "x": 15.75, "y": 4.25 }, | ||
389 | { "label": "Shift", "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 4.25 }, | ||
390 | { "label": "\\u2191", "matrix": [9, 6], "w": 1, "x": 18.75, "y": 4.5 }, | ||
391 | { "label": "1", "matrix": [10, 7], "w": 1, "x": 20, "y": 4.25 }, | ||
392 | { "label": "2", "matrix": [10, 8], "w": 1, "x": 21, "y": 4.25 }, | ||
393 | { "label": "3", "matrix": [10, 9], "w": 1, "x": 22, "y": 4.25 }, | ||
394 | { "h": 2, "label": "Enter", "matrix": [10, 10], "w": 1, "x": 23, "y": 4.25 }, | ||
395 | { "label": "0", "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, | ||
396 | { "label": ".", "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, | ||
397 | { "label": "\\u2190", "matrix": [5, 3], "w": 1, "x": 3.25, "y": 5.5 }, | ||
398 | { "label": "\\u2193", "matrix": [5, 4], "w": 1, "x": 4.25, "y": 5.5 }, | ||
399 | { "label": "\\u2192", "matrix": [5, 5], "w": 1, "x": 5.25, "y": 5.5 }, | ||
400 | { "label": "Ctrl", "matrix": [5, 6], "w": 1, "x": 6.5, "y": 5.25 }, | ||
401 | { "label": "Win", "matrix": [5, 7], "w": 1, "x": 7.5, "y": 5.25 }, | ||
402 | { "label": "Alt", "matrix": [5, 8], "w": 1, "x": 8.5, "y": 5.25 }, | ||
403 | { "label": "1u", "matrix": [5, 9], "w": 1, "x": 9.5, "y": 5.25 }, | ||
404 | { "label": "1u", "matrix": [5, 10], "w": 1, "x": 10.5, "y": 5.25 }, | ||
405 | { "label": "1u", "matrix": [11, 0], "w": 1, "x": 11.5, "y": 5.25 }, | ||
406 | { "label": "1u", "matrix": [11, 1], "w": 1, "x": 12.5, "y": 5.25 }, | ||
407 | { "label": "Alt", "matrix": [11, 2], "w": 1, "x": 13.5, "y": 5.25 }, | ||
408 | { "label": "Win", "matrix": [11, 3], "w": 1, "x": 14.5, "y": 5.25 }, | ||
409 | { "label": "Menu", "matrix": [11, 4], "w": 1, "x": 15.5, "y": 5.25 }, | ||
410 | { "label": "Ctrl", "matrix": [11, 5], "w": 1, "x": 16.5, "y": 5.25 }, | ||
411 | { "label": "\\u2190", "matrix": [10, 6], "w": 1, "x": 17.75, "y": 5.5 }, | ||
412 | { "label": "\\u2193", "matrix": [11, 6], "w": 1, "x": 18.75, "y": 5.5 }, | ||
413 | { "label": "\\u2192", "matrix": [11, 7], "w": 1, "x": 19.75, "y": 5.5 }, | ||
414 | { "label": "0", "matrix": [11, 8], "w": 1, "x": 21, "y": 5.25 }, | ||
415 | { "label": ".", "matrix": [11, 9], "w": 1, "x": 22, "y": 5.25 } | ||
416 | ] | ||
417 | } | ||
418 | } | ||
419 | } | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json new file mode 100644 index 000000000..7122f42d4 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json | |||
@@ -0,0 +1,18 @@ | |||
1 | { | ||
2 | "version": 1, | ||
3 | "author": "skullydazed", | ||
4 | "notes": "", | ||
5 | "keyboard": "clueboard/2x1800/2018", | ||
6 | "keymap": "default", | ||
7 | "layout": "LAYOUT_all", | ||
8 | "layers": [ | ||
9 | [ | ||
10 | "KC_HOME", "KC_END", "KC_PGUP", "KC_PGDN", "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS", "KC_INS", | ||
11 | "KC_PMNS", "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_PMNS", | ||
12 | "KC_PPLS", "KC_P7", "KC_P8", "KC_P9", "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", | ||
13 | "KC_P4", "KC_P5", "KC_P6", "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_P4", "KC_P5", "KC_P6", | ||
14 | "KC_PENT", "KC_P1", "KC_P2", "KC_P3", "KC_UP", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_P1", "KC_P2", "KC_P3", "KC_PENT", | ||
15 | "KC_P0", "KC_PDOT", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_P0", "KC_PDOT" | ||
16 | ] | ||
17 | ] | ||
18 | } | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c new file mode 100644 index 000000000..f29feccc6 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_4u_space( | ||
20 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
21 | |||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md new file mode 100644 index 000000000..a696972e8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 4u Spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c new file mode 100644 index 000000000..395956cec --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include QMK_KEYBOARD_H | ||
17 | |||
18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
19 | [0] = LAYOUT_7u_space( | ||
20 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, | ||
21 | |||
22 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
23 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, | ||
24 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
25 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
26 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
27 | ) | ||
28 | }; | ||
29 | |||
30 | |||
31 | #ifdef AUDIO_ENABLE | ||
32 | float song_one_up[][2] = SONG(ONE_UP_SOUND); | ||
33 | #endif | ||
34 | |||
35 | volatile uint8_t runonce = true; | ||
36 | static uint16_t my_timer; | ||
37 | |||
38 | void matrix_init_user(void) { | ||
39 | my_timer = timer_read(); | ||
40 | } | ||
41 | |||
42 | void matrix_scan_user(void) { | ||
43 | if (runonce && timer_elapsed(my_timer) > 500) { | ||
44 | runonce = false; | ||
45 | #ifdef AUDIO_ENABLE | ||
46 | PLAY_SONG(song_one_up); | ||
47 | #endif | ||
48 | } | ||
49 | } | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md new file mode 100644 index 000000000..f5718e842 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 with 7u spacebar | |||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h b/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h new file mode 100644 index 000000000..81995d66f --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* Copyright 2017 Zach White <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #pragma once | ||
18 | #define MAX7219_LED_FONTTEST | ||
19 | |||
20 | // place overrides here | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c new file mode 100644 index 000000000..3559455b6 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c | |||
@@ -0,0 +1,50 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | #include "font.h" | ||
3 | #include "max7219.h" | ||
4 | |||
5 | enum custom_keycodes { | ||
6 | MSG_CB = SAFE_RANGE, | ||
7 | MSG_CS, | ||
8 | MSG_KMI, | ||
9 | MSG_QMK, | ||
10 | }; | ||
11 | |||
12 | uint8_t custom_message[5][6] = {CHR_M, CHR_y, CHR_SPACE, CHR_2, CHR_CENT}; | ||
13 | |||
14 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
15 | [0] = LAYOUT_all( | ||
16 | MSG_CB, MSG_QMK, MSG_KMI, MSG_CS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, | ||
17 | KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
18 | KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, | ||
19 | KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, | ||
20 | KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, | ||
21 | KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT | ||
22 | ) | ||
23 | }; | ||
24 | |||
25 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
26 | if (record->event.pressed) { | ||
27 | switch (keycode) { | ||
28 | case MSG_CB: | ||
29 | max7219_led_scrolling=true; | ||
30 | uint8_t cb_msg[MSG_CLUEBOARD_LEN][6] = MSG_CLUEBOARD; | ||
31 | max7219_message_sign(cb_msg, MSG_CLUEBOARD_LEN); | ||
32 | return true; | ||
33 | case MSG_CS: | ||
34 | max7219_led_scrolling=false; | ||
35 | max7219_message_sign(custom_message, 5); | ||
36 | return true; | ||
37 | case MSG_KMI: | ||
38 | max7219_led_scrolling=true; | ||
39 | uint8_t kmi_msg[MSG_KONAMI_LEN][6] = MSG_KONAMI; | ||
40 | max7219_message_sign(kmi_msg, MSG_KONAMI_LEN); | ||
41 | return true; | ||
42 | case MSG_QMK: | ||
43 | max7219_led_scrolling=true; | ||
44 | uint8_t qmk_msg[MSG_QMK_POWERED_LEN][6] = MSG_QMK_POWERED; | ||
45 | max7219_message_sign(qmk_msg, MSG_QMK_POWERED_LEN); | ||
46 | return true; | ||
47 | } | ||
48 | } | ||
49 | return true; | ||
50 | }; | ||
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md new file mode 100644 index 000000000..4e3457efc --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for 2x1800 | |||
diff --git a/keyboards/clueboard/2x1800/2021/max7219.c b/keyboards/clueboard/2x1800/2021/max7219.c new file mode 100644 index 000000000..1ba22362f --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.c | |||
@@ -0,0 +1,318 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2021 Zach White <[email protected]> | ||
3 | * Copyright (c) 2007 Eberhard Fahle | ||
4 | * | ||
5 | * max7219.c - A library for controling Leds with a MAX7219/MAX7221 | ||
6 | * | ||
7 | * Permission is hereby granted, free of charge, to any person | ||
8 | * obtaining a copy of this software and associated documentation | ||
9 | * files (the "Software"), to deal in the Software without | ||
10 | * restriction, including without limitation the rights to use, | ||
11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
12 | * copies of the Software, and to permit persons to whom the | ||
13 | * Software is furnished to do so, subject to the following | ||
14 | * conditions: | ||
15 | * | ||
16 | * This permission notice shall be included in all copies or | ||
17 | * substantial portions of the Software. | ||
18 | * | ||
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
26 | * OTHER DEALINGS IN THE SOFTWARE. | ||
27 | */ | ||
28 | |||
29 | /* | ||
30 | * This driver started as a port of Arduino's LedControl to QMK. The | ||
31 | * original Arduino code can be found here: | ||
32 | * | ||
33 | * https://github.com/wayoda/LedControl | ||
34 | * | ||
35 | * Unlike LedControl we are using the native SPI support, you will need to | ||
36 | * use the native SPI pins for your MCU. You can set the CS pin with | ||
37 | * `#define MAX7219_LOAD <pin>`. | ||
38 | * | ||
39 | * This has only been tested on AVR, specifically a Teensy 2.0++. | ||
40 | */ | ||
41 | |||
42 | #include "max7219.h" | ||
43 | #include "font.h" | ||
44 | |||
45 | // Datastructures | ||
46 | bool max7219_led_scrolling = true; | ||
47 | uint16_t max7219_buffer_end = 0; | ||
48 | uint8_t max7219_spidata[MAX_BYTES]; | ||
49 | uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; | ||
50 | |||
51 | /* Write max7219_spidata to all the max7219's | ||
52 | */ | ||
53 | void max7219_write_all(void) { | ||
54 | dprintf("max7219_write_all()\n"); | ||
55 | if (spi_start(MAX7219_LOAD, false, 0, 8)) { | ||
56 | for(int i = MAX_BYTES; i>0; i--) { | ||
57 | dprintf("spi_write(%d)\n", max7219_spidata[i-1]); | ||
58 | spi_write(max7219_spidata[i-1]); | ||
59 | } | ||
60 | spi_stop(); | ||
61 | } else { | ||
62 | xprintf("Could not spi_start!\n"); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | /* Write the current frame in max7219_led_a to all the max7219's | ||
67 | */ | ||
68 | void max7219_write_frame(void) { | ||
69 | dprintf("max7219_write_frame()\n"); | ||
70 | |||
71 | // Set our opcode and data | ||
72 | for (int col=0; col<8; col++) { | ||
73 | for (int device_num=0; device_num<MAX7219_CONTROLLERS; device_num++) { | ||
74 | int offset=device_num*2; | ||
75 | max7219_spidata[offset] = max7219_led_a[col][device_num]; | ||
76 | max7219_spidata[offset+1] = col+1; | ||
77 | } | ||
78 | max7219_write_all(); | ||
79 | } | ||
80 | } | ||
81 | |||
82 | /* Stores a message in the sign buffer. | ||
83 | * | ||
84 | * message should be a 2d array with the outer array having a length of your | ||
85 | * message and the inner array having a length of 6. Use the CHR_<letter> | ||
86 | * macros from font.h to populate your array. | ||
87 | * | ||
88 | * Example: | ||
89 | * | ||
90 | * uint8_t message[10][6] = {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d}; | ||
91 | * max7219_message(message, 10); | ||
92 | */ | ||
93 | void max7219_message_sign(uint8_t message[][6], size_t message_len) { | ||
94 | uint8_t letter_num = 0; | ||
95 | uint8_t letter_col = 0; | ||
96 | max7219_buffer_end = message_len * 6 + 32; | ||
97 | |||
98 | for (int device_num=0; device_num<MAX7219_BUFFER_SIZE; device_num++) { | ||
99 | for (int col=0; col<8; col++) { | ||
100 | if (letter_num >= message_len) { | ||
101 | max7219_led_a[col][device_num] = 0b00000000; | ||
102 | } else { | ||
103 | max7219_led_a[col][device_num] = message[letter_num][letter_col]; | ||
104 | if (letter_col == 5) { | ||
105 | letter_num++; | ||
106 | letter_col = 0; | ||
107 | } else { | ||
108 | letter_col++; | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | } | ||
113 | |||
114 | max7219_write_frame(); | ||
115 | } | ||
116 | |||
117 | /* Scroll the content on the sign left by 1 column. | ||
118 | * | ||
119 | * When loop_message is true columns that slide off the left will be added | ||
120 | * to the right to be displayed again. | ||
121 | */ | ||
122 | void max7219_message_sign_task(bool loop_message) { | ||
123 | uint8_t left_col = 0b00000000; | ||
124 | |||
125 | if (!max7219_led_scrolling) { | ||
126 | return; | ||
127 | } | ||
128 | |||
129 | if (loop_message) { | ||
130 | left_col = max7219_led_a[0][0]; | ||
131 | } | ||
132 | |||
133 | int i=0; | ||
134 | |||
135 | for (int device_num=0; device_num<MAX7219_BUFFER_SIZE; device_num++) { | ||
136 | for (int col=0; col<8; col++) { | ||
137 | i++; | ||
138 | |||
139 | if (i == max7219_buffer_end) { | ||
140 | max7219_led_a[col][device_num] = left_col; | ||
141 | device_num=MAX7219_BUFFER_SIZE; | ||
142 | break; | ||
143 | } else if (col < 7) { | ||
144 | max7219_led_a[col][device_num] = max7219_led_a[col+1][device_num]; | ||
145 | } else if (device_num == MAX7219_BUFFER_SIZE-1) { | ||
146 | max7219_led_a[col][device_num] = left_col; | ||
147 | } else { | ||
148 | max7219_led_a[col][device_num] = max7219_led_a[0][device_num+1]; | ||
149 | } | ||
150 | } | ||
151 | } | ||
152 | max7219_write_frame(); | ||
153 | } | ||
154 | |||
155 | /* Write data to a single max7219 | ||
156 | */ | ||
157 | void max7219_write(int device_num, volatile uint8_t opcode, volatile uint8_t data) { | ||
158 | dprintf("max7219_write(%d, %d, %d)\n", device_num, opcode, data); | ||
159 | |||
160 | // Clear the data array | ||
161 | for(int i = MAX_BYTES; i>0; i--) { | ||
162 | max7219_spidata[i-1]=0; | ||
163 | } | ||
164 | |||
165 | // Set our opcode and data | ||
166 | uint8_t offset = device_num*2; | ||
167 | max7219_spidata[offset] = data; | ||
168 | max7219_spidata[offset+1] = opcode; | ||
169 | |||
170 | // Write the data | ||
171 | max7219_write_all(); | ||
172 | } | ||
173 | |||
174 | /* Turn off all the LEDs | ||
175 | */ | ||
176 | void max7219_clear_display(void) { | ||
177 | dprintf("max7219_clear_display();\n"); | ||
178 | |||
179 | for (int col=0; col<8; col++) { | ||
180 | for (int device_num=0; device_num<MAX7219_BUFFER_SIZE; device_num++) { | ||
181 | max7219_led_a[col][device_num] = 0b00000000; | ||
182 | } | ||
183 | } | ||
184 | max7219_write_frame(); | ||
185 | } | ||
186 | |||
187 | /* Enable the display test (IE turn on all 64 LEDs) | ||
188 | */ | ||
189 | void max7219_display_test(int device_num, bool enabled) { | ||
190 | dprintf("max7219_display_test(%d, %d);\n", device_num, enabled); | ||
191 | |||
192 | if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { | ||
193 | return; | ||
194 | } | ||
195 | |||
196 | max7219_write(device_num, OP_DISPLAYTEST, enabled); | ||
197 | } | ||
198 | |||
199 | /* Initialize the max7219 system and set the controller(s) to a default state. | ||
200 | */ | ||
201 | void max7219_init(void) { | ||
202 | wait_ms(1500); | ||
203 | dprintf("max7219_init()\n"); | ||
204 | |||
205 | setPinOutput(MAX7219_LOAD); | ||
206 | writePinHigh(MAX7219_LOAD); | ||
207 | spi_init(); | ||
208 | |||
209 | for (int i=0; i<MAX7219_CONTROLLERS; i++) { | ||
210 | max7219_shutdown(i, true); | ||
211 | } | ||
212 | |||
213 | for (int i=0; i<MAX7219_CONTROLLERS; i++) { | ||
214 | // Reset everything to defaults and enable the display | ||
215 | max7219_display_test(i, false); | ||
216 | max7219_set_scan_limit(i, 7); | ||
217 | max7219_set_decode_mode(i, 0); | ||
218 | max7219_set_intensity(i, MAX7219_LED_INTENSITY); | ||
219 | } | ||
220 | |||
221 | max7219_clear_display(); | ||
222 | |||
223 | #ifndef MAX7219_NO_STARTUP_TEST | ||
224 | for (int i=0; i<MAX7219_CONTROLLERS; i++) { | ||
225 | // Test this display | ||
226 | max7219_display_test(i, true); | ||
227 | wait_ms(75); | ||
228 | max7219_display_test(i, false); | ||
229 | } | ||
230 | #endif | ||
231 | |||
232 | for (int i=0; i<MAX7219_CONTROLLERS; i++) { | ||
233 | max7219_shutdown(i, false); | ||
234 | } | ||
235 | } | ||
236 | |||
237 | /* Set the decode mode of the controller. You probably don't want to change this. | ||
238 | */ | ||
239 | void max7219_set_decode_mode(int device_num, int mode) { | ||
240 | dprintf("max7219_set_decode_mode(%d, %d);\n", device_num, mode); | ||
241 | |||
242 | if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { | ||
243 | return; | ||
244 | } | ||
245 | |||
246 | max7219_write(device_num, OP_DECODEMODE, mode); | ||
247 | } | ||
248 | |||
249 | /* Set the intensity (brightness) for the LEDs. | ||
250 | */ | ||
251 | void max7219_set_intensity(int device_num, int intensity) { | ||
252 | dprintf("max7219_set_intensity(%d, %d);\n", device_num, intensity); | ||
253 | |||
254 | if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { | ||
255 | return; | ||
256 | } | ||
257 | |||
258 | if (intensity >= 0 && intensity<16) { | ||
259 | max7219_write(device_num, OP_INTENSITY, intensity); | ||
260 | } | ||
261 | } | ||
262 | |||
263 | /* Control a single LED. | ||
264 | */ | ||
265 | void max7219_set_led(int row, int column, bool state) { | ||
266 | dprintf("max7219_set_led(%d, %d, %d);\n", row, column, state); | ||
267 | |||
268 | if (column<0 || column>8*MAX7219_CONTROLLERS) { | ||
269 | xprintf("max7219_set_led: column (%d) out of bounds\n", column); | ||
270 | return; | ||
271 | } | ||
272 | |||
273 | if (row<0 || row>7) { | ||
274 | xprintf("max7219_set_led: row (%d) out of bounds\n", row); | ||
275 | return; | ||
276 | } | ||
277 | |||
278 | /* At this point we reverse the sense of row and column to match the | ||
279 | * physical layout of my LEDs. | ||
280 | */ | ||
281 | uint8_t device_num = column / 8; | ||
282 | uint8_t col = column % 8; | ||
283 | uint8_t val = 0b10000000 >> row; | ||
284 | |||
285 | if (state) { | ||
286 | max7219_led_a[col][device_num] = max7219_led_a[col][device_num]|val; | ||
287 | } else { | ||
288 | val = ~val; | ||
289 | max7219_led_a[col][device_num] = max7219_led_a[col][device_num]&val; | ||
290 | } | ||
291 | max7219_write(device_num, col+1, max7219_led_a[col][device_num]); | ||
292 | } | ||
293 | |||
294 | /* Set the number of digits (rows) to be scanned. | ||
295 | */ | ||
296 | void max7219_set_scan_limit(int device_num, int limit) { | ||
297 | dprintf("max7219_set_scan_limit(%d, %d);\n", device_num, limit); | ||
298 | |||
299 | if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { | ||
300 | return; | ||
301 | } | ||
302 | |||
303 | if (limit >= 0 && limit < 8) { | ||
304 | max7219_write(device_num, OP_SCANLIMIT, limit); | ||
305 | } | ||
306 | } | ||
307 | |||
308 | /* Enable (true) or disable (false) the controller. | ||
309 | */ | ||
310 | void max7219_shutdown(int device_num, bool shutdown) { | ||
311 | dprintf("max7219_shutdown(%d, %d);\n", device_num, shutdown); | ||
312 | |||
313 | if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { | ||
314 | return; | ||
315 | } | ||
316 | |||
317 | max7219_write(device_num, OP_SHUTDOWN, !shutdown); | ||
318 | } | ||
diff --git a/keyboards/clueboard/2x1800/2021/max7219.h b/keyboards/clueboard/2x1800/2021/max7219.h new file mode 100644 index 000000000..95d1d9389 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.h | |||
@@ -0,0 +1,87 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2021 Zach White <[email protected]> | ||
3 | * Copyright (c) 2007 Eberhard Fahle | ||
4 | * | ||
5 | * max7219.h - A library for controling Leds with a MAX7219/MAX7221 | ||
6 | * | ||
7 | * Permission is hereby granted, free of charge, to any person | ||
8 | * obtaining a copy of this software and associated documentation | ||
9 | * files (the "Software"), to deal in the Software without | ||
10 | * restriction, including without limitation the rights to use, | ||
11 | * copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
12 | * copies of the Software, and to permit persons to whom the | ||
13 | * Software is furnished to do so, subject to the following | ||
14 | * conditions: | ||
15 | * | ||
16 | * This permission notice shall be included in all copies or | ||
17 | * substantial portions of the Software. | ||
18 | * | ||
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
22 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
23 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
24 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
26 | * OTHER DEALINGS IN THE SOFTWARE. | ||
27 | */ | ||
28 | #pragma once | ||
29 | #include "quantum.h" | ||
30 | #include "spi_master.h" | ||
31 | |||
32 | // Set defaults if they're not set | ||
33 | #ifndef MAX7219_LOAD | ||
34 | # define MAX7219_LOAD B0 | ||
35 | #endif | ||
36 | |||
37 | #ifndef MAX7219_CONTROLLERS | ||
38 | # define MAX7219_CONTROLLERS 4 | ||
39 | #endif | ||
40 | |||
41 | #ifndef MAX7219_LED_INTENSITY | ||
42 | # define MAX7219_LED_INTENSITY 1 | ||
43 | #endif | ||
44 | |||
45 | #ifndef MAX7219_SCROLL_TIME | ||
46 | # define MAX7219_SCROLL_TIME 100 | ||
47 | #endif | ||
48 | |||
49 | #ifndef MAX7219_BUFFER_MULTIPLIER | ||
50 | # define MAX7219_BUFFER_MULTIPLIER 24 | ||
51 | #endif | ||
52 | |||
53 | #if !defined(MAX7219_LED_TEST) && !defined(MAX7219_LED_ITERATE) && !defined(MAX7219_LED_DANCE) && !defined(MAX7219_LED_FONTTEST) && !defined(MAX7219_LED_CLUEBOARD) && !defined(MAX7219_LED_KONAMI) && !defined(MAX7219_LED_QMK_POWERED) && !defined(MAX7219_DRAWING_TOY_MODE) && !defined(MAX7219_LED_CUSTOM) | ||
54 | # define MAX7219_QMK_POWERED | ||
55 | #endif | ||
56 | |||
57 | // Configure our MAX7219's | ||
58 | #define MAX_BYTES MAX7219_CONTROLLERS * 2 | ||
59 | #define LED_COUNT MAX7219_CONTROLLERS * 64 | ||
60 | #define MAX7219_BUFFER_SIZE MAX7219_CONTROLLERS*MAX7219_BUFFER_MULTIPLIER | ||
61 | |||
62 | // Opcodes for the MAX7219 | ||
63 | #define OP_DECODEMODE 9 | ||
64 | #define OP_INTENSITY 10 | ||
65 | #define OP_SCANLIMIT 11 | ||
66 | #define OP_SHUTDOWN 12 | ||
67 | #define OP_DISPLAYTEST 15 | ||
68 | |||
69 | // Datastructures | ||
70 | extern uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; | ||
71 | extern bool max7219_led_scrolling; | ||
72 | |||
73 | // Functions | ||
74 | void max7219_write(int device_num, volatile uint8_t opcode, volatile uint8_t data); | ||
75 | void max7219_write_all(void); | ||
76 | void max7219_write_frame(void); | ||
77 | void max7219_clear_display(void); | ||
78 | void max7219_display_test(int device_num, bool enabled); | ||
79 | void max7219_init(void); | ||
80 | void max7219_message_sign(uint8_t message[][6], size_t message_len); | ||
81 | void max7219_message_sign_task(bool loop_message); | ||
82 | void max7219_set_decode_mode(int device_num, int mode); | ||
83 | void max7219_set_intensity(int device_num, int intensity); | ||
84 | void max7219_set_led(int row, int column, bool state); | ||
85 | void max7219_set_all_leds(uint8_t led_matrix[LED_COUNT]); | ||
86 | void max7219_set_scan_limit(int device_num, int limit); | ||
87 | void max7219_shutdown(int device_num, bool is_in_shutdown); | ||
diff --git a/keyboards/clueboard/2x1800/2021/readme.md b/keyboards/clueboard/2x1800/2021/readme.md new file mode 100644 index 000000000..97d536740 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/readme.md | |||
@@ -0,0 +1,17 @@ | |||
1 | # Clueboard 2x1800 | ||
2 | |||
3 | Clueboard 2x1800 LED Sign Edition | ||
4 | |||
5 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
6 | * Hardware Supported: Clueboard 2x1800 PCB | ||
7 | * Hardware Availability: 2021 Apr 1 Group Buy | ||
8 | |||
9 | Make example for this keyboard: | ||
10 | |||
11 | make clueboard/2x1800/2021:default | ||
12 | |||
13 | Flashing example for this keyboard: | ||
14 | |||
15 | make clueboard/2x1800/2021:default:flash | ||
16 | |||
17 | 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). | ||
diff --git a/keyboards/clueboard/2x1800/2021/rules.mk b/keyboards/clueboard/2x1800/2021/rules.mk new file mode 100644 index 000000000..e9f44d7bd --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/rules.mk | |||
@@ -0,0 +1 @@ | |||
QUANTUM_LIB_SRC += max7219.c spi_master.c | |||
diff --git a/keyboards/clueboard/2x1800/info.json b/keyboards/clueboard/2x1800/info.json new file mode 100644 index 000000000..e3fa1b8b8 --- /dev/null +++ b/keyboards/clueboard/2x1800/info.json | |||
@@ -0,0 +1,3 @@ | |||
1 | { | ||
2 | "diode_direction": "ROW2COL" | ||
3 | } | ||
diff --git a/keyboards/clueboard/2x1800/readme.md b/keyboards/clueboard/2x1800/readme.md new file mode 100644 index 000000000..01b975695 --- /dev/null +++ b/keyboards/clueboard/2x1800/readme.md | |||
@@ -0,0 +1,18 @@ | |||
1 | # Clueboard 2x1800 | ||
2 | |||
3 | Clueboard 2x1800 | ||
4 | |||
5 | This is a keyboard that Clueboard releases for a 1-day group buy every Apr 1. Each year has a different theme. | ||
6 | |||
7 | * [2018:](2018/) Double 1800 All The Way | ||
8 | * [2019:](2019/) Mechanical Drawing Toy Edition | ||
9 | |||
10 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
11 | * Hardware Supported: Clueboard 2x1800 PCB | ||
12 | * Hardware Availability: 2018 Apr 1 Group Buy | ||
13 | |||
14 | Make example for this keyboard: | ||
15 | |||
16 | make 2x1800:default | ||
17 | |||
18 | See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. | ||
diff --git a/keyboards/clueboard/60/.noci b/keyboards/clueboard/60/.noci new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/keyboards/clueboard/60/.noci | |||
diff --git a/keyboards/clueboard/60/60.c b/keyboards/clueboard/60/60.c new file mode 100644 index 000000000..90d166139 --- /dev/null +++ b/keyboards/clueboard/60/60.c | |||
@@ -0,0 +1,16 @@ | |||
1 | /* Copyright 2017 skully <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include "60.h" | ||
diff --git a/keyboards/clueboard/60/60.h b/keyboards/clueboard/60/60.h new file mode 100644 index 000000000..9a019ccf6 --- /dev/null +++ b/keyboards/clueboard/60/60.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* Copyright 2017 skully <[email protected]> | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | #pragma once | ||
18 | |||
19 | #include "quantum.h" | ||
diff --git a/keyboards/clueboard/60/config.h b/keyboards/clueboard/60/config.h new file mode 100644 index 000000000..9263a8f65 --- /dev/null +++ b/keyboards/clueboard/60/config.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright 2017 skully <[email protected]> | ||
3 | * | ||
4 | * This program is free software: you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation, either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #include "config_common.h" | ||
21 | |||
22 | /* Backlight configuration | ||
23 | */ | ||
24 | #define BACKLIGHT_LEVELS 1 | ||
diff --git a/keyboards/clueboard/60/halconf.h b/keyboards/clueboard/60/halconf.h new file mode 100644 index 000000000..644c9c516 --- /dev/null +++ b/keyboards/clueboard/60/halconf.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* Copyright 2020 QMK | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | /* | ||
18 | * This file was auto-generated by: | ||
19 | * `qmk chibios-confmigrate -i keyboards/clueboard/60/halconf.h -r platforms/chibios/QMK_PROTON_C/configs/halconf.h` | ||
20 | */ | ||
21 | |||
22 | #pragma once | ||
23 | |||
24 | #define HAL_USE_I2C FALSE | ||
25 | |||
26 | #define HAL_USE_PWM FALSE | ||
27 | |||
28 | #define HAL_USE_SERIAL_USB FALSE | ||
29 | |||
30 | #define HAL_USE_SPI FALSE | ||
31 | |||
32 | #define PAL_USE_CALLBACKS FALSE | ||
33 | |||
34 | #define PAL_USE_WAIT FALSE | ||
35 | |||
36 | #include_next <halconf.h> | ||
37 | |||
diff --git a/keyboards/clueboard/60/info.json b/keyboards/clueboard/60/info.json new file mode 100644 index 000000000..1698d221d --- /dev/null +++ b/keyboards/clueboard/60/info.json | |||
@@ -0,0 +1,368 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 60%", | ||
4 | "maintainer": "skullydazed", | ||
5 | "debounce": 6, | ||
6 | "processor": "STM32F303", | ||
7 | "board": "QMK_PROTON_C", | ||
8 | "diode_direction": "COL2ROW", | ||
9 | "features": { | ||
10 | "audio": true, | ||
11 | "backlight": false, | ||
12 | "bootmagic": false, | ||
13 | "command": false, | ||
14 | "console": true, | ||
15 | "extrakey": true, | ||
16 | "mousekey": true, | ||
17 | "nkro": true | ||
18 | }, | ||
19 | "indicators": { | ||
20 | "caps_lock": "B7" | ||
21 | }, | ||
22 | "matrix_pins": { | ||
23 | "cols": ["A2", "A3", "A6", "B14", "B15", "A8", "A9", "A7", "B3", "B4", "C15", "C14", "C13", "B5", "B6"], | ||
24 | "rows": ["B0", "B1", "B2", "A15", "A10"] | ||
25 | }, | ||
26 | "usb": { | ||
27 | "device_ver": "0x0001", | ||
28 | "pid": "0x2350", | ||
29 | "vid": "0xC1ED" | ||
30 | }, | ||
31 | "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso"], | ||
32 | "layout_aliases": { | ||
33 | "LAYOUT": "LAYOUT_all" | ||
34 | }, | ||
35 | "layouts": { | ||
36 | "LAYOUT_60_ansi": { | ||
37 | "layout": [ | ||
38 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
39 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
40 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
41 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
42 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
43 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
44 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
45 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
46 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
47 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
48 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
49 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
50 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
51 | { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, | ||
52 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
53 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
54 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
55 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
56 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
57 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
58 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
59 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
60 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
61 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
62 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
63 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
64 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
65 | { "label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, | ||
66 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
67 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
68 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
69 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
70 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
71 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
72 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
73 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
74 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
75 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
76 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
77 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
78 | { "label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2 }, | ||
79 | { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, | ||
80 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
81 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
82 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
83 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
84 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
85 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
86 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
87 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
88 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
89 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
90 | { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, | ||
91 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
92 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
93 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
94 | { "label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, | ||
95 | { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, | ||
96 | { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, | ||
97 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, | ||
98 | { "label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } | ||
99 | ] | ||
100 | }, | ||
101 | "LAYOUT_60_ansi_split_bs_rshift": { | ||
102 | "layout": [ | ||
103 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
104 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
105 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
106 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
107 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
108 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
109 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
110 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
111 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
112 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
113 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
114 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
115 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
116 | { "label": "k0d", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 }, | ||
117 | { "label": "Back", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 }, | ||
118 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
119 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
120 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
121 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
122 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
123 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
124 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
125 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
126 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
127 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
128 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
129 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
130 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
131 | { "label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, | ||
132 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
133 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
134 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
135 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
136 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
137 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
138 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
139 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
140 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
141 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
142 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
143 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
144 | { "label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2 }, | ||
145 | { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, | ||
146 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
147 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
148 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
149 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
150 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
151 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
152 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
153 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
154 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
155 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
156 | { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, | ||
157 | { "label": "k3e", "matrix": [3, 14], "w": 1, "x": 14, "y": 3 }, | ||
158 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
159 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
160 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
161 | { "label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, | ||
162 | { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, | ||
163 | { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, | ||
164 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, | ||
165 | { "label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } | ||
166 | ] | ||
167 | }, | ||
168 | "LAYOUT_60_iso": { | ||
169 | "layout": [ | ||
170 | { "label": "\\u00ac", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
171 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
172 | { "label": "\"", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
173 | { "label": "\\u00a3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
174 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
175 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
176 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
177 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
178 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
179 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
180 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
181 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
182 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
183 | { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, | ||
184 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
185 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
186 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
187 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
188 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
189 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
190 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
191 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
192 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
193 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
194 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
195 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
196 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
197 | { "h": 2, "label": "Enter", "matrix": [2, 0], "w": 1.25, "x": 13.75, "y": 1 }, | ||
198 | { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 2 }, | ||
199 | { "label": "A", "matrix": [2, 2], "w": 1, "x": 1.75, "y": 2 }, | ||
200 | { "label": "S", "matrix": [2, 3], "w": 1, "x": 2.75, "y": 2 }, | ||
201 | { "label": "D", "matrix": [2, 4], "w": 1, "x": 3.75, "y": 2 }, | ||
202 | { "label": "F", "matrix": [2, 5], "w": 1, "x": 4.75, "y": 2 }, | ||
203 | { "label": "G", "matrix": [2, 6], "w": 1, "x": 5.75, "y": 2 }, | ||
204 | { "label": "H", "matrix": [2, 7], "w": 1, "x": 6.75, "y": 2 }, | ||
205 | { "label": "J", "matrix": [2, 8], "w": 1, "x": 7.75, "y": 2 }, | ||
206 | { "label": "K", "matrix": [2, 9], "w": 1, "x": 8.75, "y": 2 }, | ||
207 | { "label": "L", "matrix": [2, 10], "w": 1, "x": 9.75, "y": 2 }, | ||
208 | { "label": ":", "matrix": [2, 11], "w": 1, "x": 10.75, "y": 2 }, | ||
209 | { "label": "@", "matrix": [2, 12], "w": 1, "x": 11.75, "y": 2 }, | ||
210 | { "label": "~", "matrix": [2, 14], "w": 1, "x": 12.75, "y": 2 }, | ||
211 | { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, | ||
212 | { "label": "|", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 }, | ||
213 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
214 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
215 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
216 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
217 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
218 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
219 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
220 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
221 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
222 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
223 | { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, | ||
224 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
225 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
226 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
227 | { "label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, | ||
228 | { "label": "AltGr", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, | ||
229 | { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, | ||
230 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, | ||
231 | { "label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } | ||
232 | ] | ||
233 | }, | ||
234 | "LAYOUT_aek": { | ||
235 | "layout": [ | ||
236 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
237 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
238 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
239 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
240 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
241 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
242 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
243 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
244 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
245 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
246 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
247 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
248 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
249 | { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, | ||
250 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
251 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
252 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
253 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
254 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
255 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
256 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
257 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
258 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
259 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
260 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
261 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
262 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
263 | { "label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, | ||
264 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
265 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
266 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
267 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
268 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
269 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
270 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
271 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
272 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
273 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
274 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
275 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
276 | { "label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2 }, | ||
277 | { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, | ||
278 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
279 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
280 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
281 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
282 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
283 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
284 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
285 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
286 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
287 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
288 | { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, | ||
289 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, | ||
290 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.5, "y": 4 }, | ||
291 | { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.75, "y": 4 }, | ||
292 | { "label": "k47", "matrix": [4, 7], "w": 6.5, "x": 4.25, "y": 4 }, | ||
293 | { "label": "AltGr", "matrix": [4, 11], "w": 1.5, "x": 10.75, "y": 4 }, | ||
294 | { "label": "Win", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4 }, | ||
295 | { "label": "Ctrl", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } | ||
296 | ] | ||
297 | }, | ||
298 | "LAYOUT_all": { | ||
299 | "layout": [ | ||
300 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
301 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
302 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
303 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
304 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
305 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
306 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
307 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
308 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
309 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
310 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
311 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
312 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
313 | { "label": "k0d", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 }, | ||
314 | { "label": "Back", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 }, | ||
315 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
316 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
317 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
318 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
319 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
320 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
321 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
322 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
323 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
324 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
325 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
326 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
327 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
328 | { "label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, | ||
329 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
330 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
331 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
332 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
333 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
334 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
335 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
336 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
337 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
338 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
339 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
340 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
341 | { "label": "k2c", "matrix": [2, 12], "w": 1, "x": 12.75, "y": 2 }, | ||
342 | { "label": "Enter", "matrix": [2, 14], "w": 1.25, "x": 13.75, "y": 2 }, | ||
343 | { "label": "k30", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 }, | ||
344 | { "label": "Shift", "matrix": [3, 1], "w": 1.25, "x": 1, "y": 3 }, | ||
345 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
346 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
347 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
348 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
349 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
350 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
351 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
352 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
353 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
354 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
355 | { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, | ||
356 | { "label": "k3e", "matrix": [3, 14], "w": 1, "x": 14, "y": 3 }, | ||
357 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
358 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
359 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
360 | { "label": "k47", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, | ||
361 | { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, | ||
362 | { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, | ||
363 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, | ||
364 | { "label": "Ctrl", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } | ||
365 | ] | ||
366 | } | ||
367 | } | ||
368 | } | ||
diff --git a/keyboards/clueboard/60/keymaps/default/keymap.c b/keyboards/clueboard/60/keymaps/default/keymap.c new file mode 100644 index 000000000..b33a22f93 --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default/keymap.c | |||
@@ -0,0 +1,125 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | enum keyboard_layers { | ||
4 | _BL, | ||
5 | _FL, | ||
6 | _CL | ||
7 | }; | ||
8 | |||
9 | enum custom_keycodes { | ||
10 | S_BSKTC = SAFE_RANGE, | ||
11 | S_ODEJY, | ||
12 | S_RCKBY, | ||
13 | S_DOEDR, | ||
14 | S_SCALE, | ||
15 | S_ONEUP, | ||
16 | S_COIN, | ||
17 | S_SONIC, | ||
18 | S_ZELDA | ||
19 | }; | ||
20 | |||
21 | #ifdef AUDIO_ENABLE | ||
22 | float song_basketcase[][2] = SONG(BASKET_CASE); | ||
23 | float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); | ||
24 | float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); | ||
25 | float song_doe_a_deer[][2] = SONG(DOE_A_DEER); | ||
26 | float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); | ||
27 | float song_coin[][2] = SONG(COIN_SOUND); | ||
28 | float song_one_up[][2] = SONG(ONE_UP_SOUND); | ||
29 | float song_sonic_ring[][2] = SONG(SONIC_RING); | ||
30 | float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); | ||
31 | #endif | ||
32 | |||
33 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
34 | /* Layer 0: Default Layer | ||
35 | * ,-----------------------------------------------------------. | ||
36 | * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| | ||
37 | * |-----------------------------------------------------------| | ||
38 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | ||
39 | * |-----------------------------------------------------------| | ||
40 | * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | | ||
41 | * |-----------------------------------------------------------| | ||
42 | * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| | ||
43 | * |-----------------------------------------------------------' | ||
44 | * |Ctrl |Gui|Alt | Space |Alt |Gui|Fn |Ctrl | | ||
45 | * `-----------------------------------------------------------' | ||
46 | */ | ||
47 | [_BL] = LAYOUT_all( | ||
48 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, | ||
49 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, | ||
50 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, | ||
51 | KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, | ||
52 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL), | ||
53 | [_FL] = LAYOUT_all( | ||
54 | 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, _______,_______, | ||
55 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
56 | _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
57 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, | ||
58 | _______,_______,_______, _______, _______, _______, MO(_FL), _______), | ||
59 | [_CL] = LAYOUT_all( | ||
60 | BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______, | ||
61 | _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
62 | _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
63 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
64 | _______, _______, _______, _______, _______, _______, MO(_FL), _______) | ||
65 | }; | ||
66 | |||
67 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
68 | switch (keycode) { | ||
69 | case S_BSKTC: | ||
70 | if (record->event.pressed) { | ||
71 | stop_all_notes(); | ||
72 | PLAY_SONG(song_basketcase); | ||
73 | } | ||
74 | return false; | ||
75 | case S_ODEJY: | ||
76 | if (record->event.pressed) { | ||
77 | stop_all_notes(); | ||
78 | PLAY_SONG(song_ode_to_joy); | ||
79 | } | ||
80 | return false; | ||
81 | case S_RCKBY: | ||
82 | if (record->event.pressed) { | ||
83 | stop_all_notes(); | ||
84 | PLAY_SONG(song_rock_a_bye_baby); | ||
85 | } | ||
86 | return false; | ||
87 | case S_DOEDR: | ||
88 | if (record->event.pressed) { | ||
89 | stop_all_notes(); | ||
90 | PLAY_SONG(song_doe_a_deer); | ||
91 | } | ||
92 | return false; | ||
93 | case S_SCALE: | ||
94 | if (record->event.pressed) { | ||
95 | stop_all_notes(); | ||
96 | PLAY_SONG(song_scale); | ||
97 | } | ||
98 | return false; | ||
99 | case S_ONEUP: | ||
100 | if (record->event.pressed) { | ||
101 | stop_all_notes(); | ||
102 | PLAY_SONG(song_one_up); | ||
103 | } | ||
104 | return false; | ||
105 | case S_COIN: | ||
106 | if (record->event.pressed) { | ||
107 | stop_all_notes(); | ||
108 | PLAY_SONG(song_coin); | ||
109 | } | ||
110 | return false; | ||
111 | case S_SONIC: | ||
112 | if (record->event.pressed) { | ||
113 | stop_all_notes(); | ||
114 | PLAY_SONG(song_sonic_ring); | ||
115 | } | ||
116 | return false; | ||
117 | case S_ZELDA: | ||
118 | if (record->event.pressed) { | ||
119 | stop_all_notes(); | ||
120 | PLAY_SONG(song_zelda_puzzle); | ||
121 | } | ||
122 | return false; | ||
123 | } | ||
124 | return true; | ||
125 | } | ||
diff --git a/keyboards/clueboard/60/keymaps/default/readme.md b/keyboards/clueboard/60/keymaps/default/readme.md new file mode 100644 index 000000000..32d4bfba6 --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for clueboard 60% | |||
diff --git a/keyboards/clueboard/60/keymaps/default_aek/keymap.c b/keyboards/clueboard/60/keymaps/default_aek/keymap.c new file mode 100644 index 000000000..413ca822f --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default_aek/keymap.c | |||
@@ -0,0 +1,41 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | enum keyboard_layers { | ||
4 | _BL, | ||
5 | _FL, | ||
6 | _CL | ||
7 | }; | ||
8 | |||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
10 | /* Layer 0: Default Layer | ||
11 | * ,-----------------------------------------------------------. | ||
12 | * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BkSp| | ||
13 | * |-----------------------------------------------------------| | ||
14 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | ||
15 | * |-----------------------------------------------------------| | ||
16 | * |Capslk| A| S| D| F| G| H| J| K| L| ;| '| Enter| | ||
17 | * |-----------------------------------------------------------| | ||
18 | * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift| | ||
19 | * |-----------------------------------------------------------' | ||
20 | * |Ctrl |Gui|Alt | Space |Alt|Fn |Ctrl | | ||
21 | * `-----------------------------------------------------------' | ||
22 | */ | ||
23 | [_BL] = LAYOUT_aek( | ||
24 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, | ||
25 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, | ||
26 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, | ||
27 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, | ||
28 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL), | ||
29 | [_FL] = LAYOUT_aek( | ||
30 | 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, _______, | ||
31 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
32 | _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
33 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
34 | _______, _______, _______, _______, _______, MO(_FL), _______), | ||
35 | [_CL] = LAYOUT_aek( | ||
36 | BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
37 | _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
38 | _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
39 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
40 | _______, _______, _______, _______, _______, MO(_FL), _______) | ||
41 | }; | ||
diff --git a/keyboards/clueboard/60/keymaps/default_aek/readme.md b/keyboards/clueboard/60/keymaps/default_aek/readme.md new file mode 100644 index 000000000..cdec24160 --- /dev/null +++ b/keyboards/clueboard/60/keymaps/default_aek/readme.md | |||
@@ -0,0 +1 @@ | |||
# The default keymap for clueboard 60%, optimized for the AEK layout. | |||
diff --git a/keyboards/clueboard/60/led.c b/keyboards/clueboard/60/led.c new file mode 100644 index 000000000..ad11ad5d4 --- /dev/null +++ b/keyboards/clueboard/60/led.c | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright 2017 skully <[email protected]> | ||
3 | * | ||
4 | * This program is free software: you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation, either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #include <hal.h> | ||
19 | #include "print.h" | ||
20 | |||
21 | #ifdef BACKLIGHT_ENABLE | ||
22 | #include "backlight.h" | ||
23 | |||
24 | void backlight_init_ports(void) { | ||
25 | printf("backlight_init_ports()\n"); | ||
26 | |||
27 | palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); | ||
28 | palSetPad(GPIOB, 8); | ||
29 | } | ||
30 | |||
31 | void backlight_set(uint8_t level) { | ||
32 | printf("backlight_set(%d)\n", level); | ||
33 | if (level == 0) { | ||
34 | // Turn backlight off | ||
35 | palSetPad(GPIOB, 8); | ||
36 | } else { | ||
37 | // Turn backlight on | ||
38 | palClearPad(GPIOB, 8); | ||
39 | } | ||
40 | } | ||
41 | #endif | ||
diff --git a/keyboards/clueboard/60/mcuconf.h b/keyboards/clueboard/60/mcuconf.h new file mode 100644 index 000000000..a5baec5cf --- /dev/null +++ b/keyboards/clueboard/60/mcuconf.h | |||
@@ -0,0 +1,43 @@ | |||
1 | /* Copyright 2020 QMK | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | |||
17 | /* | ||
18 | * This file was auto-generated by: | ||
19 | * `qmk chibios-confmigrate -i keyboards/clueboard/60/mcuconf.h -r platforms/chibios/QMK_PROTON_C/configs/mcuconf.h` | ||
20 | */ | ||
21 | |||
22 | #pragma once | ||
23 | |||
24 | #include_next <mcuconf.h> | ||
25 | |||
26 | #undef STM32_GPT_USE_TIM15 | ||
27 | #define STM32_GPT_USE_TIM15 FALSE | ||
28 | |||
29 | #undef STM32_I2C_USE_I2C1 | ||
30 | #define STM32_I2C_USE_I2C1 FALSE | ||
31 | |||
32 | #undef STM32_PWM_USE_TIM3 | ||
33 | #define STM32_PWM_USE_TIM3 FALSE | ||
34 | |||
35 | #undef STM32_PWM_USE_TIM4 | ||
36 | #define STM32_PWM_USE_TIM4 FALSE | ||
37 | |||
38 | #undef STM32_SERIAL_USE_USART2 | ||
39 | #define STM32_SERIAL_USE_USART2 FALSE | ||
40 | |||
41 | #undef STM32_SPI_USE_SPI2 | ||
42 | #define STM32_SPI_USE_SPI2 FALSE | ||
43 | |||
diff --git a/keyboards/clueboard/60/readme.md b/keyboards/clueboard/60/readme.md new file mode 100644 index 000000000..e3255f507 --- /dev/null +++ b/keyboards/clueboard/60/readme.md | |||
@@ -0,0 +1,14 @@ | |||
1 | # Clueboard 60% | ||
2 | |||
3 | A fully customizable 60% keyboard. | ||
4 | |||
5 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
6 | * Hardware Supported: Clueboard 60% PCB | ||
7 | * rev1 (1.0) | ||
8 | * Hardware Availability: [clueboard.co](https://clueboard.co/) | ||
9 | |||
10 | Make example for this keyboard (after setting up your build environment): | ||
11 | |||
12 | make clueboard/60:default | ||
13 | |||
14 | See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. | ||
diff --git a/keyboards/clueboard/60/rules.mk b/keyboards/clueboard/60/rules.mk new file mode 100644 index 000000000..c73b4c473 --- /dev/null +++ b/keyboards/clueboard/60/rules.mk | |||
@@ -0,0 +1,2 @@ | |||
1 | # project specific files | ||
2 | SRC = led.c | ||
diff --git a/keyboards/clueboard/66/info.json b/keyboards/clueboard/66/info.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/keyboards/clueboard/66/info.json | |||
@@ -0,0 +1 @@ | |||
{} | |||
diff --git a/keyboards/clueboard/66/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c new file mode 100644 index 000000000..73c809ded --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c | |||
@@ -0,0 +1,36 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | #define _BL 0 | ||
6 | #define _FL 1 | ||
7 | #define _CL 2 | ||
8 | |||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
10 | /* Keymap _BL: Base Layer (Default Layer) | ||
11 | */ | ||
12 | [_BL] = LAYOUT_66_ansi( | ||
13 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, | ||
14 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, | ||
15 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, | ||
16 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
17 | KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
18 | |||
19 | /* Keymap _FL: Function Layer | ||
20 | */ | ||
21 | [_FL] = LAYOUT_66_ansi( | ||
22 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, | ||
23 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, | ||
24 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
25 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, | ||
26 | _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
27 | |||
28 | /* Keymap _CL: Control layer | ||
29 | */ | ||
30 | [_CL] = LAYOUT_66_ansi( | ||
31 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, | ||
32 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
33 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
34 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, | ||
35 | _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
36 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/66_ansi/readme.md b/keyboards/clueboard/66/keymaps/66_ansi/readme.md new file mode 100644 index 000000000..eee81c0c2 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_ansi/readme.md | |||
@@ -0,0 +1,9 @@ | |||
1 | # Basic Clueboard 66% Hotswap ANSI Layout | ||
2 | |||
3 | This is the default layout that comes flashed on every Clueboard. For the most | ||
4 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
5 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
6 | the Ctrl, Alt, or GUI modifiers are held down. | ||
7 | |||
8 | This uses `LAYOUT_66_ansi`, which is compatable with the `66_ansi` community | ||
9 | layout. | ||
diff --git a/keyboards/clueboard/66/keymaps/66_iso/keymap.c b/keyboards/clueboard/66/keymaps/66_iso/keymap.c new file mode 100644 index 000000000..ff27acf5c --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_iso/keymap.c | |||
@@ -0,0 +1,36 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | #define _BL 0 | ||
6 | #define _FL 1 | ||
7 | #define _CL 2 | ||
8 | |||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
10 | /* Keymap _BL: Base Layer (Default Layer) | ||
11 | */ | ||
12 | [_BL] = LAYOUT_66_iso( | ||
13 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, | ||
14 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_PGDN, | ||
15 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, | ||
16 | KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
17 | KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
18 | |||
19 | /* Keymap _FL: Function Layer | ||
20 | */ | ||
21 | [_FL] = LAYOUT_66_iso( | ||
22 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, | ||
23 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______, KC_VOLD, | ||
24 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
25 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, | ||
26 | _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
27 | |||
28 | /* Keymap _CL: Control layer | ||
29 | */ | ||
30 | [_CL] = LAYOUT_66_iso( | ||
31 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, | ||
32 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
33 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
34 | MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, | ||
35 | _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
36 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/66_iso/readme.md b/keyboards/clueboard/66/keymaps/66_iso/readme.md new file mode 100644 index 000000000..6d895b0eb --- /dev/null +++ b/keyboards/clueboard/66/keymaps/66_iso/readme.md | |||
@@ -0,0 +1,6 @@ | |||
1 | # Default Clueboard 66% ISO Layout | ||
2 | |||
3 | This is the default layout that comes flashed on every Clueboard. For the most | ||
4 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
5 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
6 | the Ctrl, Alt, or GUI modifiers are held down. | ||
diff --git a/keyboards/clueboard/66/keymaps/badger/keymap.c b/keyboards/clueboard/66/keymaps/badger/keymap.c new file mode 100644 index 000000000..74fec0b58 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/badger/keymap.c | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | Copyright 2020 Dan White <[email protected]> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | This program is distributed in the hope that it will be useful, | ||
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | GNU General Public License for more details. | ||
12 | You should have received a copy of the GNU General Public License | ||
13 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
14 | */ | ||
15 | #include "badger.h" | ||
16 | |||
17 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
18 | [_QWERTY_LINUX] = LAYOUT_66_ansi(\ | ||
19 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \ | ||
20 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \ | ||
21 | MOVE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ | ||
22 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ | ||
23 | KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT), | ||
24 | |||
25 | [_MOVE_LINUX] = LAYOUT_66_ansi(\ | ||
26 | KC_ESC, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, IJ_UP, IJ_DOWN, KC_DEL, KC_PGUP, \ | ||
27 | _______, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, IJ_OUT, KC_PGUP, KC_HOME, KC_END, KC_PGDN, IJ_BACK, IJ_FWD, KC_INS, KC_PGDN, \ | ||
28 | _______, WM_LH, WM_UH, WM_RH, WD_FRWD, MAC_POP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, \ | ||
29 | _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, WD_BACK, KC_MNXT, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, KC_BRIU, \ | ||
30 | _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END), | ||
31 | |||
32 | [_QWERTY_MAC] = LAYOUT_66_ansi(\ | ||
33 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \ | ||
34 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \ | ||
35 | MOVE_MAC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ | ||
36 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ | ||
37 | KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT), | ||
38 | |||
39 | [_MOVE_MAC] = LAYOUT_66_ansi(\ | ||
40 | KC_ESC, M_VD1, M_VD2, M_VD3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, IJ_UP, IJ_DOWN, KC_DEL, KC_PGUP, \ | ||
41 | _______, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, IJ_OUT, KC_PGUP, KC_HOME, KC_END, KC_PGDN, IJ_BACK, IJ_FWD, KC_INS, KC_PGDN, \ | ||
42 | _______, MM_LH, MM_MAX, MM_RH, WD_FRWD, MAC_POP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CM_RIGHT, CM_DOWN, _______, \ | ||
43 | _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, WD_BACK, KC_MNXT, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, KC_BRIU, \ | ||
44 | _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END), | ||
45 | |||
46 | [_ADJUST] = LAYOUT_66_ansi(\ | ||
47 | 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_DEL, KC_VOLU, \ | ||
48 | _______, NK_ON, NK_OFF, EEP_RST, RESET, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, AG_SWAP, AG_NORM, KC_INS, KC_VOLD, \ | ||
49 | _______, GE_SWAP, GE_NORM, DEBUG, AG_SWAP, AG_NORM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, \ | ||
50 | _______, DF_1, DF_2, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, KC_BRIU, \ | ||
51 | _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END) | ||
52 | }; | ||
53 | |||
diff --git a/keyboards/clueboard/66/keymaps/bloodlvst/config.h b/keyboards/clueboard/66/keymaps/bloodlvst/config.h new file mode 100644 index 000000000..60c6ad4a1 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/bloodlvst/config.h | |||
@@ -0,0 +1,3 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #define DISABLE_SPACE_CADET_ROLLOVER | ||
diff --git a/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c b/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c new file mode 100644 index 000000000..7c7faba9c --- /dev/null +++ b/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INS, KC_DEL, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSPC, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, MO(_FL), KC_LALT, KC_BSPC,KC_SPC, KC_RALT, KC_APP, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_END, KC_VOLU, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,_______,KC_SLCK, KC_PAUS, _______, _______, KC_MUTE, KC_VOLD, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, KC_PSCR, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MPLY, | ||
28 | _______, KC_MYCM, MO(_FL), _______, _______,_______, _______, KC_CALC, MO(_FL), _______, KC_MPRV, KC_MSTP, KC_MNXT), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | KC_PWR, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, RGB_MOD, | ||
36 | _______, _______, _______,_______,_______,_______,_______,_______,_______,RGB_HUD, RGB_HUI, _______, _______, _______, KC_WAKE, | ||
37 | _______, _______, MO(_FL), _______, RGB_SAD,RGB_SAI, _______, _______, MO(_FL), _______, _______, KC_SLEP, _______), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/bloodlvst/readme.md b/keyboards/clueboard/66/keymaps/bloodlvst/readme.md new file mode 100644 index 000000000..ee287ca47 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/bloodlvst/readme.md | |||
@@ -0,0 +1,17 @@ | |||
1 | ``` | ||
2 | ___ _____ _ _ _ __ __ _ __ | ||
3 | |__ \ / ____| | | | | | / / / /(_) / / | ||
4 | ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / | ||
5 | |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / | ||
6 | |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ | ||
7 | (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) | ||
8 | ``` | ||
9 | |||
10 |  | ||
11 | |||
12 | # Default Clueboard Layout | ||
13 | |||
14 | This is the default layout that comes flashed on every Clueboard. For the most | ||
15 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
16 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
17 | the Ctrl, Alt, or GUI modifiers are held down. | ||
diff --git a/keyboards/clueboard/66/keymaps/bloodlvst/rules.mk b/keyboards/clueboard/66/keymaps/bloodlvst/rules.mk new file mode 100644 index 000000000..b1c2f32f6 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/bloodlvst/rules.mk | |||
@@ -0,0 +1,2 @@ | |||
1 | EXTRAKEY_ENABLE = yes | ||
2 | COMMAND_ENABLE = no | ||
diff --git a/keyboards/clueboard/66/keymaps/caps_fn/keymap.c b/keyboards/clueboard/66/keymaps/caps_fn/keymap.c new file mode 100644 index 000000000..fc0c56d9a --- /dev/null +++ b/keyboards/clueboard/66/keymaps/caps_fn/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
28 | _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/caps_fn/readme.md b/keyboards/clueboard/66/keymaps/caps_fn/readme.md new file mode 100644 index 000000000..71d1246c0 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/caps_fn/readme.md | |||
@@ -0,0 +1,4 @@ | |||
1 | # Caps Fn Layout | ||
2 | |||
3 | This is the default layout except that Caps Lock acts like Caps Lock when | ||
4 | tapped but Fn when held. | ||
diff --git a/keyboards/clueboard/66/keymaps/colemak/keymap.c b/keyboards/clueboard/66/keymaps/colemak/keymap.c new file mode 100644 index 000000000..4479556b6 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/colemak/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT,KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_CAPS, KC_VOLU, | ||
25 | _______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, _______, _______, _______, KC_VOLD, | ||
26 | KC_DEL, _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, _______, _______, _______, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
28 | _______, _______, _______,_______, _______,_______, _______, _______, MO(_FL), _______, KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | BL_STEP, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/default/keymap.c b/keyboards/clueboard/66/keymaps/default/keymap.c new file mode 100644 index 000000000..95283db88 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/default/keymap.c | |||
@@ -0,0 +1,36 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | #define _BL 0 | ||
6 | #define _FL 1 | ||
7 | #define _CL 2 | ||
8 | |||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
10 | /* Keymap _BL: Base Layer (Default Layer) | ||
11 | */ | ||
12 | [_BL] = LAYOUT( | ||
13 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
14 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, | ||
15 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, | ||
16 | KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP, | ||
17 | KC_LCTL,KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_SPC, KC_HENK,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
18 | |||
19 | /* Keymap _FL: Function Layer | ||
20 | */ | ||
21 | [_FL] = LAYOUT( | ||
22 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_DEL, KC_VOLU, | ||
23 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, | ||
24 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
25 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, | ||
26 | _______,_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
27 | |||
28 | /* Keymap _CL: Control layer | ||
29 | */ | ||
30 | [_CL] = LAYOUT( | ||
31 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI, | ||
32 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
33 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
34 | MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, | ||
35 | _______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
36 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/default/readme.md b/keyboards/clueboard/66/keymaps/default/readme.md new file mode 100644 index 000000000..b1cdcbe4e --- /dev/null +++ b/keyboards/clueboard/66/keymaps/default/readme.md | |||
@@ -0,0 +1,6 @@ | |||
1 | # Default Clueboard 66% Universal Layout | ||
2 | |||
3 | This is the default layout that comes flashed on every Clueboard. For the most | ||
4 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
5 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
6 | the Ctrl, Alt, or GUI modifiers are held down. | ||
diff --git a/keyboards/clueboard/66/keymaps/jokrik/keymap.c b/keyboards/clueboard/66/keymaps/jokrik/keymap.c new file mode 100644 index 000000000..9c6997c34 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/jokrik/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PSCR, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PAUS, | ||
17 | KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC,KC_SPC, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, BL_STEP, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
28 | _______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), _______, KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, MO(_FL), _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/jokrik/readme.md b/keyboards/clueboard/66/keymaps/jokrik/readme.md new file mode 100644 index 000000000..a845e65f1 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/jokrik/readme.md | |||
@@ -0,0 +1,2 @@ | |||
1 | # Jokrik's Clueboard Layout | ||
2 | |||
diff --git a/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c new file mode 100644 index 000000000..30e772900 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, | ||
17 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, | ||
18 | KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL,KC_LALT,KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK,KC_RGUI,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_DEL, KC_VOLU, | ||
25 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MRWD,KC_MPLY,KC_MFFD,_______,KC_MUTE, KC_VOLD, | ||
26 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
27 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, | ||
28 | _______,_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI, | ||
34 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
35 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
36 | MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, | ||
37 | _______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/mac_optimized/readme.md b/keyboards/clueboard/66/keymaps/mac_optimized/readme.md new file mode 100644 index 000000000..db7a87d44 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mac_optimized/readme.md | |||
@@ -0,0 +1,4 @@ | |||
1 | # Default Clueboard Layout for Mac | ||
2 | |||
3 | This is the default Clueboard layout with Alt and GUI switched to match Mac | ||
4 | conventions. | ||
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/config.h b/keyboards/clueboard/66/keymaps/magicmonty/config.h new file mode 100644 index 000000000..c38aee5ee --- /dev/null +++ b/keyboards/clueboard/66/keymaps/magicmonty/config.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #pragma once | ||
2 | |||
3 | /* | ||
4 | * MIDI options | ||
5 | */ | ||
6 | |||
7 | /* enable basic MIDI features: | ||
8 | - MIDI notes can be sent when in Music mode is on | ||
9 | #define MIDI_BASIC | ||
10 | */ | ||
11 | |||
12 | /* enable advanced MIDI features: | ||
13 | - MIDI notes can be added to the keymap | ||
14 | - Octave shift and transpose | ||
15 | - Virtual sustain, portamento, and modulation wheel | ||
16 | - etc. | ||
17 | */ | ||
18 | #define MIDI_ADVANCED | ||
19 | |||
20 | /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||
21 | #define MIDI_TONE_KEYCODE_OCTAVES 2 | ||
22 | |||
23 | /* | ||
24 | Setting the modified Space Cadet Parens for German layout | ||
25 | |||
26 | Default is | ||
27 | #define LSPO_KEY KC_9 | ||
28 | #define RSPC_KEY KC_0 | ||
29 | */ | ||
30 | #define LSPO_KEY KC_8 | ||
31 | #define RSPC_KEY KC_9 | ||
32 | #define PERMISSIVE_HOLD | ||
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c new file mode 100644 index 000000000..56d4c4707 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c | |||
@@ -0,0 +1,222 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 // BASE Layer | ||
8 | #define _FL 1 // Function Layer | ||
9 | #define _ME 2 // Media Layer | ||
10 | #define _CL 3 // Control Layer | ||
11 | #define _ML 4 // Mouse Layer | ||
12 | #if defined(MIDI_ENABLE) | ||
13 | #define _MI 5 // MIDI Layer | ||
14 | #define TO_MIDI TO(_MI) | ||
15 | #else | ||
16 | #define TO_MIDI _______ | ||
17 | #endif | ||
18 | |||
19 | // go back to base layer | ||
20 | #define TO_BASE TO(_BL) | ||
21 | |||
22 | // switch to function layer while helde | ||
23 | #define MO_FUNC MO(_FL) | ||
24 | |||
25 | // switch to media layer while held | ||
26 | #define MEDIA MO(_ME) | ||
27 | |||
28 | // switch to Control layer while helde | ||
29 | #define MO_CTL MO(_CL) | ||
30 | |||
31 | // switch to mouse layer if held, else space | ||
32 | #define L_MOUSE LT(_ML, KC_SPC) | ||
33 | |||
34 | // Function key when held, else ESC | ||
35 | #define ESC_FUN LT(_FL, KC_ESC) | ||
36 | |||
37 | // Hyper (CTRL+ALT+SHIFT+SUPER) when held, TAB when tapped | ||
38 | #define HPR_TAB ALL_T(KC_TAB) | ||
39 | |||
40 | // CTRL when held, ESC when tapped | ||
41 | #define CTL_ESC CTL_T(KC_ESC) | ||
42 | |||
43 | enum custom_keycodes { | ||
44 | RGB_RST = SAFE_RANGE | ||
45 | }; | ||
46 | |||
47 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
48 | /* Keymap _BL: Base Layer (Default Layer) */ | ||
49 | [_BL] = LAYOUT( | ||
50 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, | ||
51 | HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, | ||
52 | ESC_FUN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
53 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSFT, KC_UP, | ||
54 | KC_LCTL, KC_LGUI, KC_LALT,_______, L_MOUSE, L_MOUSE, _______, KC_RALT, KC_RCTL, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT), | ||
55 | |||
56 | /* Keymap _FL: Function layer */ | ||
57 | [_FL] = LAYOUT( | ||
58 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP, | ||
59 | _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_PAUS, _______, _______, _______, _______, | ||
60 | _______, _______, MO_CTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, | ||
61 | KC_LSPO, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, TO_MIDI, _______, KC_RSPC, KC_PGUP, | ||
62 | _______, _______, _______, _______, _______, _______, _______, _______, _______, MO_FUNC, KC_HOME, KC_PGDN, KC_END), | ||
63 | |||
64 | /* Keymap _ME: Media layer */ | ||
65 | [_ME] = LAYOUT( | ||
66 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, | ||
67 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, | ||
68 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
69 | _______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, _______, _______, _______, _______, | ||
70 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT), | ||
71 | |||
72 | /* Keymap _CL: Control layer */ | ||
73 | [_CL] = LAYOUT( | ||
74 | _______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
75 | _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, | ||
76 | _______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
77 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, | ||
78 | _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
79 | |||
80 | /* Keymap _ML: Mouse layer */ | ||
81 | [_ML] = LAYOUT( | ||
82 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
83 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
84 | _______, _______, KC_BTN2, KC_BTN3, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, _______, | ||
85 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, | ||
86 | _______, _______, _______, _______, L_MOUSE, L_MOUSE, _______, KC_BTN1, KC_BTN3, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R), | ||
87 | |||
88 | #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) | ||
89 | /* Keymap _MI: MIDI layer (Advanced)*/ | ||
90 | [_MI] = LAYOUT( | ||
91 | TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10, MI_CHD, MI_CHU, XXXXXXX, XXXXXXX, XXXXXXX, | ||
92 | XXXXXXX, XXXXXXX, MI_Cs, MI_Ds, XXXXXXX, MI_Fs, MI_Gs, MI_As, XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, MI_Fs_1, XXXXXXX, XXXXXXX, | ||
93 | MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, XXXXXXX, | ||
94 | MI_SUS, XXXXXXX, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD,MI_TRNSU,MI_TRNS_0, MI_SUS, XXXXXXX, | ||
95 | XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, MI_ALLOFF, MI_ALLOFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX), | ||
96 | #elif defined(MIDI_ENABLE) && defined(MIDI_BASIC) | ||
97 | /* Keymap _MI: MIDI layer (Basic)*/ | ||
98 | [_MI] = LAYOUT( | ||
99 | TO_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
100 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
101 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
102 | XXXXXXX, XXXXXXX, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
103 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX), | ||
104 | #endif | ||
105 | }; | ||
106 | |||
107 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
108 | switch (keycode) { | ||
109 | case RGB_RST: | ||
110 | if (record->event.pressed) { | ||
111 | rgblight_mode(1); | ||
112 | rgblight_sethsv(206, 255, 255); | ||
113 | } | ||
114 | return false; | ||
115 | } | ||
116 | return true; | ||
117 | } | ||
118 | |||
119 | enum layer_id { | ||
120 | LAYER_BASE, | ||
121 | LAYER_FUNCTION, | ||
122 | LAYER_MEDIA, | ||
123 | LAYER_CONTROL, | ||
124 | LAYER_MOUSE, | ||
125 | #if defined(MIDI_ENABLE) | ||
126 | LAYER_MIDI | ||
127 | #endif | ||
128 | }; | ||
129 | |||
130 | void clueboard_set_led(uint8_t id, uint8_t val) { | ||
131 | switch (id) { | ||
132 | case LAYER_BASE: | ||
133 | rgblight_sethsv_noeeprom(135, 255, val); | ||
134 | break; | ||
135 | case LAYER_FUNCTION: | ||
136 | rgblight_sethsv_noeeprom(32, 255, val); | ||
137 | break; | ||
138 | case LAYER_MEDIA: | ||
139 | rgblight_sethsv_noeeprom(60, 255, val); | ||
140 | break; | ||
141 | case LAYER_CONTROL: | ||
142 | rgblight_sethsv_noeeprom(245, 255, val); | ||
143 | break; | ||
144 | case LAYER_MOUSE: | ||
145 | rgblight_sethsv_noeeprom(146, 255, val); | ||
146 | break; | ||
147 | #if defined(MIDI_ENABLE) | ||
148 | case LAYER_MIDI: | ||
149 | rgblight_sethsv_noeeprom(224, 255, val); | ||
150 | break; | ||
151 | #endif | ||
152 | } | ||
153 | }; | ||
154 | |||
155 | const uint16_t oct_hues[10] = { | ||
156 | 0, | ||
157 | 20, | ||
158 | 40, | ||
159 | 60, | ||
160 | 80, | ||
161 | 100, | ||
162 | 120, | ||
163 | 140, | ||
164 | 160, | ||
165 | 180 | ||
166 | }; | ||
167 | |||
168 | #define MAX_OCT 9 | ||
169 | |||
170 | void clueboard_set_midi_led(uint8_t base_oct, uint8_t val) | ||
171 | { | ||
172 | uint8_t sat = 255; | ||
173 | |||
174 | for (uint8_t i = 0; i < RGBLED_NUM; i++) { | ||
175 | sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]); | ||
176 | } | ||
177 | |||
178 | uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct; | ||
179 | |||
180 | uint16_t next_hue = base_oct < MAX_OCT ? oct_hues[next_oct] : 0; | ||
181 | uint8_t next_val = base_oct < MAX_OCT ? val : 0; | ||
182 | uint8_t next_sat = base_oct < MAX_OCT ? sat : 0; | ||
183 | |||
184 | |||
185 | for (uint8_t i = 0; i < 3; i++) { | ||
186 | sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); | ||
187 | } | ||
188 | |||
189 | for (uint8_t i = 11; i < 14; i++) { | ||
190 | sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); | ||
191 | } | ||
192 | |||
193 | rgblight_set(); | ||
194 | } | ||
195 | |||
196 | void matrix_scan_user(void) { | ||
197 | rgblight_config_t rgblight_config; | ||
198 | rgblight_config.raw = eeconfig_read_rgblight(); | ||
199 | |||
200 | if (!rgblight_config.enable || rgblight_config.mode != 1) { return; } | ||
201 | |||
202 | uint32_t layer = layer_state; | ||
203 | uint8_t val = rgblight_config.val; | ||
204 | |||
205 | if (layer & (1<<_FL)) { | ||
206 | if (layer & (1<<_ME)) { | ||
207 | clueboard_set_led(LAYER_MEDIA, val); | ||
208 | } else if (layer & (1<<_CL)) { | ||
209 | clueboard_set_led(LAYER_CONTROL, val); | ||
210 | } else { | ||
211 | clueboard_set_led(LAYER_FUNCTION, val); | ||
212 | } | ||
213 | } else if (layer & (1<<_ML)) { | ||
214 | clueboard_set_led(LAYER_MOUSE, val); | ||
215 | #if defined(MIDI_ENABLE) | ||
216 | } else if (layer & (1<<_MI)) { | ||
217 | clueboard_set_midi_led(midi_config.octave, val); | ||
218 | #endif | ||
219 | } else { | ||
220 | clueboard_set_led(LAYER_BASE, val); | ||
221 | } | ||
222 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/readme.md b/keyboards/clueboard/66/keymaps/magicmonty/readme.md new file mode 100644 index 000000000..20d1c6fa3 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/magicmonty/readme.md | |||
@@ -0,0 +1,53 @@ | |||
1 | # Layout of @magicmonty | ||
2 | |||
3 | [Keyboard Layout Editor File] | ||
4 | |||
5 |  | ||
6 | My ClueBoard Layout as of 2017/06/30 | ||
7 | |||
8 | |||
9 | This layout is a combination of the `mouse_keys` and the `win_optimized` layouts. | ||
10 | This layout is optimized for an ISO layout. | ||
11 | The CapsLock is disabled and works as ESC when tapped and FN when held. | ||
12 | The `TAB` key works as `TAB` when tapped, and [HYPER] (`CTRL` + `ALT` + `SHIFT` + `CMD`) when held. | ||
13 | |||
14 | ## Mouse Layer | ||
15 | |||
16 | When you hold down the spacebar the arrow keys will move your mouse cursor. | ||
17 | You can click using the 3 mods to the left of the arrow keys, or the 3 keys under your primary fingers on the home row. | ||
18 | The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys | ||
19 | |||
20 | ## MIDI layer | ||
21 | |||
22 | The MIDI layer is permanently enabled by pressing `FN` + `/`. | ||
23 | It can be exited with the `ESC`-Key | ||
24 | |||
25 | ## Space Cadet(ish) Shift Parentheses | ||
26 | |||
27 | If the function layer is active, the `SHIFT`-Keys are configured like the [Space Cadet Shift Parentheses] | ||
28 | as opened (left `SHIFT`) and closed (right `SHIFT`) parentheses if tapped and `SHIFT` if held. | ||
29 | |||
30 | ## Media layer | ||
31 | |||
32 | The media layer with Volume/Play controls, can be accessed via `FN` + `m` | ||
33 | |||
34 | ## Control layer | ||
35 | |||
36 | The control layer is accessed via `FN` + `s`. | ||
37 | Here one can control the behavior of the RGB underlight. | ||
38 | `FN` + `s` + `1` resets the RGB underlight to the Layer signalling mode | ||
39 | |||
40 | ## Layer signalling through underlight | ||
41 | |||
42 | The different layers are signalled throug setting of the underlight: | ||
43 | |||
44 | - Base layer: Light Blue | ||
45 | - Function layer: Yellow | ||
46 | - Media layer: Green | ||
47 | - Mouse layer: Blue | ||
48 | - Control layer: Red | ||
49 | - Midi layer: Purple | ||
50 | |||
51 | [HYPER]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ | ||
52 | [Space Cadet Shift Parentheses]: http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses | ||
53 | [Keyboard Layout Editor File]: http://www.keyboard-layout-editor.com/#/gists/f869b8789242a712e0f46eabbd550056 | ||
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/rules.mk b/keyboards/clueboard/66/keymaps/magicmonty/rules.mk new file mode 100644 index 000000000..46222e2d3 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/magicmonty/rules.mk | |||
@@ -0,0 +1,10 @@ | |||
1 | |||
2 | MOUSEKEY_ENABLE = yes | ||
3 | EXTRAKEY_ENABLE = yes | ||
4 | RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality | ||
5 | |||
6 | MIDI_ENABLE = yes | ||
7 | |||
8 | # if MIDI_ENABLE is set to yes, then CONSOLE_ENABLE has to be disabled, because of the firmware size | ||
9 | CONSOLE_ENABLE = no | ||
10 | COMMAND_ENABLE = no | ||
diff --git a/keyboards/clueboard/66/keymaps/manofinterests/keymap.c b/keyboards/clueboard/66/keymaps/manofinterests/keymap.c new file mode 100644 index 000000000..e71419980 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/manofinterests/keymap.c | |||
@@ -0,0 +1,36 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | #define _BL 0 | ||
6 | #define _FL 1 | ||
7 | #define _CL 2 | ||
8 | |||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
10 | /* Keymap _BL: Base Layer (Default Layer) | ||
11 | */ | ||
12 | [_BL] = LAYOUT( | ||
13 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, RGB_VAI, | ||
14 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, RGB_VAD, | ||
15 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, | ||
16 | KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP, | ||
17 | KC_LCTL,KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_SPC, KC_HENK,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
18 | |||
19 | /* Keymap _FL: Function Layer | ||
20 | */ | ||
21 | [_FL] = LAYOUT( | ||
22 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_DEL, KC_VOLU, | ||
23 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, | ||
24 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
25 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, | ||
26 | _______,_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
27 | |||
28 | /* Keymap _CL: Control layer | ||
29 | */ | ||
30 | [_CL] = LAYOUT( | ||
31 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI, | ||
32 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
33 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
34 | MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, | ||
35 | _______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
36 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/manofinterests/readme.md b/keyboards/clueboard/66/keymaps/manofinterests/readme.md new file mode 100644 index 000000000..019131aeb --- /dev/null +++ b/keyboards/clueboard/66/keymaps/manofinterests/readme.md | |||
@@ -0,0 +1,8 @@ | |||
1 |  | ||
2 | |||
3 | # Default Clueboard Layout | ||
4 | |||
5 | This is the default layout that comes flashed on every Clueboard. For the most | ||
6 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
7 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
8 | the Ctrl, Alt, or GUI modifiers are held down. | ||
diff --git a/keyboards/clueboard/66/keymaps/maximised/keymap.c b/keyboards/clueboard/66/keymaps/maximised/keymap.c new file mode 100644 index 000000000..c2e05a5a2 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/maximised/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | MO(_FL), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, | ||
19 | KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,_______,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
27 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), KC_PGUP, | ||
28 | _______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Reset/Underlight layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/maximised/readme.md b/keyboards/clueboard/66/keymaps/maximised/readme.md new file mode 100644 index 000000000..b8d54a309 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/maximised/readme.md | |||
@@ -0,0 +1,3 @@ | |||
1 | # Maximised Clueboard Layout | ||
2 | |||
3 | This layout is intended for a board with one or both shifts split. The outside key on the split shift is an Fn, while the inside is shift. The bottom row has all the mods on both sides, optimised for a Mac. | ||
diff --git a/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c new file mode 100644 index 000000000..be5634f10 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c | |||
@@ -0,0 +1,48 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | #define _ML 3 | ||
11 | |||
12 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
13 | /* Keymap _BL: Base Layer (Default Layer) | ||
14 | */ | ||
15 | [_BL] = LAYOUT( | ||
16 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
17 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
18 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
19 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
20 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
21 | |||
22 | /* Keymap _FL: Function Layer | ||
23 | */ | ||
24 | [_FL] = LAYOUT( | ||
25 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, | ||
26 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
27 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
28 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
29 | _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
30 | |||
31 | /* Keymap _CL: Control layer | ||
32 | */ | ||
33 | [_CL] = LAYOUT( | ||
34 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
35 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
36 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
37 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
38 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
39 | |||
40 | /* Keymap _ML: Mouse layer | ||
41 | */ | ||
42 | [_ML] = LAYOUT( | ||
43 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, | ||
44 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, | ||
45 | _______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
46 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, | ||
47 | _______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R), | ||
48 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/mouse_keys/readme.md b/keyboards/clueboard/66/keymaps/mouse_keys/readme.md new file mode 100644 index 000000000..de883e894 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mouse_keys/readme.md | |||
@@ -0,0 +1,5 @@ | |||
1 | # MouseKeys Layout | ||
2 | |||
3 | This layout adds a mouse layer. When you hold down the spacebar the arrow keys | ||
4 | will move your mouse cursor. You can click using the 3 mods to the left of the | ||
5 | arrow keys, or the 3 keys under your primary fingers on the home row. | ||
diff --git a/keyboards/clueboard/66/keymaps/mouse_keys/rules.mk b/keyboards/clueboard/66/keymaps/mouse_keys/rules.mk new file mode 100644 index 000000000..6c605daec --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mouse_keys/rules.mk | |||
@@ -0,0 +1 @@ | |||
MOUSEKEY_ENABLE = yes | |||
diff --git a/keyboards/clueboard/66/keymaps/mrscooty/keymap.c b/keyboards/clueboard/66/keymaps/mrscooty/keymap.c new file mode 100644 index 000000000..302649c92 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mrscooty/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | |||
10 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
11 | /* Keymap _BL: Base Layer (Default Layer) | ||
12 | */ | ||
13 | [_BL] = LAYOUT( | ||
14 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME, | ||
15 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, | ||
16 | MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
17 | KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
18 | KC_LCTL, KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
19 | |||
20 | /* Keymap _FL: Function Layer | ||
21 | */ | ||
22 | [_FL] = LAYOUT( | ||
23 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_PGUP, | ||
24 | _______, RGB_TOG, KC_MPRV, KC_MPLY, KC_MNXT,_______,_______,KC_HOME,KC_UP, KC_END, _______, _______, _______, KC_PSCR, KC_PGDN, | ||
25 | _______, RGB_VAI, KC_MUTE, KC_VOLD, KC_VOLU,_______,_______,KC_LEFT,KC_DOWN,KC_RIGHT, _______, _______, _______, _______, | ||
26 | _______, RGB_VAD, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_SAI, | ||
27 | _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI) | ||
28 | }; | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | |||
32 | [_CL] = LAYOUT( | ||
33 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI, | ||
34 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
35 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, | ||
36 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, | ||
37 | _______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
38 | };*/ | ||
diff --git a/keyboards/clueboard/66/keymaps/mrscooty/readme.md b/keyboards/clueboard/66/keymaps/mrscooty/readme.md new file mode 100644 index 000000000..69cdb816c --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mrscooty/readme.md | |||
@@ -0,0 +1,15 @@ | |||
1 | # Mr Scooty's Clueboard Layout | ||
2 | |||
3 | My personal layout for everyday typing and coding. | ||
4 | I have a most of my media keys on the function layer as well as a second set of arrows as IJKL which you switch between by holding the normal CAPS key. | ||
5 | |||
6 | |||
7 | #### Base Layer | ||
8 | ![Base Layout Image] (https://imgur.com/HWdi36y) | ||
9 | |||
10 | #### Fn Layer | ||
11 | ![Fn Layout Image] (https://imgur.com/IPa8gFg) | ||
12 | |||
13 | |||
14 | |||
15 | Both layers (https://imgur.com/a/dAwXq) | ||
diff --git a/keyboards/clueboard/66/keymaps/mrscooty/rules.mk b/keyboards/clueboard/66/keymaps/mrscooty/rules.mk new file mode 100644 index 000000000..ba997f869 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/mrscooty/rules.mk | |||
@@ -0,0 +1,4 @@ | |||
1 | |||
2 | MOUSEKEY_ENABLE = yes | ||
3 | EXTRAKEY_ENABLE = yes | ||
4 | |||
diff --git a/keyboards/clueboard/66/keymaps/muzfuz/keymap.c b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c new file mode 100644 index 000000000..d4af35483 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c | |||
@@ -0,0 +1,74 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Helpful defines | ||
4 | #define ESC_CTL CTL_T(KC_ESCAPE) // Tap for Esc, hold for Ctrl | ||
5 | #define _FL_KCF LT(1,KC_F) | ||
6 | #define _FL_KCJ LT(1,KC_J) | ||
7 | #define _AL_KCA LT(2,KC_A) | ||
8 | #define CMD_ENT LGUI(LSFT(KC_ENT)) | ||
9 | |||
10 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
11 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
12 | #define _BL 0 | ||
13 | #define _FL 1 | ||
14 | #define _AL 2 | ||
15 | #define _CL 3 | ||
16 | |||
17 | enum custom_keycodes { | ||
18 | HASHRKT = SAFE_RANGE, | ||
19 | CLNEQLS, | ||
20 | }; | ||
21 | |||
22 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
23 | /* Keymap _BL: Base Layer (Default Layer) | ||
24 | */ | ||
25 | [_BL] = LAYOUT( | ||
26 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, HASHRKT, LGUI(KC_C), | ||
27 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, LGUI(KC_V), | ||
28 | ESC_CTL, _AL_KCA, KC_S, KC_D, _FL_KCF, KC_G, KC_H, _FL_KCJ, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_LGUI, | ||
29 | KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SLSH, KC_RSFT, KC_UP, | ||
30 | CMD_ENT, KC_LCTL, KC_LALT, KC_LGUI, KC_ENT, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, MO(_CL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
31 | |||
32 | /* Keymap _FL: Function Layer | ||
33 | */ | ||
34 | [_FL] = LAYOUT( | ||
35 | 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_DEL, KC_VOLU, | ||
36 | _______, HASHRKT, _______, KC_LCBR, KC_RCBR, _______, _______, KC_UNDS, KC_PLUS, KC_PIPE, _______, _______, _______, KC_MUTE, KC_VOLD, | ||
37 | _______, CLNEQLS, _______, KC_LBRC, KC_RBRC, _______, _______, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, KC_GRV, _______, _______, | ||
38 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, | ||
39 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), | ||
40 | |||
41 | /* Keymap _FL: Function Layer | ||
42 | */ | ||
43 | [_AL] = LAYOUT( | ||
44 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
45 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
46 | _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, | ||
47 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
48 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
49 | |||
50 | /* Keymap _CL: Control layer | ||
51 | */ | ||
52 | [_CL] = LAYOUT( | ||
53 | BL_STEP, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
54 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_VAD, | ||
55 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
56 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, | ||
57 | _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
58 | }; | ||
59 | |||
60 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
61 | switch(keycode) { | ||
62 | case HASHRKT: | ||
63 | if (record->event.pressed) { | ||
64 | SEND_STRING("=>"); | ||
65 | } | ||
66 | break; | ||
67 | case CLNEQLS: | ||
68 | if (record->event.pressed) { | ||
69 | SEND_STRING(":="); | ||
70 | } | ||
71 | break; | ||
72 | } | ||
73 | return true; | ||
74 | } | ||
diff --git a/keyboards/clueboard/66/keymaps/muzfuz/readme.md b/keyboards/clueboard/66/keymaps/muzfuz/readme.md new file mode 100644 index 000000000..ce23a8a99 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/muzfuz/readme.md | |||
@@ -0,0 +1,8 @@ | |||
1 | # muzfuz Clueboard layout | ||
2 | |||
3 | ```shell | ||
4 | make clueboard/66/rev3:muzfuz | ||
5 | dfu-programmer atmega32u4 erase --force && \ | ||
6 | dfu-programmer atmega32u4 flash .build/clueboard_66_rev3_muzfuz.hex && \ | ||
7 | dfu-programmer atmega32u4 reset | ||
8 | ``` | ||
diff --git a/keyboards/clueboard/66/keymaps/serubin/keymap.c b/keyboards/clueboard/66/keymaps/serubin/keymap.c new file mode 100644 index 000000000..e77417c3c --- /dev/null +++ b/keyboards/clueboard/66/keymaps/serubin/keymap.c | |||
@@ -0,0 +1,49 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _ME 2 | ||
10 | #define _CL 3 | ||
11 | |||
12 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
13 | /* Keymap _BL: Base Layer (Default Layer) | ||
14 | */ | ||
15 | [_BL] = LAYOUT( | ||
16 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
17 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
18 | F(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
19 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
20 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RGUI, MO(_FL), MO(_ME), KC_LEFT, KC_DOWN, KC_RGHT), | ||
21 | |||
22 | /* Keymap _FL: Function Layer | ||
23 | */ | ||
24 | [_FL] = LAYOUT( | ||
25 | 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_DEL, KC_HOME, | ||
26 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, KC_PSCR, KC_END, | ||
27 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
28 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
29 | _______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_HOME, KC_PGDN, KC_END), | ||
30 | |||
31 | /* Keymap _FL: Function Layer | ||
32 | */ | ||
33 | [_ME] = LAYOUT( | ||
34 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, | ||
35 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_VOLD, | ||
36 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
37 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______ , _______, _______, | ||
38 | _______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_MPRV, KC_MPLY, KC_MNXT), | ||
39 | |||
40 | |||
41 | /* Keymap _CL: Control layer | ||
42 | */ | ||
43 | [_CL] = LAYOUT( | ||
44 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
45 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
46 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
47 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, MO(_FL), _______, RGB_SAI, | ||
48 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
49 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/serubin/readme.md b/keyboards/clueboard/66/keymaps/serubin/readme.md new file mode 100644 index 000000000..78eef5352 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/serubin/readme.md | |||
@@ -0,0 +1,14 @@ | |||
1 | # Serubin's Clueboard Layout | ||
2 | |||
3 | This is the layout based on the clueboard default, modified for development on Mac, PC, and Windows. This layout also handles media and volume keys on all the previously listed platforms. Most importantly, Capslock has been replaced by a dual function Esc/Ctrl key. This is particularly handy for use in Vim. | ||
4 | |||
5 | #### Base Layer | ||
6 |  | ||
7 | |||
8 | #### Fn Layer | ||
9 |  | ||
10 | |||
11 | #### Media Layer | ||
12 |  | ||
13 | |||
14 | |||
diff --git a/keyboards/clueboard/66/keymaps/serubin/rules.mk b/keyboards/clueboard/66/keymaps/serubin/rules.mk new file mode 100644 index 000000000..ba997f869 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/serubin/rules.mk | |||
@@ -0,0 +1,4 @@ | |||
1 | |||
2 | MOUSEKEY_ENABLE = yes | ||
3 | EXTRAKEY_ENABLE = yes | ||
4 | |||
diff --git a/keyboards/clueboard/66/keymaps/shift_fn/keymap.c b/keyboards/clueboard/66/keymaps/shift_fn/keymap.c new file mode 100644 index 000000000..8556f9080 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/shift_fn/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | MO(_FL), KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_GRV), KC_DEL, BL_STEP, | ||
25 | S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), | ||
26 | S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), | ||
27 | MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, | ||
28 | KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, S(KC_SPC),S(KC_SPC), KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD,RGB_SAD,RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/shift_fn/readme.md b/keyboards/clueboard/66/keymaps/shift_fn/readme.md new file mode 100644 index 000000000..d68c5b053 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/shift_fn/readme.md | |||
@@ -0,0 +1,6 @@ | |||
1 | # Shift Fn Clueboard 66% Layout | ||
2 | |||
3 | This is an experimental layout. It makes the left shift key a dual roll key. | ||
4 | For most keys it acts as a shift key, but for some keys it activates an | ||
5 | alternate function instead. Primarily I use this to access the F-keys under | ||
6 | the number rows. | ||
diff --git a/keyboards/clueboard/66/keymaps/smt/keymap.c b/keyboards/clueboard/66/keymaps/smt/keymap.c new file mode 100644 index 000000000..89fc49591 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/smt/keymap.c | |||
@@ -0,0 +1,132 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _QWERTY 0 | ||
8 | #define _COLEMAK 1 | ||
9 | #define _DVORAK 2 | ||
10 | #define _FL 3 | ||
11 | #define _CL 4 | ||
12 | |||
13 | enum planck_keycodes { | ||
14 | QWERTY = SAFE_RANGE, | ||
15 | COLEMAK, | ||
16 | DVORAK | ||
17 | }; | ||
18 | |||
19 | // Custom macros | ||
20 | #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl | ||
21 | #define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt) | ||
22 | #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift | ||
23 | |||
24 | |||
25 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
26 | /* Keymap _QWERTY: Base Layer (Default Layer) | ||
27 | * ,-----------------------------------------------------------. ,---. | ||
28 | * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| |PgU| | ||
29 | * |-----------------------------------------------------------| |---| | ||
30 | * |HpTab| Q| W| E| R| T| Y| U| I| O| P| [| ]| BS| |PgD| | ||
31 | * |-----------------------------------------------------------| `---' | ||
32 | * |CtlEsc| A| S| D| F| G| H| J| K| L| ;| '| | Ent| | ||
33 | * |--------------------------------------------------------------. | ||
34 | * |Shift| | Z| X| C| V| B| N| M| ,| .| /|Shift| Fn| Up| | ||
35 | * |------------------------------------------------------------------. | ||
36 | * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt| | ||
37 | * `------------------------------------------------------------------' | ||
38 | */ | ||
39 | [_QWERTY] = LAYOUT( | ||
40 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, | ||
41 | HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, | ||
42 | CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, | ||
43 | KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, MO(_FL), KC_UP, | ||
44 | KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
45 | |||
46 | /* Keymap _COLEMAK: Base Layer | ||
47 | * ,-----------------------------------------------------------. ,---. | ||
48 | * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| |PgU| | ||
49 | * |-----------------------------------------------------------| |---| | ||
50 | * |HpTab| Q| W| F| P| G| J| L| U| Y| ;| [| ]| BS| |PgD| | ||
51 | * |-----------------------------------------------------------| `---' | ||
52 | * |CtlEsc| A| R| S| T| D| H| N| E| I| O| '| | Ent| | ||
53 | * |--------------------------------------------------------------. | ||
54 | * |Shift| | Z| X| C| V| B| K| M| ,| .| /|Shift| Fn| Up| | ||
55 | * |------------------------------------------------------------------. | ||
56 | * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt| | ||
57 | * `------------------------------------------------------------------' | ||
58 | */ | ||
59 | [_COLEMAK] = LAYOUT( | ||
60 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, | ||
61 | HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, | ||
62 | CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, XXXXXXX, KC_ENT, | ||
63 | KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, MO(_FL), KC_UP, | ||
64 | KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
65 | |||
66 | /* Keymap _DVORAK: Base Layer | ||
67 | * ,-----------------------------------------------------------. ,---. | ||
68 | * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]| \| `| |PgU| | ||
69 | * |-----------------------------------------------------------| |---| | ||
70 | * |HpTab| '| ,| .| P| Y| F| G| C| R| L| /| =| BS| |PgD| | ||
71 | * |-----------------------------------------------------------| `---' | ||
72 | * |CtlEsc| A| O| E| U| I| D| H| T| N| S| -| | Ent| | ||
73 | * |--------------------------------------------------------------. | ||
74 | * |Shift| | ;| Q| J| K| X| B| M| W| V| Z|Shift| Fn| Up| | ||
75 | * |------------------------------------------------------------------. | ||
76 | * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt| | ||
77 | * `------------------------------------------------------------------' | ||
78 | */ | ||
79 | [_DVORAK] = LAYOUT( | ||
80 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, KC_PGUP, | ||
81 | HPR_TAB, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, KC_PGDN, | ||
82 | CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, XXXXXXX, KC_ENT, | ||
83 | KC_LSFT, XXXXXXX, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, MO(_FL), KC_UP, | ||
84 | KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), | ||
85 | |||
86 | /* Keymap _FL: Function Layer | ||
87 | */ | ||
88 | [_FL] = LAYOUT( | ||
89 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP, | ||
90 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, KC_DEL, _______, | ||
91 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
92 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), KC_PGUP, | ||
93 | _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), | ||
94 | |||
95 | /* Keymap _CL: Control layer | ||
96 | */ | ||
97 | [_CL] = LAYOUT( | ||
98 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
99 | _______, _______, _______,_______,RESET, _______,_______,QWERTY, COLEMAK,DVORAK, _______, _______, _______, _______, RGB_VAD, | ||
100 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
101 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
102 | _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
103 | }; | ||
104 | |||
105 | void persistent_default_layer_set(uint16_t default_layer) { | ||
106 | eeconfig_update_default_layer(default_layer); | ||
107 | default_layer_set(default_layer); | ||
108 | } | ||
109 | |||
110 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
111 | switch (keycode) { | ||
112 | case QWERTY: | ||
113 | if (record->event.pressed) { | ||
114 | persistent_default_layer_set(1UL<<_QWERTY); | ||
115 | } | ||
116 | return false; | ||
117 | break; | ||
118 | case COLEMAK: | ||
119 | if (record->event.pressed) { | ||
120 | persistent_default_layer_set(1UL<<_COLEMAK); | ||
121 | } | ||
122 | return false; | ||
123 | break; | ||
124 | case DVORAK: | ||
125 | if (record->event.pressed) { | ||
126 | persistent_default_layer_set(1UL<<_DVORAK); | ||
127 | } | ||
128 | return false; | ||
129 | break; | ||
130 | } | ||
131 | return true; | ||
132 | } | ||
diff --git a/keyboards/clueboard/66/keymaps/smt/readme.md b/keyboards/clueboard/66/keymaps/smt/readme.md new file mode 100644 index 000000000..7fc0f0248 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/smt/readme.md | |||
@@ -0,0 +1,21 @@ | |||
1 | # smt Clueboard Layout (HHKB variant) | ||
2 | |||
3 |  | ||
4 | |||
5 | This is smt's HHKB variant layout, based on the default layout that comes | ||
6 | flashed on every Clueboard. The primary differences from the default are: | ||
7 | |||
8 | - The Backspace key is moved down into the traditional `\` position | ||
9 | - `\` and `` ` `` are assigned to the "split-backspace" positions | ||
10 | - The right Shift is split to allow for a Fn key to its right | ||
11 | - The modifiers on the right side now mirror the left side (`Alt`/`Super`/`Ctrl`) | ||
12 | |||
13 | For the most part, it's a straightforward and easy to follow layout. There | ||
14 | are a few special keys: | ||
15 | |||
16 | - The Esc key sends `Esc` when tapped, `` ` `` when `Alt`/`Super`/`Ctrl`/`Fn` is held, or `~` when `Shift` is held | ||
17 | - The Tab key sends `Tab` when tapped, or `Super+Ctrl+Alt+Shift` (a.k.a. [Hyper]) when held | ||
18 | - The key traditionally in the Caps-Lock position has been re-mapped to send `Esc` when tapped, or `Ctrl` when held | ||
19 | - The left Shift key sends `Enter` when tapped, or `Shift` when held | ||
20 | |||
21 | [Hyper]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ | ||
diff --git a/keyboards/clueboard/66/keymaps/tetris/keymap.c b/keyboards/clueboard/66/keymaps/tetris/keymap.c new file mode 100644 index 000000000..26dd97fee --- /dev/null +++ b/keyboards/clueboard/66/keymaps/tetris/keymap.c | |||
@@ -0,0 +1,156 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | #include "tetris_text.h" | ||
3 | |||
4 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
5 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
6 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
7 | // entirely and just use numbers. | ||
8 | #define _BL 0 | ||
9 | #define _FL 1 | ||
10 | #define _CL 2 | ||
11 | |||
12 | enum custom_keycodes { | ||
13 | TETRIS_START = SAFE_RANGE | ||
14 | }; | ||
15 | |||
16 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
17 | /* Keymap _BL: Base Layer (Default Layer) | ||
18 | */ | ||
19 | [_BL] = LAYOUT( | ||
20 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
21 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
22 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
23 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
24 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
25 | |||
26 | /* Keymap _FL: Function Layer | ||
27 | */ | ||
28 | [_FL] = LAYOUT( | ||
29 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, | ||
30 | _______, _______, _______,_______,_______,F(1) ,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
31 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
32 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
33 | _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
34 | |||
35 | /* Keymap _CL: Control layer | ||
36 | */ | ||
37 | [_CL] = LAYOUT( | ||
38 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
39 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
40 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
41 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
42 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
43 | }; | ||
44 | |||
45 | static uint8_t tetris_key_presses = 0; | ||
46 | static uint16_t tetris_timer = 0; | ||
47 | static uint8_t tetris_running = 0; | ||
48 | static int tetris_keypress = 0; | ||
49 | |||
50 | /* | ||
51 | * Set up tetris | ||
52 | */ | ||
53 | |||
54 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
55 | if (record->event.pressed) { | ||
56 | tetris_key_presses++; | ||
57 | } | ||
58 | |||
59 | if (tetris_running && record->event.pressed) { | ||
60 | tetris_keypress = 0; | ||
61 | switch (keycode) { | ||
62 | case KC_UP: tetris_keypress = 1; break; | ||
63 | case KC_LEFT: tetris_keypress = 2; break; | ||
64 | case KC_DOWN: tetris_keypress = 3; break; | ||
65 | case KC_RIGHT: tetris_keypress = 4; break; | ||
66 | // Make ESC stop tetris (on keyboards other than clueboard) | ||
67 | // case KC_ESC: tetris_running = 0; return false; | ||
68 | } | ||
69 | if (tetris_keypress != 0) { | ||
70 | return false; | ||
71 | } | ||
72 | } | ||
73 | |||
74 | switch (keycode) { | ||
75 | case KC_GESC: | ||
76 | // clueboard specific hook to make escape quite tetris | ||
77 | if (tetris_running) { | ||
78 | tetris_running = 0; | ||
79 | return false; | ||
80 | } | ||
81 | break; | ||
82 | case TETRIS_START: | ||
83 | if (record->event.pressed) { | ||
84 | tetris_running = 1; | ||
85 | tetris_timer = 0; | ||
86 | tetris_keypress = 0; | ||
87 | // set randomness using total number of key presses | ||
88 | tetris_start(tetris_key_presses); | ||
89 | } | ||
90 | return false; | ||
91 | } | ||
92 | |||
93 | return true; | ||
94 | } | ||
95 | |||
96 | // Runs constantly in the background, in a loop. | ||
97 | void matrix_scan_user(void) { | ||
98 | if (tetris_running) { | ||
99 | tetris_timer++; | ||
100 | if (tetris_timer > 1000) { | ||
101 | // every 1000 times this is run is about 100 ms. | ||
102 | if (!tetris_tick(100)) { | ||
103 | // game over | ||
104 | tetris_running = 0; | ||
105 | } | ||
106 | tetris_timer = 0; | ||
107 | } | ||
108 | } | ||
109 | } | ||
110 | |||
111 | void tetris_send_up(void) { | ||
112 | tap_code(KC_UP); | ||
113 | } | ||
114 | void tetris_send_left(void) { | ||
115 | tap_code(KC_LEFT); | ||
116 | } | ||
117 | void tetris_send_down(void) { | ||
118 | tap_code(KC_DOWN); | ||
119 | } | ||
120 | void tetris_send_right(void) { | ||
121 | tap_code(KC_RGHT); | ||
122 | } | ||
123 | void tetris_send_backspace(void) { | ||
124 | tap_code(KC_BSPC); | ||
125 | } | ||
126 | void tetris_send_delete(void) { | ||
127 | tap_code(KC_DEL); | ||
128 | } | ||
129 | |||
130 | void tetris_send_string(const char *s) { | ||
131 | for (int i = 0; s[i] != 0; i++) { | ||
132 | if (s[i] >= 'a' && s[i] <= 'z') { | ||
133 | tap_code(KC_A + (s[i] - 'a')); | ||
134 | } else if (s[i] >= 'A' && s[i] <= 'Z') { | ||
135 | tap_code16(S(KC_A + (s[i] - 'A'))); | ||
136 | } else if (s[i] >= '1' && s[i] <= '9') { | ||
137 | tap_code(KC_1 + (s[i] - '1')); | ||
138 | } else { | ||
139 | switch (s[i]) { | ||
140 | case ' ': tap_code(KC_SPACE); break; | ||
141 | case '.': tap_code(KC_DOT); break; | ||
142 | case '0': tap_code(KC_0); break; | ||
143 | } | ||
144 | } | ||
145 | } | ||
146 | } | ||
147 | |||
148 | void tetris_send_newline(void) { | ||
149 | tap_code(KC_ENT); | ||
150 | } | ||
151 | |||
152 | int tetris_get_keypress(void) { | ||
153 | int out = tetris_keypress; | ||
154 | tetris_keypress = 0; | ||
155 | return out; | ||
156 | } | ||
diff --git a/keyboards/clueboard/66/keymaps/tetris/readme.md b/keyboards/clueboard/66/keymaps/tetris/readme.md new file mode 100644 index 000000000..20e97fb19 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/tetris/readme.md | |||
@@ -0,0 +1,33 @@ | |||
1 | Default layout but with a tetris game | ||
2 | ===================================== | ||
3 | Tetris works by outputting key-presses to make ascii-art in a regular text editor. | ||
4 | It reads key presses to rotate and move the bricks like a regular tetris game. | ||
5 | |||
6 | Example | ||
7 | ======= | ||
8 |  | ||
9 | |||
10 | Usage | ||
11 | ===== | ||
12 | 1) Open a default text editor | ||
13 | 2) Press the tetris button (Fn + t) | ||
14 | 3) Play tetris | ||
15 | |||
16 | It makes ascii-art by sending keycodes: left, right, up, down, qwerty characters, and numbers. | ||
17 | |||
18 | Problems | ||
19 | ======== | ||
20 | Drawing ascii-art is too slow to make a pleasant playing experience. | ||
21 | While drawing ascii-art, the keyboard does not record key-presses, so its pretty unresponsive. | ||
22 | |||
23 | Adds 5000 bytes to the hex file. | ||
24 | |||
25 | Implement in other keyboards | ||
26 | ============================ | ||
27 | - Copy-paste the files tetris_text.c and tetrix_text.h to your keymap folder. | ||
28 | - Add/update your-keyboard/your-keymap/Makefile to include ``SRC = tetris_text.c`` | ||
29 | - Copy-paste the tetris-related code from this keymap.c to yours. | ||
30 | - Set a key to trigger F(1) to start tetris mode. | ||
31 | - Its also a good idea to set a key to stop tetris, here its escape. | ||
32 | |||
33 | You can find a simple tetris keyboard definition at <https://github.com/danamlund/meckb_tetris/> | ||
diff --git a/keyboards/clueboard/66/keymaps/tetris/rules.mk b/keyboards/clueboard/66/keymaps/tetris/rules.mk new file mode 100644 index 000000000..464c6e0c8 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/tetris/rules.mk | |||
@@ -0,0 +1,3 @@ | |||
1 | SRC = tetris_text.c | ||
2 | RGBLIGHT_ENABLE = no | ||
3 | BACKLIGHT_ENABLE = no | ||
diff --git a/keyboards/clueboard/66/keymaps/tetris/tetris_text.c b/keyboards/clueboard/66/keymaps/tetris/tetris_text.c new file mode 100644 index 000000000..1376ead00 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/tetris/tetris_text.c | |||
@@ -0,0 +1,505 @@ | |||
1 | /* Copyright 2017 Dan Amlund Thomsen | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #include <stdio.h> | ||
17 | #include <stdlib.h> | ||
18 | #include <stdarg.h> | ||
19 | #include <stdint.h> | ||
20 | |||
21 | #include "tetris_text.h" | ||
22 | |||
23 | static char empty_piece[7][7] = { { 0, 0, 0, 0, 0, 0, 0 }, | ||
24 | { 0, 0, 0, 0, 0, 0, 0 }, | ||
25 | { 0, 0, 0, 0, 0, 0, 0 }, | ||
26 | { 0, 0, 0, 0, 0, 0, 0 }, | ||
27 | { 0, 0, 0, 0, 0, 0, 0 }, | ||
28 | { 0, 0, 0, 0, 0, 0, 0 }, | ||
29 | { 0, 0, 0, 0, 0, 0, 0 } }; | ||
30 | |||
31 | static char temp_piece[7][7]; | ||
32 | |||
33 | static int curx = 0; | ||
34 | static int cury = 0; | ||
35 | |||
36 | static void clear_piece(char piece[7][7]) { | ||
37 | for (int y = 0; y < 7; y++) { | ||
38 | for (int x = 0; x < 7; x++) { | ||
39 | piece[x][y] = 0; | ||
40 | } | ||
41 | } | ||
42 | } | ||
43 | |||
44 | static void copy_piece_from_to(char from[7][7], char to[7][7]) { | ||
45 | for (int y = 0; y < 7; y++) { | ||
46 | for (int x = 0; x < 7; x++) { | ||
47 | to[x][y] = from[x][y]; | ||
48 | } | ||
49 | } | ||
50 | } | ||
51 | |||
52 | static void rotate_piece(char piece[7][7]) { | ||
53 | // transpose | ||
54 | for (int y = 0; y < 7; y++) { | ||
55 | for (int x = y + 1; x < 7; x++) { | ||
56 | char tmp = piece[y][x]; | ||
57 | piece[y][x] = piece[x][y]; | ||
58 | piece[x][y] = tmp; | ||
59 | } | ||
60 | } | ||
61 | |||
62 | // reverse rows | ||
63 | for (int y = 0; y < 7; y++) { | ||
64 | for (int x = 0; x < 3; x++) { | ||
65 | char tmp = piece[y][6 - x]; | ||
66 | piece[y][6 - x] = piece[y][x]; | ||
67 | piece[y][x] = tmp; | ||
68 | } | ||
69 | } | ||
70 | } | ||
71 | |||
72 | static char get_shape_char(int shape) { | ||
73 | switch (shape) { | ||
74 | case 0: return 'I'; | ||
75 | case 1: return 'J'; | ||
76 | case 2: return 'L'; | ||
77 | case 3: return 'O'; | ||
78 | case 4: return 'S'; | ||
79 | case 5: return 'T'; | ||
80 | case 6: return 'Z'; | ||
81 | } | ||
82 | return 'Q'; | ||
83 | } | ||
84 | |||
85 | static void set_piece(char piece[7][7], int shape, int rotation) { | ||
86 | clear_piece(piece); | ||
87 | switch (shape) { | ||
88 | case 0: | ||
89 | if (rotation % 2 == 0) { | ||
90 | // xxXx | ||
91 | piece[3][1] = 1; | ||
92 | piece[3][2] = 1; | ||
93 | piece[3][3] = 1; | ||
94 | piece[3][4] = 1; | ||
95 | } else { | ||
96 | // x | ||
97 | // x | ||
98 | // X | ||
99 | // x | ||
100 | piece[1][3] = 1; | ||
101 | piece[2][3] = 1; | ||
102 | piece[3][3] = 1; | ||
103 | piece[4][3] = 1; | ||
104 | } | ||
105 | break; | ||
106 | case 1: | ||
107 | // xXx | ||
108 | // x | ||
109 | piece[3][2] = 1; | ||
110 | piece[3][3] = 1; | ||
111 | piece[3][4] = 1; | ||
112 | piece[4][4] = 1; | ||
113 | for (int i = 0; i < rotation; i++) { | ||
114 | rotate_piece(piece); | ||
115 | } | ||
116 | break; | ||
117 | case 2: | ||
118 | // xXx | ||
119 | // x | ||
120 | piece[3][2] = 1; | ||
121 | piece[3][3] = 1; | ||
122 | piece[3][4] = 1; | ||
123 | piece[4][2] = 1; | ||
124 | for (int i = 0; i < rotation; i++) { | ||
125 | rotate_piece(piece); | ||
126 | } | ||
127 | break; | ||
128 | case 3: | ||
129 | // xX | ||
130 | // xx | ||
131 | piece[3][2] = 1; | ||
132 | piece[3][3] = 1; | ||
133 | piece[4][2] = 1; | ||
134 | piece[4][3] = 1; | ||
135 | break; | ||
136 | case 4: | ||
137 | if (rotation % 2 == 0) { | ||
138 | // xX | ||
139 | // xx | ||
140 | piece[3][2] = 1; | ||
141 | piece[3][3] = 1; | ||
142 | piece[4][3] = 1; | ||
143 | piece[4][4] = 1; | ||
144 | } else { | ||
145 | // x | ||
146 | // xX | ||
147 | // x | ||
148 | piece[2][3] = 1; | ||
149 | piece[3][2] = 1; | ||
150 | piece[3][3] = 1; | ||
151 | piece[4][2] = 1; | ||
152 | } | ||
153 | break; | ||
154 | case 5: | ||
155 | // xXx | ||
156 | // x | ||
157 | piece[3][2] = 1; | ||
158 | piece[3][3] = 1; | ||
159 | piece[3][4] = 1; | ||
160 | piece[4][3] = 1; | ||
161 | for (int i = 0; i < rotation; i++) { | ||
162 | rotate_piece(piece); | ||
163 | } | ||
164 | break; | ||
165 | case 6: | ||
166 | if (rotation % 2 == 0) { | ||
167 | // Xx | ||
168 | // xx | ||
169 | piece[3][3] = 1; | ||
170 | piece[3][4] = 1; | ||
171 | piece[4][2] = 1; | ||
172 | piece[4][3] = 1; | ||
173 | } else { | ||
174 | // x | ||
175 | // Xx | ||
176 | // x | ||
177 | piece[2][3] = 1; | ||
178 | piece[3][3] = 1; | ||
179 | piece[3][4] = 1; | ||
180 | piece[4][4] = 1; | ||
181 | } | ||
182 | break; | ||
183 | } | ||
184 | } | ||
185 | |||
186 | static void send_deletes(int deletes) { | ||
187 | for (int i = 0; i < deletes; i++) { | ||
188 | tetris_send_delete(); | ||
189 | } | ||
190 | } | ||
191 | |||
192 | static void send_backspaces(int backspaces) { | ||
193 | for (int i = 0; i < backspaces; i++) { | ||
194 | tetris_send_backspace(); | ||
195 | curx--; | ||
196 | } | ||
197 | } | ||
198 | |||
199 | static void send_goto_xy(int x, int y) { | ||
200 | while (curx < x) { | ||
201 | tetris_send_right(); | ||
202 | curx++; | ||
203 | } | ||
204 | while (curx > x) { | ||
205 | tetris_send_left(); | ||
206 | curx--; | ||
207 | } | ||
208 | while (cury < y) { | ||
209 | tetris_send_down(); | ||
210 | cury++; | ||
211 | } | ||
212 | while (cury > y) { | ||
213 | tetris_send_up(); | ||
214 | cury--; | ||
215 | } | ||
216 | } | ||
217 | |||
218 | static void draw_row(char c, const char oldrow[7], const char newrow[7], int x, int y) { | ||
219 | char str[2] = { c, 0 }; | ||
220 | char row_is_del[7] = { 0 }; | ||
221 | int first = -1; | ||
222 | int last = -1; | ||
223 | for (int px = 0; px < 7; px++) { | ||
224 | if (oldrow[px] && !newrow[px]) { | ||
225 | row_is_del[px] = 1; | ||
226 | } | ||
227 | if (newrow[px] || oldrow[px]) { | ||
228 | if (first == -1) first = px; | ||
229 | last = px; | ||
230 | } | ||
231 | } | ||
232 | |||
233 | if (first >= 0) { | ||
234 | if (curx > x + last + 1) { | ||
235 | send_goto_xy(x + last + 1, cury); | ||
236 | } | ||
237 | if (curx < x + first) { | ||
238 | send_goto_xy(x + first, cury); | ||
239 | } | ||
240 | send_goto_xy(curx, y); | ||
241 | send_deletes((x + last + 1) - curx); | ||
242 | send_backspaces(curx - (x + first)); | ||
243 | for (int i = first; i <= last; i++) { | ||
244 | if (row_is_del[i]) { | ||
245 | tetris_send_string("."); | ||
246 | } else { | ||
247 | tetris_send_string(str); | ||
248 | } | ||
249 | curx++; | ||
250 | } | ||
251 | } | ||
252 | } | ||
253 | |||
254 | static void move_piece_from_to(char from[7][7], char to[7][7], int xadd, int yadd) { | ||
255 | for (int y = 0; y < 7; y++) { | ||
256 | for (int x = 0; x < 7; x++) { | ||
257 | if (x + xadd >= 0 && x + xadd < 7 && y + yadd >= 0 && y + yadd < 7) { | ||
258 | to[y][x] = from[y + yadd][x + xadd]; | ||
259 | } else { | ||
260 | to[y][x] = 0; | ||
261 | } | ||
262 | } | ||
263 | } | ||
264 | } | ||
265 | |||
266 | static void draw_piece(char c, int x, int y, char oldpiece[7][7], char piece[7][7]) { | ||
267 | for (int py = 0; py < 7; py++) { | ||
268 | draw_row(c, oldpiece[py], piece[py], x, y + py); | ||
269 | } | ||
270 | } | ||
271 | |||
272 | static void draw_piece_moved(char c, int x, int y, char piece[7][7], int oldxadd, int oldyadd) { | ||
273 | move_piece_from_to(piece, temp_piece, oldxadd, oldyadd); | ||
274 | draw_piece(c, x, y, temp_piece, piece); | ||
275 | } | ||
276 | |||
277 | static int is_piece_hitting(char board[20][10], char piece[7][7], int x, int y) { | ||
278 | for (int py = 0; py < 7; py++) { | ||
279 | for (int px = 0; px < 7; px++) { | ||
280 | if (piece[py][px] && | ||
281 | (px + x >= 10 || px + x < 0 | ||
282 | || py + y >= 20 || py + y < 0 | ||
283 | || board[py + y][px + x])) { | ||
284 | return 1; | ||
285 | } | ||
286 | } | ||
287 | } | ||
288 | return 0; | ||
289 | } | ||
290 | |||
291 | static void add_piece_to_board(char piece[7][7], char board[20][10], int x, int y) { | ||
292 | for (int py = 0; py < 7; py++) { | ||
293 | for (int px = 0; px < 7; px++) { | ||
294 | if (piece[py][px]) { | ||
295 | board[py + y][px + x] = piece[py][px]; | ||
296 | } | ||
297 | } | ||
298 | } | ||
299 | } | ||
300 | |||
301 | static void draw_board_line(void) { | ||
302 | //send_string("l l"); | ||
303 | tetris_send_string("l..........l"); | ||
304 | tetris_send_newline(); | ||
305 | } | ||
306 | static void init(void) { | ||
307 | for (int i = 0; i < 20; i++) { | ||
308 | draw_board_line(); | ||
309 | } | ||
310 | tetris_send_string("doooooooooob"); | ||
311 | curx = 12; | ||
312 | cury = 20; | ||
313 | } | ||
314 | |||
315 | static int get_piece_min_y(char piece[7][7]) { | ||
316 | for (int y = 0; y < 7; y++) { | ||
317 | for (int x = 0; x < 7; x++) { | ||
318 | if (piece[y][x]) | ||
319 | return y; | ||
320 | } | ||
321 | } | ||
322 | return 0; | ||
323 | } | ||
324 | |||
325 | static int clear_lines(char board[20][10]) { | ||
326 | int cleared_lines = 0; | ||
327 | for (int y = 19; y >= 0; y--) { | ||
328 | char isfull = 1; | ||
329 | for (int x = 0; x < 10; x++) { | ||
330 | if (!board[y][x]) { | ||
331 | isfull = 0; | ||
332 | } | ||
333 | } | ||
334 | if (isfull) { | ||
335 | // delete clear line | ||
336 | send_goto_xy(12, y); | ||
337 | send_backspaces(12); // delete line contents | ||
338 | // delete newline | ||
339 | tetris_send_backspace(); | ||
340 | cury--; | ||
341 | curx = 12; | ||
342 | cleared_lines++; | ||
343 | } else { | ||
344 | if (cleared_lines > 0) { | ||
345 | // move cleared lines down on board | ||
346 | for (int x = 0; x < 10; x++) { | ||
347 | board[y + cleared_lines][x] = board[y][x]; | ||
348 | } | ||
349 | } | ||
350 | } | ||
351 | } | ||
352 | // clear cleared top lines | ||
353 | for (int y = 0; y < cleared_lines; y++) { | ||
354 | for (int x = 0; x < 10; x++) { | ||
355 | board[y][x] = 0; | ||
356 | } | ||
357 | } | ||
358 | if (cleared_lines > 0) { | ||
359 | send_goto_xy(0, 0); | ||
360 | for (int i = 0; i < cleared_lines; i++) { | ||
361 | draw_board_line(); | ||
362 | curx = 0; | ||
363 | cury++; | ||
364 | } | ||
365 | } | ||
366 | return cleared_lines; | ||
367 | } | ||
368 | |||
369 | static uint8_t myrandom(uint8_t seed) { | ||
370 | uint8_t out = seed >> 1; | ||
371 | if (seed & 1) { | ||
372 | out = out ^ 0xB8; | ||
373 | } | ||
374 | return out; | ||
375 | } | ||
376 | |||
377 | static char piece[7][7]; | ||
378 | static char board[20][10]; | ||
379 | static uint8_t r; | ||
380 | static int score; | ||
381 | static int x; | ||
382 | static int y; | ||
383 | static int shape; | ||
384 | static int rotation; | ||
385 | static int time; | ||
386 | static int next_down; | ||
387 | static int down_delay; | ||
388 | static int first_run; | ||
389 | static int game_over; | ||
390 | |||
391 | void tetris_start(uint8_t seed) { | ||
392 | for (int y = 0; y < 20; y++) { | ||
393 | for (int x = 0; x < 10; x++) { | ||
394 | board[y][x] = 0; | ||
395 | } | ||
396 | } | ||
397 | |||
398 | clear_piece(piece); | ||
399 | |||
400 | init(); | ||
401 | |||
402 | game_over = 0; | ||
403 | |||
404 | r = seed; | ||
405 | score = 0; | ||
406 | |||
407 | copy_piece_from_to(empty_piece, piece); | ||
408 | x = 0; | ||
409 | y = 0; | ||
410 | shape = 0; | ||
411 | rotation = 0; | ||
412 | time = 0; | ||
413 | next_down = 0; | ||
414 | down_delay = -1; | ||
415 | first_run = 1; | ||
416 | } | ||
417 | |||
418 | int tetris_tick(int ms_since_previous_tick) { | ||
419 | if (game_over) { | ||
420 | return 0; | ||
421 | } | ||
422 | |||
423 | time += ms_since_previous_tick; | ||
424 | |||
425 | if (first_run || time > next_down) { | ||
426 | if (first_run || is_piece_hitting(board, piece, x, y + 1)) { | ||
427 | first_run = 0; | ||
428 | add_piece_to_board(piece, board, x, y); | ||
429 | |||
430 | score += clear_lines(board); | ||
431 | |||
432 | down_delay = 500 - score * 10; | ||
433 | if (down_delay < 100) { | ||
434 | down_delay = 100; | ||
435 | } | ||
436 | |||
437 | rotation = 0; | ||
438 | shape = r % 7; | ||
439 | r = myrandom(r); | ||
440 | set_piece(piece, shape, rotation); | ||
441 | |||
442 | x = 1; | ||
443 | y = - get_piece_min_y(piece); | ||
444 | draw_piece_moved(get_shape_char(shape), 1 + x, y, piece, 0, 0); | ||
445 | |||
446 | if (is_piece_hitting(board, piece, x, y)) { | ||
447 | game_over = 1; | ||
448 | send_goto_xy(12, 10); | ||
449 | tetris_send_string(" game over"); | ||
450 | tetris_send_down(); | ||
451 | tetris_send_string(" score "); | ||
452 | char tmp[10]; | ||
453 | sprintf(tmp, "%d", score); | ||
454 | tetris_send_string(tmp); | ||
455 | return 0; | ||
456 | } | ||
457 | } else { | ||
458 | y++; | ||
459 | draw_piece_moved(get_shape_char(shape), 1 + x, y, piece, 0, +1); | ||
460 | } | ||
461 | next_down = time + down_delay; | ||
462 | } else { | ||
463 | |||
464 | switch (tetris_get_keypress()) { | ||
465 | case 1: { // up | ||
466 | int oldrotation = rotation; | ||
467 | rotation = (rotation + 1) % 4; | ||
468 | copy_piece_from_to(piece, temp_piece); | ||
469 | set_piece(piece, shape, rotation); | ||
470 | if (is_piece_hitting(board, piece, x, y)) { | ||
471 | rotation = oldrotation; | ||
472 | set_piece(piece, shape, rotation); | ||
473 | } else { | ||
474 | draw_piece(get_shape_char(shape), 1 + x, y, temp_piece, piece); | ||
475 | } | ||
476 | break; | ||
477 | } | ||
478 | case 2: // left | ||
479 | if (!is_piece_hitting(board, piece, x - 1, y)) { | ||
480 | x--; | ||
481 | draw_piece_moved(get_shape_char(shape), 1 + x, y, piece, -1, 0); | ||
482 | } | ||
483 | break; | ||
484 | case 3: {// down | ||
485 | int starty = y; | ||
486 | while (!is_piece_hitting(board, piece, x, y + 1)) { | ||
487 | y++; | ||
488 | } | ||
489 | |||
490 | draw_piece(get_shape_char(shape), x + 1, starty, piece, empty_piece); | ||
491 | draw_piece(get_shape_char(shape), x + 1, y, empty_piece, piece); | ||
492 | |||
493 | next_down = time + down_delay; | ||
494 | break; | ||
495 | } | ||
496 | case 4: // right | ||
497 | if (!is_piece_hitting(board, piece, x + 1, y)) { | ||
498 | x++; | ||
499 | draw_piece_moved(get_shape_char(shape), 1 + x, y, piece, 1, 0); | ||
500 | } | ||
501 | break; | ||
502 | } | ||
503 | } | ||
504 | return 1; | ||
505 | } | ||
diff --git a/keyboards/clueboard/66/keymaps/tetris/tetris_text.h b/keyboards/clueboard/66/keymaps/tetris/tetris_text.h new file mode 100644 index 000000000..25b4177e0 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/tetris/tetris_text.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* Copyright 2017 Dan Amlund Thomsen | ||
2 | * | ||
3 | * This program is free software: you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License as published by | ||
5 | * the Free Software Foundation, either version 2 of the License, or | ||
6 | * (at your option) any later version. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
15 | */ | ||
16 | #ifndef TETRIS_TEXT_H | ||
17 | #define TETRIS_TEXT_H | ||
18 | |||
19 | //// to implement | ||
20 | void tetris_send_up(void); | ||
21 | void tetris_send_left(void); | ||
22 | void tetris_send_down(void); | ||
23 | void tetris_send_right(void); | ||
24 | |||
25 | void tetris_send_backspace(void); | ||
26 | void tetris_send_delete(void); | ||
27 | |||
28 | void tetris_send_string(const char *s); | ||
29 | |||
30 | void tetris_send_newline(void); | ||
31 | |||
32 | // return = meaning | ||
33 | // 0 = no keys pressed | ||
34 | // 1 = up | ||
35 | // 2 = left | ||
36 | // 3 = down | ||
37 | // 4 = right | ||
38 | int tetris_get_keypress(void); | ||
39 | |||
40 | //// to call | ||
41 | void tetris_start(uint8_t seed); | ||
42 | // returns 0 when game is over | ||
43 | int tetris_tick(int ms_since_previous_tick); | ||
44 | |||
45 | #endif | ||
diff --git a/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c new file mode 100644 index 000000000..823959ee0 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, | ||
17 | KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_INS, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_DEL, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
28 | _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD,RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/unix_optimized/readme.md b/keyboards/clueboard/66/keymaps/unix_optimized/readme.md new file mode 100644 index 000000000..79c7daef8 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/unix_optimized/readme.md | |||
@@ -0,0 +1,4 @@ | |||
1 | # Default Clueboard 66% Layout | ||
2 | |||
3 | This is the default layout except that Caps Lock has been changed to Control | ||
4 | and Insert and Delete have been put into the Fn layer. | ||
diff --git a/keyboards/clueboard/66/keymaps/via/keymap.c b/keyboards/clueboard/66/keymaps/via/keymap.c new file mode 100644 index 000000000..f5c0c4644 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/via/keymap.c | |||
@@ -0,0 +1,46 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | #define _BL 0 | ||
6 | #define _FL 1 | ||
7 | #define _CL 2 | ||
8 | #define _EL 3 | ||
9 | |||
10 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
11 | /* Keymap _BL: Base Layer (Default Layer) | ||
12 | */ | ||
13 | [_BL] = LAYOUT_66_ansi( | ||
14 | KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, | ||
15 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, | ||
16 | KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, | ||
17 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
18 | KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), | ||
19 | |||
20 | /* Keymap _FL: Function Layer | ||
21 | */ | ||
22 | [_FL] = LAYOUT_66_ansi( | ||
23 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, | ||
24 | _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, | ||
25 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
26 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, | ||
27 | _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), | ||
28 | |||
29 | /* Keymap _CL: Control layer | ||
30 | */ | ||
31 | [_CL] = LAYOUT_66_ansi( | ||
32 | BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, | ||
33 | _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, | ||
34 | _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
35 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, | ||
36 | _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), | ||
37 | |||
38 | /* Keymap _EL: Empty layer | ||
39 | */ | ||
40 | [_EL] = LAYOUT_66_ansi( | ||
41 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, | ||
42 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
43 | _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, | ||
44 | _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, | ||
45 | _______,_______,_______, _______, _______,_______,_______,_______,_______,_______) | ||
46 | }; \ No newline at end of file | ||
diff --git a/keyboards/clueboard/66/keymaps/via/rules.mk b/keyboards/clueboard/66/keymaps/via/rules.mk new file mode 100644 index 000000000..7a4971950 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/via/rules.mk | |||
@@ -0,0 +1,4 @@ | |||
1 | # rules.mk overrides to enable VIA | ||
2 | |||
3 | VIA_ENABLE = yes | ||
4 | LTO_ENABLE = yes | ||
diff --git a/keyboards/clueboard/66/keymaps/win_optimized/keymap.c b/keyboards/clueboard/66/keymaps/win_optimized/keymap.c new file mode 100644 index 000000000..2c5cb8639 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/win_optimized/keymap.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | |||
3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
6 | // entirely and just use numbers. | ||
7 | #define _BL 0 | ||
8 | #define _FL 1 | ||
9 | #define _CL 2 | ||
10 | |||
11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
12 | /* Keymap _BL: Base Layer (Default Layer) | ||
13 | */ | ||
14 | [_BL] = LAYOUT( | ||
15 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_INS, | ||
16 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, | ||
17 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, | ||
18 | KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, | ||
19 | KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), | ||
20 | |||
21 | /* Keymap _FL: Function Layer | ||
22 | */ | ||
23 | [_FL] = LAYOUT( | ||
24 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, | ||
25 | _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, | ||
26 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
27 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, | ||
28 | _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), | ||
29 | |||
30 | /* Keymap _CL: Control layer | ||
31 | */ | ||
32 | [_CL] = LAYOUT( | ||
33 | _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, | ||
34 | _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, | ||
35 | _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, | ||
36 | MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, | ||
37 | _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
38 | }; | ||
diff --git a/keyboards/clueboard/66/keymaps/win_optimized/readme.md b/keyboards/clueboard/66/keymaps/win_optimized/readme.md new file mode 100644 index 000000000..d79603268 --- /dev/null +++ b/keyboards/clueboard/66/keymaps/win_optimized/readme.md | |||
@@ -0,0 +1,6 @@ | |||
1 | # Default Clueboard 66% Layout | ||
2 | |||
3 | This is the default layout that comes flashed on every Clueboard. For the most | ||
4 | part it's a straightforward and easy to follow layout. The only unusual key is | ||
5 | the key in the upper left, which sends Escape normally, but Grave when any of | ||
6 | the Ctrl, Alt, or GUI modifiers are held down. | ||
diff --git a/keyboards/clueboard/66/readme.md b/keyboards/clueboard/66/readme.md new file mode 100644 index 000000000..094cc219e --- /dev/null +++ b/keyboards/clueboard/66/readme.md | |||
@@ -0,0 +1,18 @@ | |||
1 | # Clueboard 66% | ||
2 | |||
3 |  | ||
4 | |||
5 | A fully customizable 66% keyboard. | ||
6 | |||
7 | * Keyboard Maintainer: [Zach White](https://github.com/skullydazed) | ||
8 | * Hardware Supported: Clueboard 66% PCB | ||
9 | * rev1 (PCB Version 1.0) | ||
10 | * rev2 (PCB Versions 2.0, 2.0.1, 2.1, 2.5, 2.5.1, 2.6) | ||
11 | * rev3 (PCB Versions 2.7, 2.8, 2.9) | ||
12 | * Hardware Availability: [clueboard.co](https://clueboard.co/) | ||
13 | |||
14 | Make example for this keyboard (after setting up your build environment): | ||
15 | |||
16 | make clueboard/66/rev3:default | ||
17 | |||
18 | See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. | ||
diff --git a/keyboards/clueboard/66/rev1/.noci b/keyboards/clueboard/66/rev1/.noci new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/keyboards/clueboard/66/rev1/.noci | |||
diff --git a/keyboards/clueboard/66/rev1/config.h b/keyboards/clueboard/66/rev1/config.h new file mode 100644 index 000000000..b8c5759db --- /dev/null +++ b/keyboards/clueboard/66/rev1/config.h | |||
@@ -0,0 +1,3 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "config_common.h" | ||
diff --git a/keyboards/clueboard/66/rev1/info.json b/keyboards/clueboard/66/rev1/info.json new file mode 100644 index 000000000..6ff733b3d --- /dev/null +++ b/keyboards/clueboard/66/rev1/info.json | |||
@@ -0,0 +1,268 @@ | |||
1 | { | ||
2 | "manufacturer": "Clueboard", | ||
3 | "keyboard_name": "Clueboard 66%", | ||
4 | "maintainer": "skullydazed", | ||
5 | "processor": "atmega32u4", | ||
6 | "debounce": 5, | ||
7 | "diode_direction": "COL2ROW", | ||
8 | "features": { | ||
9 | "audio": false, | ||
10 | "backlight": false, | ||
11 | "bluetooth": false, | ||
12 | "bootmagic": false, | ||
13 | "command": false, | ||
14 | "console": true, | ||
15 | "extrakey": true, | ||
16 | "midi": false, | ||
17 | "mousekey": true, | ||
18 | "nkro": true, | ||
19 | "rgblight": false, | ||
20 | "unicode": false | ||
21 | }, | ||
22 | "indicators": { | ||
23 | "caps_lock": "F0" | ||
24 | }, | ||
25 | "matrix_pins": { | ||
26 | "cols": ["B3", "F1", "F4", "F5", "F6", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "F7", "B0", "B1"], | ||
27 | "rows": ["D1", "D0", "D2", "D5", "D3"] | ||
28 | }, | ||
29 | "rgblight": { | ||
30 | "animations": { | ||
31 | "all": true | ||
32 | }, | ||
33 | "brightness_steps": 17, | ||
34 | "hue_steps": 10, | ||
35 | "led_count": 14, | ||
36 | "pin": "B2", | ||
37 | "saturation_steps": 17 | ||
38 | }, | ||
39 | "usb": { | ||
40 | "device_ver": "0x0001", | ||
41 | "pid": "0x2301", | ||
42 | "vid": "0xC1ED" | ||
43 | }, | ||
44 | "community_layouts": ["66_ansi", "66_iso"], | ||
45 | "layout_aliases": { | ||
46 | "LAYOUT": "LAYOUT_all" | ||
47 | }, | ||
48 | "layouts": { | ||
49 | "LAYOUT_66_ansi": { | ||
50 | "layout": [ | ||
51 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
52 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
53 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
54 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
55 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
56 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
57 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
58 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
59 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
60 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
61 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
62 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
63 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
64 | { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, | ||
65 | { "label": "k0F", "matrix": [0, 15], "w": 1, "x": 15.5, "y": 0 }, | ||
66 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
67 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
68 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
69 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
70 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
71 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
72 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
73 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
74 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
75 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
76 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
77 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
78 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
79 | { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, | ||
80 | { "label": "k1F", "matrix": [1, 15], "w": 1, "x": 15.5, "y": 1 }, | ||
81 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
82 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
83 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
84 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
85 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
86 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
87 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
88 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
89 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
90 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
91 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
92 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
93 | { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, | ||
94 | { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, | ||
95 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
96 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
97 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
98 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
99 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
100 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
101 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
102 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
103 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
104 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
105 | { "label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3 }, | ||
106 | { "label": "k3E", "matrix": [3, 14], "w": 1, "x": 14.5, "y": 3 }, | ||
107 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
108 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
109 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
110 | { "label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4 }, | ||
111 | { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 9.75, "y": 4 }, | ||
112 | { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11, "y": 4 }, | ||
113 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4 }, | ||
114 | { "label": "k4D", "matrix": [4, 13], "w": 1, "x": 13.5, "y": 4 }, | ||
115 | { "label": "k4E", "matrix": [4, 14], "w": 1, "x": 14.5, "y": 4 }, | ||
116 | { "label": "k4F", "matrix": [4, 15], "w": 1, "x": 15.5, "y": 4 } | ||
117 | ] | ||
118 | }, | ||
119 | "LAYOUT_66_iso": { | ||
120 | "layout": [ | ||
121 | { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
122 | { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
123 | { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
124 | { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
125 | { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
126 | { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
127 | { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, | ||
128 | { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, | ||
129 | { "label": "*", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, | ||
130 | { "label": "(", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, | ||
131 | { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, | ||
132 | { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, | ||
133 | { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, | ||
134 | { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, | ||
135 | { "label": "Insert", "matrix": [0, 15], "w": 1, "x": 15.5, "y": 0 }, | ||
136 | { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, | ||
137 | { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, | ||
138 | { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, | ||
139 | { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, | ||
140 | { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, | ||
141 | { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, | ||
142 | { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, | ||
143 | { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, | ||
144 | { "label": "I", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1 }, | ||
145 | { "label": "O", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1 }, | ||
146 | { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, | ||
147 | { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, | ||
148 | { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, | ||
149 | { "label": "Delete", "matrix": [1, 15], "w": 1, "x": 15.5, "y": 1 }, | ||
150 | { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, | ||
151 | { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, | ||
152 | { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, | ||
153 | { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, | ||
154 | { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, | ||
155 | { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, | ||
156 | { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, | ||
157 | { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, | ||
158 | { "label": "K", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 }, | ||
159 | { "label": "L", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 }, | ||
160 | { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, | ||
161 | { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, | ||
162 | { "label": "", "matrix": [2, 12], "w": 1, "x": 12.75, "y": 2 }, | ||
163 | { "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, | ||
164 | { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, | ||
165 | { "label": "\\", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 }, | ||
166 | { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, | ||
167 | { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, | ||
168 | { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, | ||
169 | { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, | ||
170 | { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, | ||
171 | { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, | ||
172 | { "label": "M", "matrix": [3, 8], "w": 1, "x": 8.25, "y": 3 }, | ||
173 | { "label": "<", "matrix": [3, 9], "w": 1, "x": 9.25, "y": 3 }, | ||
174 | { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, | ||
175 | { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, | ||
176 | { "label": "Shift", "matrix": [3, 13], "w": 2.25, "x": 12.25, "y": 3 }, | ||
177 | { "label": "\u2191", "matrix": [3, 14], "w": 1, "x": 14.5, "y": 3 }, | ||
178 | { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, | ||
179 | { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, | ||
180 | { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, | ||
181 | { "label": "k46", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4 }, | ||
182 | { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 9.75, "y": 4 }, | ||
183 | { "label": "Ctrl", "matrix": [4, 11], "w": 1.25, "x": 11, "y": 4 }, | ||
184 | { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.25, "y": 4 }, | ||
185 | { "label": "\u2190", "matrix": [4, 13], "w": 1, "x": 13.5, "y": 4 }, | ||
186 | { "label": "\u2193", "matrix": [4, 14], "w": 1, "x": 14.5, "y": 4 }, | ||
187 | { "label": "\u2192", "matrix": [4, 15], "w": 1, "x": 15.5, "y": 4 } | ||
188 | ] | ||
189 | }, | ||
190 | "LAYOUT_all": { | ||
191 | "layout": [ | ||
192 | { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, | ||
193 | { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, | ||
194 | { "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, | ||
195 | { "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, | ||
196 | { "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, | ||
197 | { "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, | ||
198 |