This commit is contained in:
		
						commit
						3c2343664c
					
				
					 17 changed files with 944 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -20,7 +20,7 @@ For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the
 | 
			
		|||
 | 
			
		||||
`BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number.
 | 
			
		||||
 | 
			
		||||
## `/keyboards/<keyboard>/Makefile`
 | 
			
		||||
## `/keyboards/<keyboard>/rules.mk`
 | 
			
		||||
 | 
			
		||||
The values at the top likely won't need to be changed, since most boards use the `atmega32u4` chip. The `BOOTLOADER_SIZE` will need to be adjusted based on your MCU type. It's defaulted to the Teensy, since that's the most common controller. Below is quoted from the `Makefile`.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										61
									
								
								keyboards/kc60/keymaps/mechmerlin/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								keyboards/kc60/keymaps/mechmerlin/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
// This is the 60% layout preferred by u/merlin36 the host of the MechMerlin YouTube channel.
 | 
			
		||||
// The layout is highly influenced by the WKL B.Face and KBP V60 standard layouts.
 | 
			
		||||
// Layout designed for use on KC60 with no inswitch or underglow lighting. 
 | 
			
		||||
 | 
			
		||||
#include "kc60.h"
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [0] = KEYMAP( /* Basic QWERTY */
 | 
			
		||||
      KC_ESC,   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,  \
 | 
			
		||||
      KC_LCTL,  KC_A,     KC_S,     KC_D,    KC_F,     KC_G,     KC_H,     KC_J,    KC_K,  KC_L,     KC_SCLN,  KC_QUOT,  KC_NO,    KC_ENT,   \
 | 
			
		||||
      KC_LSFT,  KC_NO,    KC_Z,     KC_X,    KC_C,     KC_V,     KC_B,     KC_N,    KC_M,  KC_COMM,  KC_DOT,   KC_SLSH,  KC_NO,    KC_RSFT,  \
 | 
			
		||||
      KC_LCTL,  KC_LGUI,  KC_LALT,                     KC_SPC,                             KC_NO,    MO(2),    KC_RALT,  KC_RGUI,  KC_RCTL \
 | 
			
		||||
      ),
 | 
			
		||||
  [1] = KEYMAP( /* HHKB-ish Base Layout */
 | 
			
		||||
      KC_ESC,   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_BSLS,  \
 | 
			
		||||
      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_LCTL,  KC_A,     KC_S,     KC_D,    KC_F,     KC_G,     KC_H,     KC_J,    KC_K,  KC_L,     KC_SCLN,  KC_QUOT,  KC_NO,    KC_ENT,   \
 | 
			
		||||
      KC_LSFT,  KC_NO,    KC_Z,     KC_X,    KC_C,     KC_V,     KC_B,     KC_N,    KC_M,  KC_COMM,  KC_DOT,   KC_SLSH,  KC_NO,    KC_RSFT,  \
 | 
			
		||||
      KC_LCTL,  KC_LGUI,  KC_LALT,                     KC_SPC,                             KC_NO,    MO(3),    KC_RALT,  KC_RGUI,  KC_RCTL \
 | 
			
		||||
      ),
 | 
			
		||||
  [2] = KEYMAP( /* FN Layer 1 - Basic QWERTY */
 | 
			
		||||
      KC_GRV,   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_DEL,  \
 | 
			
		||||
      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_CAPS,  KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS,   TO(1),     KC_TRNS,  KC_TRNS,  KC_TRNS,   KC_TRNS,    KC_TRNS,  KC_NO,    KC_TRNS, \
 | 
			
		||||
      KC_TRNS,  KC_NO,     KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_MUTE,  KC_VOLD,   KC_VOLU,    KC_TRNS,  KC_NO,    KC_PGUP,  \
 | 
			
		||||
      KC_TRNS,  KC_TRNS,   KC_TRNS,                        TG(4),                          KC_NO,    KC_TRNS,   KC_HOME,    KC_PGDN,  KC_END \
 | 
			
		||||
      ),
 | 
			
		||||
  [3] = KEYMAP( /* FN Layer 2 - HHKB-ish Base Layout */
 | 
			
		||||
      KC_GRV,   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_INS,  \
 | 
			
		||||
      KC_CAPS,  KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,   KC_TRNS,    KC_UP,    KC_TRNS,  KC_BSPC,  \
 | 
			
		||||
      KC_TRNS,  KC_VOLD,   KC_VOLU,   KC_MUTE,  KC_TRNS,   KC_TRNS,   TO(0),     KC_TRNS,  KC_HOME,  KC_PGUP,   KC_LEFT,    KC_RIGHT, KC_NO,    KC_TRNS, \
 | 
			
		||||
      KC_TRNS,  KC_NO,     KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_END,    KC_PGDN,    KC_DOWN,  KC_NO,    KC_TRNS,  \
 | 
			
		||||
      KC_TRNS,  KC_TRNS,   KC_TRNS,                        KC_TRNS,                        KC_NO,    KC_TRNS,   KC_TRNS,    KC_TRNS,  KC_TRNS \
 | 
			
		||||
      ),
 | 
			
		||||
  [4] = KEYMAP( /* Arrow Layers - Basic QWERTY ONLY */
 | 
			
		||||
      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_TRNS,     KC_TRNS,    KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_NO,    KC_TRNS,   \
 | 
			
		||||
      KC_TRNS,   KC_NO,      KC_TRNS,     KC_TRNS,    KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_NO,    KC_UP,  \
 | 
			
		||||
      KC_TRNS,   KC_TRNS,    KC_TRNS,                              KC_TRNS,                              KC_NO,    KC_TRNS,    KC_LEFT,   KC_DOWN,  KC_RIGHT \
 | 
			
		||||
      ),
 | 
			
		||||
  [5] = KEYMAP( /* Blank Layer for later usage */
 | 
			
		||||
      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_TRNS,     KC_TRNS,    KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_NO,    KC_TRNS,   \
 | 
			
		||||
      KC_TRNS,   KC_NO,      KC_TRNS,     KC_TRNS,    KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_NO,    KC_TRNS,  \
 | 
			
		||||
      KC_TRNS,   KC_TRNS,    KC_TRNS,                              KC_TRNS,                              KC_NO,    KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS \
 | 
			
		||||
      ),
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		||||
{
 | 
			
		||||
  // MACRODOWN only works in this function
 | 
			
		||||
  return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										20
									
								
								keyboards/kc60/keymaps/mechmerlin/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								keyboards/kc60/keymaps/mechmerlin/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
MechMerlin's KC60 Layout
 | 
			
		||||
======================
 | 
			
		||||
 | 
			
		||||
This is the 60% layout used by u/merlin36, host of the MechMerlin YouTube channel.
 | 
			
		||||
It has 5 layers, base QWERTY, base HHKB, FN 1, FN 2(HHKB), and an arrows only layer.
 | 
			
		||||
 | 
			
		||||
Merlin's KC60 was acquired from Massdrop: https://www.massdrop.com/buy/kc60-mechanical-keyboard and is the Co-Star stabilizer version
 | 
			
		||||
 | 
			
		||||
If you would like to program your KC60 using the manufacturer recommended approach, please follow the guide on keychatter: https://www.keychatter.com/2015/07/05/programming-the-kc60/.
 | 
			
		||||
 | 
			
		||||
## Keymap Notes
 | 
			
		||||
- Highly influenced by the KBP V60 and WKL B.Face standard layouts
 | 
			
		||||
- Does not support any form of inswitch or underglow lighting as Merlin hates them.
 | 
			
		||||
- Arrow toggle switch is FN + Space
 | 
			
		||||
- Reset is FN + R
 | 
			
		||||
- HHKB keymap is approximate as keyboard is not built like HHKB
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Build
 | 
			
		||||
To build this keymap, simply run `make KEYMAP=mechmerlin`.
 | 
			
		||||
							
								
								
									
										19
									
								
								keyboards/lets_split/keymaps/xk/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/lets_split/keymaps/xk/Makefile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
 | 
			
		||||
EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
 | 
			
		||||
NKRO_ENABLE = no           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
USE_I2C = yes
 | 
			
		||||
TAP_DANCE_ENABLE = yes
 | 
			
		||||
 | 
			
		||||
CONSOLE_ENABLE = no         # Console for debug(+400)
 | 
			
		||||
COMMAND_ENABLE = no         # Commands for debug and configuration
 | 
			
		||||
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
			
		||||
MIDI_ENABLE = no            # MIDI controls
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output on port C6
 | 
			
		||||
UNICODE_ENABLE = no         # Unicode
 | 
			
		||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 | 
			
		||||
RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 | 
			
		||||
BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
 | 
			
		||||
 | 
			
		||||
ifndef QUANTUM_DIR
 | 
			
		||||
	include ../../../../Makefile
 | 
			
		||||
endif
 | 
			
		||||
							
								
								
									
										47
									
								
								keyboards/lets_split/keymaps/xk/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								keyboards/lets_split/keymaps/xk/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
/*
 | 
			
		||||
This is the c configuration file for the keymap
 | 
			
		||||
 | 
			
		||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
 | 
			
		||||
Copyright 2015 Jack Humbert
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_USER_H
 | 
			
		||||
#define CONFIG_USER_H
 | 
			
		||||
 | 
			
		||||
#include "../../config.h"
 | 
			
		||||
 | 
			
		||||
#define TAPPING_TOGGLE 1
 | 
			
		||||
#define TAPPING_TERM 200
 | 
			
		||||
#define ONESHOT_TAP_TOGGLE 2
 | 
			
		||||
#define ONESHOT_LAYER_TOGGLE 2
 | 
			
		||||
#define ONESHOT_TIMEOUT 300
 | 
			
		||||
 | 
			
		||||
/* Use I2C or Serial, not both */
 | 
			
		||||
 | 
			
		||||
// #define USE_SERIAL
 | 
			
		||||
#define USE_I2C
 | 
			
		||||
 | 
			
		||||
#define MOUSEKEY_INTERVAL 50
 | 
			
		||||
#define MOUSEKEY_DELAY 0
 | 
			
		||||
#define MOUSEKEY_TIME_TO_MAX 60
 | 
			
		||||
#define MOUSEKEY_MAX_SPEED 7
 | 
			
		||||
 | 
			
		||||
#define MOUSEKEY_WHEEL_DELAY 0
 | 
			
		||||
#define MOUSEKEY_WHEEL_MAX_SPEED   8
 | 
			
		||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
 | 
			
		||||
 | 
			
		||||
// #define MASTER_LEFT
 | 
			
		||||
// #define _MASTER_RIGHT
 | 
			
		||||
#define EE_HANDS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define PREVENT_STUCK_MODIFIERS
 | 
			
		||||
//#define IGNORE_MOD_TAP_INTERRUPT
 | 
			
		||||
#define PERMISSIVE_HOLD
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										353
									
								
								keyboards/lets_split/keymaps/xk/keymap.c
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										353
									
								
								keyboards/lets_split/keymaps/xk/keymap.c
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,353 @@
 | 
			
		|||
#include "lets_split.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
#include "eeconfig.h"
 | 
			
		||||
 | 
			
		||||
extern keymap_config_t keymap_config;
 | 
			
		||||
 | 
			
		||||
#define _COLEMAK  0
 | 
			
		||||
#define _KAMELOC  1
 | 
			
		||||
#define _IKAPILA  2
 | 
			
		||||
#define _IKASHFT  3
 | 
			
		||||
#define _ARROWKY  4
 | 
			
		||||
#define _FNCTION  5
 | 
			
		||||
#define _NINEKEY  6
 | 
			
		||||
#define _NAVIGAT  7
 | 
			
		||||
#define _QWERTY   8
 | 
			
		||||
#define _GRVTABL  15
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
  COLEMAK = SAFE_RANGE,
 | 
			
		||||
  KAMELOC,
 | 
			
		||||
  IKAPILA,
 | 
			
		||||
  IKASHFT,
 | 
			
		||||
  ARROWKY,
 | 
			
		||||
  FNCTION,
 | 
			
		||||
  NINEKEY,
 | 
			
		||||
  NAVIGAT,
 | 
			
		||||
  QWERTY,
 | 
			
		||||
  GRVTABL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//TD Declarations
 | 
			
		||||
enum {
 | 
			
		||||
  VOM = 0,
 | 
			
		||||
  PRN,
 | 
			
		||||
  EGT,
 | 
			
		||||
  HRD,
 | 
			
		||||
  DSH,
 | 
			
		||||
  QUT,
 | 
			
		||||
  ESC,
 | 
			
		||||
  EQE,
 | 
			
		||||
  PGN,
 | 
			
		||||
  UND,
 | 
			
		||||
  BSDEL,
 | 
			
		||||
  bsdel_mods,
 | 
			
		||||
  BOOTME,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define _______     KC_TRNS
 | 
			
		||||
#define XXXXXXX     KC_NO
 | 
			
		||||
 | 
			
		||||
// action-TAP for key/mod behavior LT(layer, kc)
 | 
			
		||||
#define XK_TAB      LT(_FNCTION, KC_TAB)
 | 
			
		||||
#define XK_BSP      LT(_KAMELOC, M(3))
 | 
			
		||||
 | 
			
		||||
#define XK_HARD     LT(_FNCTION, M(1))
 | 
			
		||||
#define XK_SPC      LT(_IKAPILA, KC_SPC)
 | 
			
		||||
#define XK_ENT      LT(_IKAPILA, KC_ENT)
 | 
			
		||||
#define XK_PGDN     LT(_NAVIGAT, TD(PGN))
 | 
			
		||||
#define XK_PREN     LT(_IKASHFT, M(0))
 | 
			
		||||
#define PIPBOY      LT(_FNCTION, KC_BSLS)
 | 
			
		||||
 | 
			
		||||
#define XK_DEL      LT(_KAMELOC, KC_DEL)
 | 
			
		||||
#define XK_GRV      LT(_GRVTABL, KC_GRV)
 | 
			
		||||
 | 
			
		||||
// mod-TAP for mod/key behavior MT(modkey, kc)
 | 
			
		||||
#define ESC_IT      MT(MOD_MEH, TD(ESC))
 | 
			
		||||
 | 
			
		||||
#define ALT_IT      MT(MOD_LALT, KC_SCLN)
 | 
			
		||||
#define CTL_IT      MT(MOD_LCTL, KC_SLSH)
 | 
			
		||||
#define XK_EGPT     MT((MOD_LCTL | MOD_LALT | MOD_LGUI), M(2))
 | 
			
		||||
 | 
			
		||||
#define SFT_IT      MT(MOD_RSFT, TG(_NAVIGAT))
 | 
			
		||||
#define SFT_ENT	    MT(MOD_RSFT, KC_ENT)
 | 
			
		||||
 | 
			
		||||
//sticky modifiers
 | 
			
		||||
#define KYCTL       OSM(MOD_LCTL)
 | 
			
		||||
#define KYGUI       OSM(MOD_LGUI)
 | 
			
		||||
#define KYSFT       OSM(MOD_LSFT)
 | 
			
		||||
#define KYALT       OSM(MOD_LALT)
 | 
			
		||||
#define CAKY        OSM(MOD_LCTL | MOD_LALT)
 | 
			
		||||
 | 
			
		||||
//shortcuts
 | 
			
		||||
#define CADEL       LALT(LCTL(KC_DEL))
 | 
			
		||||
#define CAINS       LALT(LCTL(KC_INS))
 | 
			
		||||
#define TGNKRO      MAGIC_TOGGLE_NKRO
 | 
			
		||||
 | 
			
		||||
#define NAVCH       LCTL(KC_HOME)
 | 
			
		||||
#define NAVCPD      LCTL(KC_PGDN)
 | 
			
		||||
#define NAVCPU      LCTL(KC_PGUP)
 | 
			
		||||
#define NAVCE       LCTL(KC_END)
 | 
			
		||||
#define NAVCU       LCTL(KC_UP)
 | 
			
		||||
#define NAVCD       LCTL(KC_DOWN)
 | 
			
		||||
#define NAVCL       LCTL(KC_LEFT)
 | 
			
		||||
#define NAVCR       LCTL(KC_RGHT)
 | 
			
		||||
#define NAVGU       LGUI(KC_UP)
 | 
			
		||||
#define NAVGD       LGUI(KC_DOWN)
 | 
			
		||||
#define NAVGL       LGUI(KC_LEFT)
 | 
			
		||||
#define NAVGR       LGUI(KC_RGHT)
 | 
			
		||||
 | 
			
		||||
#define KC_NDSH 	LCTL(KC_PMNS)
 | 
			
		||||
#define KC_MDSH 	LALT(LCTL(KC_PMNS))
 | 
			
		||||
 | 
			
		||||
//!not sure if this old TMK code will work
 | 
			
		||||
//#define BOOTME      ACTION_FUNCTION(BOOTLOADER)
 | 
			
		||||
#define LCLEAR      ACTION_LAYER_SET_CLEAR(0)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  TAP
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │TAB │ Q  │ W  │ F  │ P  │ B  │    │ J  │ L  │ U  │ Y  │ ;  │DEL │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │BKSP│ A  │ R  │ S  │ T  │ G  │    │ M  │ N  │ E  │ I  │ O  │ '  │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │OSFT│ X  │ C  │ D  │ V  │ Z  │    │ K  │ H  │ ,  │ .  │ /  │LNAV│
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │OCTL│OALT│L9KY│ [] │OGUI│SPC │    │ENT │PGDN│ () │ {} │ \  │ `  │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
   HOLD
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │L FN│    │    │    │    │    │    │    │    │    │    │ALT │L!@#│
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │L OH│    │    │    │    │    │    │    │    │    │    │    │L OH│
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │SFT │    │    │    │    │    │    │    │    │    │    │CTL │SFT │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │CTL │ALT │L9KY│L!@#│GUI │L123│    │L123│LNAV│L!@#│MEH │L FN│LGRV│
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
   DOUBLETAP
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │    │!F4 │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │OSML│    │    │    │    │UNDO│    │    │    │    │    │    │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │OSML│OSML│ESC │    │OSML│    │    │    │PGUP│    │    │    │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
  Switch type
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │Br  │Z   │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │Z   │Br  │G   │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │G   │Z   │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │Z   │Z   │Z   │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │Y   │Z   │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │Z   │B   │Y   │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │Y   │Y   │C   │Z   │BLK │BLK │    │BLK │BLK │Z   │Z   │B   │G   │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Colemak PB&J (Mod-DH)
 | 
			
		||||
