Add Matrix 8XV1.2 OG rev1 PCB (#11614)
* add v1 12og pcb * update * matrix changes for testing * Update matrix.c * finalized files * rename board versions * update readmes * typo in readme * fix board filenames * Update keyboards/matrix/m12og/rev1/rev1.c Co-authored-by: Drashna Jaelre <drashna@live.com> * change function * update halconf and chconf * merge master * Update readme.md * Update readme.md * Update readme.md Co-authored-by: Drashna Jaelre <drashna@live.com>
This commit is contained in:
		
							parent
							
								
									2e90ef0536
								
							
						
					
					
						commit
						0ef145db15
					
				
					 26 changed files with 1008 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -1,16 +1,12 @@
 | 
			
		|||
# Matrix 8XV1.2 OG keyboard
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
This was the Matrix 8XV1.2 OG keyboard made by the Matrix team. Note: this firmware only support ISO/ANSI version,
 | 
			
		||||
and DO NOT support the 8XV1.2 OG ANSI only version.
 | 
			
		||||
This was the Matrix 8XV1.2 OG keyboard made by the Matrix team.  
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [astro](https://github.com/yulei)
 | 
			
		||||
* Hardware Supported: Matrix 8XV1.2 OG (ISO/ANSI) keyboard
 | 
			
		||||
* Hardware Availability: Matrix Lab
 | 
			
		||||
There are two versions of the PCB available.
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make matrix/m12og:default
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
|Version|Features                                             |
 | 
			
		||||
|-------|-----------------------------------------------------|
 | 
			
		||||
|rev1   |Green/Yellow PCB / ARM STM32 controller / ANSI only  |
 | 
			
		||||
|rev2   |White PCB / Atmel AVR controller / ANSI/ISO          |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										50
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
/*
 | 
			
		||||
    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 | 
			
		||||
 | 
			
		||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
    you may not use this file except in compliance with the License.
 | 
			
		||||
    You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
    See the License for the specific language governing permissions and
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <hal.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   PAL setup.
 | 
			
		||||
 * @details Digital I/O ports static configuration as defined in @p board.h.
 | 
			
		||||
 *          This variable is used by the HAL when initializing the PAL driver.
 | 
			
		||||
 */
 | 
			
		||||
#if HAL_USE_PAL || defined(__DOXYGEN__)
 | 
			
		||||
const PALConfig pal_default_config =
 | 
			
		||||
{
 | 
			
		||||
  {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
 | 
			
		||||
  {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
 | 
			
		||||
  {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
 | 
			
		||||
  {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
 | 
			
		||||
  {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Early initialization code.
 | 
			
		||||
 * This initialization must be performed just after stack setup and before
 | 
			
		||||
 * any other initialization.
 | 
			
		||||
 */
 | 
			
		||||
void __early_init(void) {
 | 
			
		||||
  stm32_clock_init();
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Board-specific initialization code.
 | 
			
		||||
 */
 | 
			
		||||
void boardInit(void) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										142
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,142 @@
 | 
			
		|||
/*
 | 
			
		||||
    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 | 
			
		||||
 | 
			
		||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
    you may not use this file except in compliance with the License.
 | 
			
		||||
    You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
    See the License for the specific language governing permissions and
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _BOARD_H_
 | 
			
		||||
#define _BOARD_H_
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Board identifier.
 | 
			
		||||
 */
 | 
			
		||||
#define BOARD_M12OG
 | 
			
		||||
#define BOARD_NAME              "Matrix 12og keyboard"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Board frequencies.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_LSECLK            32768
 | 
			
		||||
#define STM32_HSECLK            8000000
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
 | 
			
		||||
 *
 | 
			
		||||
 * Only xB (128KB Flash) is defined, but it's identical to the
 | 
			
		||||
 * x8 version (64KB Flash) except for the Flash region size in the
 | 
			
		||||
 * linker script. For x8 parts use xB here and change to the x8 linker
 | 
			
		||||
 * script in the project Makefile.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32F103xB
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * IO pins assignments
 | 
			
		||||
 *
 | 
			
		||||
 * numbering is sorted by onboard/connectors, as from the schematics in
 | 
			
		||||
 * http://www.vcc-gnd.com/read.php?tid=369
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* on-board */
 | 
			
		||||
#define GPIOA_USBDM             11      // pin 8
 | 
			
		||||
#define GPIOA_USBDP             12      // pin 9
 | 
			
		||||
 | 
			
		||||
#define GPIOC_OSC32_IN          14
 | 
			
		||||
#define GPIOC_OSC32_OUT         15
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * I/O ports initial setup, this configuration is established soon after reset
 | 
			
		||||
 * in the initialization code.
 | 
			
		||||
 *
 | 
			
		||||
 * The digits have the following meaning:
 | 
			
		||||
 *   0 - Analog input.
 | 
			
		||||
 *   1 - Push Pull output 10MHz.
 | 
			
		||||
 *   2 - Push Pull output 2MHz.
 | 
			
		||||
 *   3 - Push Pull output 50MHz.
 | 
			
		||||
 *   4 - Digital input.
 | 
			
		||||
 *   5 - Open Drain output 10MHz.
 | 
			
		||||
 *   6 - Open Drain output 2MHz.
 | 
			
		||||
 *   7 - Open Drain output 50MHz.
 | 
			
		||||
 *   8 - Digital input with PullUp or PullDown resistor depending on ODR.
 | 
			
		||||
 *   9 - Alternate Push Pull output 10MHz.
 | 
			
		||||
 *   A - Alternate Push Pull output 2MHz.
 | 
			
		||||
 *   B - Alternate Push Pull output 50MHz.
 | 
			
		||||
 *   C - Reserved.
 | 
			
		||||
 *   D - Alternate Open Drain output 10MHz.
 | 
			
		||||
 *   E - Alternate Open Drain output 2MHz.
 | 
			
		||||
 *   F - Alternate Open Drain output 50MHz.
 | 
			
		||||
 * Please refer to the STM32 Reference Manual for details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Port A setup.
 | 
			
		||||
 * Everything input with pull-up except:
 | 
			
		||||
 */
 | 
			
		||||
#define VAL_GPIOACRL            0x88888888      /*  PA7...PA0 */
 | 
			
		||||
#define VAL_GPIOACRH            0x88888888      /* PA15...PA8 */
 | 
			
		||||
#define VAL_GPIOAODR            0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Port B setup.
 | 
			
		||||
 * Everything input with pull-up except:
 | 
			
		||||
 */
 | 
			
		||||
#define VAL_GPIOBCRL            0x88888888      /*  PB7...PB0 */
 | 
			
		||||
#define VAL_GPIOBCRH            0x88888888      /* PB15...PB8 */
 | 
			
		||||
#define VAL_GPIOBODR            0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Port C setup.
 | 
			
		||||
 * Everything input with pull-up except:
 | 
			
		||||
 */
 | 
			
		||||
#define VAL_GPIOCCRL            0x88888888      /*  PC7...PC0 */
 | 
			
		||||
#define VAL_GPIOCCRH            0x88888888      /* PC15...PC8 */
 | 
			
		||||
#define VAL_GPIOCODR            0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Port D setup.
 | 
			
		||||
 * Everything input with pull-up except:
 | 
			
		||||
 * PD0  - Normal input (XTAL).
 | 
			
		||||
 * PD1  - Normal input (XTAL).
 | 
			
		||||
 */
 | 
			
		||||
#define VAL_GPIODCRL            0x88888844      /*  PD7...PD0 */
 | 
			
		||||
#define VAL_GPIODCRH            0x88888888      /* PD15...PD8 */
 | 
			
		||||
#define VAL_GPIODODR            0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Port E setup.
 | 
			
		||||
 * Everything input with pull-up except:
 | 
			
		||||
 */
 | 
			
		||||
#define VAL_GPIOECRL            0x88888888      /*  PE7...PE0 */
 | 
			
		||||
#define VAL_GPIOECRH            0x88888888      /* PE15...PE8 */
 | 
			
		||||
#define VAL_GPIOEODR            0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * USB bus activation macro, required by the USB driver.
 | 
			
		||||
 */
 | 
			
		||||
#define usb_lld_connect_bus(usbp)	/* always connected */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * USB bus de-activation macro, required by the USB driver.
 | 
			
		||||
 */
 | 
			
		||||
#define usb_lld_disconnect_bus(usbp)	/* always connected */
 | 
			
		||||
 | 
			
		||||
#if !defined(_FROM_ASM_)
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
  void boardInit(void);
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* _FROM_ASM_ */
 | 
			
		||||
 | 
			
		||||
#endif /* _BOARD_H_ */
 | 
			
		||||
							
								
								
									
										5
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/matrix/m12og/rev1/boards/m12og_v1/board.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
# List of all the board related files.
 | 
			
		||||
BOARDSRC = $(BOARD_PATH)/boards/m12og_v1/board.c
 | 
			
		||||
 | 
			
		||||
# Required include directories
 | 
			
		||||
BOARDINC = $(BOARD_PATH)/boards/m12og_v1
 | 
			
		||||
							
								
								
									
										40
									
								
								keyboards/matrix/m12og/rev1/chconf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								keyboards/matrix/m12og/rev1/chconf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
/* Copyright 2020 QMK
 | 
			
		||||
 *
 | 
			
		||||
 * 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/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This file was auto-generated by:
 | 
			
		||||
 *    `qmk chibios-confmigrate -i keyboards/matrix/m12og/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_ST_TIMEDELTA 0
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_REGISTRY TRUE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_WAITEXIT TRUE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_CONDVARS TRUE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_MESSAGES TRUE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_MAILBOXES TRUE
 | 
			
		||||
 | 
			
		||||
#define CH_CFG_USE_HEAP TRUE
 | 
			
		||||
 | 
			
		||||
#include_next <chconf.h>
 | 
			
		||||
							
								
								
									
										54
									
								
								keyboards/matrix/m12og/rev1/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								keyboards/matrix/m12og/rev1/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 kb-elmo<mail@elmo.space>
 | 
			
		||||
 | 
			
		||||
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 "config_common.h"
 | 
			
		||||
 | 
			
		||||
/* USB Device descriptor parameter */
 | 
			
		||||
#define VENDOR_ID    0x4D58
 | 
			
		||||
#define PRODUCT_ID   0x0369
 | 
			
		||||
#define DEVICE_VER   0x0001
 | 
			
		||||
#define MANUFACTURER matrix
 | 
			
		||||
#define PRODUCT      m12og_v1
 | 
			
		||||
 | 
			
		||||
/* key matrix size */
 | 
			
		||||
#define MATRIX_ROWS 6
 | 
			
		||||
#define MATRIX_COLS 16
 | 
			
		||||
 | 
			
		||||
/* Keyboard Matrix Assignments */
 | 
			
		||||
 | 
			
		||||
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5 }
 | 
			
		||||
#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15 }
 | 
			
		||||
 | 
			
		||||
/* COL2ROW, ROW2COL */
 | 
			
		||||
#define DIODE_DIRECTION COL2ROW
 | 
			
		||||
 | 
			
		||||
/* Status LEDs */
 | 
			
		||||
#define LED_CAPS_LOCK_PIN B6
 | 
			
		||||
#define LED_SCROLL_LOCK_PIN B5
 | 
			
		||||
 | 
			
		||||
/* RGB */
 | 
			
		||||
#define RGB_DI_PIN B8
 | 
			
		||||
#define RGBLIGHT_ANIMATIONS
 | 
			
		||||
 | 
			
		||||
#define RGBLED_NUM 16
 | 
			
		||||
#define RGBLIGHT_SLEEP
 | 
			
		||||
#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB
 | 
			
		||||
 | 
			
		||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 | 
			
		||||
#define DEBOUNCE 5
 | 
			
		||||
							
								
								
									
										26
									
								
								keyboards/matrix/m12og/rev1/halconf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								keyboards/matrix/m12og/rev1/halconf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
/* Copyright 2020 QMK
 | 
			
		||||
 *
 | 
			
		||||
 * 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/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This file was auto-generated by:
 | 
			
		||||
 *    `qmk chibios-confmigrate -i keyboards/matrix/m12og/rev1/halconf.h -r platforms/chibios/common/configs/halconf.h`
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#define HAL_USE_PWM TRUE
 | 
			
		||||
 | 
			
		||||
#include_next <halconf.h>
 | 
			
		||||
							
								
								
									
										99
									
								
								keyboards/matrix/m12og/rev1/info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								keyboards/matrix/m12og/rev1/info.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,99 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard_name": "Matrix 8XV1.2 OG rev1",
 | 
			
		||||
    "url": "",
 | 
			
		||||
    "maintainer": "kb-elmo",
 | 
			
		||||
    "width": 18.25,
 | 
			
		||||
    "height": 6.5,
 | 
			
		||||
    "layouts": {
 | 
			
		||||
        "LAYOUT_all": {
 | 
			
		||||
            "layout": [
 | 
			
		||||
                {"label":"Esc", "x":0, "y":0},
 | 
			
		||||
                {"label":"F1", "x":2, "y":0},
 | 
			
		||||
                {"label":"F2", "x":3, "y":0},
 | 
			
		||||
                {"label":"F3", "x":4, "y":0},
 | 
			
		||||
                {"label":"F4", "x":5, "y":0},
 | 
			
		||||
                {"label":"F5", "x":6.5, "y":0},
 | 
			
		||||
                {"label":"F6", "x":7.5, "y":0},
 | 
			
		||||
                {"label":"F7", "x":8.5, "y":0},
 | 
			
		||||
                {"label":"F8", "x":9.5, "y":0},
 | 
			
		||||
                {"label":"F9", "x":11, "y":0},
 | 
			
		||||
                {"label":"F10", "x":12, "y":0},
 | 
			
		||||
                {"label":"F11", "x":13, "y":0},
 | 
			
		||||
                {"label":"F12", "x":14, "y":0},
 | 
			
		||||
                {"label":"PrtSc", "x":15.25, "y":0},
 | 
			
		||||
                {"label":"Scroll Lock", "x":16.25, "y":0},
 | 
			
		||||
                {"label":"Pause", "x":17.25, "y":0},
 | 
			
		||||
                {"label":"~", "x":0, "y":1.5},
 | 
			
		||||
                {"label":"!", "x":1, "y":1.5},
 | 
			
		||||
                {"label":"@", "x":2, "y":1.5},
 | 
			
		||||
                {"label":"#", "x":3, "y":1.5},
 | 
			
		||||
                {"label":"$", "x":4, "y":1.5},
 | 
			
		||||
                {"label":"%", "x":5, "y":1.5},
 | 
			
		||||
                {"label":"^", "x":6, "y":1.5},
 | 
			
		||||
                {"label":"&", "x":7, "y":1.5},
 | 
			
		||||
                {"label":"*", "x":8, "y":1.5},
 | 
			
		||||
                {"label":"(", "x":9, "y":1.5},
 | 
			
		||||
                {"label":")", "x":10, "y":1.5},
 | 
			
		||||
                {"label":"_", "x":11, "y":1.5},
 | 
			
		||||
                {"label":"+", "x":12, "y":1.5},
 | 
			
		||||
                {"label":"Backspace", "x":13, "y":1.5, "w":2},
 | 
			
		||||
                {"label":"Insert", "x":15.25, "y":1.5},
 | 
			
		||||
                {"label":"Home", "x":16.25, "y":1.5},
 | 
			
		||||
                {"label":"PgUp", "x":17.25, "y":1.5},
 | 
			
		||||
                {"label":"Tab", "x":0, "y":2.5, "w":1.5},
 | 
			
		||||
                {"label":"Q", "x":1.5, "y":2.5},
 | 
			
		||||
                {"label":"W", "x":2.5, "y":2.5},
 | 
			
		||||
                {"label":"E", "x":3.5, "y":2.5},
 | 
			
		||||
                {"label":"R", "x":4.5, "y":2.5},
 | 
			
		||||
                {"label":"T", "x":5.5, "y":2.5},
 | 
			
		||||
                {"label":"Y", "x":6.5, "y":2.5},
 | 
			
		||||
                {"label":"U", "x":7.5, "y":2.5},
 | 
			
		||||
                {"label":"I", "x":8.5, "y":2.5},
 | 
			
		||||
                {"label":"O", "x":9.5, "y":2.5},
 | 
			
		||||
                {"label":"P", "x":10.5, "y":2.5},
 | 
			
		||||
                {"label":"{", "x":11.5, "y":2.5},
 | 
			
		||||
                {"label":"}", "x":12.5, "y":2.5},
 | 
			
		||||
                {"label":"|", "x":13.5, "y":2.5, "w":1.5},
 | 
			
		||||
                {"label":"Delete", "x":15.25, "y":2.5},
 | 
			
		||||
                {"label":"End", "x":16.25, "y":2.5},
 | 
			
		||||
                {"label":"PgDn", "x":17.25, "y":2.5},
 | 
			
		||||
                {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
 | 
			
		||||
                {"label":"A", "x":1.75, "y":3.5},
 | 
			
		||||
                {"label":"S", "x":2.75, "y":3.5},
 | 
			
		||||
                {"label":"D", "x":3.75, "y":3.5},
 | 
			
		||||
                {"label":"F", "x":4.75, "y":3.5},
 | 
			
		||||
                {"label":"G", "x":5.75, "y":3.5},
 | 
			
		||||
                {"label":"H", "x":6.75, "y":3.5},
 | 
			
		||||
                {"label":"J", "x":7.75, "y":3.5},
 | 
			
		||||
                {"label":"K", "x":8.75, "y":3.5},
 | 
			
		||||
                {"label":"L", "x":9.75, "y":3.5},
 | 
			
		||||
                {"label":":", "x":10.75, "y":3.5},
 | 
			
		||||
                {"label":"\"", "x":11.75, "y":3.5},
 | 
			
		||||
                {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
 | 
			
		||||
                {"label":"Shift", "x":0, "y":4.5, "w":2.25},
 | 
			
		||||
                {"label":"Z", "x":2.25, "y":4.5},
 | 
			
		||||
                {"label":"X", "x":3.25, "y":4.5},
 | 
			
		||||
                {"label":"C", "x":4.25, "y":4.5},
 | 
			
		||||
                {"label":"V", "x":5.25, "y":4.5},
 | 
			
		||||
                {"label":"B", "x":6.25, "y":4.5},
 | 
			
		||||
                {"label":"N", "x":7.25, "y":4.5},
 | 
			
		||||
                {"label":"M", "x":8.25, "y":4.5},
 | 
			
		||||
                {"label":"<", "x":9.25, "y":4.5},
 | 
			
		||||
                {"label":">", "x":10.25, "y":4.5},
 | 
			
		||||
                {"label":"?", "x":11.25, "y":4.5},
 | 
			
		||||
                {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
 | 
			
		||||
                {"label":"\u2191", "x":16.25, "y":4.5},
 | 
			
		||||
                {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
 | 
			
		||||
                {"label":"Win", "x":1.5, "y":5.5},
 | 
			
		||||
                {"label":"Alt", "x":2.5, "y":5.5, "w":1.5},
 | 
			
		||||
                {"x":4, "y":5.5, "w":7},
 | 
			
		||||
                {"label":"Win", "x":11, "y":5.5, "w":1.5},
 | 
			
		||||
                {"label":"Menu", "x":12.5, "y":5.5},
 | 
			
		||||
                {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5},
 | 
			
		||||
                {"label":"\u2190", "x":15.25, "y":5.5},
 | 
			
		||||
                {"label":"\u2193", "x":16.25, "y":5.5},
 | 
			
		||||
                {"label":"\u2192", "x":17.25, "y":5.5}
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										50
									
								
								keyboards/matrix/m12og/rev1/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								keyboards/matrix/m12og/rev1/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
/* Copyright 2021 kb-elmo<mail@elmo.space>
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [0] = 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, KC_SLCK, KC_PAUS,
 | 
			
		||||
    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,     KC_INS,  KC_HOME, KC_PGUP,
 | 
			
		||||
    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,     KC_DEL,  KC_END,  KC_PGDN,
 | 
			
		||||
    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_SLSH,          KC_RSFT,                       KC_UP,
 | 
			
		||||
    KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                               KC_RALT, MO(1),   KC_LCTL,     KC_LEFT, KC_DOWN, KC_RGHT
 | 
			
		||||
  ),
 | 
			
		||||
  [1] = LAYOUT_all(
 | 
			
		||||
    KC_TRNS,     RGB_TOG, RGB_MOD, RGB_RMOD, KC_TRNS,   RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD,   RGB_SAI, RGB_SAD, RGB_SPI, RGB_SPD,     KC_TRNS, KC_TRNS, KC_TRNS,
 | 
			
		||||
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
 | 
			
		||||
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,  KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
 | 
			
		||||
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,
 | 
			
		||||
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY,          KC_TRNS,                       KC_TRNS,
 | 
			
		||||
    KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                                     KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS
 | 
			
		||||
  )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool led_update_user(led_t led_state) {
 | 
			
		||||
    static uint8_t caps_state = 0;
 | 
			
		||||
    if (caps_state != led_state.caps_lock) {
 | 
			
		||||
        if (led_state.caps_lock) {
 | 
			
		||||
            rgblight_sethsv_noeeprom_cyan();
 | 
			
		||||
            rgblight_mode_noeeprom(1);
 | 
			
		||||
        } else {
 | 
			
		||||
            rgblight_sethsv_noeeprom(5, 255, 255);
 | 
			
		||||
            rgblight_mode_noeeprom(37);
 | 
			
		||||
        }
 | 
			
		||||
        caps_state = led_state.caps_lock;
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										85
									
								
								keyboards/matrix/m12og/rev1/ld/m12og_v1.ld
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								keyboards/matrix/m12og/rev1/ld/m12og_v1.ld
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
/*
 | 
			
		||||
    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 | 
			
		||||
 | 
			
		||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
    you may not use this file except in compliance with the License.
 | 
			
		||||
    You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
    See the License for the specific language governing permissions and
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * STM32F103xB memory setup for use with the matrix 12og mass-storage device bootloader.
 | 
			
		||||
 */
 | 
			
		||||
MEMORY
 | 
			
		||||
{
 | 
			
		||||
    flash0  : org = 0x08018000, len = 128k - 0x18000
 | 
			
		||||
    flash1  : org = 0x00000000, len = 0
 | 
			
		||||
    flash2  : org = 0x00000000, len = 0
 | 
			
		||||
    flash3  : org = 0x00000000, len = 0
 | 
			
		||||
    flash4  : org = 0x00000000, len = 0
 | 
			
		||||
    flash5  : org = 0x00000000, len = 0
 | 
			
		||||
    flash6  : org = 0x00000000, len = 0
 | 
			
		||||
    flash7  : org = 0x00000000, len = 0
 | 
			
		||||
    ram0    : org = 0x20000000, len = 20k
 | 
			
		||||
    ram1    : org = 0x00000000, len = 0
 | 
			
		||||
    ram2    : org = 0x00000000, len = 0
 | 
			
		||||
    ram3    : org = 0x00000000, len = 0
 | 
			
		||||
    ram4    : org = 0x00000000, len = 0
 | 
			
		||||
    ram5    : org = 0x00000000, len = 0
 | 
			
		||||
    ram6    : org = 0x00000000, len = 0
 | 
			
		||||
    ram7    : org = 0x00000000, len = 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* For each data/text section two region are defined, a virtual region
 | 
			
		||||
   and a load region (_LMA suffix).*/
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for exception vectors.*/
 | 
			
		||||
REGION_ALIAS("VECTORS_FLASH", flash0);
 | 
			
		||||
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for constructors and destructors.*/
 | 
			
		||||
REGION_ALIAS("XTORS_FLASH", flash0);
 | 
			
		||||
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for code text.*/
 | 
			
		||||
REGION_ALIAS("TEXT_FLASH", flash0);
 | 
			
		||||
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for read only data.*/
 | 
			
		||||
REGION_ALIAS("RODATA_FLASH", flash0);
 | 
			
		||||
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for various.*/
 | 
			
		||||
REGION_ALIAS("VARIOUS_FLASH", flash0);
 | 
			
		||||
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* Flash region to be used for RAM(n) initialization data.*/
 | 
			
		||||
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* RAM region to be used for Main stack. This stack accommodates the processing
 | 
			
		||||
   of all exceptions and interrupts.*/
 | 
			
		||||
REGION_ALIAS("MAIN_STACK_RAM", ram0);
 | 
			
		||||
 | 
			
		||||
/* RAM region to be used for the process stack. This is the stack used by
 | 
			
		||||
   the main() function.*/
 | 
			
		||||
REGION_ALIAS("PROCESS_STACK_RAM", ram0);
 | 
			
		||||
 | 
			
		||||
/* RAM region to be used for data segment.*/
 | 
			
		||||
REGION_ALIAS("DATA_RAM", ram0);
 | 
			
		||||
REGION_ALIAS("DATA_RAM_LMA", flash0);
 | 
			
		||||
 | 
			
		||||
/* RAM region to be used for BSS segment.*/
 | 
			
		||||
REGION_ALIAS("BSS_RAM", ram0);
 | 
			
		||||
 | 
			
		||||
/* RAM region to be used for the default heap.*/
 | 
			
		||||
REGION_ALIAS("HEAP_RAM", ram0);
 | 
			
		||||
 | 
			
		||||
/* Generic rules inclusion.*/
 | 
			
		||||
INCLUDE rules.ld
 | 
			
		||||
							
								
								
									
										96
									
								
								keyboards/matrix/m12og/rev1/matrix.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								keyboards/matrix/m12og/rev1/matrix.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,96 @@
 | 
			
		|||
/* Copyright 2021 xyzz
 | 
			
		||||
 *
 | 
			
		||||
 * 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 <stdint.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include "util.h"
 | 
			
		||||
#include "matrix.h"
 | 
			
		||||
#include "debounce.h"
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
 | 
			
		||||
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
 | 
			
		||||
 | 
			
		||||
static void select_col(uint8_t col) {
 | 
			
		||||
    setPinOutput(col_pins[col]);
 | 
			
		||||
    writePinHigh(col_pins[col]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void unselect_col(uint8_t col) { setPinInputLow(col_pins[col]); }
 | 
			
		||||
 | 
			
		||||
static void unselect_cols(void) {
 | 
			
		||||
    for (uint8_t x = 0; x < MATRIX_COLS; x++) {
 | 
			
		||||
        setPinInputLow(col_pins[x]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void init_pins(void) {
 | 
			
		||||
    unselect_cols();
 | 
			
		||||
    for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
 | 
			
		||||
        setPinInputLow(row_pins[x]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
 | 
			
		||||
    bool matrix_changed = false;
 | 
			
		||||
 | 
			
		||||
    // Select col and wait for col selecton to stabilize
 | 
			
		||||
    select_col(current_col);
 | 
			
		||||
    matrix_io_delay();
 | 
			
		||||
 | 
			
		||||
    // For each row...
 | 
			
		||||
    for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
 | 
			
		||||
        // Store last value of row prior to reading
 | 
			
		||||
        matrix_row_t last_row_value    = current_matrix[row_index];
 | 
			
		||||
        matrix_row_t current_row_value = last_row_value;
 | 
			
		||||
 | 
			
		||||
        // Check row pin state
 | 
			
		||||
        if (readPin(row_pins[row_index]) != 0) {
 | 
			
		||||
            // Pin LO, set col bit
 | 
			
		||||
            current_row_value |= (MATRIX_ROW_SHIFTER << current_col);
 | 
			
		||||
        } else {
 | 
			
		||||
            // Pin HI, clear col bit
 | 
			
		||||
            current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Determine if the matrix changed state
 | 
			
		||||
        if ((last_row_value != current_row_value)) {
 | 
			
		||||
            matrix_changed |= true;
 | 
			
		||||
            current_matrix[row_index] = current_row_value;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Unselect col
 | 
			
		||||
    unselect_col(current_col);
 | 
			
		||||
 | 
			
		||||
    return matrix_changed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_init_custom(void) {
 | 
			
		||||
    // initialize key pins
 | 
			
		||||
    init_pins();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t matrix_scan_custom(matrix_row_t current_matrix[]) {
 | 
			
		||||
    bool changed = false;
 | 
			
		||||
 | 
			
		||||
    // Set col, read rows
 | 
			
		||||
    for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
 | 
			
		||||
        changed |= read_rows_on_col(current_matrix, current_col);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return (uint8_t)changed;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										209
									
								
								keyboards/matrix/m12og/rev1/mcuconf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								keyboards/matrix/m12og/rev1/mcuconf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,209 @@
 | 
			
		|||
/*
 | 
			
		||||
    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
 | 
			
		||||
 | 
			
		||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
    you may not use this file except in compliance with the License.
 | 
			
		||||
    You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
    See the License for the specific language governing permissions and
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _MCUCONF_H_
 | 
			
		||||
#define _MCUCONF_H_
 | 
			
		||||
 | 
			
		||||
#define STM32F103_MCUCONF
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * STM32F103 drivers configuration.
 | 
			
		||||
 * The following settings override the default settings present in
 | 
			
		||||
 * the various device driver implementation headers.
 | 
			
		||||
 * Note that the settings for each driver only have effect if the whole
 | 
			
		||||
 * driver is enabled in halconf.h.
 | 
			
		||||
 *
 | 
			
		||||
 * IRQ priorities:
 | 
			
		||||
 * 15...0       Lowest...Highest.
 | 
			
		||||
 *
 | 
			
		||||
 * DMA priorities:
 | 
			
		||||
 * 0...3        Lowest...Highest.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * HAL driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_NO_INIT                       FALSE
 | 
			
		||||
#define STM32_HSI_ENABLED                   TRUE
 | 
			
		||||
#define STM32_LSI_ENABLED                   FALSE
 | 
			
		||||
#define STM32_HSE_ENABLED                   TRUE
 | 
			
		||||
#define STM32_LSE_ENABLED                   FALSE
 | 
			
		||||
#define STM32_SW                            STM32_SW_PLL
 | 
			
		||||
#define STM32_PLLSRC                        STM32_PLLSRC_HSE
 | 
			
		||||
#define STM32_PLLXTPRE                      STM32_PLLXTPRE_DIV1
 | 
			
		||||
#define STM32_PLLMUL_VALUE                  9
 | 
			
		||||
#define STM32_HPRE                          STM32_HPRE_DIV1
 | 
			
		||||
#define STM32_PPRE1                         STM32_PPRE1_DIV2
 | 
			
		||||
#define STM32_PPRE2                         STM32_PPRE2_DIV2
 | 
			
		||||
#define STM32_ADCPRE                        STM32_ADCPRE_DIV4
 | 
			
		||||
#define STM32_USB_CLOCK_REQUIRED            TRUE
 | 
			
		||||
#define STM32_USBPRE                        STM32_USBPRE_DIV1P5
 | 
			
		||||
#define STM32_MCOSEL                        STM32_MCOSEL_NOCLOCK
 | 
			
		||||
#define STM32_RTCSEL                        STM32_RTCSEL_HSEDIV
 | 
			
		||||
#define STM32_PVD_ENABLE                    FALSE
 | 
			
		||||
#define STM32_PLS                           STM32_PLS_LEV0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ADC driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_ADC_USE_ADC1                  FALSE
 | 
			
		||||
#define STM32_ADC_ADC1_DMA_PRIORITY         2
 | 
			
		||||
#define STM32_ADC_ADC1_IRQ_PRIORITY         6
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * CAN driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_CAN_USE_CAN1                  FALSE
 | 
			
		||||
#define STM32_CAN_CAN1_IRQ_PRIORITY         11
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * EXT driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_EXT_EXTI0_IRQ_PRIORITY        6
 | 
			
		||||
#define STM32_EXT_EXTI1_IRQ_PRIORITY        6
 | 
			
		||||
#define STM32_EXT_EXTI2_IRQ_PRIORITY        6
 | 
			
		||||
#define STM32_EXT_EXTI3_IRQ_PRIORITY        6
 | 
			
		||||
#define STM32_EXT_EXTI4_IRQ_PRIORITY        6
 | 
			
		||||
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY      6
 | 
			
		||||
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY    6
 | 
			
		||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY       6
 | 
			
		||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY       6
 | 
			
		||||
#define STM32_EXT_EXTI18_IRQ_PRIORITY       6
 | 
			
		||||
#define STM32_EXT_EXTI19_IRQ_PRIORITY       6
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * GPT driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_GPT_USE_TIM1                  FALSE
 | 
			
		||||
#define STM32_GPT_USE_TIM2                  FALSE
 | 
			
		||||
#define STM32_GPT_USE_TIM3                  FALSE
 | 
			
		||||
#define STM32_GPT_USE_TIM4                  FALSE
 | 
			
		||||
#define STM32_GPT_USE_TIM5                  FALSE
 | 
			
		||||
#define STM32_GPT_USE_TIM8                  FALSE
 | 
			
		||||
#define STM32_GPT_TIM1_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_GPT_TIM2_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_GPT_TIM3_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_GPT_TIM4_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_GPT_TIM5_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_GPT_TIM8_IRQ_PRIORITY         7
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * I2C driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_I2C_USE_I2C1                  FALSE
 | 
			
		||||
#define STM32_I2C_USE_I2C2                  FALSE
 | 
			
		||||
#define STM32_I2C_BUSY_TIMEOUT              50
 | 
			
		||||
#define STM32_I2C_I2C1_IRQ_PRIORITY         5
 | 
			
		||||
#define STM32_I2C_I2C2_IRQ_PRIORITY         5
 | 
			
		||||
#define STM32_I2C_I2C1_DMA_PRIORITY         3
 | 
			
		||||
#define STM32_I2C_I2C2_DMA_PRIORITY         3
 | 
			
		||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ICU driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_ICU_USE_TIM1                  FALSE
 | 
			
		||||
#define STM32_ICU_USE_TIM2                  FALSE
 | 
			
		||||
#define STM32_ICU_USE_TIM3                  FALSE
 | 
			
		||||
#define STM32_ICU_USE_TIM4                  FALSE
 | 
			
		||||
#define STM32_ICU_USE_TIM5                  FALSE
 | 
			
		||||
#define STM32_ICU_USE_TIM8                  FALSE
 | 
			
		||||
#define STM32_ICU_TIM1_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_ICU_TIM2_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_ICU_TIM3_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_ICU_TIM4_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_ICU_TIM5_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_ICU_TIM8_IRQ_PRIORITY         7
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * PWM driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_PWM_USE_ADVANCED              FALSE
 | 
			
		||||
#define STM32_PWM_USE_TIM1                  FALSE
 | 
			
		||||
#define STM32_PWM_USE_TIM2                  TRUE
 | 
			
		||||
#define STM32_PWM_USE_TIM3                  FALSE
 | 
			
		||||
#define STM32_PWM_USE_TIM4                  FALSE
 | 
			
		||||
#define STM32_PWM_USE_TIM5                  FALSE
 | 
			
		||||
#define STM32_PWM_USE_TIM8                  FALSE
 | 
			
		||||
#define STM32_PWM_TIM1_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_PWM_TIM2_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_PWM_TIM3_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_PWM_TIM4_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_PWM_TIM5_IRQ_PRIORITY         7
 | 
			
		||||
#define STM32_PWM_TIM8_IRQ_PRIORITY         7
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * RTC driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_RTC_IRQ_PRIORITY              15
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SERIAL driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_SERIAL_USE_USART1             FALSE
 | 
			
		||||
#define STM32_SERIAL_USE_USART2             FALSE
 | 
			
		||||
#define STM32_SERIAL_USE_USART3             FALSE
 | 
			
		||||
#define STM32_SERIAL_USE_UART4              FALSE
 | 
			
		||||
#define STM32_SERIAL_USE_UART5              FALSE
 | 
			
		||||
#define STM32_SERIAL_USART1_PRIORITY        12
 | 
			
		||||
#define STM32_SERIAL_USART2_PRIORITY        12
 | 
			
		||||
#define STM32_SERIAL_USART3_PRIORITY        12
 | 
			
		||||
#define STM32_SERIAL_UART4_PRIORITY         12
 | 
			
		||||
#define STM32_SERIAL_UART5_PRIORITY         12
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SPI driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_SPI_USE_SPI1                  FALSE
 | 
			
		||||
#define STM32_SPI_USE_SPI2                  FALSE
 | 
			
		||||
#define STM32_SPI_USE_SPI3                  FALSE
 | 
			
		||||
#define STM32_SPI_SPI1_DMA_PRIORITY         1
 | 
			
		||||
#define STM32_SPI_SPI2_DMA_PRIORITY         1
 | 
			
		||||
#define STM32_SPI_SPI3_DMA_PRIORITY         1
 | 
			
		||||
#define STM32_SPI_SPI1_IRQ_PRIORITY         10
 | 
			
		||||
#define STM32_SPI_SPI2_IRQ_PRIORITY         10
 | 
			
		||||
#define STM32_SPI_SPI3_IRQ_PRIORITY         10
 | 
			
		||||
#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ST driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_ST_IRQ_PRIORITY               8
 | 
			
		||||
#define STM32_ST_USE_TIMER                  2
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * UART driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_UART_USE_USART1               FALSE
 | 
			
		||||
#define STM32_UART_USE_USART2               FALSE
 | 
			
		||||
#define STM32_UART_USE_USART3               FALSE
 | 
			
		||||
#define STM32_UART_USART1_IRQ_PRIORITY      12
 | 
			
		||||
#define STM32_UART_USART2_IRQ_PRIORITY      12
 | 
			
		||||
#define STM32_UART_USART3_IRQ_PRIORITY      12
 | 
			
		||||
#define STM32_UART_USART1_DMA_PRIORITY      0
 | 
			
		||||
#define STM32_UART_USART2_DMA_PRIORITY      0
 | 
			
		||||
#define STM32_UART_USART3_DMA_PRIORITY      0
 | 
			
		||||
#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * USB driver system settings.
 | 
			
		||||
 */
 | 
			
		||||
#define STM32_USB_USE_USB1                  TRUE
 | 
			
		||||
#define STM32_USB_LOW_POWER_ON_SUSPEND      FALSE
 | 
			
		||||
#define STM32_USB_USB1_HP_IRQ_PRIORITY      13
 | 
			
		||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY      14
 | 
			
		||||
 | 
			
		||||
#endif /* _MCUCONF_H_ */
 | 
			
		||||
							
								
								
									
										26
									
								
								keyboards/matrix/m12og/rev1/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								keyboards/matrix/m12og/rev1/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
# Matrix 8XV1.2 OG keyboard
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
This was the Matrix 8XV1.2 OG keyboard made by the Matrix team.  
 | 
			
		||||
Note: This firmware only supports ANSI only version (green/yellow PCB), and DOES NOT support the 8XV1.2 OG ISO/ANSI version.
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo)
 | 
			
		||||
* Hardware Supported: Matrix 8XV1.2 OG ANSI only PCB
 | 
			
		||||
* Hardware Availability: Matrix Lab
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make matrix/m12og/rev1:default
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
**Bootloader:**  
 | 
			
		||||
 | 
			
		||||
Hold down ESC while plugging in the keyboard. The board will show up as a mass storage device on your computer. Drag and drop the compiled firmware .bin file into it. The board will automatically reset and load the new firmware.  
 | 
			
		||||
 | 
			
		||||
:no_entry: **DO NOT DO THIS ON A MAC OS SYSTEM! IT WILL PERMANENTLY BRICK THE KEYBOARD!!!**
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
							
								
								
									
										27
									
								
								keyboards/matrix/m12og/rev1/rev1.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								keyboards/matrix/m12og/rev1/rev1.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/* Copyright 2021 kb-elmo<mail@elmo.space>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "rev1.h"
 | 
			
		||||
 | 
			
		||||
void board_init(void) {
 | 
			
		||||
    writePinLow(A8);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_kb(void) {
 | 
			
		||||
    rgblight_enable_noeeprom();
 | 
			
		||||
    rgblight_sethsv_noeeprom(5, 255, 255);
 | 
			
		||||
    rgblight_mode_noeeprom(37);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								keyboards/matrix/m12og/rev1/rev1.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								keyboards/matrix/m12og/rev1/rev1.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
/* Copyright 2021 kb-elmo<mail@elmo.space>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 ____ KC_NO
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_all( \
 | 
			
		||||
    k000,   k001, k002, k003, k004,   k005, k006, k007, k008,   k009, k010, k011, k012,   k013, k014, k015, \
 | 
			
		||||
    k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213,   k313, k114, k115, \
 | 
			
		||||
    k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k113,   k314, k214, k215, \
 | 
			
		||||
    k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311,    k312,                        \
 | 
			
		||||
    k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410,     k411,                 k412,       \
 | 
			
		||||
    k500, k501, k502,                   k505,                         k506, k507, k508,   k413, k414, k315  \
 | 
			
		||||
) { \
 | 
			
		||||
    { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
 | 
			
		||||
    { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115 }, \
 | 
			
		||||
    { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215 }, \
 | 
			
		||||
    { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315 }, \
 | 
			
		||||
    { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, k414, ____ }, \
 | 
			
		||||
    { k500, k501, k502, ____, ____, k505, k506, k507, k508, ____, ____, ____, ____, ____, ____, ____ }  \
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								keyboards/matrix/m12og/rev1/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								keyboards/matrix/m12og/rev1/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
# MCU name
 | 
			
		||||
MCU = STM32F103
 | 
			
		||||
 | 
			
		||||
MCU_LDSCRIPT = m12og_v1
 | 
			
		||||
 | 
			
		||||
BOARD = m12og_v1
 | 
			
		||||
 | 
			
		||||
# Build Options
 | 
			
		||||
#   change yes to no to disable
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE = no       # Bootmagic disabled because Matrix bootlaoder uses it's own reset mechanism
 | 
			
		||||
MOUSEKEY_ENABLE = no        # Mouse keys
 | 
			
		||||
EXTRAKEY_ENABLE = yes       # Audio control and System control
 | 
			
		||||
CONSOLE_ENABLE = no         # Console for debug
 | 
			
		||||
COMMAND_ENABLE = no         # Commands for debug and configuration
 | 
			
		||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | 
			
		||||
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 | 
			
		||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
NKRO_ENABLE = no            # USB Nkey Rollover
 | 
			
		||||
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
			
		||||
RGBLIGHT_ENABLE = yes       # HAS TO BE ON! Otherwise the custom matrix doesn't work
 | 
			
		||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output
 | 
			
		||||
 | 
			
		||||
CUSTOM_MATRIX = lite
 | 
			
		||||
SRC += matrix.c
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
{
 | 
			
		||||
  "keyboard_name": "Matrix/8XV1.2OG ISO/ANSI",
 | 
			
		||||
  "keyboard_name": "Matrix 8XV1.2 OG ISO/ANSI",
 | 
			
		||||
  "url": "",
 | 
			
		||||
  "maintainer": "qmk",
 | 
			
		||||
  "width": 18.25,
 | 
			
		||||
							
								
								
									
										16
									
								
								keyboards/matrix/m12og/rev2/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								keyboards/matrix/m12og/rev2/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
# Matrix 8XV1.2 OG keyboard
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
This was the Matrix 8XV1.2 OG keyboard made by the Matrix team.  
 | 
			
		||||
Note: This firmware only supports ISO/ANSI version (white PCB), and DOES NOT support the 8XV1.2 OG ANSI only version.
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [astro](https://github.com/yulei)
 | 
			
		||||
* Hardware Supported: Matrix 8XV1.2 OG (ISO/ANSI) PCB
 | 
			
		||||
* Hardware Availability: Matrix Lab
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make matrix/m12og/rev2:default
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
/**
 | 
			
		||||
 * m12og.c
 | 
			
		||||
 * rev2.c
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "m12og.h"
 | 
			
		||||
#include "rev2.h"
 | 
			
		||||
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
	setPinOutput(C6);
 | 
			
		||||
| 
						 | 
				
			
			@ -23,12 +23,12 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_tkl_iso( \
 | 
			
		||||
    K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,          K500, K501, K502, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,          K503, K504, K505, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,                K506, K507, K508, \
 | 
			
		||||
	K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313,                            \
 | 
			
		||||
	K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412,                      K610,       \
 | 
			
		||||
	K600, K601, K602,                         K603,                   K604, K605, K606,          K607, K608, K609  \
 | 
			
		||||
    K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,   K500, K501, K502, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,   K503, K504, K505, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,         K506, K507, K508, \
 | 
			
		||||
	K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313,                     \
 | 
			
		||||
	K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412,               K610,       \
 | 
			
		||||
	K600, K601, K602,                         K603,                   K604, K605, K606,   K607, K608, K609  \
 | 
			
		||||
) { \
 | 
			
		||||
	{ K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013  }, \
 | 
			
		||||
	{ K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO }, \
 | 
			
		||||
| 
						 | 
				
			
			@ -40,11 +40,11 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_tkl_ansi( \
 | 
			
		||||
    K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,    K500, K501, K502,\
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,    K503, K504, K505,\
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,    K506, K507, K508,\
 | 
			
		||||
    K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,   K500, K501, K502, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,   K503, K504, K505, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,   K506, K507, K508, \
 | 
			
		||||
	K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311,       K313,                     \
 | 
			
		||||
	K400,       K402, K403, K404, K405, K406, K407, K408, K409, K410, K411,       K412,          K610,      \
 | 
			
		||||
	K400,       K402, K403, K404, K405, K406, K407, K408, K409, K410, K411,       K412,         K610,       \
 | 
			
		||||
	K600, K601, K602,                   K603,                         K604, K605, K606,   K607, K608, K609  \
 | 
			
		||||
) { \
 | 
			
		||||
	{ K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013  }, \
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue