mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			222 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright 2022 PixelSpace 295033045@qq.com
 | |
|  *
 | |
|  * 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"
 | |
| 
 | |
| #define XXX KC_NO
 | |
| 
 | |
| /*              ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐    ┌───────┐
 | |
|  *              │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │    │0D     │ 2u Backspace
 | |
|  *              ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤    └─┬─────┤
 | |
|  *              │10   │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D   │1F │      │     │
 | |
|  *  2.25u       ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤   ┌──┴┐1D  │ ISO Enter
 | |
|  *  LShift      │20    │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C      │2F │   │2C │    │
 | |
|  * ┌────────┐   ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴┬──┴────┬───┼───┤   └───┴────┘
 | |
|  * │30      │   │30  │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B│3C     │3D │3F │
 | |
|  * └────────┘   ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┼───┬───┼───┼───┤
 | |
|  *              │40  │41  │42  │45                      │49 │4A │4B │4C │4D │4F │
 | |
|  *              └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
 | |
|  *              ┌────┬────┬────┬────────────────────────┬────┬────┐
 | |
|  *              │40  │41  │42  │45                      │49  │4A  │ Blocker
 | |
|  *              └────┴────┴────┴────────────────────────┴────┴────┘
 | |
|  *              ┌─────┬───┬─────┬───────────────────────────┬─────┐
 | |
|  *              │40   │41 │42   │45                         │4A   │ Tsangan
 | |
|  *              └─────┴───┴─────┴───────────────────────────┴─────┘
 | |
|  */
 | |
| 
 | |
| #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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi( \
 | |
|     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, K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,      K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi_split_bs( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi_blocker( \
 | |
|     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, K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,      K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A,      K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi_blocker_split_bs( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A,      K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi_blocker_tsangan( \
 | |
|     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, K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,      K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                     K4A,      K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_ansi_blocker_tsangan_split_bs( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           K2F, \
 | |
|     K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                     K4A,      K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso_split_bs( \
 | |
|     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,           K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D,      K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso_blocker( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A,      K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso_blocker_split_bs( \
 | |
|     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,           K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D,      K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                K49, K4A,      K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso_blocker_tsangan( \
 | |
|     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,      K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
 | |
|     K40, K41, K42,           K45,                     K4A,      K4C, K4D, K4F  \
 | |
| ) { \
 | |
|     { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
 | |
|     { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | |
| 
 | |
| #define LAYOUT_65_iso_blocker_tsangan_split_bs( \
 | |
|     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,           K1F, \
 | |
|     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D,      K2F, \
 | |
|     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      K3F, \
 | |
|     K40, K41, K42,           K45,                     K4A,      K4C, K4D,      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, XXX, K1F }, \
 | |
|     { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
 | |
|     { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
 | |
|     { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
 | |
| }
 | 
