2016-05-24 13:26:16 +06:00
# include "ergodox_ez.h"
# include "debug.h"
# include "action_layer.h"
# define BASE 0 // default layer
# define SYMB 1 // symbols
2016-07-18 00:09:54 +06:00
# define ARRW 2 // arrow keys
# define MDIA 3 // media keys, including mouse
2016-05-24 13:26:16 +06:00
const uint16_t PROGMEM keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ] = {
/* Keymap 0: Basic layer
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2016-07-18 01:56:32 +06:00
* | = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 02:32:53 +06:00
* | Tab | Q | W | E | R | T | L1 | | CAPS | Y | U | I | O | P | \ |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 01:02:46 +06:00
* | ESC | A | S | D | F | G | - - - - - - | | - - - - - - | H | J | K | L | ; | ' |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | Hyper | | Meh | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 01:02:46 +06:00
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - '
2016-07-18 01:43:21 +06:00
* | | Grv | | * SYMB * | * ARRW * | | * MDIA * | * SYMB * | [ | ] | |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
2016-07-18 01:56:32 +06:00
* | | | | | |
2016-05-24 13:26:16 +06:00
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - - - + - - - - - - .
2016-07-18 01:56:32 +06:00
* | | | | | | | |
2016-05-25 12:09:18 +06:00
* | Space | Bksp | - - - - - - | | - - - - - - | Tab | Enter |
2016-05-26 13:12:57 +06:00
* | ctrl | gui | Alt | | Alt | gui | ctrl |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - '
*/
2016-05-25 12:43:06 +06:00
// TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
2016-05-25 12:31:57 +06:00
// not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
2016-05-24 13:26:16 +06:00
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[ BASE ] = KEYMAP ( // layer 0 : default
// left hand
2016-07-18 01:56:32 +06:00
KC_EQL , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_TRNS ,
2016-07-18 01:43:21 +06:00
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , TG ( SYMB ) ,
KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G ,
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , ALL_T ( KC_NO ) ,
KC_TRNS , KC_GRV , KC_TRNS , MO ( SYMB ) , MO ( ARRW ) ,
2016-07-18 01:56:32 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
2016-05-25 12:43:06 +06:00
CTL_T ( KC_SPC ) , GUI_T ( KC_BSPC ) , KC_LALT ,
2016-05-24 13:26:16 +06:00
// right hand
2016-07-18 01:56:32 +06:00
KC_TRNS , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS ,
2016-07-18 02:32:53 +06:00
KC_CAPSLOCK , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS ,
2016-07-18 00:35:47 +06:00
KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
MEH_T ( KC_NO ) , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT ,
2016-07-18 01:43:21 +06:00
MO ( MDIA ) , MO ( SYMB ) , KC_LBRC , KC_RBRC , KC_TRNS ,
2016-07-18 01:56:32 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
2016-07-18 00:02:54 +06:00
KC_RALT , GUI_T ( KC_TAB ) , CTL_T ( KC_ENT )
2016-05-24 13:26:16 +06:00
) ,
/* Keymap 1: Symbol Layer
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 01:44:37 +06:00
* | | # | $ | ( | ) | ` | - - - - - - | | - - - - - - | Down | 4 | 5 | 6 | + | . |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - '
2016-07-18 01:44:37 +06:00
* | | | | | | | | | 0 | = | |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
* | | | | | |
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - + - - - - - - .
* | | | | | | | |
* | | | - - - - - - | | - - - - - - | | |
* | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - '
*/
// SYMBOLS
[ SYMB ] = KEYMAP (
// left hand
KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS ,
KC_TRNS , KC_EXLM , KC_AT , KC_LCBR , KC_RCBR , KC_PIPE , KC_TRNS ,
KC_TRNS , KC_HASH , KC_DLR , KC_LPRN , KC_RPRN , KC_GRV ,
KC_TRNS , KC_PERC , KC_CIRC , KC_LBRC , KC_RBRC , KC_TILD , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS ,
KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS ,
// right hand
KC_TRNS , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
KC_TRNS , KC_UP , KC_7 , KC_8 , KC_9 , KC_ASTR , KC_F12 ,
2016-07-18 01:44:37 +06:00
KC_DOWN , KC_4 , KC_5 , KC_6 , KC_PLUS , KC_DOT ,
2016-05-24 13:26:16 +06:00
KC_TRNS , KC_AMPR , KC_1 , KC_2 , KC_3 , KC_BSLS , KC_TRNS ,
2016-07-18 01:44:37 +06:00
KC_TRNS , KC_TRNS , KC_0 , KC_EQL , KC_TRNS ,
2016-05-24 13:26:16 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS
) ,
2016-07-18 00:19:11 +06:00
/* Keymap 2: Arrow keys
2016-05-24 13:26:16 +06:00
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | | | | | | | | | | | | | | | |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 01:11:08 +06:00
* | | | | | | | | | | | PGDOWN | PGUP | | | |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 00:55:10 +06:00
* | | | | | | | - - - - - - | | - - - - - - | LEFT | DOWN | UP | RIGHT | | |
2016-05-24 13:26:16 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 01:11:08 +06:00
* | | | | | | | | | | | HOME | END | | | |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - '
2016-07-18 00:19:11 +06:00
* | | | | | | | | | | | |
2016-05-24 13:26:16 +06:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
* | | | | | |
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - + - - - - - - .
2016-07-18 00:19:11 +06:00
* | | | | | | | |
* | | | - - - - - - | | - - - - - - | | |
2016-05-24 13:26:16 +06:00
* | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - '
*/
// MEDIA AND MOUSE
2016-07-18 00:02:54 +06:00
[ ARRW ] = KEYMAP (
// left hand
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 ,
// right hand
2016-07-18 01:11:08 +06:00
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_PGDOWN , KC_PGUP , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_HOME , KC_END , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
2016-07-18 00:02:54 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS
) ,
2016-07-18 00:19:11 +06:00
/* Keymap 3: Media and mouse keys
2016-07-18 00:02:54 +06:00
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | | | | | | | | | | | | | | | |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | | | | MsUp | | | | | | | | | | | |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 00:55:10 +06:00
* | | | MsLeft | MsDown | MsRght | | - - - - - - | | - - - - - - | | Lclk | Rclk | | | |
2016-07-18 00:02:54 +06:00
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
2016-07-18 00:55:10 +06:00
* | | | Mute | VolDn | VolUp | | | | | | | | | | |
2016-07-18 00:02:54 +06:00
* ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - '
2016-07-18 00:55:10 +06:00
* | | | Prev | Play | Next | | | | | | |
2016-07-18 00:02:54 +06:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
* | | | | | |
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - + - - - - - - .
2016-07-18 00:55:10 +06:00
* | Brwser | | | | | | |
* | Back | | - - - - - - | | - - - - - - | | |
2016-07-18 00:02:54 +06:00
* | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - '
*/
// MEDIA AND MOUSE
2016-05-24 13:26:16 +06:00
[ MDIA ] = KEYMAP (
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_MS_U , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_MS_L , KC_MS_D , KC_MS_R , KC_TRNS ,
2016-07-18 00:55:10 +06:00
KC_TRNS , KC_TRNS , KC_MUTE , KC_VOLD , KC_VOLU , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_MPRV , KC_MPLY , KC_MNXT ,
2016-05-24 13:26:16 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
2016-07-18 00:55:10 +06:00
KC_WBAK , KC_TRNS , KC_TRNS ,
2016-05-24 13:26:16 +06:00
// right hand
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 ,
2016-05-25 12:19:30 +06:00
KC_TRNS , KC_BTN1 , KC_BTN2 , KC_TRNS , KC_TRNS , KC_MPLY ,
2016-07-18 00:55:10 +06:00
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
2016-05-24 13:26:16 +06:00
KC_TRNS , KC_TRNS ,
KC_TRNS ,
2016-07-18 00:55:10 +06:00
KC_TRNS , KC_TRNS , KC_TRNS
2016-05-24 13:26:16 +06:00
) ,
} ;
const uint16_t PROGMEM fn_actions [ ] = {
[ 1 ] = ACTION_LAYER_TAP_TOGGLE ( SYMB ) // FN1 - Momentary Layer 1 (Symbols)
} ;
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 ;
} ;
// Runs just one time when the keyboard initializes.
void matrix_init_user ( void ) {
} ;
// Runs constantly in the background, in a loop.
void matrix_scan_user ( void ) {
uint8_t layer = biton32 ( layer_state ) ;
ergodox_board_led_off ( ) ;
ergodox_right_led_1_off ( ) ;
ergodox_right_led_2_off ( ) ;
ergodox_right_led_3_off ( ) ;
switch ( layer ) {
// TODO: Make this relevant to the ErgoDox EZ.
case 1 :
ergodox_right_led_1_on ( ) ;
break ;
case 2 :
ergodox_right_led_2_on ( ) ;
break ;
default :
// none
break ;
}
} ;