Remove obvious user keymaps, keyboards/{d,e,f}* edition. (#22695)
				
					
				
			This commit is contained in:
		
							parent
							
								
									d235352504
								
							
						
					
					
						commit
						a1c8b1ebf7
					
				
					 480 changed files with 0 additions and 33279 deletions
				
			
		| 
						 | 
				
			
			@ -1,50 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Evelien Dekkers
 | 
			
		||||
 | 
			
		||||
This program is free software: you can redistribute it and/or modify
 | 
			
		||||
it under the terms of the GNU General Public License as published by
 | 
			
		||||
the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
(at your option) any later version.
 | 
			
		||||
 | 
			
		||||
This program is distributed in the hope that it will be useful,
 | 
			
		||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
You should have received a copy of the GNU General Public License
 | 
			
		||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
// These are all aliases for the  function layers.
 | 
			
		||||
#define _L0 0
 | 
			
		||||
#define _L1 1
 | 
			
		||||
#define _L2 2
 | 
			
		||||
#define _L3 3
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
[_L0] = LAYOUT_split_space(
 | 
			
		||||
  KC_ESC,		KC_Q,		KC_W,		KC_E,		KC_R,		KC_T,		KC_Y,		KC_U,		KC_I,		KC_O,		KC_P,		KC_DEL,		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_ENT,
 | 
			
		||||
  KC_LSFT,		KC_Z,		KC_X,		KC_C,		KC_V,		KC_B,		KC_N,		KC_M,		KC_COMM,	KC_DOT,		KC_RSFT,				MO(_L1),
 | 
			
		||||
  KC_LCTL,		KC_LGUI,	KC_LALT,	TG(_L3),	KC_SPC, 				KC_SPC,					MO(_L2),	KC_RALT,	KC_APP,					KC_RCTL),
 | 
			
		||||
 
 | 
			
		||||
[_L2] = LAYOUT_split_space(
 | 
			
		||||
  _______,		KC_VOLD,	KC_VOLU,	KC_MUTE,	QK_BOOT,		_______,	KC_CALC,	KC_PGUP,	KC_UP,		KC_PGDN,	KC_PSCR,	KC_SCRL,	KC_PAUS,
 | 
			
		||||
  KC_CAPS,		KC_MPRV,	KC_MPLY,	KC_MNXT,	_______,	_______,	KC_HOME,	KC_LEFT,	KC_DOWN,	KC_RIGHT,	KC_INS,					_______,
 | 
			
		||||
  _______,		_______,	_______,	_______,	_______,	_______,	_______,	BL_TOGG,	BL_DOWN,		BL_UP, 		_______,				_______,
 | 
			
		||||
  _______,		_______,	_______,	_______,	_______, 				_______,				_______,	_______,	_______,				_______),
 | 
			
		||||
 
 | 
			
		||||
[_L1] = LAYOUT_split_space(
 | 
			
		||||
  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_1,			KC_2,		KC_3,		KC_4,		KC_5,		KC_6,		KC_7,		KC_8,		KC_9,		KC_0,		KC_MINS,				KC_EQL,
 | 
			
		||||
  _______,		_______,	_______,	_______,	_______,	KC_QUOT,	KC_SLSH,	KC_LBRC,	KC_RBRC,	KC_BSLS,	KC_RSFT,				_______,
 | 
			
		||||
  _______,		_______,	_______,	_______,	_______, 				_______,				_______,	_______,	_______,				_______),
 | 
			
		||||
 
 | 
			
		||||
[_L3] = LAYOUT_split_space(
 | 
			
		||||
  _______,		_______,	_______,	   KC_7,	   KC_8,	   KC_9,	_______,	_______,	_______,	_______,	_______,	_______,	_______,
 | 
			
		||||
  _______,		_______,	_______,	   KC_4,	   KC_5,	   KC_6,	_______,	_______,	_______,	_______,	_______,				_______,
 | 
			
		||||
  _______,		_______,	_______,	   KC_1,	   KC_2,	   KC_3,	_______,	_______,	_______,	_______,	_______,				_______,
 | 
			
		||||
  _______,		_______,	_______,	   _______,    KC_0,	  KC_DOT, 	        	            _______,	_______,	_______,				QK_BOOT)
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Evelien Dekkers
 | 
			
		||||
 | 
			
		||||
This program is free software: you can redistribute it and/or modify
 | 
			
		||||
it under the terms of the GNU General Public License as published by
 | 
			
		||||
the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
(at your option) any later version.
 | 
			
		||||
 | 
			
		||||
This program is distributed in the hope that it will be useful,
 | 
			
		||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
You should have received a copy of the GNU General Public License
 | 
			
		||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
			
		||||
// entirely and just use numbers.
 | 
			
		||||
 | 
			
		||||
#define _MA 0 //Main layer
 | 
			
		||||
#define _LO 1 //FN1
 | 
			
		||||
#define _RA 2 //FN
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
[_MA] = LAYOUT_split_space(
 | 
			
		||||
  QK_GESC,  KC_Q,     KC_W,       KC_E,      KC_R,        KC_T,       KC_Y,    KC_U,      KC_I,     KC_O,      KC_P,     KC_DEL,   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_ENT,
 | 
			
		||||
  KC_LSFT,            KC_Z,       KC_X,      KC_C,        KC_V,       KC_B,    KC_N,      KC_M,     KC_COMM,   KC_DOT,   KC_SLSH,  KC_RSFT,
 | 
			
		||||
  KC_LCTL,  KC_LGUI,  KC_LALT,    MO(_LO),                KC_SPC,              KC_SPC,              MO(_RA),   KC_RALT,  KC_APP,   KC_RCTL),
 | 
			
		||||
 | 
			
		||||
[_LO] = LAYOUT_split_space(
 | 
			
		||||
  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_1,     KC_2,     KC_3,       KC_4,       KC_5,       KC_6,       KC_7,     KC_8,     KC_9,     KC_0,      KC_MINS,            KC_EQL,
 | 
			
		||||
  _______,            LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______,  _______,  KC_QUOT,  KC_LBRC,   KC_RBRC,  KC_BSLS,  _______,
 | 
			
		||||
  _______,  _______,  _______,    _______,                _______,              _______,            _______,   _______,  _______,  QK_BOOT),
 | 
			
		||||
 | 
			
		||||
[_RA] = LAYOUT_split_space(
 | 
			
		||||
  _______,  _______,  _______,    _______,    _______,    _______,    _______,  KC_PGUP,  KC_UP,    KC_PGDN,   _______,  _______,  _______,
 | 
			
		||||
  KC_CAPS,  _______,  _______,    _______,    _______,    _______,    _______,  KC_LEFT,  KC_DOWN,  KC_RIGHT,  _______,            _______,
 | 
			
		||||
  _______,            _______,    _______,    _______,    _______,    _______,  _______,  _______,  KC_VOLD,   KC_VOLU,  KC_MPLY,  KC_PSCR,
 | 
			
		||||
  _______,  _______,  _______,    _______,                _______,              _______,            _______,   _______,  _______,  _______)
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
This is the default keymap as found on the Vortex Core, with some added buttons for RGB and backlight control.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,155 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 Evelien Dekkers
 | 
			
		||||
 | 
			
		||||
This program is free software: you can redistribute it and/or modify
 | 
			
		||||
it under the terms of the GNU General Public License as published by
 | 
			
		||||
the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
(at your option) any later version.
 | 
			
		||||
 | 
			
		||||
This program is distributed in the hope that it will be useful,
 | 
			
		||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
You should have received a copy of the GNU General Public License
 | 
			
		||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
/* enum custom_keycodes {
 | 
			
		||||
  SHIFTEN = SAFE_RANGE,
 | 
			
		||||
  LOWER,
 | 
			
		||||
  RAISE,
 | 
			
		||||
  SPACFNL,
 | 
			
		||||
  SPACFNR,
 | 
			
		||||
  MAIN,
 | 
			
		||||
  ADJUST
 | 
			
		||||
}; */
 | 
			
		||||
 | 
			
		||||
#define _MAIN 0
 | 
			
		||||
#define _SPLEFT 1
 | 
			
		||||
#define _SPRIGHT 2
 | 
			
		||||
#define _LOWER 3
 | 
			
		||||
#define _RAISE 4
 | 
			
		||||
#define _ADJUST 5
 | 
			
		||||
 | 
			
		||||
#define _DPAD 6
 | 
			
		||||
#define _DPADNUM 7
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SHIFTEN RSFT_T(KC_ENT)
 | 
			
		||||
#define LOWER MO(_LOWER)
 | 
			
		||||
#define RAISE MO(_RAISE)
 | 
			
		||||
#define SPACFNL LT(_SPLEFT, KC_SPC)
 | 
			
		||||
#define SPACFNR LT(_SPRIGHT, KC_SPC)
 | 
			
		||||
 | 
			
		||||
#define DP_ON TO(_DPAD)
 | 
			
		||||
#define DP_OFF TO(_MAIN)
 | 
			
		||||
#define DPADNUM MO(_DPADNUM)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
	
 | 
			
		||||
	// Primary layer	
 | 
			
		||||
	[_MAIN] = LAYOUT_split_space(
 | 
			
		||||
	  KC_ESC,		KC_Q,		KC_W,		KC_E,		KC_R,		KC_T,		KC_Y,		KC_U,		KC_I,		KC_O,		KC_P,		KC_DEL,		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,	SHIFTEN,
 | 
			
		||||
	  KC_LCTL,		KC_LGUI,	KC_LALT,	LOWER,					SPACFNL, 				SPACFNR,				RAISE,		KC_RALT,	KC_APP,		KC_RCTL
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	// Main Fn navigation layer
 | 
			
		||||
	[_SPLEFT] = LAYOUT_split_space(
 | 
			
		||||
	  _______,		KC_VOLU, 	KC_PGUP, 	KC_UP,   	KC_PGDN, 	KC_INS,  	_______, 	_______, 	KC_UP,   	_______, 	KC_PSCR,	_______,	_______,	
 | 
			
		||||
	  _______,		KC_VOLD, 	KC_LEFT, 	KC_DOWN, 	KC_RGHT, 	KC_HOME, 	_______, 	KC_LEFT, 	KC_DOWN, 	KC_RGHT, 	_______, 				KC_DEL , 	
 | 
			
		||||
	  _______,					_______,    KC_MPRV, 	KC_MPLY, 	KC_MNXT, 	KC_END,  	_______, 	_______, 	KC_VOLD, 	KC_VOLU, 	KC_MUTE,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	_______,	_______,	_______
 | 
			
		||||
	),	
 | 
			
		||||
 | 
			
		||||
	// Primary numeric layer using right Spacebar
 | 
			
		||||
	[_SPRIGHT] = LAYOUT_split_space(
 | 
			
		||||
	  KC_GRV,		_______,	_______,	KC_LBRC, 	KC_RBRC,	_______,	_______,	KC_7,		KC_8,		KC_9,		KC_0,		_______,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	KC_LCBR, 	KC_RCBR,	_______,	_______,	KC_4,		KC_5,		KC_6,	 	KC_MINUS, 				KC_BSLS, 	
 | 
			
		||||
	  _______,					_______,	_______,	_______,	_______,	_______,	_______,	KC_1,		KC_2,		KC_3,		KC_EQUAL,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	_______,	_______,	_______
 | 
			
		||||
	),	
 | 
			
		||||
 | 
			
		||||
	// Secondary symbol layer, also Lower
 | 
			
		||||
	[_LOWER] = LAYOUT_split_space(
 | 
			
		||||
	  KC_TILD, 		_______,	_______,	_______,	_______,	_______,	_______, 	KC_AMPR, 	KC_ASTR, 	KC_LPRN, 	KC_RPRN,	KC_SCRL,	KC_PAUS,	
 | 
			
		||||
	  KC_CAPS,		KC_F1,   	KC_F2,   	KC_F3,   	KC_F4,   	KC_F5,   	KC_F6,		KC_DLR,  	KC_PERC, 	KC_CIRC, 	KC_UNDS, 				KC_PIPE,	
 | 
			
		||||
	  _______,					KC_F7,   	KC_F8,   	KC_F9,   	KC_F10,  	KC_F11,  	KC_F12,		KC_EXLM, 	KC_AT,   	KC_HASH, 	KC_PLUS,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	KC_VOLD, 	KC_VOLU, 	KC_MPLY
 | 
			
		||||
	),	
 | 
			
		||||
	  
 | 
			
		||||
	// Numpad layer // Also a homage to Planck with the media player/pause button
 | 
			
		||||
	[_RAISE] = LAYOUT_split_space(
 | 
			
		||||
	  _______,		_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,				_______,
 | 
			
		||||
	  _______,					_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	KC_VOLD, 	KC_VOLU, 	KC_MPLY
 | 
			
		||||
	),	
 | 
			
		||||
 | 
			
		||||
	// Safety layer for special functions
 | 
			
		||||
	[_ADJUST] = LAYOUT_split_space(
 | 
			
		||||
	  _______,		QK_BOOT,		_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,
 | 
			
		||||
	  _______,		_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,				_______,
 | 
			
		||||
	  _______,					_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	_______,	DP_ON,
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	_______,	_______,	_______
 | 
			
		||||
	),
 | 
			
		||||
	
 | 
			
		||||
	[_DPAD] = LAYOUT_split_space(
 | 
			
		||||
	  KC_ESC,		KC_Q,		KC_W,		KC_E,		KC_R,		KC_T,		KC_Y,		KC_U,		KC_I,		KC_O,		KC_P,		KC_DEL,		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_UP,		KC_ENT,
 | 
			
		||||
	  KC_LCTL,		KC_LGUI,	KC_LALT,	XXXXXXX,				DPADNUM, 				KC_SPC,					DP_OFF,		KC_LEFT,	KC_DOWN,	KC_RGHT
 | 
			
		||||
	),
 | 
			
		||||
	
 | 
			
		||||
	[_DPADNUM] = LAYOUT_split_space(
 | 
			
		||||
	  _______,		KC_1,		KC_2,		KC_3,		KC_4,		KC_5,		KC_6,		KC_7,		KC_8,		KC_9,		KC_0,		_______,	_______,
 | 
			
		||||
	  _______,		_______,	_______,	_______,	_______,	KC_F1,   	KC_F2,   	KC_F3,   	KC_F4,   	KC_F5,   	KC_F6,					_______,
 | 
			
		||||
	  _______,					_______,	_______,	_______,	_______,	KC_F7,   	KC_F8,   	KC_F9,   	KC_F10,  	KC_F11,  	KC_F12,		_______,
 | 
			
		||||
	  _______,		_______,	_______,	_______,				_______, 				_______,				_______,	_______,	_______,	_______
 | 
			
		||||
	)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
/*     case MAIN:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        persistant_default_layer_set(1UL<<_MAIN);
 | 
			
		||||
      }
 | 
			
		||||
      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 ADJUST:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break; */
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Juno's junonum keymap adapted for Atom47.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,17 +0,0 @@
 | 
			
		|||
/* Copyright 2022 PHSC138
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
#define TAPPING_TERM 150 // Tap dance time limit
 | 
			
		||||
| 
						 | 
				
			
			@ -1,390 +0,0 @@
 | 
			
		|||
/* Copyright 2022 PHSC138
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
// These are all aliases for the function layers.
 | 
			
		||||
enum custom_layers {
 | 
			
		||||
    _BASE,
 | 
			
		||||
    _PROG,
 | 
			
		||||
    _GAME,
 | 
			
		||||
    _FN,
 | 
			
		||||
    _FN1,
 | 
			
		||||
    _NUM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Tap Dance
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char is_press_action;
 | 
			
		||||
    int state;
 | 
			
		||||
} tap;
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    SINGLE_TAP = 1,
 | 
			
		||||
    SINGLE_HOLD = 2,
 | 
			
		||||
    DOUBLE_TAP = 3,
 | 
			
		||||
    DOUBLE_HOLD = 4,
 | 
			
		||||
    DOUBLE_SINGLE_TAP = 5, // Send two single taps
 | 
			
		||||
    TRIPLE_TAP = 6,
 | 
			
		||||
    TRIPLE_HOLD = 7
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Tap dance enums
 | 
			
		||||
enum {
 | 
			
		||||
    PN_SWAP = 0,
 | 
			
		||||
    LAPO = 1,
 | 
			
		||||
    LCPO = 2,
 | 
			
		||||
    RAPC = 3,
 | 
			
		||||
    RCPC = 4,
 | 
			
		||||
    D20 = 5
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
    PROF_MAC = QK_USER
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t cur_dance (tap_dance_state_t *state);
 | 
			
		||||
void pn_finished (tap_dance_state_t *state, void *user_data);
 | 
			
		||||
void pn_reset (tap_dance_state_t *state, void *user_data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
// TREE: 'pn' to enter custom layers:
 | 
			
		||||
    // _BASE
 | 
			
		||||
        // _FN
 | 
			
		||||
        // _FN1
 | 
			
		||||
        // _NUM
 | 
			
		||||
        // _PROG
 | 
			
		||||
    // _PROG
 | 
			
		||||
        // _FN
 | 
			
		||||
        // _FN1
 | 
			
		||||
        // _NUM
 | 
			
		||||
        // _GAME
 | 
			
		||||
    // _GAME
 | 
			
		||||
    // _BASE
 | 
			
		||||
 | 
			
		||||
// Tap pn for toggle to _PROG, or hold for numpad
 | 
			
		||||
[_BASE] = LAYOUT_split_space(
 | 
			
		||||
    QK_GESC,  KC_Q,     KC_W,     KC_E,        KC_R,        KC_T,       KC_Y,    KC_U,      KC_I,    KC_O,       KC_P,     KC_DEL,   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_ENT,
 | 
			
		||||
    KC_LSFT,  KC_Z,     KC_X,     KC_C,        KC_V,        KC_B,       KC_N,    KC_M,      KC_COMM, KC_DOT,     KC_RSFT,            MO(_FN1),
 | 
			
		||||
    KC_LCTL,  KC_LGUI,  KC_LALT,  TD(PN_SWAP),              KC_SPC,              KC_SPC,             MO(_FN),    KC_RALT,  KC_APP,   KC_RCTL),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// LEFT AND RIGHT SHIFT: '(' and ')' when tapped, shift when held
 | 
			
		||||
// LEFT AND RIGHT CTRL: '{' and '}' when tapped, ctrl when held
 | 
			
		||||
// LEFT AND RIGHT ALT: '[' and ']' when tapped, ctrl when held
 | 
			
		||||
[_PROG] = LAYOUT_split_space(
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,   _______, _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,            _______,
 | 
			
		||||
    SC_LSPO,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    SC_RSPC,            _______,
 | 
			
		||||
    TD(LCPO), _______,  TD(LAPO), TO(_GAME),                _______,             _______,            _______,    TD(RAPC),  _______, TD(RCPC)),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Macro for right space is bhop
 | 
			
		||||
// Maco for 'fn' is move forward
 | 
			
		||||
// Macro for 'fn1' is spin constantly
 | 
			
		||||
// Macro for right shift is D20
 | 
			
		||||
[_GAME] = LAYOUT_split_space(
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,   _______, _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,            _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    TD(D20),            XXXXXXX,
 | 
			
		||||
    _______,  _______,  _______,  TO(_BASE),                _______,             XXXXXXX,            XXXXXXX,    _______,   XXXXXXX, _______),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[_FN] = LAYOUT_split_space(
 | 
			
		||||
    _______,  KC_VOLD,  KC_VOLU,  KC_MUTE,     QK_RBT,      _______,    KC_CALC, KC_PGUP,   _______, KC_PGDN,    KC_PSCR,   KC_SCRL,  KC_PAUS,
 | 
			
		||||
    KC_CAPS,  KC_MPRV,  KC_MPLY,  KC_MNXT,     _______,     _______,    KC_LEFT, KC_DOWN,   KC_UP,   KC_RIGHT,   KC_INS,              _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     KC_HOME,    KC_END,  BL_TOGG,   BL_DOWN,  BL_UP,     _______,             _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,                  _______,             _______,            _______,    _______,   _______,  _______),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[_FN1] = LAYOUT_split_space(
 | 
			
		||||
    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_1,     KC_2,     KC_3,     KC_4,        KC_5,        KC_6,       KC_7,    KC_8,      KC_9,    KC_0,       KC_MINS,             KC_EQL,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     KC_QUOT,    KC_SLSH, KC_LBRC,   KC_RBRC, KC_BSLS,    KC_RSFT,             _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,             _______,            _______,    _______,             _______),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[_NUM] = LAYOUT_split_space(
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    KC_7,    KC_8,      KC_9,    _______,    PROF_MAC,  _______,  _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     _______,    KC_4,    KC_5,      KC_6,    _______,    _______,             _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     KC_1,       KC_2,    KC_3,      KC_DOT,  _______,    _______,             _______,
 | 
			
		||||
    _______,  _______,  _______,  _______,     _______,     KC_0,                 _______,           _______,    DB_TOGG,             QK_BOOT),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*--- Profile Macro ---*/
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
    case PROF_MAC:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        // When keycode PROF_MAC is pressed
 | 
			
		||||
        SEND_STRING("if [ $shell = 'zsh' ]; then echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.zshrc\nclear; else echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.profile\nclear; fi\n");
 | 
			
		||||
      } else {
 | 
			
		||||
        // When keycode QMKBEST is released
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
};
 | 
			
		||||
/*--- End Profile Macro ---*/
 | 
			
		||||
 | 
			
		||||
/* Return an integer that corresponds to what kind of tap dance should be executed.
 | 
			
		||||
 *
 | 
			
		||||
 * How to figure out tap dance state: interrupted and pressed.
 | 
			
		||||
 *
 | 
			
		||||
 * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
 | 
			
		||||
 *  under the tapping term. This is typically indicitive that you are trying to "tap" the key.
 | 
			
		||||
 *
 | 
			
		||||
 * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
 | 
			
		||||
 *  has ended, but the key is still being pressed down. This generally means the key is being "held".
 | 
			
		||||
 *
 | 
			
		||||
 * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
 | 
			
		||||
 *  feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
 | 
			
		||||
 *  For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
 | 
			
		||||
 *
 | 
			
		||||
 * Good places to put an advanced tap dance:
 | 
			
		||||
 *  z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
 | 
			
		||||
 *
 | 
			
		||||
 * Criteria for "good placement" of a tap dance key:
 | 
			
		||||
 *  Not a key that is hit frequently in a sentence
 | 
			
		||||
 *  Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
 | 
			
		||||
 *    in a web form. So 'tab' would be a poor choice for a tap dance.
 | 
			
		||||
 *  Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
 | 
			
		||||
 *    letter 'p', the word 'pepper' would be quite frustating to type.
 | 
			
		||||
 *
 | 
			
		||||
 * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
uint8_t cur_dance(tap_dance_state_t *state) {
 | 
			
		||||
    if(state->count == 1) {
 | 
			
		||||
        if(state->interrupted || !state->pressed) return SINGLE_TAP;
 | 
			
		||||
        //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
 | 
			
		||||
        else return SINGLE_HOLD;
 | 
			
		||||
    } else if(state->count == 2) {
 | 
			
		||||
        /*
 | 
			
		||||
         * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
 | 
			
		||||
         * action when hitting 'pp'. Suggested use case for this return value is when you want to send two
 | 
			
		||||
         * keystrokes of the key, and not the 'double tap' action/macro.
 | 
			
		||||
        */
 | 
			
		||||
        if(state->interrupted) return DOUBLE_SINGLE_TAP;
 | 
			
		||||
        else if(state->pressed) return DOUBLE_HOLD;
 | 
			
		||||
        else return DOUBLE_TAP;
 | 
			
		||||
    }
 | 
			
		||||
    //Assumes no one is trying to type the same letter three times (at least not quickly).
 | 
			
		||||
    //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
 | 
			
		||||
    //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
 | 
			
		||||
    if(state->count == 3) {
 | 
			
		||||
        if(state->interrupted || !state->pressed) return TRIPLE_TAP;
 | 
			
		||||
        else return TRIPLE_HOLD;
 | 
			
		||||
    }
 | 
			
		||||
    else return 8; //magic number. At some point this method will expand to work for more presses
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//instanalize an instance of 'tap' for the 'pn' tap dance.
 | 
			
		||||
static tap pn_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void pn_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    pn_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(pn_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: layer_on(_PROG); break;
 | 
			
		||||
        case SINGLE_HOLD: layer_on(_NUM); break;
 | 
			
		||||
        //case DOUBLE_TAP: register_code(KC_ESC); break;
 | 
			
		||||
        //case DOUBLE_HOLD: register_code(KC_LALT); break;
 | 
			
		||||
        //case DOUBLE_SINGLE_TAP: register_code(KC_X); unregister_code(KC_X); register_code(KC_X);
 | 
			
		||||
        //Last case is for fast typing. Assuming your key is `f`:
 | 
			
		||||
        //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
 | 
			
		||||
        //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void pn_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch(pn_tap_state.state) {
 | 
			
		||||
        //case SINGLE_TAP: unregister_code(KC_X); break;
 | 
			
		||||
        case SINGLE_HOLD: layer_off(_NUM); break;
 | 
			
		||||
        //case DOUBLE_TAP: unregister_code(KC_ESC); break;
 | 
			
		||||
        //case DOUBLE_HOLD: unregister_code(KC_LALT);
 | 
			
		||||
        //case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
 | 
			
		||||
    }
 | 
			
		||||
    pn_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static tap lalt_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void lalt_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    lalt_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(lalt_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: register_code(KC_LBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: register_code(KC_LALT); break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void lalt_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch(lalt_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: unregister_code(KC_LBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: unregister_code(KC_LALT); break;
 | 
			
		||||
    }
 | 
			
		||||
    lalt_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static tap ralt_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void ralt_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    ralt_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(ralt_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: register_code(KC_RBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: register_code(KC_RALT); break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ralt_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch(ralt_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: unregister_code(KC_RBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: unregister_code(KC_RALT); break;
 | 
			
		||||
    }
 | 
			
		||||
    ralt_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static tap rctl_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void rctl_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    rctl_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(rctl_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: register_code(KC_RSFT); register_code(KC_RBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: register_code(KC_RCTL); break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rctl_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch(rctl_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: unregister_code(KC_RSFT); unregister_code(KC_RBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: unregister_code(KC_RCTL); break;
 | 
			
		||||
    }
 | 
			
		||||
    rctl_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static tap lctl_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void lctl_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    lctl_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(lctl_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: register_code(KC_LSFT); register_code(KC_LBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: register_code(KC_LCTL); break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void lctl_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    switch(lctl_tap_state.state) {
 | 
			
		||||
        case SINGLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_LBRC); break;
 | 
			
		||||
        case SINGLE_HOLD: unregister_code(KC_LCTL); break;
 | 
			
		||||
    }
 | 
			
		||||
    lctl_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static tap d20_tap_state = {
 | 
			
		||||
    .is_press_action = 1,
 | 
			
		||||
    .state = 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int d20_srand = 0;
 | 
			
		||||
uint32_t timer_seed;
 | 
			
		||||
 | 
			
		||||
void d20_finished(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    d20_tap_state.state = cur_dance(state);
 | 
			
		||||
    switch(d20_tap_state.state) {
 | 
			
		||||
        case SINGLE_HOLD: {
 | 
			
		||||
            if(d20_srand == 0){
 | 
			
		||||
                timer_seed = timer_read32();
 | 
			
		||||
                srand((unsigned int)timer_seed);
 | 
			
		||||
                d20_srand = 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SEND_STRING("Seed: ");
 | 
			
		||||
            // uint32_t has max size of 4294967296
 | 
			
		||||
            char SEED_STR_SIZE = 16;
 | 
			
		||||
            // Initialize seed_str
 | 
			
		||||
            char seed_str[SEED_STR_SIZE];
 | 
			
		||||
            for (int iter=0;iter < SEED_STR_SIZE;iter++) seed_str[iter] = 0;
 | 
			
		||||
 | 
			
		||||
            int i = SEED_STR_SIZE - 2; // Leave null byte on end of string
 | 
			
		||||
            while (timer_seed && i >= 0) {
 | 
			
		||||
                seed_str[i] = timer_seed % 10 + '0';
 | 
			
		||||
                timer_seed /= 10;
 | 
			
		||||
                i -= 1;
 | 
			
		||||
            }
 | 
			
		||||
            i++;
 | 
			
		||||
 | 
			
		||||
            // Move all characters over i spaces
 | 
			
		||||
            char move = i;
 | 
			
		||||
            while (i < SEED_STR_SIZE -1) {
 | 
			
		||||
                seed_str[i-move] = seed_str[i];
 | 
			
		||||
                seed_str[i] = 0;
 | 
			
		||||
                i += 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            send_string(seed_str);
 | 
			
		||||
            break;
 | 
			
		||||
            // Else allow fall through
 | 
			
		||||
        }
 | 
			
		||||
        case SINGLE_TAP: {
 | 
			
		||||
            if(d20_srand == 0){
 | 
			
		||||
                timer_seed = timer_read();
 | 
			
		||||
                srand((unsigned int)timer_seed);
 | 
			
		||||
                d20_srand = 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            unsigned char roll = rand() % 20 + 1;
 | 
			
		||||
            char res[3];
 | 
			
		||||
            res[0] = (char)((char)(roll / 10) + '0');
 | 
			
		||||
            res[1] = (char)(roll % 10 + '0');
 | 
			
		||||
 | 
			
		||||
            send_string(res);
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
                         }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void d20_reset(tap_dance_state_t *state, void *user_data) {
 | 
			
		||||
    d20_tap_state.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    [PN_SWAP]  = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pn_finished, pn_reset),
 | 
			
		||||
    [LAPO]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset),
 | 
			
		||||
    [RAPC]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ralt_finished, ralt_reset),
 | 
			
		||||
    [LCPO]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
 | 
			
		||||
    [RCPC]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
 | 
			
		||||
    [D20]      = ACTION_TAP_DANCE_FN_ADVANCED(NULL, d20_finished, d20_reset),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,18 +0,0 @@
 | 
			
		|||
# PHSC138's Layout for the atom47
 | 
			
		||||
## Base layer
 | 
			
		||||
The base layer is a standard vortex core layout
 | 
			
		||||
 | 
			
		||||
## Layer 1 (PROG)
 | 
			
		||||
This layer contains space cadet bindings to make programming easier. Ex: tapping left shift will input an open parenthesis
 | 
			
		||||
 | 
			
		||||
## Layer 2 (GAME)
 | 
			
		||||
This layer contains game specific macros, currently only a D20 has been implemented
 | 
			
		||||
 | 
			
		||||
## Layer 3 (FN)
 | 
			
		||||
This can be activated by pressing the `fn` key. This layer contains mostly the same bindings as the base vortex core except vim keybinds have replaced the arrow keys.
 | 
			
		||||
 | 
			
		||||
## Layer 4 (FN1)
 | 
			
		||||
This can be activated by pressing the `fn1` key. This is the default vortex core layer.
 | 
			
		||||
 | 
			
		||||
## Layer 5 (NUM)
 | 
			
		||||
This is a numpad that can be activated by holding the PN key. This also has some useful keys, such as `QC_BOOT`.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
MOUSEKEY_ENABLE = no
 | 
			
		||||
NKRO_ENABLE = yes
 | 
			
		||||
TAP_DANCE_ENABLE = yes
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue