Skip to content

Commit

Permalink
add Skyloong/GK61_V1 keyboard (qmk#21364)
Browse files Browse the repository at this point in the history
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: James Young <[email protected]>
Fix and Matrix Diagram (qmk#21255)
  • Loading branch information
JZ-Skyloong authored and Nathan committed Feb 11, 2024
1 parent 60ee8a6 commit 6dad599
Show file tree
Hide file tree
Showing 10 changed files with 660 additions and 0 deletions.
39 changes: 39 additions & 0 deletions keyboards/skyloong/gk61/v1/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

/*
* RGB matrix driver config (CKLED2001)
*
* This is a 7-bit address, that gets left-shifted and bit 0
* set to 0 for write, 1 for read (as per I2C protocol)
* The address will vary depending on your wiring:
* 00 <-> GND
* 01 <-> SCL
* 10 <-> SDA
* 11 <-> VCC
* ADDR/CS represents A1:A0 of the 7-bit address.
* The result is: 0b11101(ADDR/CS)
*/
#define DRIVER_ADDR_1 0b1110100

#define DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 64

#define RGB_MATRIX_FRAMEBUFFER_EFFECTS //Enable frame effects
#define RGB_MATRIX_KEYPRESSES //Reacts to keypress
#define RGB_DISABLE_WHEN_USB_SUSPENDED //turn off effects when suspended
#define SDB C1
21 changes: 21 additions & 0 deletions keyboards/skyloong/gk61/v1/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#define HAL_USE_I2C TRUE

#include_next <halconf.h>

331 changes: 331 additions & 0 deletions keyboards/skyloong/gk61/v1/info.json

Large diffs are not rendered by default.

47 changes: 47 additions & 0 deletions keyboards/skyloong/gk61/v1/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/


#include QMK_KEYBOARD_H

// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN,
};


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT_all(
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM , KC_DOT, KC_SLASH, KC_RSFT,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1)
),
/* Fn+ */
[_FN] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
RGB_TOG, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE,
RGB_MOD, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MNXT, KC_MPLY,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_UP, KC_RSFT,
KC_CALC, KC_MAIL, KC_NO, KC_SPC, KC_SPC, KC_SPC, KC_LEFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO
),

};


47 changes: 47 additions & 0 deletions keyboards/skyloong/gk61/v1/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/


#include QMK_KEYBOARD_H

// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN,
};


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT_all(
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM , KC_DOT, KC_SLASH, KC_RSFT,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1)
),
/* Fn+ */
[_FN] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
RGB_TOG, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE,
RGB_MOD, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MNXT, KC_MPLY,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_UP, KC_RSFT,
KC_CALC, KC_MAIL, KC_NO, KC_SPC, KC_SPC, KC_SPC, KC_LEFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO
),

};


1 change: 1 addition & 0 deletions keyboards/skyloong/gk61/v1/keymaps/via/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VIA_ENABLE = yes
21 changes: 21 additions & 0 deletions keyboards/skyloong/gk61/v1/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#include_next <mcuconf.h>

#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE
33 changes: 33 additions & 0 deletions keyboards/skyloong/gk61/v1/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# GK61

![GK61](https://i.imgur.com/hEufouph.jpg)

## The PCB features:
* QMK & VIA compatibility
* RGB Matrix backlight


The following is the QMK Firmware for the Destop 60% keylayout - designed in Dongguan Jizhi Electronic Technology Co., Ltd
* Keyboard Maintainer: [JZ-Skyloong](https://github.com/JZ-Skyloong)
* Hardware Supported: DestopPCB for Skyloong keylayout 60%, STM32F103C8T6
* Hardware Availability: http://www.skyloong.com.cn

Make example for this keyboard (after setting up your build environment):

make skyloong/gk61/v1:default
make skyloong/gk61/v1:via

Flashing example for this keyboard:

make skyloong/gk61/v1:default:flash
make skyloong/gk61/v1:via:flash

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

## Bootloader

Enter the bootloader in 3 ways:

* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
1 change: 1 addition & 0 deletions keyboards/skyloong/gk61/v1/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank
119 changes: 119 additions & 0 deletions keyboards/skyloong/gk61/v1/v1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
/* Copyright 2021 JZ-Skyloong (@JZ-Skyloong)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"

#ifdef RGB_MATRIX_ENABLE

const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, B_1, A_1},
{0, C_2, B_2, A_2},
{0, C_3, B_3, A_3},
{0, C_4, B_4, A_4},
{0, C_5, B_5, A_5},
{0, C_6, B_6, A_6},
{0, C_7, B_7, A_7},
{0, C_8, B_8, A_8},
{0, C_9, B_9, A_9},
{0, C_10, B_10, A_10},
{0, C_11, B_11, A_11},
{0, C_12, B_12, A_12},
{0, C_13, B_13, A_13},
{0, C_14, B_14, A_14},


{0, F_1, E_1, D_1},
{0, F_2, E_2, D_2},
{0, F_3, E_3, D_3},
{0, F_4, E_4, D_4},
{0, F_5, E_5, D_5},
{0, F_6, E_6, D_6},
{0, F_7, E_7, D_7},
{0, F_8, E_8, D_8},
{0, F_9, E_9, D_9},
{0, F_10, E_10, D_10},
{0, F_11, E_11, D_11},
{0, F_12, E_12, D_12},
{0, F_13, E_13, D_13},
{0, F_14, E_14, D_14},


{0, I_1, H_1, G_1},
{0, I_2, H_2, G_2},
{0, I_3, H_3, G_3},
{0, I_4, H_4, G_4},
{0, I_5, H_5, G_5},
{0, I_6, H_6, G_6},
{0, I_7, H_7, G_7},
{0, I_8, H_8, G_8},
{0, I_9, H_9, G_9},
{0, I_10, H_10, G_10},
{0, I_11, H_11, G_11},
{0, I_12, H_12, G_12},
{0, I_13, H_13, G_13},



{0, L_1, K_1, J_1},
{0, L_2, K_2, J_2},
{0, L_3, K_3, J_3},
{0, L_4, K_4, J_4},
{0, L_5, K_5, J_5},
{0, L_6, K_6, J_6},
{0, L_7, K_7, J_7},
{0, L_8, K_8, J_8},
{0, L_9, K_9, J_9},
{0, L_10, K_10, J_10},
{0, L_11, K_11, J_11},
{0, L_13, K_13, J_13},

{0, L_15, K_15, J_15},
{0, L_16, K_16, J_16},
{0, I_15, H_15, G_15},
{0, I_16, H_16, G_16},
{0, F_15, E_15, D_15},
{0, F_16, E_16, D_16},
{0, C_15, B_15, A_15},
{0, C_16, B_16, A_16},
{0, I_14, H_14, G_14},
{0, L_12, K_12, J_12},
{0, L_14, K_14, J_14},


};
#endif // RGB_MATRIX_ENABLE

void suspend_power_down_kb() {
writePinLow(SDB);

suspend_power_down_user();
}

void suspend_wakeup_init_kb() {
writePinHigh(SDB);

suspend_wakeup_init_user();
}

void board_init(void) {
setPinOutput(SDB);
writePinHigh(SDB);
}

0 comments on commit 6dad599

Please sign in to comment.