Keyboard: Refactor XMMX keyboard to XMMX and Toad (#3955)
* pull out toad keyboard and get it compiling * refactor xmmx * use the correct LAYOUT macros * move LED code out to toad.c file * move LED code out to xmmx.c file * adjust for correct number of columns and pins used * remove led set user
This commit is contained in:
		
							parent
							
								
									e2eee47e20
								
							
						
					
					
						commit
						dbdbbbd5c9
					
				
					 18 changed files with 276 additions and 286 deletions
				
			
		
							
								
								
									
										54
									
								
								keyboards/toad/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								keyboards/toad/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
#ifndef CONFIG_H
 | 
			
		||||
#define CONFIG_H
 | 
			
		||||
 | 
			
		||||
#include "config_common.h"
 | 
			
		||||
 | 
			
		||||
/* USB Device descriptor parameter */
 | 
			
		||||
#define VENDOR_ID       0xFEED
 | 
			
		||||
#define PRODUCT_ID      0x6776
 | 
			
		||||
#define DEVICE_VER      0x0001
 | 
			
		||||
#define MANUFACTURER    farmakon
 | 
			
		||||
#define PRODUCT         "TOAD"
 | 
			
		||||
#define DESCRIPTION     "TOAD"
 | 
			
		||||
 | 
			
		||||
/* key matrix size */
 | 
			
		||||
#define MATRIX_ROWS 6
 | 
			
		||||
#define MATRIX_COLS 14
 | 
			
		||||
 | 
			
		||||
/* key matrix pins */
 | 
			
		||||
#define MATRIX_ROW_PINS { B0, F6, F5, F4, F1, F0 }
 | 
			
		||||
#define MATRIX_COL_PINS { B3, B2, B1, E6, B7, C7, C6, D4, D6, D7, B4, D0, D1, F7 }
 | 
			
		||||
#define UNUSED_PINS
 | 
			
		||||
 | 
			
		||||
/* COL2ROW or ROW2COL */
 | 
			
		||||
#define DIODE_DIRECTION COL2ROW
 | 
			
		||||
 | 
			
		||||
/* number of backlight levels */
 | 
			
		||||
 | 
			
		||||
#ifdef BACKLIGHT_PIN
 | 
			
		||||
#define BACKLIGHT_LEVELS 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Set 0 if debouncing isn't needed */
 | 
			
		||||
#define DEBOUNCING_DELAY 5
 | 
			
		||||
 | 
			
		||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 | 
			
		||||
#define LOCKING_SUPPORT_ENABLE
 | 
			
		||||
 | 
			
		||||
/* Locking resynchronize hack */
 | 
			
		||||
#define LOCKING_RESYNC_ENABLE
 | 
			
		||||
 | 
			
		||||
/* key combination for command */
 | 
			
		||||
#define IS_COMMAND() ( \
 | 
			
		||||
    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_DI_PIN
 | 
			
		||||
#define RGBLIGHT_ANIMATIONS
 | 
			
		||||
#define RGBLED_NUM 0
 | 
			
		||||
#define RGBLIGHT_HUE_STEP 8
 | 
			
		||||
#define RGBLIGHT_SAT_STEP 8
 | 
			
		||||
#define RGBLIGHT_VAL_STEP 8
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	TOAD_KEYMAP_ANSI_WK(
 | 
			
		||||
	LAYOUT_ansi_wk(
 | 
			
		||||
	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_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_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,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -12,19 +12,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	TOAD_KEYMAP_ANSI_WKL(
 | 
			
		||||
	LAYOUT_ansi_wkl(
 | 
			
		||||
	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_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_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,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,        KC_LALT,                                  KC_SPC,                 KC_RALT,      KC_RCTL
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	TOAD_KEYMAP(
 | 
			
		||||
	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_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_BSPC,    \
 | 
			
		||||
    KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,         \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,KC_LGUI,KC_LALT,                                  KC_SPC,                  KC_RALT, KC_RGUI, KC_APP,  KC_RCTL
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	TOAD_KEYMAP_ISO_WK(
 | 
			
		||||
	LAYOUT_iso_wk(
 | 
			
		||||
	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_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_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,            \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,KC_LGUI,KC_LALT,                                  KC_SPC,                 KC_RALT,KC_RGUI, KC_APP,KC_RCTL
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	TOAD_KEYMAP_ISO_WKL(
 | 
			
		||||
	LAYOUT_iso_wkl(
 | 
			
		||||
	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_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_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,            \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,        KC_LALT,                                  KC_SPC,                 KC_RALT,                KC_RCTL
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								keyboards/toad/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								keyboards/toad/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
# Toad
 | 
			
		||||
 | 
			
		||||
Toad: 70% Mechanical Keyboard PCB.
 | 
			
		||||
 | 
			
		||||
Toad schematic and PCB are available opensource under Creative Commons BY-SA 3.0 license on EasyEDA at [this link](https://easyeda.com/farmakon/70_Keyboard-d4f6baf4792d4ada9c0571fa3713e461)
 | 
			
		||||
 | 
			
		||||
For more informations on the Toad please visit this [geekhack.org thread](https://geekhack.org/index.php?topic=91388.0)
 | 
			
		||||
 | 
			
		||||
Make examples for these keyboards (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make toad:default
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
 | 
			
		||||
							
								
								
									
										56
									
								
								keyboards/toad/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								keyboards/toad/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
# MCU name
 | 
			
		||||
MCU = atmega32u4
 | 
			
		||||
 | 
			
		||||
# Processor frequency.
 | 
			
		||||
#     This will define a symbol, F_CPU, in all source code files equal to the
 | 
			
		||||
#     processor frequency in Hz. You can then use this symbol in your source code to
 | 
			
		||||
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
 | 
			
		||||
#     automatically to create a 32-bit value in your source code.
 | 
			
		||||
#
 | 
			
		||||
#     This will be an integer division of F_USB below, as it is sourced by
 | 
			
		||||
#     F_USB after it has run through any CPU prescalers. Note that this value
 | 
			
		||||
#     does not *change* the processor frequency - it should merely be updated to
 | 
			
		||||
#     reflect the processor speed set externally so that the code can use accurate
 | 
			
		||||
#     software delays.
 | 
			
		||||
F_CPU = 16000000
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# LUFA specific
 | 
			
		||||
#
 | 
			
		||||
# Target architecture (see library "Board Types" documentation).
 | 
			
		||||
ARCH = AVR8
 | 
			
		||||
 | 
			
		||||
# Input clock frequency.
 | 
			
		||||
#     This will define a symbol, F_USB, in all source code files equal to the
 | 
			
		||||
#     input clock frequency (before any prescaling is performed) in Hz. This value may
 | 
			
		||||
#     differ from F_CPU if prescaling is used on the latter, and is required as the
 | 
			
		||||
#     raw input clock is fed directly to the PLL sections of the AVR for high speed
 | 
			
		||||
#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
 | 
			
		||||
#     at the end, this will be done automatically to create a 32-bit value in your
 | 
			
		||||
#     source code.
 | 
			
		||||
#
 | 
			
		||||
#     If no clock division is performed on the input clock inside the AVR (via the
 | 
			
		||||
#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
 | 
			
		||||
F_USB = $(F_CPU)
 | 
			
		||||
 | 
			
		||||
# Interrupt driven control endpoint task(+60)
 | 
			
		||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Boot Section Size in *bytes*
 | 
			
		||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Build Options
 | 
			
		||||
#   comment out to disable the options.
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE ?= no	# Virtual DIP switch configuration(+1000)
 | 
			
		||||
MOUSEKEY_ENABLE ?= no	# Mouse keys(+4700)
 | 
			
		||||
EXTRAKEY_ENABLE ?= yes	# Audio control and System control(+450)
 | 
			
		||||
CONSOLE_ENABLE ?= no	# Console for debug(+400)
 | 
			
		||||
COMMAND_ENABLE ?= no    # Commands for debug and configuration
 | 
			
		||||
SLEEP_LED_ENABLE ?= no  # Breathing sleep LED during USB suspend
 | 
			
		||||
NKRO_ENABLE ?= yes	# USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
BACKLIGHT_ENABLE ?= no  # Enable keyboard backlight functionality
 | 
			
		||||
AUDIO_ENABLE ?= no
 | 
			
		||||
RGBLIGHT_ENABLE ?= no
 | 
			
		||||
							
								
								
									
										18
									
								
								keyboards/toad/toad.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								keyboards/toad/toad.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
#include "toad.h"
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										91
									
								
								keyboards/toad/toad.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								keyboards/toad/toad.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
#ifndef TOAD
 | 
			
		||||
#define TOAD
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: default - all keys
 | 
			
		||||
#define LAYOUT_all( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,        \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,        \
 | 
			
		||||
	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, K413,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513         \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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, K113 }, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ 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, K413 }, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ANSI Winkey
 | 
			
		||||
#define LAYOUT_ansi_wk( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,  \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO,K313 }, \
 | 
			
		||||
	{ K400, KC_NO,K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO}, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ANSI Winkeyless
 | 
			
		||||
#define LAYOUT_ansi_wkl( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,  \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500,       K502,                         K507,                   K511,       K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO,K313 }, \
 | 
			
		||||
	{ K400, KC_NO,K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO}, \
 | 
			
		||||
	{ K500, KC_NO,K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,KC_NO,K511, KC_NO,K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ISO Winkey
 | 
			
		||||
#define LAYOUT_iso_wk( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,        \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO}, \
 | 
			
		||||
	{ 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, KC_NO}, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ISO Winkeyless
 | 
			
		||||
#define LAYOUT_iso_wkl( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,        \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500,       K502,                         K507,                   K511,       K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO}, \
 | 
			
		||||
	{ 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, KC_NO}, \
 | 
			
		||||
	{ K500, KC_NO,K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,KC_NO,K511, KC_NO,K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	KEYMAP_ANSI_WK(
 | 
			
		||||
	LAYOUT_ansi_wk(
 | 
			
		||||
	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,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,KC_LGUI,KC_LALT,                                  KC_SPC,                 KC_RALT,KC_RGUI, KC_APP,KC_RCTL,          KC_LEFT,KC_DOWN,KC_RGHT
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	KEYMAP_ANSI_WKL(
 | 
			
		||||
	LAYOUT_ansi_wkl(
 | 
			
		||||
	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,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,        KC_LALT,                                  KC_SPC,                 KC_RALT,      KC_RCTL,                    KC_LEFT,KC_DOWN,KC_RGHT
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	KEYMAP(
 | 
			
		||||
	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_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,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,KC_LGUI,KC_LALT,                                  KC_SPC,                 KC_RALT,KC_RGUI, KC_APP,KC_RCTL,          KC_LEFT,KC_DOWN,KC_RGHT
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	KEYMAP_ISO_WK(
 | 
			
		||||
	LAYOUT_iso_wk(
 | 
			
		||||
	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_DEL, KC_END, KC_PGDN,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,KC_LGUI,KC_LALT,                                  KC_SPC,                 KC_RALT,KC_RGUI, KC_APP,KC_RCTL,          KC_LEFT,KC_DOWN,KC_RGHT
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
	KEYMAP_ISO_WKL(
 | 
			
		||||
	LAYOUT_iso_wkl(
 | 
			
		||||
	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_DEL, KC_END, KC_PGDN,   \
 | 
			
		||||
| 
						 | 
				
			
			@ -11,20 +11,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    KC_LCTL,        KC_LALT,                                  KC_SPC,                 KC_RALT,                KC_RCTL,          KC_LEFT,KC_DOWN,KC_RGHT
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,20 +1,14 @@
 | 
			
		|||
XMMX and Toad
 | 
			
		||||
========
 | 
			
		||||
# XMMX
 | 
			
		||||
 | 
			
		||||
XMMX: Tenkeyless Mechanical Keyboard PCB designed to fit Filco Majestouch TKL and Cooler Master Quickfire Rapid cases
 | 
			
		||||
Toad: 70% Mechanical Keyboard PCB.
 | 
			
		||||
 | 
			
		||||
XMMX schematic and PCB are available opensource under Creative Commons BY-SA 3.0 license on EasyEDA at [this link](https://easyeda.com/farmakon/XMMX-0447d28c1e4644b88fd04905d983684d)
 | 
			
		||||
Toad schematic and PCB are available opensource under Creative Commons BY-SA 3.0 license on EasyEDA at [this link](https://easyeda.com/farmakon/70_Keyboard-d4f6baf4792d4ada9c0571fa3713e461)
 | 
			
		||||
 | 
			
		||||
For more informations on the XMMX please visit this [geekhack.org thread](https://geekhack.org/index.php?topic=93422.0)
 | 
			
		||||
For more informations on the Toad please visit this [geekhack.org thread](https://geekhack.org/index.php?topic=91388.0)
 | 
			
		||||
 | 
			
		||||
Make examples for these keyboards (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make xmmx:default
 | 
			
		||||
 | 
			
		||||
    make xmmx:toad
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +1,18 @@
 | 
			
		|||
#include "xmmx.h"
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
	//LED1
 | 
			
		||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 6); PORTB &= ~(1 << 6);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//LED2
 | 
			
		||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
			
		||||
		DDRB |= (1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	} else {
 | 
			
		||||
		DDRB &= ~(1 << 5); PORTB &= ~(1 << 5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
// 80% keyboard: default - all keys
 | 
			
		||||
#define KEYMAP( \
 | 
			
		||||
#define LAYOUT_all( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016,       \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K013, K114, K115, K116, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216,       \
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +21,7 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// 80% keyboard: ANSI Winkey
 | 
			
		||||
#define KEYMAP_ANSI_WK( \
 | 
			
		||||
#define LAYOUT_ansi_wk( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// 80% keyboard: ANSI Winkeyless
 | 
			
		||||
#define KEYMAP_ANSI_WKL( \
 | 
			
		||||
#define LAYOUT_ansi_wkl( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +55,7 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// 80% keyboard: ISO Winkey
 | 
			
		||||
#define KEYMAP_ISO_WK( \
 | 
			
		||||
#define LAYOUT_iso_wk( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,       K214, K215, K216, \
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// 80% keyboard: ISO Winkeyless
 | 
			
		||||
#define KEYMAP_ISO_WKL( \
 | 
			
		||||
#define LAYOUT_iso_wkl( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,       K214, K215, K216, \
 | 
			
		||||
| 
						 | 
				
			
			@ -88,90 +88,4 @@
 | 
			
		|||
	{ K500, KC_NO,K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,KC_NO,K511, KC_NO,K513, K514, K515, K516 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: default - all keys
 | 
			
		||||
#define TOAD_KEYMAP( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,        \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,        \
 | 
			
		||||
	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, K413,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513         \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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, K113 }, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ 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, K413 }, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ANSI Winkey
 | 
			
		||||
#define TOAD_KEYMAP_ANSI_WK( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,  \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO,K313 }, \
 | 
			
		||||
	{ K400, KC_NO,K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO}, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ANSI Winkeyless
 | 
			
		||||
#define TOAD_KEYMAP_ANSI_WKL( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,  \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500,       K502,                         K507,                   K511,       K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
 | 
			
		||||
	{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO,K313 }, \
 | 
			
		||||
	{ K400, KC_NO,K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO}, \
 | 
			
		||||
	{ K500, KC_NO,K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,KC_NO,K511, KC_NO,K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ISO Winkey
 | 
			
		||||
#define TOAD_KEYMAP_ISO_WK( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,        \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500, K501, K502,                         K507,             K510, K511, K512, K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO}, \
 | 
			
		||||
	{ 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, KC_NO}, \
 | 
			
		||||
	{ K500, K501, K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,K510, K511, K512, K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 70% keyboard: ISO Winkeyless
 | 
			
		||||
#define TOAD_KEYMAP_ISO_WKL( \
 | 
			
		||||
	K000,       K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,  \
 | 
			
		||||
	K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013,  \
 | 
			
		||||
	K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,        \
 | 
			
		||||
	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,        \
 | 
			
		||||
	K500,       K502,                         K507,                   K511,       K513   \
 | 
			
		||||
) { \
 | 
			
		||||
	{ 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}, \
 | 
			
		||||
	{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO}, \
 | 
			
		||||
	{ 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, KC_NO}, \
 | 
			
		||||
	{ K500, KC_NO,K502, KC_NO,KC_NO,KC_NO,KC_NO,K507, KC_NO,KC_NO,KC_NO,K511, KC_NO,K513 }  \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue