qmk-dactyl-manuform-a/users/ericgebhart/core_keysets.h

346 lines
15 KiB
C
Executable File

#pragma once
/*
Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
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 "core_keys.h"
/********************************************************************/
/** The Core rows of each given layout. **/
/********************************************************************/
//Dvorak on a qwerty software layer in the OS
#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
#define ___DVORAK_L2___ KC_A, KC_O, KC_E, KC_U, KC_I
#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
#define ___DVORAK_R2___ KC_D, KC_H, KC_T, KC_N, KC_S
#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
#define ___DVORAK___ ___DVORAK_L1___, ___DVORAK_R1___, \
___DVORAK_L2___, ___DVORAK_R2___, \
___DVORAK_L3___, ___DVORAK_R3___
/* BEAKL 15 (main layer): */
/* 40123 76598 */
/* qhoux gcrfz */
/* - yiea. dstnb ; */
/* j/,k' wmlpv */
// Remember the - and ; outside pinky keys.
// Or use the 6 size.
// Both are on the symbol layer too. So you
// wont lose them at least.
// BQ_COMM, BQ_QUOT, BQ_DOT - Beakl->Qwerty
// BB_COMM, BB_QUOT, BB_DOT - Beakl->Bepo
// take care of the different shifted chars.
/* BEAKL 15 (shift layer): */
/* QHOUX GCRFZ */
/* - YIEA@ DSTNB ; */
/* J?!K` WMLPV */
#define ___BEAKL15_L1___ KC_Q, KC_H, KC_O, KC_U, KC_X
#define ___BEAKL15_L2___ KC_Y, KC_I, KC_E, KC_A, BQ_DOT
#define ___BEAKL15_L3___ KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
#define ___BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z
#define ___BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B
#define ___BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V
#define ___BEAKL15___ ___BEAKL15_L1___, ___BEAKL15_R1___, \
___BEAKL15_L2___, ___BEAKL15_R2___, \
___BEAKL15_L3___, ___BEAKL15_R3___
#define ___6BEAKL15_L1___ ___, KC_Q, KC_H, KC_O, KC_U, KC_X
#define ___6BEAKL15_L2___ KC_MINS, KC_Y, KC_I, KC_E, KC_A, BQ_DOT
#define ___6BEAKL15_L3___ ___, KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
#define ___6BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z, ___
#define ___6BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B, KC_SCLN
#define ___6BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V, ___
#define ___6BEAKL15___ ___6BEAKL15_L1___, ___6BEAKL15_R1___, \
___6BEAKL15_L2___, ___6BEAKL15_R2___, \
___6BEAKL15_L3___, ___6BEAKL15_R3___
// Qwerty based layers that I don't really use.
#define ___QWERTY_L1___ KC_Q, KC_W, KC_E, KC_R, KC_T
#define ___QWERTY_L2___ KC_A, KC_S, KC_D, KC_F, KC_G
#define ___QWERTY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
#define ___QWERTY_R1___ KC_Y, KC_U, KC_I, KC_O, KC_P
#define ___QWERTY_R2___ KC_H, KC_J, KC_K, KC_L, KC_SCLN
#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___QWERTY___ ___QWERTY_L1___, ___QWERTY_R1___, \
___QWERTY_L2___, ___QWERTY_R2___, \
___QWERTY_L3___, ___QWERTY_R3___
// Qwerty based layers that I don't really use.
// COLEMAK
#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
#define ___COLEMAK_L2___ KC_A, KC_R, KC_S, KC_T, KC_D
#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
#define ___COLEMAK_R2___ KC_H, KC_N, KC_E, KC_I, KC_O
#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___COLEMAK___ ___COLEMAK_L1___, ___COLEMAK_R1___, \
___COLEMAK_L2___, ___COLEMAK_R2___, \
___COLEMAK_L3___, ___COLEMAK_R3___
// COLEMAK-DH
#define ___COLEMAK_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
#define ___COLEMAK_DH_L2___ KC_A, KC_R, KC_S, KC_T, KC_G
#define ___COLEMAK_DH_L3___ KC_Z, KC_X, KC_C, KC_D, KC_V
#define ___COLEMAK_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
#define ___COLEMAK_DH_R2___ KC_M, KC_N, KC_E, KC_I, KC_O
#define ___COLEMAK_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
#define ___COLEMAK_DH___ ___COLEMAK_DH_L1___, ___COLEMAK_DH_R1___, \
___COLEMAK_DH_L2___, ___COLEMAK_DH_R2___, \
___COLEMAK_DH_L3___, ___COLEMAK_DH_R3___
// WORKMAN
#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
#define ___WORKMAN_L2___ KC_A, KC_S, KC_H, KC_T, KC_G
#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
#define ___WORKMAN_R2___ KC_Y, KC_N, KC_E, KC_O, KC_I
#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
#define ___WORKMAN___ ___WORKMAN_L1___, ___WORKMAN_R1___, \
___WORKMAN_L2___, ___WORKMAN_R2___, \
___WORKMAN_L3___, ___WORKMAN_R3___
// NORMAN
#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
#define ___NORMAN_L2___ KC_A, KC_S, KC_E, KC_T, KC_G
#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
#define ___NORMAN_R2___ KC_Y, KC_N, KC_I, KC_O, KC_U
#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
#define ___NORMAN___ ___NORMAN_L1___, ___NORMAN_R1___, \
___NORMAN_L2___, ___NORMAN_R2___, \
___NORMAN_L3___, ___NORMAN_R3___
#define ___MALTRON_L1___ KC_Q, KC_P, KC_Y, KC_C, KC_B
#define ___MALTRON_L2___ KC_A, KC_N, KC_I, KC_S, KC_F
#define ___MALTRON_L3___ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
#define ___MALTRON_R1___ KC_V, KC_M, KC_U, KC_Z, KC_L
#define ___MALTRON_R2___ KC_D, KC_T, KC_D, KC_O, KC_R
#define ___MALTRON_R3___ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
#define ___MALTRON___ ___MALTRON_L1___, ___MALTRON_R1___, \
___MALTRON_L2___, ___MALTRON_R2___, \
___MALTRON_L3___, ___MALTRON_R3___
#define ___EUCALYN_L1___ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q
#define ___EUCALYN_L2___ KC_A, KC_O, KC_E, KC_I, KC_U
#define ___EUCALYN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_W
#define ___EUCALYN_R1___ KC_M, KC_R, KC_D, KC_Y, KC_P
#define ___EUCALYN_R2___ KC_G, KC_T, KC_K, KC_S, KC_N
#define ___EUCALYN_R3___ KC_B, KC_H, KC_J, KC_L, KC_SCLN
#define ___EUCALYN___ ___EUCALYN_L1___, ___EUCALYN_R1___, \
___EUCALYN_L2___, ___EUCALYN_R2___, \
___EUCALYN_L3___, ___EUCALYN_R3___
#define ___CARPLAX_QFMLWY_L1___ KC_Q, KC_F, KC_M, KC_L, KC_W
#define ___CARPLAX_QFMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QFMLWY_L3___ KC_Z, KC_V, KC_G, KC_C, KC_X
#define ___CARPLAX_QFMLWY_R1___ KC_Y, KC_U, KC_O, KC_B, KC_J
#define ___CARPLAX_QFMLWY_R2___ KC_I, KC_A, KC_E, KC_H, KC_SCLN
#define ___CARPLAX_QFMLWY_R3___ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QFMLWY___ ___CARPLAX_QFMLWY_L1___, ___CARPLAX_QFMLWY_R1___, \
___CARPLAX_QFMLWY_L2___, ___CARPLAX_QFMLWY_R2___, \
___CARPLAX_QFMLWY_L3___, ___CARPLAX_QFMLWY_R3___
#define ___CARPLAX_QGMLWB_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
#define ___CARPLAX_QGMLWB_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QGMLWB_L3___ KC_Z, KC_X, KC_C, KC_F, KC_J
#define ___CARPLAX_QGMLWB_R1___ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
#define ___CARPLAX_QGMLWB_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
#define ___CARPLAX_QGMLWB_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QGMLWB___ ___CARPLAX_QGMLWB_L1___, ___CARPLAX_QGMLWB_R1___, \
___CARPLAX_QGMLWB_L2___, ___CARPLAX_QGMLWB_R2___, \
___CARPLAX_QGMLWB_L3___, ___CARPLAX_QGMLWB_R3___
#define ___CARPLAX_QGMLWY_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
#define ___CARPLAX_QGMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
#define ___CARPLAX_QGMLWY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_J
#define ___CARPLAX_QGMLWY_R1___ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
#define ___CARPLAX_QGMLWY_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
#define ___CARPLAX_QGMLWY_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
#define ___CARPLAX_QGMLWY___ ___CARPLAX_QGMLWY_L1___, ___CARPLAX_QGMLWY_R1___, \
___CARPLAX_QGMLWY_L2___, ___CARPLAX_QGMLWY_R2___, \
___CARPLAX_QGMLWY_L3___, ___CARPLAX_QGMLWY_R3___
// BEPO Based Layouts.
// Bepo, Dvorak and Beakl on fr-bepo software layer in the OS.
// for dvorak and all the other qwerty like keyboards on bepo
#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
#define ___DVORAK_FR_L2___ BP_A, BP_O, BP_E, BP_U, BP_I
#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
#define ___DVORAK_FR_R2___ BP_D, BP_H, BP_T, BP_N, BP_S
#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
#define ___DVORAK_FR___ ___DVORAK_FR_L1___, ___DVORAK_FR_R1___, \
___DVORAK_FR_L2___, ___DVORAK_FR_R2___, \
___DVORAK_FR_L3___, ___DVORAK_FR_R3___
/* BEAKL 15 (main layer): */
#define ___DVORAK6_FR_L1___ DB_GRV, ___DVORAK_FR_L1___
#define ___DVORAK6_FR_L2___ TAB_BKTAB, ___DVORAK_FR_L2___
#define ___DVORAK6_FR_L3___ ___, ___DVORAK_FR_L3___
#define ___DVORAK6_FR_R1___ ___DVORAK_FR_R1___, BP_MIN
#define ___DVORAK6_FR_R2___ ___DVORAK_FR_R2___, BP_SLSH
#define ___DVORAK6_FR_R3___ ___DVORAK_FR_R3___, DB_BACKSLASH
#define ___6DVORAK_FR___ ___6DVORAK_FR_L1___, ___6DVORAK_FR_R1___, \
___6DVORAK_FR_L2___, ___6DVORAK_FR_R2___, \
___6DVORAK_FR_L3___, ___6DVORAK_FR_R3___
// dont forget ; and -. the 'a' home row is official placement.
#define ___BEAKL15_FR_L1___ BP_Q, BP_H, BP_O, BP_U, BP_X
#define ___BEAKL15_FR_L2___ BP_Y, BP_I, BP_E, BP_A, BB_DOT
#define ___BEAKL15_FR_L2a___ BP_MIN, BP_Y, BP_I, BP_E, BP_A, BB_DOT
#define ___BEAKL15_FR_L3___ BP_J, BP_SLSH, BB_COMM, BP_K, BB_QUOT
#define ___BEAKL15_FR_R1___ BP_G, BP_C, BP_R, BP_F, BP_Z
#define ___BEAKL15_FR_R2___ BP_D, BP_S, BP_T, BP_N, BP_B
#define ___BEAKL15_FR_R2a___ BP_D, BP_S, BP_T, BP_N, BP_B, DB_SCLN
#define ___BEAKL15_FR_R3___ BP_W, BP_M, BP_L, BP_P, BP_V
#define ___6BEAKL15_FR___ ___, ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, ___, \
___BEAKL15_FR_L2a___, ___BEAKL15_FR_R2a___, \
___, ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___, ___
#define ___BEAKL15_FR___ ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, \
___BEAKL15_FR_L2___, ___BEAKL15_FR_R2___, \
___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___
#define ___BEPO_L1___ BP_B, BP_EACU, BP_P, BP_O, BP_EGRV
#define ___BEPO_L2___ BP_A, BP_U, BP_I, BP_E, BP_COMM
#define ___BEPO_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
#define ___BEPO_R1___ /* BP_DCRC,*/ BP_V, BP_D, BP_L, BP_J, BP_Z
#define ___BEPO_R2___ /* BP_C, */ BP_T, BP_S, BP_R, BP_N, BP_M //BP_CCED
#define ___BEPO_R3___ BP_QUOT, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W
// Bepo for a 3x6 split. CCED switched hands. :-( 'Altgr-c c' does the same.
// W has to drop down to the bottom. Silly unbalanced layout.
#define ___BEPO6_L1___ BP_CCED, ___BEPO_L1___
#define ___BEPO6_L2___ TAB_BKTAB, ___BEPO_L2___
#define ___BEPO6_L3___ BP_ECIR, ___BEPO_L3___
#define ___BEPO6_R1___ ___BEPO_R1___, BP_PERC
#define ___BEPO6_R2___ ___BEPO_R2___, BP_C
#define ___BEPO6_R3___ ___BEPO_R3___, BP_W
#define ___BEPO6___ ___BEPO6_L1___, ___BEPO6_R1___, \
___BEPO6_L2___, ___BEPO6_R2___, \
___BEPO6_L3___, ___BEPO6_R3___
#define ___BEPO___ ___BEPO_L1___, ___BEPO_R1___, \
___BEPO_L2___, ___BEPO_R2___, \
___BEPO_L3___, ___BEPO_R3___
/*******************************************************************/
/** TOP ROWS Func,Symbols, Numbers you find there. **/
/*******************************************************************/
// for everything on qwerty.
#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
#define ___NUMBER_BEAKL15_L___ KC_4, KC_0, KC_1, KC_2, KC_3
#define ___NUMBER_BEAKL15_R___ KC_7, KC_6, KC_5, KC_9, KC_8
// a top symbol row if someone wants it.
#define ___SYMB_L___ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
#define ___SYMB_R___ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
/// BEPO ////
// For numbers on bepo. Bepo has numbers on shifted keys, the
// reverse of many layouts.
#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
// In case you want to try BEAKL 15 Numbers
#define ___NUMBER_BEAKL15_BP_L___ DB_4, DB_0, DB_1, DB_2, DB_3
#define ___NUMBER_BEAKL15_BP_R___ DB_7, DB_6, DB_5, DB_9, DB_8
// The top row. Bepo has symbols not numbers. Numbers are the shifted values.
// There are actually 13 keys specified for bepo.
#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN
#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */
#define ___6SYMBOL_BEPO_L___ BP_DLR, ___SYMBOL_BEPO_L___
#define ___6SYMBOL_BEPO_R___ ___SYMBOL_BEPO_R___, BP_EQL /* BP_PERC */
// a top qwerty style symbol row if someone wants it.
#define ___SYMB_L_FR___ DB_EXLM, BP_AT, BP_HASH, BP_DLR, BP_PERC
#define ___SYMB_R_FR___ DB_CIRC, BP_AMPR, BP_ASTR, BP_LPRN, BP_RPRN
// function key rows, works for everyone.
#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
#define ___FUNC_1_6___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
#define ___FUNC_7_12___ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
#define ___FUNC_BEAKL_L___ KC_F4, KC_F10, KC_F1, KC_F2, KC_F3
#define ___FUNC_BEAKL_R___ KC_F7, KC_F6, KC_F5, KC_F9, KC_F8
#define ___12_FUNC_BEAKL___ KC_F11, ___FUNC_BEAKL_L___, ___FUNC_BEAKL_R___, KC_F12
// Altogether. Defines all the various top rows that
// are present with all these layouts.
// All together as blocks of 10
#define ___NUMS___ ___NUMBER_L___, ___NUMBER_R___
#define ___SYMS___ ___SYMB_L___, ___SYMB_R___
#define ___BKLNUMS___ ___NUMBER_BEAKL15_L___, ___NUMBER_BEAKL15_R___
#define ___NUMS_BP___ ___NUMBER_BEPO_L___, ___NUMBER_BEPO_R___
#define ___SYMS_BEPO___ ___SYMBOL_BEPO_L___, ___SYMBOL_BEPO_L___
#define ___BKLNUMS_BP___ ___NUMBER_BEAKL15_BP_L___, ___NUMBER_BEAKL15_BP_R___
#define ___FUNCS_1_10___ ___FUNC_L___, ___FUNC_R___