aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/gl516/a52gl/a52gl.c18
-rw-r--r--keyboards/gl516/a52gl/a52gl.h37
-rw-r--r--keyboards/gl516/a52gl/config.h44
-rw-r--r--keyboards/gl516/a52gl/info.json63
-rw-r--r--keyboards/gl516/a52gl/keymaps/default/keymap.c52
-rw-r--r--keyboards/gl516/a52gl/keymaps/salicylic/config.h22
-rw-r--r--keyboards/gl516/a52gl/keymaps/salicylic/keymap.c65
-rw-r--r--keyboards/gl516/a52gl/keymaps/via/keymap.c65
-rw-r--r--keyboards/gl516/a52gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/a52gl/matrix.c158
-rw-r--r--keyboards/gl516/a52gl/readme.md26
-rw-r--r--keyboards/gl516/a52gl/rules.mk22
-rw-r--r--keyboards/gl516/j73gl/config.h63
-rw-r--r--keyboards/gl516/j73gl/info.json84
-rw-r--r--keyboards/gl516/j73gl/j73gl.c55
-rw-r--r--keyboards/gl516/j73gl/j73gl.h40
-rw-r--r--keyboards/gl516/j73gl/keymaps/default/keymap.c57
-rw-r--r--keyboards/gl516/j73gl/keymaps/via/keymap.c74
-rw-r--r--keyboards/gl516/j73gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h43
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c74
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk7
-rw-r--r--keyboards/gl516/j73gl/matrix.c158
-rw-r--r--keyboards/gl516/j73gl/readme.md27
-rw-r--r--keyboards/gl516/j73gl/rules.mk22
-rw-r--r--keyboards/gl516/n51gl/config.h67
-rw-r--r--keyboards/gl516/n51gl/info.json63
-rw-r--r--keyboards/gl516/n51gl/keymaps/default/keymap.c60
-rw-r--r--keyboards/gl516/n51gl/keymaps/salicylic/config.h22
-rw-r--r--keyboards/gl516/n51gl/keymaps/salicylic/keymap.c117
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/config.h22
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/keymap.c102
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/n51gl/matrix.c158
-rw-r--r--keyboards/gl516/n51gl/n51gl.c18
-rw-r--r--keyboards/gl516/n51gl/n51gl.h54
-rw-r--r--keyboards/gl516/n51gl/readme.md27
-rw-r--r--keyboards/gl516/n51gl/rules.mk22
38 files changed, 2011 insertions, 0 deletions
diff --git a/keyboards/gl516/a52gl/a52gl.c b/keyboards/gl516/a52gl/a52gl.c
new file mode 100644
index 000000000..67c27d2d7
--- /dev/null
+++ b/keyboards/gl516/a52gl/a52gl.c
@@ -0,0 +1,18 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "a52gl.h"
diff --git a/keyboards/gl516/a52gl/a52gl.h b/keyboards/gl516/a52gl/a52gl.h
new file mode 100644
index 000000000..6ff00c541
--- /dev/null
+++ b/keyboards/gl516/a52gl/a52gl.h
@@ -0,0 +1,37 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "quantum.h"
21
22#define LAYOUT( \
23 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
24 L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
25 L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
26 L30, L31, L32, L34, L35, L36, R31, R33, R34, R35, R36 \
27 ) \
28 { \
29 { L00, L01, L02, L03, L04, L05, L06 }, \
30 { L10, L11, L12, L13, L14, L15, L16 }, \
31 { L20, L21, L22, L23, L24, L25, L26 }, \
32 { L30, L31, L32, KC_NO, L34, L35, L36 }, \
33 { R00, R01, R02, R03, R04, R05, R06 }, \
34 { R10, R11, R12, R13, R14, R15, KC_NO }, \
35 { R20, R21, R22, R23, R24, R25, R26 }, \
36 { KC_NO, R31, KC_NO, R33, R34, R35, R36 } \
37 }
diff --git a/keyboards/gl516/a52gl/config.h b/keyboards/gl516/a52gl/config.h
new file mode 100644
index 000000000..c9f54e092
--- /dev/null
+++ b/keyboards/gl516/a52gl/config.h
@@ -0,0 +1,44 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x04D8
24#define PRODUCT_ID 0xE8D1
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Salicylic_Acid
27#define PRODUCT a52gl
28
29/* key matrix size */
30#define MATRIX_ROWS 8
31#define MATRIX_COLS 7
32
33// wiring of each half
34#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
35#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
36#define UNUSED_PINS
37
38/* Set 0 if debouncing isn't needed */
39#define DEBOUNCE 5
40
41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
42#define LOCKING_SUPPORT_ENABLE
43/* Locking resynchronize hack */
44#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/gl516/a52gl/info.json b/keyboards/gl516/a52gl/info.json
new file mode 100644
index 000000000..406c7096a
--- /dev/null
+++ b/keyboards/gl516/a52gl/info.json
@@ -0,0 +1,63 @@
1{
2 "keyboard_name": "a52gl",
3 "url": "https://salicylic-acid3.hatenablog.com/",
4 "maintainer": "Salicylic_acid3",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"0,0", "x":0, "y":0},
9 {"label":"0,1", "x":1, "y":0},
10 {"label":"0,2", "x":2.25, "y":0},
11 {"label":"0,3", "x":3.25, "y":0},
12 {"label":"0,4", "x":4.25, "y":0},
13 {"label":"0,5", "x":5.25, "y":0},
14 {"label":"0,6", "x":7.75, "y":0},
15 {"label":"4,0", "x":8.75, "y":0},
16 {"label":"4,1", "x":9.75, "y":0},
17 {"label":"4,2", "x":10.75, "y":0},
18 {"label":"4,3", "x":12, "y":0},
19 {"label":"4,4", "x":13, "y":0},
20 {"label":"4,5", "x":14, "y":0},
21 {"label":"4,6", "x":15, "y":0, "w":1.5},
22 {"label":"1,0", "x":0, "y":1, "w":1.25},
23 {"label":"1,1", "x":1.25, "y":1},
24 {"label":"1,2", "x":2.52, "y":1},
25 {"label":"1,3", "x":3.52, "y":1},
26 {"label":"1,4", "x":4.52, "y":1},
27 {"label":"1,5", "x":5.52, "y":1},
28 {"label":"1,6", "x":8, "y":1},
29 {"label":"5,0", "x":9, "y":1},
30 {"label":"5,1", "x":10, "y":1},
31 {"label":"5,2", "x":11, "y":1},
32 {"label":"5,3", "x":12.25, "y":1},
33 {"label":"5,4", "x":13.25, "y":1},
34 {"label":"5,5", "x":14.25, "y":1, "w":2.25},
35 {"label":"2,0", "x":0, "y":2, "w":1.75},
36 {"label":"2,1", "x":1.75, "y":2},
37 {"label":"2,2", "x":3.05, "y":2},
38 {"label":"2,3", "x":4.05, "y":2},
39 {"label":"2,4", "x":5.05, "y":2},
40 {"label":"2,5", "x":6.05, "y":2},
41 {"label":"2,6", "x":7.5, "y":2},
42 {"label":"6,0", "x":8.5, "y":2},
43 {"label":"6,1", "x":9.5, "y":2},
44 {"label":"6,2", "x":10.5, "y":2},
45 {"label":"6,3", "x":12, "y":2},
46 {"label":"6,4", "x":13, "y":2},
47 {"label":"6,6", "x":15.5, "y":2},
48 {"label":"6,5", "x":14.25, "y":2.25},
49 {"label":"3,0", "x":0, "y":3, "w":1.25},
50 {"label":"3,1", "x":1.25, "y":3, "w":1.25},
51 {"label":"3,2", "x":3.05, "y":3},
52 {"label":"3,4", "x":4.05, "y":3, "w":2},
53 {"label":"3,5", "x":6.05, "y":3},
54 {"label":"3,6", "x":7.5, "y":3, "w":2.25},
55 {"label":"7,1", "x":9.75, "y":3, "w":1.25},
56 {"label":"7,3", "x":12.0, "y":3},
57 {"label":"7,4", "x":13.25, "y":3.25},
58 {"label":"7,5", "x":14.25, "y":3.25},
59 {"label":"7,6", "x":15.25, "y":3.25}
60 ]
61 }
62 }
63}
diff --git a/keyboards/gl516/a52gl/keymaps/default/keymap.c b/keyboards/gl516/a52gl/keymaps/default/keymap.c
new file mode 100644
index 000000000..adcf71879
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19// Each layer gets a name for readability, which is then used in the keymap matrix below.
20// The underscores don't mean anything - you can have a layer called STUFF or any other name.
21// Layer names don't all need to be of the same length, obviously, and you can also skip them
22// entirely and just use numbers.
23enum layer_number {
24 _QWERTY = 0,
25 _FN,
26};
27
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 [_QWERTY] = LAYOUT(
30 //,-----------------------------------------------------| |--------------------------------------------------------------.
31 KC_ESC, 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,
32 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
33LT(_FN,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,
34 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
35 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
36 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
37 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
38 //|-----------------------------------------------------| |--------------------------------------------------------------'
39 ),
40 [_FN] = LAYOUT(
41 //,-----------------------------------------------------| |--------------------------------------------------------------.
42 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
43 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
44 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
45 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
46 _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
47 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
49 //,-----------------------------------------------------| |--------------------------------------------------------------.
50 )
51};
52
diff --git a/keyboards/gl516/a52gl/keymaps/salicylic/config.h b/keyboards/gl516/a52gl/keymaps/salicylic/config.h
new file mode 100644
index 000000000..fd96baa81
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/salicylic/config.h
@@ -0,0 +1,22 @@
1/* Copyright 2021 Salicylic_acid3
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/* Select hand configuration */
20
21#define TAPPING_FORCE_HOLD
22#define TAPPING_TERM 180
diff --git a/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c b/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c
new file mode 100644
index 000000000..4607d1dc5
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c
@@ -0,0 +1,65 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19#include "keymap_jp.h"
20// Each layer gets a name for readability, which is then used in the keymap matrix below.
21// The underscores don't mean anything - you can have a layer called STUFF or any other name.
22// Layer names don't all need to be of the same length, obviously, and you can also skip them
23// entirely and just use numbers.
24enum layer_number {
25 _QWERTY = 0,
26 _LOWER,
27 _RAISE,
28};
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 [_QWERTY] = LAYOUT(
32 //,-----------------------------------------------------| |--------------------------------------------------------------.
33 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, JP_RBRC, KC_BSPC,
34 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
35 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_BSLS, KC_ENT,
36 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
37 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, KC_UP, KC_RSFT,
38 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
39 JP_ZKHK,KC_LALT,LGUI_T(JP_MHEN),LT(_LOWER,KC_ENT),KC_BSPC,LT(_RAISE,KC_SPC),ALT_T(JP_HENK),KC_APP,KC_LEFT, KC_DOWN, KC_RGHT
40 //|-----------------------------------------------------| |--------------------------------------------------------------'
41 ),
42 [_LOWER] = LAYOUT(
43 //,-----------------------------------------------------| |--------------------------------------------------------------.
44 KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, XXXXXXX, KC_DEL,
45 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
46 JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, _______,
47 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
48 JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,KC_LSFT,KC_0, KC_1, KC_2, KC_3, JP_PLUS, _______, _______,
49 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
50 _______, _______, JP_MHEN, MO(_LOWER), _______, MO(_RAISE), JP_DOT, _______, _______, _______, _______
51 //,-----------------------------------------------------| |--------------------------------------------------------------.
52 ),
53 [_RAISE] = LAYOUT(
54 //,-----------------------------------------------------| |--------------------------------------------------------------.
55 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP,LALT(KC_PSCR),KC_PSCR, KC_DEL,
56 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
57LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______,
58 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
59SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,KC_LSFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_PGDN, _______, _______,
60 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
61 _______, _______, JP_MHEN, _______, KC_DEL, _______, JP_HENK, _______, _______, _______, _______
62 //,-----------------------------------------------------| |--------------------------------------------------------------.
63 )
64};
65
diff --git a/keyboards/gl516/a52gl/keymaps/via/keymap.c b/keyboards/gl516/a52gl/keymaps/via/keymap.c
new file mode 100644
index 000000000..77386f8a2
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/via/keymap.c
@@ -0,0 +1,65 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT(
22 //,-----------------------------------------------------| |--------------------------------------------------------------.
23 KC_ESC, 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,
24 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
25LT(1,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,
26 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
27 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
28 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
29 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
30 //|-----------------------------------------------------| |--------------------------------------------------------------'
31 ),
32 [1] = LAYOUT(
33 //,-----------------------------------------------------| |--------------------------------------------------------------.
34 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
35 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
36 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
37 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
38 _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
39 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
41 //,-----------------------------------------------------| |--------------------------------------------------------------.
42 ),
43 [2] = LAYOUT(
44 //,-----------------------------------------------------| |--------------------------------------------------------------.
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
46 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
48 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
49 _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
50 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
52 //,-----------------------------------------------------| |--------------------------------------------------------------.
53 ),
54 [3] = LAYOUT(
55 //,-----------------------------------------------------| |--------------------------------------------------------------.
56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
57 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
59 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
60 _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
61 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
62 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
63 //,-----------------------------------------------------| |--------------------------------------------------------------.
64 )
65};
diff --git a/keyboards/gl516/a52gl/keymaps/via/rules.mk b/keyboards/gl516/a52gl/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/a52gl/matrix.c b/keyboards/gl516/a52gl/matrix.c
new file mode 100644
index 000000000..1a97fdfd6
--- /dev/null
+++ b/keyboards/gl516/a52gl/matrix.c
@@ -0,0 +1,158 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include "matrix.h"
18#include "quantum.h"
19
20static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
21static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
22
23static void select_row(uint8_t row)
24{
25 setPinOutput(row_pins[row]);
26 writePinLow(row_pins[row]);
27}
28
29static void unselect_row(uint8_t row)
30{
31 setPinInputHigh(row_pins[row]);
32}
33
34static void unselect_rows(void)
35{
36 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
37 setPinInputHigh(row_pins[x]);
38 }
39}
40
41static void select_col(uint8_t col)
42{
43 setPinOutput(col_pins[col]);
44 writePinLow(col_pins[col]);
45}
46
47static void unselect_col(uint8_t col)
48{
49 setPinInputHigh(col_pins[col]);
50}
51
52static void unselect_cols(void)
53{
54 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
55 setPinInputHigh(col_pins[x]);
56 }
57}
58
59static void init_pins(void) {
60 unselect_rows();
61 unselect_cols();
62 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
63 setPinInputHigh(col_pins[x]);
64 }
65 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
66 setPinInputHigh(row_pins[x]);
67 }
68}
69
70static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
71{
72 // Store last value of row prior to reading
73 matrix_row_t last_row_value = current_matrix[current_row];
74
75 // Clear data in matrix row
76 current_matrix[current_row] = 0;
77
78 // Select row and wait for row selecton to stabilize
79 select_row(current_row);
80 matrix_io_delay();
81
82 // For each col...
83 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
84
85 // Select the col pin to read (active low)
86 uint8_t pin_state = readPin(col_pins[col_index]);
87
88 // Populate the matrix row with the state of the col pin
89 current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
90 }
91
92 // Unselect row
93 unselect_row(current_row);
94
95 return (last_row_value != current_matrix[current_row]);
96}
97
98static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
99{
100 bool matrix_changed = false;
101
102 // Select col and wait for col selecton to stabilize
103 select_col(current_col);
104 matrix_io_delay();
105
106 // For each row...
107 for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
108 {
109 uint8_t tmp = row_index + MATRIX_ROWS/2;
110 // Store last value of row prior to reading
111 matrix_row_t last_row_value = current_matrix[tmp];
112
113 // Check row pin state
114 if (readPin(row_pins[row_index]) == 0)
115 {
116 // Pin LO, set col bit
117 current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
118 }
119 else
120 {
121 // Pin HI, clear col bit
122 current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
123 }
124
125 // Determine if the matrix changed state
126 if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
127 {
128 matrix_changed = true;
129 }
130 }
131
132 // Unselect col
133 unselect_col(current_col);
134
135 return matrix_changed;
136}
137
138void matrix_init_custom(void) {
139 // initialize key pins
140 init_pins();
141}
142
143bool matrix_scan_custom(matrix_row_t current_matrix[])
144{
145 bool changed = false;
146
147 // Set row, read cols
148 for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
149 changed |= read_cols_on_row(current_matrix, current_row);
150 }
151 //else
152 // Set col, read rows
153 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
154 changed |= read_rows_on_col(current_matrix, current_col);
155 }
156
157 return changed;
158}
diff --git a/keyboards/gl516/a52gl/readme.md b/keyboards/gl516/a52gl/readme.md
new file mode 100644
index 000000000..cfc7277ee
--- /dev/null
+++ b/keyboards/gl516/a52gl/readme.md
@@ -0,0 +1,26 @@
1# a52gl
2
3![a52gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911005227.jpg)
4
5This is 52 keys Alice style keyboard.
6Use the GL516 case.
7
8* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
9* Hardware Supported: a52gl PCB, Pro Micro
10* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple), [yushakobo Shop](https://shop.yushakobo.jp/products/3342)
11
12Make example for this keyboard (after setting up your build environment):
13
14 make gl516/a52gl:default
15
16## Bootloader
17
18Enter the bootloader in 3 ways:
19
20* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
21* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
22* **Keycode in layout**: Press the key mapped to `RESET` if it is available
23
24See 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).
25
26[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
diff --git a/keyboards/gl516/a52gl/rules.mk b/keyboards/gl516/a52gl/rules.mk
new file mode 100644
index 000000000..37fe9349c
--- /dev/null
+++ b/keyboards/gl516/a52gl/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19
20CUSTOM_MATRIX = lite
21
22SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/gl516/j73gl/config.h b/keyboards/gl516/j73gl/config.h
new file mode 100644
index 000000000..50d745ebb
--- /dev/null
+++ b/keyboards/gl516/j73gl/config.h
@@ -0,0 +1,63 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x04D8
24#define PRODUCT_ID 0xE8D0
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Salicylic_Acid
27#define PRODUCT j73gl
28
29/* key matrix size */
30#define MATRIX_ROWS 10
31#define MATRIX_COLS 8
32
33// wiring of each half
34#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
35#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 }
36#define UNUSED_PINS
37
38/* Set 0 if debouncing isn't needed */
39#define DEBOUNCE 5
40
41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
42#define LOCKING_SUPPORT_ENABLE
43/* Locking resynchronize hack */
44#define LOCKING_RESYNC_ENABLE
45
46/* ws2812 RGB LED */
47#define RGB_DI_PIN D3
48
49#ifndef RGBLED_NUM
50 #define RGBLED_NUM 73
51#endif
52
53#define RGBLIGHT_EFFECT_BREATHING
54#define RGBLIGHT_EFFECT_RAINBOW_MOOD
55#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
56#define RGBLIGHT_EFFECT_SNAKE
57#define RGBLIGHT_EFFECT_KNIGHT
58#define RGBLIGHT_EFFECT_CHRISTMAS
59#define RGBLIGHT_EFFECT_STATIC_GRADIENT
60#define RGBLIGHT_EFFECT_RGB_TEST
61#define RGBLIGHT_EFFECT_ALTERNATING
62#define RGBLIGHT_EFFECT_TWINKLE
63
diff --git a/keyboards/gl516/j73gl/info.json b/keyboards/gl516/j73gl/info.json
new file mode 100644
index 000000000..fc79f923a
--- /dev/null
+++ b/keyboards/gl516/j73gl/info.json
@@ -0,0 +1,84 @@
1{
2 "keyboard_name": "j73gl",
3 "url": "https://salicylic-acid3.hatenablog.com/",
4 "maintainer": "Salicylic_acid3",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"0,0", "x":0, "y":0},
9 {"label":"0,1", "x":1, "y":0},
10 {"label":"0,2", "x":2, "y":0},
11 {"label":"0,3", "x":3, "y":0},
12 {"label":"0,4", "x":4, "y":0},
13 {"label":"0,5", "x":5, "y":0},
14 {"label":"0,6", "x":6, "y":0},
15 {"label":"5,0", "x":7, "y":0},
16 {"label":"5,1", "x":8, "y":0},
17 {"label":"5,2", "x":9, "y":0},
18 {"label":"5,3", "x":10, "y":0},
19 {"label":"5,4", "x":11, "y":0},
20 {"label":"5,5", "x":12, "y":0},
21 {"label":"5,6", "x":13, "y":0},
22 {"label":"6,6", "x":14, "y":0},
23 {"label":"5,7", "x":15, "y":0},
24 {"label":"1,0", "x":0, "y":1, "w":1.5},
25 {"label":"1,1", "x":1.5, "y":1},
26 {"label":"1,2", "x":2.5, "y":1},
27 {"label":"1,3", "x":3.5, "y":1},
28 {"label":"1,4", "x":4.5, "y":1},
29 {"label":"1,5", "x":5.5, "y":1},
30 {"label":"1,6", "x":6.5, "y":1},
31 {"label":"6,0", "x":7.5, "y":1},
32 {"label":"6,1", "x":8.5, "y":1},
33 {"label":"6,2", "x":9.5, "y":1},
34 {"label":"6,3", "x":10.5, "y":1},
35 {"label":"6,4", "x":11.5, "y":1},
36 {"label":"6,5", "x":12.5, "y":1},
37 {"label":"7,6", "x":13.75, "y":1, "w":1.25, "h":2},
38 {"label":"6,7", "x":15, "y":1},
39 {"label":"2,0", "x":0, "y":2, "w":1.75},
40 {"label":"2,1", "x":1.75, "y":2},
41 {"label":"2,2", "x":2.75, "y":2},
42 {"label":"2,3", "x":3.75, "y":2},
43 {"label":"2,4", "x":4.75, "y":2},
44 {"label":"2,5", "x":5.75, "y":2},
45 {"label":"2,6", "x":6.75, "y":2},
46 {"label":"7,0", "x":7.75, "y":2},
47 {"label":"7,1", "x":8.75, "y":2},
48 {"label":"7,2", "x":9.75, "y":2},
49 {"label":"7,3", "x":10.75, "y":2},
50 {"label":"7,4", "x":11.75, "y":2},
51 {"label":"7,5", "x":12.75, "y":2},
52 {"label":"7,7", "x":15, "y":2},
53 {"label":"3,0", "x":0, "y":3, "w":2.25},
54 {"label":"3,1", "x":2.25, "y":3},
55 {"label":"3,2", "x":3.25, "y":3},
56 {"label":"3,3", "x":4.25, "y":3},
57 {"label":"3,4", "x":5.25, "y":3},
58 {"label":"3,5", "x":6.25, "y":3},
59 {"label":"3,6", "x":7.25, "y":3},
60 {"label":"8,0", "x":8.25, "y":3},
61 {"label":"8,1", "x":9.25, "y":3},
62 {"label":"8,2", "x":10.25, "y":3},
63 {"label":"8,3", "x":11.25, "y":3},
64 {"label":"8,5", "x":12.25, "y":3, "w":1.75},
65 {"label":"8,6", "x":14, "y":3},
66 {"label":"8,7", "x":15, "y":3},
67 {"label":"4,0", "x":0, "y":4, "w":1.25},
68 {"label":"4,1", "x":1.25, "y":4},
69 {"label":"4,2", "x":2.25, "y":4, "w":1.25},
70 {"label":"4,3", "x":3.5, "y":4},
71 {"label":"4,4", "x":4.5, "y":4, "w":1.25},
72 {"label":"4,5", "x":5.75, "y":4},
73 {"label":"4,6", "x":6.75, "y":4},
74 {"label":"9,0", "x":7.75, "y":4, "w":1.25},
75 {"label":"9,1", "x":9, "y":4},
76 {"label":"9,2", "x":10, "y":4, "w":1.25},
77 {"label":"9,3", "x":11.25, "y":4, "w":1.25},
78 {"label":"9,5", "x":13, "y":4},
79 {"label":"9,6", "x":14, "y":4},
80 {"label":"9,7", "x":15, "y":4}
81 ]
82 }
83 }
84}
diff --git a/keyboards/gl516/j73gl/j73gl.c b/keyboards/gl516/j73gl/j73gl.c
new file mode 100644
index 000000000..483b00584
--- /dev/null
+++ b/keyboards/gl516/j73gl/j73gl.c
@@ -0,0 +1,55 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "j73gl.h"
19
20#ifdef RGB_MATRIX_ENABLE
21 led_config_t g_led_config = { {
22 // Key Matrix to LED Index
23 { 67,66,60,59,50,49,40,39 },
24 { 68,65,61,58,51,46,48,41 },
25 { 69,64,62,57,52,45,47,42 },
26 { 70,63,56,53,46,43,36,33 },
27 { 71, 72, 55, 54, 45,44,35,34 },
28 { 30,29,20,19,10, 9, 8, 0 },
29 { 38,31,28,21,18,11, 1 },
30 { 37,32,27,22,17,12,7,2 },
31 { 26,23,16, 13, 6,3 },
32 { 25, 24, 15, 14,5,4 }
33 }, {
34 // LED Index to Physical Position
35 { 224, 0 }, { 224, 16 }, { 224, 32 }, { 224, 48 }, { 224, 64 },{ 209, 64 }, { 209, 48 }, { 206, 24 }, { 209, 0 }, { 194, 0 },
36 { 179, 0 }, { 188, 16 }, { 191, 32 }, { 189, 48 }, { 194, 64 },{ 171, 64 }, { 169, 48 }, { 176, 32 }, { 173, 16 }, { 165, 0 },
37 { 150, 0 }, { 156, 16 }, { 161, 32 }, { 154, 48 }, { 152, 64 },{ 135, 64 }, { 139, 48 }, { 146, 32 }, { 143, 16 }, { 135, 0 },
38 { 120, 0 }, { 128, 16 }, { 131, 32 }, { 124, 48 }, { 118, 64 },{ 101, 64 }, { 109, 48 }, { 116, 32 }, { 113, 16 }, { 105, 0 },
39 { 90, 0 }, { 98, 16 }, { 101, 32 }, { 94, 48 }, { 86, 64 },{ 69, 64 }, { 79, 48 }, { 86, 32 }, { 83, 16 }, { 75, 0 },
40 { 60, 0 }, { 68, 16 }, { 71, 32 }, { 64, 48 }, { 53, 64 },{ 36, 64 }, { 49, 48 }, { 56, 32 }, { 53, 16 }, { 45, 0 },
41 { 30, 0 }, { 38, 16 }, { 41, 32 }, { 34, 48 }, { 26, 32 },{ 23, 16 }, { 15, 48 }, { 0, 0 }, { 11, 16 }, { 13, 32 },
42 { 17, 48 }, { 2, 64 }, { 19, 64 }
43 }, {
44 // LED Index to Flag
45 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
46 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
47 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
48 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
49 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
50 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
51 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
52 4, 4, 4
53} };
54#endif
55
diff --git a/keyboards/gl516/j73gl/j73gl.h b/keyboards/gl516/j73gl/j73gl.h
new file mode 100644
index 000000000..ad4821461
--- /dev/null
+++ b/keyboards/gl516/j73gl/j73gl.h
@@ -0,0 +1,40 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "quantum.h"
21
22#define LAYOUT( \
23 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R16, R07, \
24 L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R17, \
25 L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R27, \
26 L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R35, R36, R37, \
27 L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R45, R46, R47 \
28 ) \
29 { \
30 { L00, L01, L02, L03, L04, L05, L06, KC_NO }, \
31 { L10, L11, L12, L13, L14, L15, L16, KC_NO }, \
32 { L20, L21, L22, L23, L24, L25, L26, KC_NO }, \
33 { L30, L31, L32, L33, L34, L35, L36, KC_NO }, \
34 { L40, L41, L42, L43, L44, L45, L46, KC_NO }, \
35 { R00, R01, R02, R03, R04, R05, R06, R07 }, \
36 { R10, R11, R12, R13, R14, R15, R16, R17 }, \
37 { R20, R21, R22, R23, R24, R25, R26, R27 }, \
38 { R30, R31, R32, R33, KC_NO, R35, R36, R37 }, \
39 { R40, R41, R42, R43, KC_NO, R45, R46, R47 } \
40 }
diff --git a/keyboards/gl516/j73gl/keymaps/default/keymap.c b/keyboards/gl516/j73gl/keymaps/default/keymap.c
new file mode 100644
index 000000000..846df7d2b
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19#include "keymap_jp.h"
20// Each layer gets a name for readability, which is then used in the keymap matrix below.
21// The underscores don't mean anything - you can have a layer called STUFF or any other name.
22// Layer names don't all need to be of the same length, obviously, and you can also skip them
23// entirely and just use numbers.
24enum layer_number {
25 _QWERTY = 0,
26 _FN,
27};
28
29const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 [_QWERTY] = LAYOUT(
31 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
32 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
33 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
34 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
35 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
36LT(_FN,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
37 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
38 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
39 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
40 KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
41 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
42 ),
43 [_FN] = LAYOUT(
44 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
45 RESET, 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_PSCR,
46 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
48 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
49 _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
50 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
51 _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
52 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
53 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
54 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
55 )
56};
57
diff --git a/keyboards/gl516/j73gl/keymaps/via/keymap.c b/keyboards/gl516/j73gl/keymaps/via/keymap.c
new file mode 100644
index 000000000..3e8fba928
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via/keymap.c
@@ -0,0 +1,74 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19#include "keymap_jp.h"
20
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 [0] = LAYOUT(
23 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
24 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
25 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
26 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
27 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
28LT(1,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
29 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
30 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
31 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
32 KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
33 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
34 ),
35 [1] = LAYOUT(
36 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
37 RESET, 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_PSCR,
38 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
40 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
41 _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
43 _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
44 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
46 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
47 ),
48 [2] = LAYOUT(
49 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
52 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
53 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
54 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
55 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
57 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
59 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
60 ),
61 [3] = LAYOUT(
62 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
63 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
64 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
65 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
66 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
70 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
72 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
73 )
74};
diff --git a/keyboards/gl516/j73gl/keymaps/via/rules.mk b/keyboards/gl516/j73gl/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
new file mode 100644
index 000000000..d2e1d2089
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
@@ -0,0 +1,43 @@
1/* Copyright 2018 Salicylic_acid3
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/* Select hand configuration */
20
21#define TAPPING_FORCE_HOLD
22#define TAPPING_TERM 180
23
24#ifdef RGBLED_NUM
25 #undef RGBLED_NUM
26#endif
27
28#define DRIVER_LED_TOTAL 73
29
30#ifdef RGB_MATRIX_ENABLE
31# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
32// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
33// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
34// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
35// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
36// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
37// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
38# define RGB_MATRIX_HUE_STEP 8
39# define RGB_MATRIX_SAT_STEP 8
40# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
41# define RGB_MATRIX_VAL_STEP 5
42# define RGB_MATRIX_SPD_STEP 10
43#endif
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
new file mode 100644
index 000000000..3e8fba928
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
@@ -0,0 +1,74 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19#include "keymap_jp.h"
20
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 [0] = LAYOUT(
23 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
24 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
25 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
26 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
27 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
28LT(1,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
29 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
30 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
31 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
32 KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
33 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
34 ),
35 [1] = LAYOUT(
36 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
37 RESET, 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_PSCR,
38 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
40 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
41 _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
43 _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
44 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
46 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
47 ),
48 [2] = LAYOUT(
49 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
52 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
53 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
54 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
55 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
57 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
59 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
60 ),
61 [3] = LAYOUT(
62 //,-----------------------------------------------------+--------------------------------------------------------------------------------.
63 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
64 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
65 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
66 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
70 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
72 //|-----------------------------------------------------+--------------------------------------------------------------------------------'
73 )
74};
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk
new file mode 100644
index 000000000..294015d80
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk
@@ -0,0 +1,7 @@
1RGBLIGHT_ENABLE = no
2RGB_MATRIX_ENABLE = yes
3RGB_MATRIX_DRIVER = WS2812
4VIA_ENABLE = yes
5LTO_ENABLE = yes
6SPACE_CADET_ENABLE = no
7MAGIC_ENABLE = no
diff --git a/keyboards/gl516/j73gl/matrix.c b/keyboards/gl516/j73gl/matrix.c
new file mode 100644
index 000000000..1a97fdfd6
--- /dev/null
+++ b/keyboards/gl516/j73gl/matrix.c
@@ -0,0 +1,158 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include "matrix.h"
18#include "quantum.h"
19
20static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
21static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
22
23static void select_row(uint8_t row)
24{
25 setPinOutput(row_pins[row]);
26 writePinLow(row_pins[row]);
27}
28
29static void unselect_row(uint8_t row)
30{
31 setPinInputHigh(row_pins[row]);
32}
33
34static void unselect_rows(void)
35{
36 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
37 setPinInputHigh(row_pins[x]);
38 }
39}
40
41static void select_col(uint8_t col)
42{
43 setPinOutput(col_pins[col]);
44 writePinLow(col_pins[col]);
45}
46
47static void unselect_col(uint8_t col)
48{
49 setPinInputHigh(col_pins[col]);
50}
51
52static void unselect_cols(void)
53{
54 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
55 setPinInputHigh(col_pins[x]);
56 }
57}
58
59static void init_pins(void) {
60 unselect_rows();
61 unselect_cols();
62 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
63 setPinInputHigh(col_pins[x]);
64 }
65 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
66 setPinInputHigh(row_pins[x]);
67 }
68}
69
70static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
71{
72 // Store last value of row prior to reading
73 matrix_row_t last_row_value = current_matrix[current_row];
74
75 // Clear data in matrix row
76 current_matrix[current_row] = 0;
77
78 // Select row and wait for row selecton to stabilize
79 select_row(current_row);
80 matrix_io_delay();
81
82 // For each col...
83 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
84
85 // Select the col pin to read (active low)
86 uint8_t pin_state = readPin(col_pins[col_index]);
87
88 // Populate the matrix row with the state of the col pin
89 current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
90 }
91
92 // Unselect row
93 unselect_row(current_row);
94
95 return (last_row_value != current_matrix[current_row]);
96}
97
98static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
99{
100 bool matrix_changed = false;
101
102 // Select col and wait for col selecton to stabilize
103 select_col(current_col);
104 matrix_io_delay();
105
106 // For each row...
107 for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
108 {
109 uint8_t tmp = row_index + MATRIX_ROWS/2;
110 // Store last value of row prior to reading
111 matrix_row_t last_row_value = current_matrix[tmp];
112
113 // Check row pin state
114 if (readPin(row_pins[row_index]) == 0)
115 {
116 // Pin LO, set col bit
117 current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
118 }
119 else
120 {
121 // Pin HI, clear col bit
122 current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
123 }
124
125 // Determine if the matrix changed state
126 if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
127 {
128 matrix_changed = true;
129 }
130 }
131
132 // Unselect col
133 unselect_col(current_col);
134
135 return matrix_changed;
136}
137
138void matrix_init_custom(void) {
139 // initialize key pins
140 init_pins();
141}
142
143bool matrix_scan_custom(matrix_row_t current_matrix[])
144{
145 bool changed = false;
146
147 // Set row, read cols
148 for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
149 changed |= read_cols_on_row(current_matrix, current_row);
150 }
151 //else
152 // Set col, read rows
153 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
154 changed |= read_rows_on_col(current_matrix, current_col);
155 }
156
157 return changed;
158}
diff --git a/keyboards/gl516/j73gl/readme.md b/keyboards/gl516/j73gl/readme.md
new file mode 100644
index 000000000..b6f1ebdc2
--- /dev/null
+++ b/keyboards/gl516/j73gl/readme.md
@@ -0,0 +1,27 @@
1# j73gl
2
3![j73gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911015520.png)
4
5This is 73 keys Japanese style keyboard.
6Use the GL516 case.
7
8* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
9* Hardware Supported: j73gl PCB, Pro Micro
10* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple), [yushakobo Shop](https://shop.yushakobo.jp/products/3342)
11
12Make example for this keyboard (after setting up your build environment):
13
14 make gl516/j73gl:default
15
16## Bootloader
17
18Enter the bootloader in 3 ways:
19
20* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
21* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
22* **Keycode in layout**: Press the key mapped to `RESET` if it is available
23
24See 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).
25
26[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
27
diff --git a/keyboards/gl516/j73gl/rules.mk b/keyboards/gl516/j73gl/rules.mk
new file mode 100644
index 000000000..a7521a0e4
--- /dev/null
+++ b/keyboards/gl516/j73gl/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19
20CUSTOM_MATRIX = lite
21
22SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/gl516/n51gl/config.h b/keyboards/gl516/n51gl/config.h
new file mode 100644
index 000000000..ea50fcfa1
--- /dev/null
+++ b/keyboards/gl516/n51gl/config.h
@@ -0,0 +1,67 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x04D8
24#define PRODUCT_ID 0xE8CF
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Salicylic_Acid
27#define PRODUCT n51gl
28
29/* key matrix size */
30#define MATRIX_ROWS 8
31#define MATRIX_COLS 7
32
33// wiring of each half
34#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
35#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
36#define UNUSED_PINS
37
38#define ENCODERS_PAD_A { D7 }
39#define ENCODERS_PAD_B { E6 }
40#define ENCODER_RESOLUTION 3
41
42/* Set 0 if debouncing isn't needed */
43#define DEBOUNCE 5
44
45/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
46#define LOCKING_SUPPORT_ENABLE
47/* Locking resynchronize hack */
48#define LOCKING_RESYNC_ENABLE
49
50/* ws2812 RGB LED */
51#define RGB_DI_PIN D3
52
53#ifndef RGBLED_NUM
54 #define RGBLED_NUM 15
55#endif
56
57#define RGBLIGHT_EFFECT_BREATHING
58#define RGBLIGHT_EFFECT_RAINBOW_MOOD
59#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
60#define RGBLIGHT_EFFECT_SNAKE
61#define RGBLIGHT_EFFECT_KNIGHT
62#define RGBLIGHT_EFFECT_CHRISTMAS
63#define RGBLIGHT_EFFECT_STATIC_GRADIENT
64#define RGBLIGHT_EFFECT_RGB_TEST
65#define RGBLIGHT_EFFECT_ALTERNATING
66#define RGBLIGHT_EFFECT_TWINKLE
67
diff --git a/keyboards/gl516/n51gl/info.json b/keyboards/gl516/n51gl/info.json
new file mode 100644
index 000000000..eb8d63982
--- /dev/null
+++ b/keyboards/gl516/n51gl/info.json
@@ -0,0 +1,63 @@
1{
2 "keyboard_name": "n51gl",
3 "url": "https://salicylic-acid3.hatenablog.com/",
4 "maintainer": "Salicylic_acid3",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"0,0", "x":0, "y":0},
9 {"label":"0,1", "x":1.25, "y":0},
10 {"label":"4,0", "x":8.25, "y":0},
11 {"label":"4,1", "x":9.25, "y":0},
12 {"label":"4,2", "x":10.25, "y":0},
13 {"label":"4,3", "x":11.25, "y":0},
14 {"label":"4,4", "x":12.25, "y":0},
15 {"label":"4,5", "x":13.25, "y":0},
16 {"label":"4,6", "x":14.25, "y":0},
17 {"label":"1,1", "x":0.25, "y":1, "w":1.75},
18 {"label":"1,2", "x":2, "y":1},
19 {"label":"5,0", "x":8.5, "y":1},
20 {"label":"5,1", "x":9.5, "y":1},
21 {"label":"5,2", "x":10.5, "y":1},
22 {"label":"5,3", "x":11.5, "y":1},
23 {"label":"5,4", "x":12.5, "y":1},
24 {"label":"5,5", "x":13.5, "y":1},
25 {"label":"5,6", "x":14.5, "y":1},
26 {"label":"2,1", "x":0, "y":2, "w":1.75},
27 {"label":"2,2", "x":1.75, "y":2},
28 {"label":"2,0", "x":7.25, "y":2},
29 {"label":"6,0", "x":8.75, "y":2},
30 {"label":"6,1", "x":9.75, "y":2},
31 {"label":"6,2", "x":10.75, "y":2},
32 {"label":"6,3", "x":11.75, "y":2},
33 {"label":"6,4", "x":12.75, "y":2},
34 {"label":"6,5", "x":13.75, "y":2},
35 {"label":"6,6", "x":14.75, "y":2},
36 {"label":"3,1", "x":0.25, "y":3, "w":1.25},
37 {"label":"3,2", "x":1.5, "y":3, "w":1.25},
38 {"label":"7,0", "x":8.5, "y":3},
39 {"label":"7,1", "x":9.5, "y":3, "w":1.25},
40 {"label":"7,2", "x":10.75, "y":3},
41 {"label":"7,4", "x":12.75, "y":3},
42 {"label":"7,5", "x":13.75, "y":3},
43 {"label":"7,6", "x":14.75, "y":3},
44 {"label":"0,2", "x":-0.75, "y":4},
45 {"label":"0,3", "x":0.25, "y":4},
46 {"label":"0,4", "x":1.25, "y":4},
47 {"label":"0,5", "x":2.25, "y":4},
48 {"label":"0,6", "x":3.25, "y":4},
49 {"label":"1,3", "x":0, "y":5},
50 {"label":"1,4", "x":1, "y":5},
51 {"label":"1,5", "x":2, "y":5},
52 {"label":"1,6", "x":3, "y":5},
53 {"label":"2,3", "x":-0.25, "y":6},
54 {"label":"2,4", "x":0.75, "y":6},
55 {"label":"2,5", "x":1.75, "y":6},
56 {"label":"2,6", "x":2.75, "y":6},
57 {"label":"3,4", "x":0.75, "y":7},
58 {"label":"3,5", "x":1.75, "y":7, "w":1.25},
59 {"label":"3,6", "x":3, "y":7}
60 ]
61 }
62 }
63}
diff --git a/keyboards/gl516/n51gl/keymaps/default/keymap.c b/keyboards/gl516/n51gl/keymaps/default/keymap.c
new file mode 100644
index 000000000..469626d85
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/default/keymap.c
@@ -0,0 +1,60 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19// Each layer gets a name for readability, which is then used in the keymap matrix below.
20// The underscores don't mean anything - you can have a layer called STUFF or any other name.
21// Layer names don't all need to be of the same length, obviously, and you can also skip them
22// entirely and just use numbers.
23enum layer_number {
24 _QWERTY = 0,
25 _FN,
26};
27
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 [_QWERTY] = LAYOUT(
30 //,--------------------------------------------------------------| |--------------------------------------------------------------.
31 KC_ESC, 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_BSPC,
32 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
33 LT(_FN,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,
34 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
35 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
36 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
37 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT
38 //|--------------------------------------------------------------| |--------------------------------------------------------------'
39 ),
40 [_FN] = LAYOUT(
41 //,--------------------------------------------------------------| |--------------------------------------------------------------.
42 _______, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
43 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
44 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
45 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
47 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
49 //|--------------------------------------------------------------| |--------------------------------------------------------------'
50 )
51};
52
53bool encoder_update_user(uint8_t index, bool clockwise) {
54 if (clockwise) {
55 tap_code16(KC_VOLD);
56 } else {
57 tap_code16(KC_VOLU);
58 }
59 return true;
60}
diff --git a/keyboards/gl516/n51gl/keymaps/salicylic/config.h b/keyboards/gl516/n51gl/keymaps/salicylic/config.h
new file mode 100644
index 000000000..fd96baa81
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/salicylic/config.h
@@ -0,0 +1,22 @@
1/* Copyright 2021 Salicylic_acid3
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/* Select hand configuration */
20
21#define TAPPING_FORCE_HOLD
22#define TAPPING_TERM 180
diff --git a/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
new file mode 100644
index 000000000..819ac94e3
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
@@ -0,0 +1,117 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19#include "keymap_jp.h"
20
21
22// Each layer gets a name for readability, which is then used in the keymap matrix below.
23// The underscores don't mean anything - you can have a layer called STUFF or any other name.
24// Layer names don't all need to be of the same length, obviously, and you can also skip them
25// entirely and just use numbers.
26enum layer_number {
27 _QWERTY = 0,
28 _LOWER,
29 _RAISE,
30 _ADJUST,
31};
32
33const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 [_QWERTY] = LAYOUT_rotary_layer(
35 //,--------------------------------------------------------------| |--------------------------------------------------------------.
36 KC_ESC, 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_BSPC,
37 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
38 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLU, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_BSLS, KC_ENT,
39 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
40 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, KC_UP, KC_RSFT,
41 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
42 JP_ZKHK, KC_LALT,LGUI_T(JP_MHEN),LT(_LOWER,KC_ENT),KC_BSPC, KC_VOLD, KC_DEL,LT(_RAISE,KC_SPC),ALT_T(JP_HENK),KC_LEFT, KC_DOWN, KC_RGHT
43 //|--------------------------------------------------------------| |--------------------------------------------------------------'
44 ),
45 [_LOWER] = LAYOUT_rotary_layer(
46 //,--------------------------------------------------------------| |--------------------------------------------------------------.
47 _______, _______, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_BSPC,
48 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
49 JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, KC_WH_U, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, _______,
50 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
51 JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_BTN3, KC_0, KC_1, KC_2, KC_3, JP_PLUS, _______, _______,
52 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
53 _______, _______, JP_MHEN, MO(_LOWER), _______, KC_WH_D, _______, MO(_RAISE), JP_DOT, _______, _______, _______
54 //|--------------------------------------------------------------| |--------------------------------------------------------------'
55 ),
56
57 [_RAISE] = LAYOUT_rotary_layer(
58 //,--------------------------------------------------------------| |--------------------------------------------------------------.
59 _______, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP,LALT(KC_PSCR),KC_PSCR,
60 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
61 LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_WH_L, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______,
62 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
63 KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, _______, _______,
64 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
65 _______, _______, _______, _______, _______, KC_WH_R, _______, _______, JP_HENK, _______, _______, _______
66 //|--------------------------------------------------------------| |--------------------------------------------------------------'
67 ),
68
69 [_ADJUST] = LAYOUT_rotary_layer(
70 //,--------------------------------------------------------------| |--------------------------------------------------------------.
71 RESET, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LALT(KC_PSCR),KC_PSCR,
72 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
73 KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, RGB_MOD, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, _______,
74 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
75 SFT_T(KC_F12), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, XXXXXXX, _______, _______,
76 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
77 _______, _______, _______, _______, _______,RGB_RMOD, _______, _______, _______, _______, _______, _______
78 //|--------------------------------------------------------------| |--------------------------------------------------------------'
79 )
80};
81
82//A description for expressing the layer position in LED mode.
83layer_state_t layer_state_set_user(layer_state_t state) {
84 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
85#ifdef RGBLIGHT_ENABLE
86 switch (get_highest_layer(state)) {
87 case _LOWER:
88 rgblight_sethsv_at(HSV_BLUE, 0);
89 break;
90 case _RAISE:
91 rgblight_sethsv_at(HSV_RED, 0);
92 break;
93 case _ADJUST:
94 rgblight_sethsv_at(HSV_PURPLE, 0);
95 break;
96 default: // for any other layers, or the default layer
97 rgblight_sethsv_at( 0, 0, 0, 0);
98 break;
99 }
100 rgblight_set_effect_range( 1, 14);
101#endif
102return state;
103}
104
105bool encoder_update_user(uint8_t index, bool clockwise) {
106 keypos_t key;
107 if (clockwise) {
108 key.row = 3;
109 key.col = 0;
110 } else {
111 key.row = 1;
112 key.col = 0;
113 }
114 action_exec((keyevent_t){.key = key, .pressed = true, .time = (timer_read() | 1)});
115 action_exec((keyevent_t){.key = key, .pressed = false, .time = (timer_read() | 1)});
116 return true;
117}
diff --git a/keyboards/gl516/n51gl/keymaps/via/config.h b/keyboards/gl516/n51gl/keymaps/via/config.h
new file mode 100644
index 000000000..fd96baa81
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/config.h
@@ -0,0 +1,22 @@
1/* Copyright 2021 Salicylic_acid3
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/* Select hand configuration */
20
21#define TAPPING_FORCE_HOLD
22#define TAPPING_TERM 180
diff --git a/keyboards/gl516/n51gl/keymaps/via/keymap.c b/keyboards/gl516/n51gl/keymaps/via/keymap.c
new file mode 100644
index 000000000..3ad85edcb
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/keymap.c
@@ -0,0 +1,102 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_rotary_layer(
22 //,--------------------------------------------------------------| |--------------------------------------------------------------.
23 KC_ESC, 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_BSPC,
24 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
25 LT(1,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLU, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
26 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
27 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
28 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
29 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_VOLD, KC_SPC, KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT
30 //|--------------------------------------------------------------| |--------------------------------------------------------------'
31 ),
32 [1] = LAYOUT_rotary_layer(
33 //,--------------------------------------------------------------| |--------------------------------------------------------------.
34 _______, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
35 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
36 _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
37 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
41 //|--------------------------------------------------------------| |--------------------------------------------------------------'
42 ),
43 [2] = LAYOUT_rotary_layer(
44 //,--------------------------------------------------------------| |--------------------------------------------------------------.
45 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
46 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
47 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
48 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
49 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
50 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
51 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
52 //|--------------------------------------------------------------| |--------------------------------------------------------------'
53 ),
54 [3] = LAYOUT_rotary_layer(
55 //,--------------------------------------------------------------| |--------------------------------------------------------------.
56 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
57 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
58 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
59 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
60 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
61 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
62 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
63 //|--------------------------------------------------------------| |--------------------------------------------------------------'
64 )
65};
66
67//A description for expressing the layer position in LED mode.
68layer_state_t layer_state_set_user(layer_state_t state) {
69 state = update_tri_layer_state(state, 2, 1, 3);
70#ifdef RGBLIGHT_ENABLE
71 switch (get_highest_layer(state)) {
72 case 1:
73 rgblight_sethsv_at(HSV_BLUE, 0);
74 break;
75 case 2:
76 rgblight_sethsv_at(HSV_RED, 0);
77 break;
78 case 3:
79 rgblight_sethsv_at(HSV_PURPLE, 0);
80 break;
81 default: // for any other layers, or the default layer
82 rgblight_sethsv_at( 0, 0, 0, 0);
83 break;
84 }
85 rgblight_set_effect_range( 1, 14);
86#endif
87return state;
88}
89
90bool encoder_update_user(uint8_t index, bool clockwise) {
91 keypos_t key;
92 if (clockwise) {
93 key.row = 3;
94 key.col = 0;
95 } else {
96 key.row = 1;
97 key.col = 0;
98 }
99 action_exec((keyevent_t){.key = key, .pressed = true, .time = (timer_read() | 1)});
100 action_exec((keyevent_t){.key = key, .pressed = false, .time = (timer_read() | 1)});
101 return true;
102}
diff --git a/keyboards/gl516/n51gl/keymaps/via/rules.mk b/keyboards/gl516/n51gl/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/n51gl/matrix.c b/keyboards/gl516/n51gl/matrix.c
new file mode 100644
index 000000000..1a97fdfd6
--- /dev/null
+++ b/keyboards/gl516/n51gl/matrix.c
@@ -0,0 +1,158 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include "matrix.h"
18#include "quantum.h"
19
20static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
21static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
22
23static void select_row(uint8_t row)
24{
25 setPinOutput(row_pins[row]);
26 writePinLow(row_pins[row]);
27}
28
29static void unselect_row(uint8_t row)
30{
31 setPinInputHigh(row_pins[row]);
32}
33
34static void unselect_rows(void)
35{
36 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
37 setPinInputHigh(row_pins[x]);
38 }
39}
40
41static void select_col(uint8_t col)
42{
43 setPinOutput(col_pins[col]);
44 writePinLow(col_pins[col]);
45}
46
47static void unselect_col(uint8_t col)
48{
49 setPinInputHigh(col_pins[col]);
50}
51
52static void unselect_cols(void)
53{
54 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
55 setPinInputHigh(col_pins[x]);
56 }
57}
58
59static void init_pins(void) {
60 unselect_rows();
61 unselect_cols();
62 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
63 setPinInputHigh(col_pins[x]);
64 }
65 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
66 setPinInputHigh(row_pins[x]);
67 }
68}
69
70static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
71{
72 // Store last value of row prior to reading
73 matrix_row_t last_row_value = current_matrix[current_row];
74
75 // Clear data in matrix row
76 current_matrix[current_row] = 0;
77
78 // Select row and wait for row selecton to stabilize
79 select_row(current_row);
80 matrix_io_delay();
81
82 // For each col...
83 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
84
85 // Select the col pin to read (active low)
86 uint8_t pin_state = readPin(col_pins[col_index]);
87
88 // Populate the matrix row with the state of the col pin
89 current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
90 }
91
92 // Unselect row
93 unselect_row(current_row);
94
95 return (last_row_value != current_matrix[current_row]);
96}
97
98static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
99{
100 bool matrix_changed = false;
101
102 // Select col and wait for col selecton to stabilize
103 select_col(current_col);
104 matrix_io_delay();
105
106 // For each row...
107 for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
108 {
109 uint8_t tmp = row_index + MATRIX_ROWS/2;
110 // Store last value of row prior to reading
111 matrix_row_t last_row_value = current_matrix[tmp];
112
113 // Check row pin state
114 if (readPin(row_pins[row_index]) == 0)
115 {
116 // Pin LO, set col bit
117 current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
118 }
119 else
120 {
121 // Pin HI, clear col bit
122 current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
123 }
124
125 // Determine if the matrix changed state
126 if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
127 {
128 matrix_changed = true;
129 }
130 }
131
132 // Unselect col
133 unselect_col(current_col);
134
135 return matrix_changed;
136}
137
138void matrix_init_custom(void) {
139 // initialize key pins
140 init_pins();
141}
142
143bool matrix_scan_custom(matrix_row_t current_matrix[])
144{
145 bool changed = false;
146
147 // Set row, read cols
148 for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
149 changed |= read_cols_on_row(current_matrix, current_row);
150 }
151 //else
152 // Set col, read rows
153 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
154 changed |= read_rows_on_col(current_matrix, current_col);
155 }
156
157 return changed;
158}
diff --git a/keyboards/gl516/n51gl/n51gl.c b/keyboards/gl516/n51gl/n51gl.c
new file mode 100644
index 000000000..f13d0cd78
--- /dev/null
+++ b/keyboards/gl516/n51gl/n51gl.c
@@ -0,0 +1,18 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "n51gl.h"
diff --git a/keyboards/gl516/n51gl/n51gl.h b/keyboards/gl516/n51gl/n51gl.h
new file mode 100644
index 000000000..6429b78fd
--- /dev/null
+++ b/keyboards/gl516/n51gl/n51gl.h
@@ -0,0 +1,54 @@
1/*
2Copyright 2021 Salicylic_Acid
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "quantum.h"
21
22#define LAYOUT( \
23 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
24 L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
25 L21, L22, L23, L24, L25, L26, L20, R20, R21, R22, R23, R24, R25, R26, \
26 L31, L32, L34, L35, L36, R30, R31, R32, R34, R35, R36 \
27 ) \
28 { \
29 { L00, L01, L02, L03, L04, L05, L06 }, \
30 { KC_NO, L11, L12, L13, L14, L15, L16 }, \
31 { L20, L21, L22, L23, L24, L25, L26 }, \
32 { KC_NO, L31, L32, KC_NO, L34, L35, L36 }, \
33 { R00, R01, R02, R03, R04, R05, R06 }, \
34 { R10, R11, R12, R13, R14, R15, R16 }, \
35 { R20, R21, R22, R23, R24, R25, R26 }, \
36 { R30, R31, R32, KC_NO, R34, R35, R36 } \
37 }
38
39#define LAYOUT_rotary_layer( \
40 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
41 L11, L12, L13, L14, L15, L16, L10, R10, R11, R12, R13, R14, R15, R16, \
42 L21, L22, L23, L24, L25, L26, L20, R20, R21, R22, R23, R24, R25, R26, \
43 L31, L32, L34, L35, L36, L30, R30, R31, R32, R34, R35, R36 \
44 ) \
45 { \
46 { L00, L01, L02, L03, L04, L05, L06 }, \
47 { L10, L11, L12, L13, L14, L15, L16 }, \
48 { L20, L21, L22, L23, L24, L25, L26 }, \
49 { L30, L31, L32, KC_NO, L34, L35, L36 }, \
50 { R00, R01, R02, R03, R04, R05, R06 }, \
51 { R10, R11, R12, R13, R14, R15, R16 }, \
52 { R20, R21, R22, R23, R24, R25, R26 }, \
53 { R30, R31, R32, KC_NO, R34, R35, R36 } \
54 }
diff --git a/keyboards/gl516/n51gl/readme.md b/keyboards/gl516/n51gl/readme.md
new file mode 100644
index 000000000..916b8ff67
--- /dev/null
+++ b/keyboards/gl516/n51gl/readme.md
@@ -0,0 +1,27 @@
1# n51gl
2
3![n51gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911015705.png)
4
5This is 51 keys Custom keyboard.
6Use the GL516 case.
7
8* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
9* Hardware Supported: nknl7 PCB, Pro Micro
10* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple)
11
12Make example for this keyboard (after setting up your build environment):
13
14 make gl516/n51gl:default
15
16## Bootloader
17
18Enter the bootloader in 3 ways:
19
20* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
21* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
22* **Keycode in layout**: Press the key mapped to `RESET` if it is available
23
24See 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).
25
26[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
27
diff --git a/keyboards/gl516/n51gl/rules.mk b/keyboards/gl516/n51gl/rules.mk
new file mode 100644
index 000000000..6279bfb0e
--- /dev/null
+++ b/keyboards/gl516/n51gl/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19ENCODER_ENABLE = yes
20CUSTOM_MATRIX = lite
21
22SRC += matrix.c \ No newline at end of file