[_COLEMAK] = KEYMAP( \
 | 
			
		||||
   XK_TAB, TD(QUT),    KC_W,    KC_F,    KC_P,    KC_B,            KC_J,    KC_L,    KC_U,    KC_Y, ALT_IT,  XK_GRV,  \
 | 
			
		||||
   XK_BSP,    KC_A,    KC_R,    KC_S,    KC_T,    KC_G,            KC_M,    KC_N,    KC_E,    KC_I,    KC_O,  XK_DEL, \
 | 
			
		||||
    KYSFT,    KC_X,    KC_C,    KC_D,    KC_V, TD(UND),            KC_K,    KC_H, KC_COMM,  KC_DOT,  CTL_IT,  SFT_IT, \
 | 
			
		||||
    KYCTL,   KYALT,  ESC_IT,  XK_HARD,  KYGUI,  XK_SPC,          XK_ENT, XK_PGDN, XK_PREN, XK_EGPT,  PIPBOY,  XK_GRV \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
// useful for one-handed typing
 | 
			
		||||
[_KAMELOC] = KEYMAP( \
 | 
			
		||||
  _______, KC_SCLN,    KC_Y,    KC_U,    KC_L,    KC_J,            KC_B,    KC_P,    KC_F,    KC_W, TD(QUT), _______, \
 | 
			
		||||
  _______,    KC_O,    KC_I,    KC_E,    KC_N,    KC_M,            KC_G,    KC_T,    KC_S,    KC_R,    KC_A, _______, \
 | 
			
		||||
  _______, KC_SLSH,  KC_DOT, KC_COMM,    KC_H,    KC_K,         TD(UND),    KC_V,    KC_D,    KC_C,    KC_X, _______, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │ ~  │ 1  │ 2  │ 3  │ 4  │ 5  │    │ 6  │ 7  │ 8  │ 9  │ 0  │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │DASH│MV- │ V+ │NEXT│PLAY│    │ ←  │ ↓  │ ↑  │ →  │INS │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ -  │ =  │ [  │ ]  │ \  │    │HOME│PGDN│PGUP│END │ \  │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
[_IKAPILA] = KEYMAP( \
 | 
			
		||||
  KC_TILD,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0, _______, \
 | 
			
		||||
  _______, TD(DSH), TD(VOM), KC_VOLU, KC_MNXT, KC_MPLY,         KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT,  KC_INS, _______, \
 | 
			
		||||
  _______, KC_MINS,  KC_EQL, TD(HRD), KC_RBRC, KC_BSLS,         KC_HOME, KC_PGDN, KC_PGUP,  KC_END, KC_BSLS, _______, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │    │ !  │ @  │ #  │ $  │ %  │    │ ^  │ &  │ *  │ (  │ )  │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │DASH│MV- │ V+ │NEXT│PLAY│    │HOME│PGDN│PGUP│END │PSCR│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ _  │ +  │ {  │ }  │ |  │    │ ←  │ ↓  │ ↑  │ →  │    │    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[_IKASHFT] =  KEYMAP( \
 | 
			
		||||
  _______, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,         KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
 | 
			
		||||
   KC_DEL, TD(DSH), TD(VOM), KC_VOLU, KC_MNXT, KC_MPLY,         KC_HOME, KC_PGDN, KC_PGUP,  KC_END, KC_PSCR, _______, \
 | 
			
		||||
  _______, KC_UNDS, KC_PLUS, TD(EGT), KC_RCBR, KC_PIPE,         KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_PAUS, _______, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │    │ →  │ ↑  │ ←  │ ↓  │ →  │    │ →  │ ↓  │ ←  │ ↑  │ ↑  │    │ just in case someone hacks my IP with a 10MeG pipe, you know?
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ ←  │ ↓  │ →  │ ↑  │ ←  │    │ ↑  │ ←  │ ↓  │ →  │ ←  │    │ hacker_evasion layer
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤ >>init network SEQUENCE
 | 
			
		||||
  │    │ ↑  │ ←  │ ↓  │ →  │ ↑  │    │ ↓  │ ←  │ ↑  │ →  │ ←  │    │   sleep 11; echo "DONE\n"
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤   throttle INPUT 11001001 OUTPUT 010011001 ? FULL )); \
 | 
			
		||||
  │    │    │    │ →  │ ←  │ ↓  │    │ →  │ ↑  │ ←  │ ↓  │ ↑  │    │ <<chkconfig cargoCode ==== "'1'"
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘   up down left right kc_b kc_a GUI
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[_ARROWKY] =  KEYMAP( \
 | 
			
		||||
  _______, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,           KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP, _______, \
 | 
			
		||||
  _______, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP, KC_LEFT,         KC_DOWN, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, _______, \
 | 
			
		||||
  _______,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP,         KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP, KC_LEFT, _______, \
 | 
			
		||||
  _______, _______, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN,         KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │    │ F1 │ F2 │ F3 │ F4 │ F5 │    │ F6 │ F7 │ F8 │ F9 │ F10│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ F11│ F12│ F13│ F14│ F15│    │ F16│ F17│ F18│ F19│ F20│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ F21│ F22│ F23│ F24│PAUS│    │    │    │BOOT│RSET│NKRO│CAPS│
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[_FNCTION] =  KEYMAP( \
 | 
			
		||||
  _______,   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_F13,  KC_F14,  KC_F15,          KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, _______, \
 | 
			
		||||
  _______,  KC_F21,  KC_F22,  KC_F23,  KC_F24, _______,         _______, _______,M(BOOTME),   RESET,  TGNKRO, KC_CAPS, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │    │ →  │ F7 │ F8 │ F9 │ ↑  │    │NLCK│ P7 │ P8 │ P9 │ P- │BDEL│
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ ←  │ F4 │ F5 │ F6 │ ↓  │    │^INS│ P4 │ P5 │ P6 │ P+ │ () │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │CALT│ F1 │ F2 │ F3 │    │    │CALT│ P1 │ P2 │ P3 │ P* │ =  │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │ F0?│    │    │    │    │TGL │ P0 │ 0  │ P. │ P/ │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[_NINEKEY] =  KEYMAP( \
 | 
			
		||||
  _______, KC_RGHT,   KC_F7,   KC_F8,   KC_F9,   KC_UP,         KC_NLCK,   KC_P7,   KC_P8,   KC_P9, KC_PMNS, M(BSDEL), \
 | 
			
		||||
  _______, KC_LEFT,   KC_F4,   KC_F5,   KC_F6, KC_DOWN,           CAINS,   KC_P4,   KC_P5,   KC_P6, KC_PPLS, XK_PREN, \
 | 
			
		||||
  _______,    CAKY,   KC_F1,   KC_F2,   KC_F3, _______,            CAKY,   KC_P1,   KC_P2,   KC_P3, KC_PAST, TD(EQE), \
 | 
			
		||||
  _______, _______, _______,  KC_F11, _______, _______,    TG(_NINEKEY),   KC_P0,    KC_0, KC_PDOT, KC_PSLS, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
 | 
			
		||||
  │ESC │^PGD│^UP │^PGU│^PGU│^HOM│    │    │MW_L│ MU │MW_R│ AC2│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │^LFT│^DWN│^RGT│^PGD│^END│    │    │ ML │ MD │ MR │ AC1│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │ M2 │ M4 │ M3 │ M1 │ M5 │    │    │MW_D│MW_U│SLCK│ AC0│    │
 | 
			
		||||
  ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
 | 
			
		||||
  │    │    │    │    │    │    │    │    │    │    │    │    │    │
 | 
			
		||||
  └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
[_NAVIGAT] =  KEYMAP( \
 | 
			
		||||
   KC_ESC,  NAVCPD,   NAVCU,  NAVCPU,  NAVCPU,   NAVCH,         XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, KC_ACL2, _______, \
 | 
			
		||||
  _______,   NAVCL,   NAVCD,   NAVCR,  NAVCPD,   NAVCE,         XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1, _______, \
 | 
			
		||||
  _______, KC_BTN2, KC_BTN4, KC_BTN3, KC_BTN1, KC_BTN5,         XXXXXXX, KC_WH_D, KC_WH_U, KC_SLCK, KC_ACL0, _______, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
//ew. jk
 | 
			
		||||
[_QWERTY] = KEYMAP( \
 | 
			
		||||
  _______,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,            KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSPC, \
 | 
			
		||||
  _______,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,            KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT, \
 | 
			
		||||
  _______,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,            KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, SFT_ENT, \
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
//add greek symbols
 | 
			
		||||
//set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
 | 
			
		||||
 | 
			
		||||
//UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502)
 | 
			
		||||
//UC(0x251C),UC(0x253C),UC(0x2524),
 | 
			
		||||
//UC(0x2514),UC(0x2534),UC(0x2518),
 | 
			
		||||
*/
 | 
			
		||||
[_GRVTABL] =  KEYMAP( \
 | 
			
		||||
    TG(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   TG(3), \
 | 
			
		||||
    TG(1), XXXXXXX, TD(VOM), KC_VOLU, KC_MNXT, KC_MPLY,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   TG(1), \
 | 
			
		||||
  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,           TG(0), XXXXXXX,   TG(4), XXXXXXX,   TG(8),  LCLEAR, \
 | 
			
		||||
  XXXXXXX, XXXXXXX,   TG(6),   TG(3), XXXXXXX,   TG(2),         TG(2),   TG(7),   TG(3), OSM(MOD_MEH), TG(5), _______ \
 | 
			
		||||
)};
 | 
			
		||||
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
 [VOM] = ACTION_TAP_DANCE_DOUBLE(KC_VOLD, KC_MUTE),
 | 
			
		||||
 [PRN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
 | 
			
		||||
 [EGT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
 | 
			
		||||
 [HRD] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
 | 
			
		||||
 [DSH] = ACTION_TAP_DANCE_DOUBLE(KC_NDSH, KC_MDSH),
 | 
			
		||||
 [QUT] = ACTION_TAP_DANCE_DOUBLE(KC_Q,    LALT(KC_F4)),
 | 
			
		||||
 [ESC] = ACTION_TAP_DANCE_DOUBLE(TT(_NINEKEY), KC_ESC),
 | 
			
		||||
 [EQE] = ACTION_TAP_DANCE_DOUBLE(KC_EQL,  KC_ENT),
 | 
			
		||||
 [PGN] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN,  KC_PGUP),
 | 
			
		||||
 [UND] = ACTION_TAP_DANCE_DOUBLE(KC_Z, LCTL(KC_Z)),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
		switch(id) {
 | 
			
		||||
			case 0:
 | 
			
		||||
				return MACRO(D(LSHIFT),T(9), T(0),U(LSHIFT), T(LEFT), END);
 | 
			
		||||
			case 1:
 | 
			
		||||
				return MACRO(T(LBRC), T(RBRC), T(LEFT), END);
 | 
			
		||||
                        case 2:
 | 
			
		||||
                                return MACRO(D(LSHIFT),T(LBRC), T(RBRC),U(LSHIFT), T(ENT), T(UP), END);
 | 
			
		||||
            case 3:
 | 
			
		||||
                                return MACRO(T(BSPC), END);
 | 
			
		||||
/*                static bool bsdel_mods = false;
 | 
			
		||||
                case BSDEL: {
 | 
			
		||||
                  uint8_t kc = KC_BSPC;
 | 
			
		||||
                if (record->event.pressed) {
 | 
			
		||||
                  if (keyboard_report->mods) {
 | 
			
		||||
                    kc = KC_DEL;
 | 
			
		||||
                  }
 | 
			
		||||
                register_code (kc);
 | 
			
		||||
                bsdel_mods = keyboard_report->mods;
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                if (bsdel_mods) {
 | 
			
		||||
                  kc = KC_DEL;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                unregister_code (kc);
 | 
			
		||||
                }
 | 
			
		||||
                }
 | 
			
		||||
*/            case 4:
 | 
			
		||||
                if (!record->event.pressed) {
 | 
			
		||||
//                bootloader();
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
	}
 | 
			
		||||
	return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										3
									
								
								keyboards/planck/keymaps/coloneljesus/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/planck/keymaps/coloneljesus/Makefile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
ifndef QUANTUM_DIR
 | 
			
		||||
	include ../../../../Makefile
 | 
			
		||||
endif
 | 
			
		||||
							
								
								
									
										42
									
								
								keyboards/planck/keymaps/coloneljesus/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								keyboards/planck/keymaps/coloneljesus/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
#ifndef CONFIG_USER_H
 | 
			
		||||
#define CONFIG_USER_H
 | 
			
		||||
 | 
			
		||||
#include "../../config.h"
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
    #define STARTUP_SONG SONG(PLANCK_SOUND)
 | 
			
		||||
    // #define STARTUP_SONG SONG(NO_SOUND)
 | 
			
		||||
 | 
			
		||||
    #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
 | 
			
		||||
                                  SONG(COLEMAK_SOUND), \
 | 
			
		||||
                                  SONG(DVORAK_SOUND) \
 | 
			
		||||
                                }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define MUSIC_MASK (keycode != KC_NO)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * MIDI options
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Prevent use of disabled MIDI features in the keymap */
 | 
			
		||||
//#define MIDI_ENABLE_STRICT 1
 | 
			
		||||
 | 
			
		||||
/* enable basic MIDI features:
 | 
			
		||||
   - MIDI notes can be sent when in Music mode is on
 | 
			
		||||
*/
 | 
			
		||||
                                
 | 
			
		||||
#define MIDI_BASIC
 | 
			
		||||
 | 
			
		||||
/* enable advanced MIDI features:
 | 
			
		||||
   - MIDI notes can be added to the keymap
 | 
			
		||||
   - Octave shift and transpose
 | 
			
		||||
   - Virtual sustain, portamento, and modulation wheel
 | 
			
		||||
   - etc.
 | 
			
		||||
*/
 | 
			
		||||
//#define MIDI_ADVANCED
 | 
			
		||||
 | 
			
		||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 | 
			
		||||
//#define MIDI_TONE_KEYCODE_OCTAVES 2
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										261
									
								
								keyboards/planck/keymaps/coloneljesus/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								keyboards/planck/keymaps/coloneljesus/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,261 @@
 | 
			
		|||
/* Copyright 2015-2017 Jack Humbert
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "planck.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
 | 
			
		||||
extern keymap_config_t keymap_config;
 | 
			
		||||
 | 
			
		||||
enum planck_layers {
 | 
			
		||||
  _QWERTY,
 | 
			
		||||
  _COLEMAK,
 | 
			
		||||
  _DVORAK,
 | 
			
		||||
  _LOWER,
 | 
			
		||||
  _RAISE,
 | 
			
		||||
  _PLOVER,
 | 
			
		||||
  _ADJUST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum planck_keycodes {
 | 
			
		||||
  QWERTY = SAFE_RANGE,
 | 
			
		||||
  COLEMAK,
 | 
			
		||||
  DVORAK,
 | 
			
		||||
  PLOVER,
 | 
			
		||||
  LOWER,
 | 
			
		||||
  RAISE,
 | 
			
		||||
  BACKLIT,
 | 
			
		||||
  EXT_PLV
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
/* Qwerty
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * | Esc  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Ctrl | GUI  | Alt  | App  |Lower |    Space    |Raise |   -  |   =  |   \  | Alt  |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_QWERTY] = {
 | 
			
		||||
  {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
 | 
			
		||||
  {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
 | 
			
		||||
  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, RSFT_T(KC_ENT) },
 | 
			
		||||
  {KC_LCTL, KC_LGUI, KC_LALT, KC_APP,  LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_MINS, KC_EQL,  KC_BSLS, KC_RALT}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Colemak
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_COLEMAK] = {
 | 
			
		||||
  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
 | 
			
		||||
  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
 | 
			
		||||
  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
 | 
			
		||||
  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Dvorak
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_DVORAK] = {
 | 
			
		||||
  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
 | 
			
		||||
  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
 | 
			
		||||
  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
 | 
			
		||||
  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Lower
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |   {  |   }  | Del  | Home | PgDn | PgUp | End  |      |      |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |ISO ~ |ISO | |      |      |      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      | Mute | Vol- | Vol+ | Play |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_LOWER] = {
 | 
			
		||||
  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR,    KC_ASTR,    KC_LPRN, KC_RPRN, KC_BSPC},
 | 
			
		||||
  {_______, _______, _______, KC_LCBR, KC_RCBR, KC_DEL,  KC_HOME, KC_PGDN,    KC_PGUP,    KC_END,  _______, _______},
 | 
			
		||||
  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   S(KC_NUHS), S(KC_NUBS), KC_MPRV, KC_MNXT, _______},
 | 
			
		||||
  {_______, _______, _______, _______, _______, _______, _______, _______,    KC_MUTE,    KC_VOLD, KC_VOLU, KC_MPLY}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Raise
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |   [  |   ]  | Del  | Left | Down |  Up  | Right|      |      |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      | Mute | Vol- | Vol+ | Play |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_RAISE] = {
 | 
			
		||||
  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
 | 
			
		||||
  {_______, _______, _______, KC_LBRC, KC_RBRC, KC_DEL,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______},
 | 
			
		||||
  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, KC_MPRV, KC_MNXT, _______},
 | 
			
		||||
  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Plover layer (http://opensteno.org)
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[_PLOVER] = {
 | 
			
		||||
  {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
 | 
			
		||||
  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
 | 
			
		||||
  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
 | 
			
		||||
  {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
/* Adjust (Lower + Raise)
 | 
			
		||||
 * ,-----------------------------------------------------------------------------------.
 | 
			
		||||
 * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
 | 
			
		||||
 * |------+------+------+------+------+-------------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
 | 
			
		||||
 * |------+------+------+------+------+------|------+------+------+------+------+------|
 | 
			
		||||
 * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |
 | 
			
		||||
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 | 
			
		||||
 * |      |      |      |      |      |             |      |      |      |      |      |
 | 
			
		||||
 * `-----------------------------------------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_ADJUST] = {
 | 
			
		||||
  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL },
 | 
			
		||||
  {_______, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
 | 
			
		||||
  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
 | 
			
		||||
  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
  float plover_song[][2]     = SONG(PLOVER_SOUND);
 | 
			
		||||
  float plover_gb_song[][2]  = SONG(PLOVER_GOODBYE_SOUND);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
    case QWERTY:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case COLEMAK:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        set_single_persistent_default_layer(_COLEMAK);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case DVORAK:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        set_single_persistent_default_layer(_DVORAK);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case LOWER:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case RAISE:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case BACKLIT:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        register_code(KC_RSFT);
 | 
			
		||||
        #ifdef BACKLIGHT_ENABLE
 | 
			
		||||
          backlight_step();
 | 
			
		||||
        #endif
 | 
			
		||||
      } else {
 | 
			
		||||
        unregister_code(KC_RSFT);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case PLOVER:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          stop_all_notes();
 | 
			
		||||
          PLAY_SONG(plover_song);
 | 
			
		||||
        #endif
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        layer_off(_ADJUST);
 | 
			
		||||
        layer_on(_PLOVER);
 | 
			
		||||
        if (!eeconfig_is_enabled()) {
 | 
			
		||||
            eeconfig_init();
 | 
			
		||||
        }
 | 
			
		||||
        keymap_config.raw = eeconfig_read_keymap();
 | 
			
		||||
        keymap_config.nkro = 1;
 | 
			
		||||
        eeconfig_update_keymap(keymap_config.raw);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case EXT_PLV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        #ifdef AUDIO_ENABLE
 | 
			
		||||
          PLAY_SONG(plover_gb_song);
 | 
			
		||||
        #endif
 | 
			
		||||
        layer_off(_PLOVER);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								keyboards/planck/keymaps/coloneljesus/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/planck/keymaps/coloneljesus/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
# /u/Coloneljesus's Planck Layout
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								keyboards/xd60/keymaps/BASE/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								keyboards/xd60/keymaps/BASE/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
#include "xd60.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
  // 0: Base Layer
 | 
			
		||||
  KEYMAP(
 | 
			
		||||
      KC_ESC,  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_NO,    \
 | 
			
		||||
      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_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,             KC_ENT,    \
 | 
			
		||||
      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_NO,  KC_RSFT  ,KC_UP,    KC_DEL,      \
 | 
			
		||||
      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_LEFT, KC_DOWN,  KC_RIGHT),
 | 
			
		||||
 | 
			
		||||
  // 1: Function Layer
 | 
			
		||||
  KEYMAP(
 | 
			
		||||
      RESET,   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_NO,   KC_NO,    \
 | 
			
		||||
      KC_NO,   KC_WH_U, KC_UP,   KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO,  KC_INS, KC_NO,   KC_PSCR, KC_SLCK,  KC_PAUS,           KC_DEL,    \
 | 
			
		||||
      KC_NO,   KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO,  KC_NO,  KC_NO,   KC_HOME, KC_PGUP,  KC_NO,             KC_ENT,    \
 | 
			
		||||
      KC_LSFT, KC_NO,   KC_NO,   KC_APP,  BL_STEP,KC_NO,  KC_NO,  KC_VOLD,KC_VOLU,KC_MUTE, KC_END,  KC_RSFT,  KC_NO  ,KC_PGUP,  KC_INS,      \
 | 
			
		||||
      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_HOME, KC_PGDOWN,KC_END),
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Custom Actions
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Macros
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		||||
 | 
			
		||||
  // MACRODOWN only works in this function
 | 
			
		||||
  switch(id) {
 | 
			
		||||
    case 0:
 | 
			
		||||
      if (record->event.pressed) { register_code(KC_RSFT); }
 | 
			
		||||
      else { unregister_code(KC_RSFT); }
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Loop
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
  // Empty
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										5
									
								
								keyboards/xd60/keymaps/BASE/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/xd60/keymaps/BASE/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||

 | 
			
		||||
 | 
			
		||||
All of the keys which CAN have a function should be assigned one.
 | 
			
		||||
 | 
			
		||||
The keys with KC_NO cannot be assigned a value
 | 
			
		||||
							
								
								
									
										46
									
								
								keyboards/xd60/keymaps/base/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								keyboards/xd60/keymaps/base/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
#include "xd60.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
  // 0: Base Layer
 | 
			
		||||
  KEYMAP(
 | 
			
		||||
      KC_ESC,  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_NO,    \
 | 
			
		||||
      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_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,             KC_ENT,    \
 | 
			
		||||
      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_NO,  KC_RSFT  ,KC_UP,    KC_DEL,      \
 | 
			
		||||
      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_LEFT, KC_DOWN,  KC_RIGHT),
 | 
			
		||||
 | 
			
		||||
  // 1: Function Layer
 | 
			
		||||
  KEYMAP(
 | 
			
		||||
      RESET,   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_NO,   KC_NO,    \
 | 
			
		||||
      KC_NO,   KC_WH_U, KC_UP,   KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO,  KC_INS, KC_NO,   KC_PSCR, KC_SLCK,  KC_PAUS,           KC_DEL,    \
 | 
			
		||||
      KC_NO,   KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO,  KC_NO,  KC_NO,   KC_HOME, KC_PGUP,  KC_NO,             KC_ENT,    \
 | 
			
		||||
      KC_LSFT, KC_NO,   KC_NO,   KC_APP,  BL_STEP,KC_NO,  KC_NO,  KC_VOLD,KC_VOLU,KC_MUTE, KC_END,  KC_RSFT,  KC_NO  ,KC_PGUP,  KC_INS,      \
 | 
			
		||||
      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_HOME, KC_PGDOWN,KC_END),
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Custom Actions
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Macros
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		||||
 | 
			
		||||
  // MACRODOWN only works in this function
 | 
			
		||||
  switch(id) {
 | 
			
		||||
    case 0:
 | 
			
		||||
      if (record->event.pressed) { register_code(KC_RSFT); }
 | 
			
		||||
      else { unregister_code(KC_RSFT); }
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Loop
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
  // Empty
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										5
									
								
								keyboards/xd60/keymaps/base/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/xd60/keymaps/base/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||

 | 
			
		||||
 | 
			
		||||
All of the keys which CAN have a function should be assigned one.
 | 
			
		||||
 | 
			
		||||
The keys with KC_NO cannot be assigned a value
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +41,24 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qk_tap_dance_dual_role_finished (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  qk_tap_dance_dual_role_t *pair = (qk_tap_dance_dual_role_t *)user_data;
 | 
			
		||||
 | 
			
		||||
  if (state->count == 1) {
 | 
			
		||||
    register_code16 (pair->kc);
 | 
			
		||||
  } else if (state->count == 2) {
 | 
			
		||||
    layer_invert (pair->layer);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qk_tap_dance_dual_role_reset (qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
  qk_tap_dance_dual_role_t *pair = (qk_tap_dance_dual_role_t *)user_data;
 | 
			
		||||
 | 
			
		||||
  if (state->count == 1) {
 | 
			
		||||
    unregister_code16 (pair->kc);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void _process_tap_dance_action_fn (qk_tap_dance_state_t *state,
 | 
			
		||||
                                                 void *user_data,
 | 
			
		||||
                                                 qk_tap_dance_user_fn_t fn)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,11 +54,22 @@ typedef struct
 | 
			
		|||
  uint16_t kc2;
 | 
			
		||||
} qk_tap_dance_pair_t;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  uint16_t kc;
 | 
			
		||||
  uint8_t layer;
 | 
			
		||||
} qk_tap_dance_dual_role_t;
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \
 | 
			
		||||
    .fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \
 | 
			
		||||
    .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }),  \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) { \
 | 
			
		||||
    .fn = { NULL, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, \
 | 
			
		||||
    .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer }), \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#define ACTION_TAP_DANCE_FN(user_fn) {  \
 | 
			
		||||
    .fn = { NULL, user_fn, NULL }, \
 | 
			
		||||
    .user_data = NULL, \
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +97,9 @@ void reset_tap_dance (qk_tap_dance_state_t *state);
 | 
			
		|||
void qk_tap_dance_pair_finished (qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
 | 
			
		||||
void qk_tap_dance_dual_role_finished (qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void qk_tap_dance_dual_role_reset (qk_tap_dance_state_t *state, void *user_data);
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#define TD(n) KC_NO
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
# Quantum Mechanical Keyboard Firmware
 | 
			
		||||
 | 
			
		||||
[](https://github.com/qmk/qmk_firmware/tags)
 | 
			
		||||
[](https://travis-ci.org/qmk/qmk_firmware)
 | 
			
		||||
[](https://gitter.im/qmk/qmk_firmware)
 | 
			
		||||
[](https://docs.qmk.fm)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue