@ -8,13 +8,14 @@
# define NUMP 2 / / numpad
# define INTL 3 / / international symbols
# define _______ KC_TRNS / / Make the layouts easier to read
/ / Fillers to make layering more clear
# define _______ KC_TRNS
# define XXXXXXX KC_NO
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE , / / can always be here
EPRM ,
VRSN ,
RGB_SLD
/ / Tap Dance Codes
enum {
SLASH ,
WHACK ,
} ;
const uint16_t PROGMEM keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ] = {
@ -23,51 +24,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* layer 0 : default
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BCKSPC |
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BCKSPC |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | TAB | Q | W | E | R | T | HOME | | PGUP | Y | U | I | O | P | DELETE |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | INSERT | A | S | D | F | G | - - - - - - | | - - - - - - | H | J | K | L | ; | ENTER |
* | NOOP | A | S | D | F | G | - - - - - - | | - - - - - - | H | J | K | L | ; | ENTER |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | END | | PGDN | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | ( / LSFT | Z | X | C | V | B | | | | N | M | , | . | / | ) / RSFT |
* | ( / LSFT | Z | X | C | V | B | | | | N | M | , | . | UP | ) / RSFT |
* ` - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - '
* | LCTRL | LGUI | | ' | PRTSCR | | [ | ] | \ | RGUI | RCTRL |
* | LCTRL | LGUI | MENU | ' | NOO P | | [ | ] | LEFT | DOWN | RIGHT |
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
* | VOL - | VOL + | | BRT - | BRT + |
* | PRTSCR | ESC | | VOL - | VOL + |
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - + - - - - - - .
* | ALT / | | MUTE | | NUMLK | | ALT / |
* | SPC | LAY1 | - - - - - - | | - - - - - - | LAY1 | SPC |
* | ALT / | | NUMLK | | MUTE | | ALT / |
* | SPC | SLASH | - - - - - - | | - - - - - - | WHACK | SPC |
* | | | LAY3 | | LAY2 | | |
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - '
*/
[ BASE ] = KEYMAP (
/ / left hand
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 ,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_HOME ,
KC_INS , KC_A , KC_S , KC_D , KC_F , KC_G ,
XXXXXXX , KC_A , KC_S , KC_D , KC_F , KC_G ,
KC_LSPO , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_END ,
KC_LCTL , KC_LGUI , _______ , KC_QUOT , KC_PSCR ,
KC_VOLD , KC_VOLU ,
KC_MUTE ,
ALT_T ( KC_SPC ) , MO ( ARRW ) , TG ( INTL ) ,
KC_LCTL , KC_LGUI , KC_MENU , KC_QUOT , XXXXXXX ,
KC_INS , KC_ESC ,
KC_NLCK ,
ALT_T ( KC_SPC ) , TD ( SLASH ) , TG ( INTL ) ,
/ / right hand
KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS , KC_EQL , KC_BSPC ,
KC_PGUP , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL ,
KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_ENTER ,
KC_PGDN , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSPC ,
KC_LBRC , KC_RBRC , KC_BSLS , KC_RGUI , KC_RCTL ,
KC_PGDN , KC_N , KC_M , KC_COMM , KC_DOT , KC_UP , KC_RSPC ,
KC_LBRC , KC_RBRC , KC_LEFT , KC_DOWN , KC_RGHT ,
KC_VOLD , KC_VOLU ,
KC_NLCK ,
TG ( NUMP ) , MO ( ARRW ) , ALT_T ( KC_SPC )
KC_MUTE ,
TG ( NUMP ) , TD ( WHACK ) , ALT_T ( KC_SPC )
) ,
/* layer 1 : functions and arrows
*
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | SYSREQ | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | PAUSE |
* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | | | | UP | | | | | | | | | | | |
* | | | | UP | | | | | | | | | | | INSERT |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
* | | | LEFT | DOWN | RIGHT | | - - - - - - | | - - - - - - | LEFT | DOWN | UP | RIGHT | | |
* | - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | | | | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - |
@ -76,26 +77,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | LEFT | DOWN | RIGHT |
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* , - - - - - - - - - - - - - . , - - - - - - - - - - - - - .
* | | | | | |
* | SYSREQ | PAUSE | | | |
* , - - - - - - | - - - - - - | - - - - - - | | - - - - - - + - - - - - - + - - - - - - .
* | | | | | | | |
* | | | SCRLK | | | | |
* | | | - - - - - - | | - - - - - - | | |
* | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - ' ` - - - - - - - - - - - - - - - - - - - - '
*/
[ ARRW ] = KEYMAP (
/ / left hand
KC_SYSREQ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 ,
_______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 ,
_______ , _______ , _______ , KC_UP , _______ , _______ , _______ ,
_______ , _______ , KC_LEFT , KC_DOWN , KC_RGHT , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ ,
_______ , _______ ,
_______ ,
KC_SYSREQ , KC_PAUSE ,
KC_SLCK ,
_______ , _______ , _______ ,
/ / right hand
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PAUSE ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ ,
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , KC_INS ,
KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , KC_UP , _______ ,
_______ , _______ , KC_LEFT , KC_DOWN , KC_RGHT ,
@ -189,6 +190,87 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) ,
} ;
/ / See https : / / github . com / algernon / ergodox - layout / blob / master / keymap . c
/ / When holding the SLASH or WHACK key , the ARRW layer activates while the key is held .
/ / Tapping the key produces the / or \ key . Double - tapping it toggles the ARRW layer
/ / on until a third tap .
typedef struct {
bool layer_toggle ;
bool sticky ;
} td_ta_state_t ;
static void ang_tap_dance_s_finished ( qk_tap_dance_state_t * state , void * user_data ) {
td_ta_state_t * td_ta = ( td_ta_state_t * ) user_data ;
if ( td_ta - > sticky ) {
td_ta - > sticky = false ;
td_ta - > layer_toggle = false ;
layer_off ( ARRW ) ;
return ;
}
if ( state - > count = = 1 & & ! state - > pressed ) {
register_code ( KC_SLSH ) ;
td_ta - > sticky = false ;
td_ta - > layer_toggle = false ;
} else {
td_ta - > layer_toggle = true ;
layer_on ( ARRW ) ;
td_ta - > sticky = ( state - > count = = 2 ) ;
}
}
static void ang_tap_dance_s_reset ( qk_tap_dance_state_t * state , void * user_data ) {
td_ta_state_t * td_ta = ( td_ta_state_t * ) user_data ;
if ( ! td_ta - > layer_toggle )
unregister_code ( KC_SLSH ) ;
if ( ! td_ta - > sticky )
layer_off ( ARRW ) ;
}
static void ang_tap_dance_w_finished ( qk_tap_dance_state_t * state , void * user_data ) {
td_ta_state_t * td_ta = ( td_ta_state_t * ) user_data ;
if ( td_ta - > sticky ) {
td_ta - > sticky = false ;
td_ta - > layer_toggle = false ;
layer_off ( ARRW ) ;
return ;
}
if ( state - > count = = 1 & & ! state - > pressed ) {
register_code ( KC_BSLS ) ;
td_ta - > sticky = false ;
td_ta - > layer_toggle = false ;
} else {
td_ta - > layer_toggle = true ;
layer_on ( ARRW ) ;
td_ta - > sticky = ( state - > count = = 2 ) ;
}
}
static void ang_tap_dance_w_reset ( qk_tap_dance_state_t * state , void * user_data ) {
td_ta_state_t * td_ta = ( td_ta_state_t * ) user_data ;
if ( ! td_ta - > layer_toggle )
unregister_code ( KC_BSLS ) ;
if ( ! td_ta - > sticky )
layer_off ( ARRW ) ;
}
qk_tap_dance_action_t tap_dance_actions [ ] = {
[ SLASH ] = {
. fn = { NULL , ang_tap_dance_s_finished , ang_tap_dance_s_reset } ,
. user_data = ( void * ) & ( ( td_ta_state_t ) { false , false } )
} ,
[ WHACK ] = {
. fn = { NULL , ang_tap_dance_w_finished , ang_tap_dance_w_reset } ,
. user_data = ( void * ) & ( ( td_ta_state_t ) { false , false } )
}
} ;
/ / Runs just one time when the keyboard initializes .
void matrix_init_user ( void ) {