2018-02-17 00:27:50 +01:00
# include QMK_KEYBOARD_H
2017-03-07 19:30:32 +01:00
extern keymap_config_t keymap_config ;
# define _QWERTY 0
# define _COLEMAK 1
# define _DVORAK 2
# define _LOWER 3
# define _RAISE 4
2018-02-17 00:27:50 +01:00
# define _FKEYS 5
2017-03-07 19:30:32 +01:00
# define _ADJUST 16
enum custom_keycodes {
QWERTY = SAFE_RANGE ,
COLEMAK ,
DVORAK ,
LOWER ,
RAISE ,
ADJUST ,
2018-08-13 21:05:58 +02:00
PLAY_ALLSTAR ,
2017-03-07 19:30:32 +01:00
} ;
2017-03-23 13:46:10 +01:00
# define KC_ KC_TRNS
2017-03-07 19:30:32 +01:00
# define _______ KC_TRNS
# define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen
# define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen
# define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen
# define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen
2018-02-17 00:27:50 +01:00
# define KC_ESCC MT(MOD_LCTL, KC_ESC)
# define KC_LOWR LOWER
# define KC_RASE RAISE
# define KC_GRVF LT(_FKEYS, KC_GRV)
# define KC_ENTS MT(MOD_LSFT, KC_ENT)
# define KC_BL_S BL_STEP
2018-05-22 21:40:43 +02:00
# define KC_BL_T BL_TOGG
2018-08-13 21:05:58 +02:00
# define KC_ALLS PLAY_ALLSTAR
2017-03-07 19:30:32 +01:00
const uint16_t PROGMEM keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ] = {
2018-04-12 00:10:55 +02:00
[ _QWERTY ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
2017-03-07 21:39:59 +01:00
TAB , Q , W , E , R , T , Y , U , I , O , P , MINS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
ESCC , A , S , D , F , G , H , J , K , L , SCLN , QUOT ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
LSFT , Z , X , C , V , B , N , M , COMM , DOT , SLSH , ENTS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
GRVF , LCTL , LALT , LGUI , LOWR , SPC , BSPC , RASE , LEFT , DOWN , UP , RGHT
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2018-04-12 00:10:55 +02:00
[ _COLEMAK ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
2017-03-07 21:39:59 +01:00
TAB , Q , W , F , P , G , J , L , U , Y , SCLN , MINS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
ESCC , A , R , S , T , D , H , N , E , I , O , QUOT ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
LSFT , Z , X , C , V , B , K , M , COMM , DOT , SLSH , ENTS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
GRVF , LCTL , LALT , LGUI , LOWR , SPC , BSPC , RASE , LEFT , DOWN , UP , RGHT
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2018-04-12 00:10:55 +02:00
[ _DVORAK ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
2017-03-07 21:39:59 +01:00
TAB , QUOT , COMM , DOT , P , Y , F , G , C , R , L , MINS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
ESCC , A , O , E , U , I , D , H , T , N , S , SLSH ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
LSFT , SCLN , Q , J , K , X , B , M , W , V , Z , ENTS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-02-17 00:27:50 +01:00
GRVF , LCTL , LALT , LGUI , LOWR , SPC , BSPC , RASE , LEFT , DOWN , UP , RGHT
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2018-04-12 00:10:55 +02:00
[ _LOWER ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
ALLS , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-07 21:39:59 +01:00
DEL , CAPP , LEFT , RGHT , UP , LBRC , RBRC , P4 , P5 , P6 , PLUS , PIPE ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-07 21:39:59 +01:00
, CPYP , , , DOWN , LCBR , RCBR , P1 , P2 , P3 , MINS , ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2018-05-22 21:40:43 +02:00
BL_S , BL_T , , , , DEL , DEL , , P0 , PDOT , ,
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2018-04-12 00:10:55 +02:00
[ _RAISE ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
2017-03-07 21:39:59 +01:00
, EXLM , AT , HASH , DLR , PERC , CIRC , AMPR , ASTR , LPRN , RPRN , ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-07 21:39:59 +01:00
DEL , MPRV , MNXT , VOLU , PGUP , UNDS , EQL , HOME , , , , BSLS ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-14 14:51:48 +01:00
MUTE , MSTP , MPLY , VOLD , PGDN , MINS , PLUS , END , , , , ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-08-20 08:04:16 +02:00
, , , , , , , , , , ,
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2018-04-12 00:10:55 +02:00
[ _FKEYS ] = LAYOUT_kc_ortho_4x12 (
2018-08-13 21:05:58 +02:00
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
2017-03-07 21:39:59 +01:00
F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-07 21:39:59 +01:00
, , , , , , , , , , , ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-03-07 21:39:59 +01:00
, , , , , , , , , , , ,
2018-08-13 21:05:58 +02:00
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
2017-08-20 08:04:16 +02:00
, , , , , , , , , , ,
2018-08-13 21:05:58 +02:00
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
2017-03-07 21:39:59 +01:00
) ,
2017-03-07 19:30:32 +01:00
/* Adjust (Lower + Raise)
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2017-03-14 14:51:48 +01:00
* | | Reset | RGB Tg | RGB Md | Hue Up | Hue Dn | Sat Up | Sat Dn | Val Up | Val Dn | | |
2017-03-07 19:30:32 +01:00
* | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |
* | | | | Aud on | Audoff | AGnorm | AGswap | Qwerty | Colemk | Dvorak | | |
* | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |
* | | | | | | | | | | | | |
* | - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - |
* | | | | | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2018-02-17 00:27:50 +01:00
[ _ADJUST ] = LAYOUT_ortho_4x12 ( \
2018-08-13 21:05:58 +02:00
_______ , RESET , RGB_TOG , RGB_MOD , RGB_HUD , RGB_HUI , RGB_SAD , RGB_SAI , RGB_VAD , RGB_VAI , _______ , _______ , \
_______ , _______ , _______ , AU_ON , AU_OFF , AG_NORM , AG_SWAP , QWERTY , COLEMAK , DVORAK , _______ , _______ , \
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , \
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ \
2017-03-07 21:39:59 +01:00
)
2017-03-07 19:30:32 +01:00
} ;
# ifdef AUDIO_ENABLE
float tone_qwerty [ ] [ 2 ] = SONG ( QWERTY_SOUND ) ;
float tone_dvorak [ ] [ 2 ] = SONG ( DVORAK_SOUND ) ;
float tone_colemak [ ] [ 2 ] = SONG ( COLEMAK_SOUND ) ;
2018-07-11 20:19:09 +02:00
float all_star_song [ ] [ 2 ] = SONG ( ALL_STAR ) ;
2017-03-07 19:30:32 +01:00
# endif
2017-05-11 21:32:35 +02:00
void persistent_default_layer_set ( uint16_t default_layer ) {
2017-03-07 19:30:32 +01:00
eeconfig_update_default_layer ( default_layer ) ;
default_layer_set ( default_layer ) ;
}
bool process_record_user ( uint16_t keycode , keyrecord_t * record ) {
switch ( keycode ) {
case QWERTY :
if ( record - > event . pressed ) {
# ifdef AUDIO_ENABLE
2017-08-20 08:04:16 +02:00
PLAY_SONG ( tone_qwerty ) ;
2017-03-07 19:30:32 +01:00
# endif
2017-05-11 21:32:35 +02:00
persistent_default_layer_set ( 1UL < < _QWERTY ) ;
2017-03-07 19:30:32 +01:00
}
return false ;
break ;
case COLEMAK :
if ( record - > event . pressed ) {
# ifdef AUDIO_ENABLE
2017-08-20 08:04:16 +02:00
PLAY_SONG ( tone_colemak ) ;
2017-03-07 19:30:32 +01:00
# endif
2017-05-11 21:32:35 +02:00
persistent_default_layer_set ( 1UL < < _COLEMAK ) ;
2017-03-07 19:30:32 +01:00
}
return false ;
break ;
case DVORAK :
if ( record - > event . pressed ) {
# ifdef AUDIO_ENABLE
2017-08-20 08:04:16 +02:00
PLAY_SONG ( tone_dvorak ) ;
2017-03-07 19:30:32 +01:00
# endif
2017-05-11 21:32:35 +02:00
persistent_default_layer_set ( 1UL < < _DVORAK ) ;
2017-03-07 19:30:32 +01:00
}
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 ;
2018-08-13 21:05:58 +02:00
case PLAY_ALLSTAR :
2018-07-11 20:19:09 +02:00
if ( record - > event . pressed ) {
# ifdef AUDIO_ENABLE
PLAY_SONG ( all_star_song ) ;
2018-07-12 19:35:51 +02:00
SEND_STRING ( " Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show on, get paid. All that glitters is gold. Only shooting stars break the mold. " ) ;
2018-07-11 20:19:09 +02:00
# endif
}
return false ;
break ;
2017-03-07 19:30:32 +01:00
}
return true ;
2017-03-07 21:39:59 +01:00
}