mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-30 12:47:37 +06:00
87317a3af6
* [Keyboard] GH60 v1.3 Support * clean up info.json Update key sizes and positioning. * add readme * add image to readme * fix up info.json LAYOUT_all * add LAYOUT_60_ansi I'm guessing at this based on a photo of the PCB. Chances are high that this isn't fully functional. * add matrix block comment to v1p3.h * add default_ansi keymap * add keymap readme files * fix LAYOUT_60_ansi macro * enable 60_ansi Community Layout support * add layouts for 60_ansi_arrow Add LAYOUT_60_ansi_arrow and LAYOUT_60_ansi_arrow_split_bs macros. (The user helping me test runs the split Backspace variant.) * add Tsangan, HHKB, and 64_ansi layout macros * add factory keymaps and layout info * update copyright headers I mean... if someone's gotta "own" this code... * fix broken factory_* keymaps
168 lines
14 KiB
C
168 lines
14 KiB
C
/* Copyright 2020 noroadsleft
|
|
*
|
|
* 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 "quantum.h"
|
|
|
|
/*
|
|
* So... to be perfectly honest, I'm guessing at these based on a KBFirmware
|
|
* JSON file and photos of the PCB from a user on QMK Discord.
|
|
*
|
|
* This board has the most unusual matrix wiring I've seen on any mechanical
|
|
* keyboard PCB. The 2u Backspace doesn't share its matrix position with either
|
|
* of the keys used in a split Backspace. Left GUI and Left Alt are on
|
|
* different columns depending on how large the Left Ctrl key is (which could be
|
|
* as wide as 1.75u). I don't have much idea what's going on in the bottom right
|
|
* corner. Pretty much everything in the drawings below is basically a
|
|
* semi-educated guess.
|
|
*
|
|
* Sorry if you're coming in here after the fact. I don't have the PCB on-hand.
|
|
*
|
|
* - noroadsleft
|
|
*
|
|
* ┌───────┐
|
|
* 2u Backspace │0E │
|
|
* └───────┘
|
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ANSI Enter ISO Enter
|
|
* ANSI LSft │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0F │ ┌─────┐ ┌─────┐
|
|
* ┌────────┐ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │1D │ │2D │
|
|
* │30 │ ─┐ │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ ┌──┴─────┤ ┌──┴┐ │
|
|
* └────────┘ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ │2D │ │2C │ │
|
|
* ISO LSft │ │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ └────────┘ └───┴────┘
|
|
* ┌────┬───┐ │ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ ┌──────────┐
|
|
* │30 │31 │ ─┼> │LSft │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │3D │3F │ │3D │ ANSI RSft
|
|
* └────┴───┘ │ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └──────────┘
|
|
* 2u LSft │ │40 │41 │43 │48 │4A │4B │4C │4E │4F │ ┌───┬───┬───┐
|
|
* ┌───────┐ │ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ │3B │3D │3F │ 3x1u "RSft"
|
|
* │30 │ ─┘ └───┴───┴───┘
|
|
* └───────┘ ┌──────┬───┐
|
|
* │3E │3F │ HHKB RSft
|
|
* └──────┴───┘
|
|
* ┌──────┬────┬────┬────┬───────────┬────┬────┬───┬───┬───┬───┐
|
|
* │40 │42 │44 │45 │48 │49 │4A │4B │4C │4E │4F │ Minila
|
|
* └──────┴────┴────┴────┴───────────┴────┴────┴───┴───┴───┴───┘
|
|
* ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐
|
|
* │40 │41 │43 │48 │4A │4B │4D │4F │ Standard
|
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
|
* ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
|
* │40 │41 │43 │48 │4B │4D │4F │ Tsangan/HHKB
|
|
* └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
|
* ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
|
|
* │40 │41 │43 │48 │4B │4C │4E │4F │
|
|
* └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
|
|
* ┌─────┬───┬─────┬───────────────────────┬─────┬─────┬───┬───┐
|
|
* │40 │41 │43 │48 │4A │4C │4E │4F │
|
|
* └─────┴───┴─────┴───────────────────────┴─────┴─────┴───┴───┘
|
|
*/
|
|
|
|
#define LAYOUT_all( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
|
|
K40, K41, K42, K43, K44, K45, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO }, \
|
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
|
|
{ K40, K41, K42, K43, K44, K45, KC_NO, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
|
|
}
|
|
|
|
#define LAYOUT_60_ansi( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
|
K40, K41, K43, K48, K4A, K4B, K4D, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO }, \
|
|
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, KC_NO, K4D, KC_NO, K4F }, \
|
|
}
|
|
|
|
#define LAYOUT_60_ansi_arrow( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3F, \
|
|
K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, KC_NO, K3F }, \
|
|
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
|
|
}
|
|
|
|
#define LAYOUT_60_ansi_arrow_split_bs( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3F, \
|
|
K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, KC_NO, K3F }, \
|
|
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
|
|
}
|
|
|
|
#define LAYOUT_60_ansi_tsangan( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
|
K40, K41, K43, K48, K4B, K4D, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO }, \
|
|
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO, K4F }, \
|
|
}
|
|
|
|
#define LAYOUT_60_hhkb( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
|
|
K41, K43, K48, K4B, K4D \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, KC_NO, K3E, K3F }, \
|
|
{ KC_NO, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO, KC_NO }, \
|
|
}
|
|
|
|
#define LAYOUT_64_ansi( \
|
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
|
|
K40, K41, K43, K48, K4A, K4B, K4C, K4E, K4F \
|
|
) { \
|
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \
|
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
|
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F }, \
|
|
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, KC_NO, KC_NO, K48, KC_NO, K4A, K4B, K4C, KC_NO, K4E, K4F }, \
|
|
}
|