Add MxSS keyboard (#3335)
* Added basic MxSS support * Fixed split RSHFT for ISO layouts * Updated readme.md for MxSS * Added initial support for individual control of front RGB LEDs * Changed RGBLED color selection to work using hue and saturation rather than RGB Added code for LED state change on layer change * Avoid needing an entire 8 bits to store the brightness value * Added custom keycodes, along with their handlers * Added EEPROM storage for front LED config * Fixed up ability to use QMK Configurator and updated readme.md * Applied suggested changes from pull request: https://github.com/standard/standard/issues/452 Updated name in license descriptions Updated layouts to snake case Corrected mistakes in info.json Updated layer_colors to a weak attributed array in mxss.c * Defined a new safe range for custom keycodes in keymap.c
This commit is contained in:
		
							parent
							
								
									df8b564518
								
							
						
					
					
						commit
						e661f1559e
					
				
					 11 changed files with 1768 additions and 0 deletions
				
			
		
							
								
								
									
										207
									
								
								keyboards/mxss/mxss.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								keyboards/mxss/mxss.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,207 @@
 | 
			
		|||
/* Copyright 2018 Jumail Mundekkat / MxBlue
 | 
			
		||||
 *
 | 
			
		||||
 * 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/>.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MXSS_H
 | 
			
		||||
#define MXSS_H
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
#include "mxss_frontled.h"
 | 
			
		||||
 | 
			
		||||
// This a shortcut to help you visually see your layout.
 | 
			
		||||
// The following is an example using the Planck MIT layout
 | 
			
		||||
// The first section contains all of the arguments
 | 
			
		||||
// The second converts the arguments into a two-dimensional array
 | 
			
		||||
 | 
			
		||||
#define LAYOUT( \
 | 
			
		||||
    	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, k10E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,   k2D,    k2E, \
 | 
			
		||||
	  k30,   k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C,  k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k10E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ANSI, normalBS, 7u
 | 
			
		||||
#define LAYOUT_7u( \
 | 
			
		||||
    	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, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,   k2D,    k2E, \
 | 
			
		||||
	k30,    k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                 k4B,  k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ANSI, normalBS, split space
 | 
			
		||||
#define LAYOUT_splitspace( \
 | 
			
		||||
    	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, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,    k2D,   k2E, \
 | 
			
		||||
	k30,     k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,      k43,      k46,      k48,      k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ANSI, splitBS, 6.25u
 | 
			
		||||
#define LAYOUT_splitbs( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,   k2D,    k2E, \
 | 
			
		||||
	k30,    k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ANSI, splitBS, 7u
 | 
			
		||||
#define LAYOUT_splitbs_7u( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,   k2D,    k2E, \
 | 
			
		||||
	k30,    k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                 k4B,  k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ANSI, normalBS, split space
 | 
			
		||||
#define LAYOUT_splitbs_splitspace( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B,    k2D,   k2E, \
 | 
			
		||||
	k30,     k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,      k43,      k46,      k48,      k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
 | 
			
		||||
	{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, normalBS, 6.25u
 | 
			
		||||
#define LAYOUT_iso( \
 | 
			
		||||
    	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, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, normalBS, 7u
 | 
			
		||||
#define LAYOUT_iso_7u( \
 | 
			
		||||
    	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, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                   k4B,   k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, normalBS, split space
 | 
			
		||||
#define LAYOUT_iso_splitspace( \
 | 
			
		||||
    	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, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,      k43,      k46,      k48,      k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, splitBS, 6.25u
 | 
			
		||||
#define LAYOUT_iso_splitbs( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, splitBS, 7u
 | 
			
		||||
#define LAYOUT_iso_splitbs_7u( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,                k46,                   k4B,   k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
//ISO, splitBS, split space
 | 
			
		||||
#define LAYOUT_iso_splitbs_splitspace( \
 | 
			
		||||
    	k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
 | 
			
		||||
    	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
 | 
			
		||||
	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
 | 
			
		||||
	k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
 | 
			
		||||
	k40, k41, k42,      k43,      k46,      k48,      k4A, k4B, k4C, k4D, k4E \
 | 
			
		||||
) \
 | 
			
		||||
{ \
 | 
			
		||||
    	{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
 | 
			
		||||
    	{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
 | 
			
		||||
	{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
 | 
			
		||||
	{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
 | 
			
		||||
	{ k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue