Created
March 20, 2018 12:21
-
-
Save kaansoral/0e011468c8d9f9b7970b8e9ddca2c455 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "keymap_common.h" | |
#include <util/delay.h> | |
#include "wait.h" | |
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { | |
KEYMAP( | |
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC,/*14X*/ | |
TAB, Q, W, E, R, T, Y,FN11, FN5,FN12, P, FN8, FN9, FN30,/*14X*/ | |
LCTL,A,FN13, D, F,FN14, H, J, K, L,SCLN, FN7, ENT, /*13X*/ | |
LSHIFT, Z, X,FN15, V, B, N, M, FN25,FN26, SLSH, UP, FN10,/*13X*/ | |
LALT,LGUI, SPC, FN2, LEFT, DOWN, RGHT /*7X*/ | |
), | |
KEYMAP(/* Fn Layer */ | |
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC,/*14X*/ | |
TAB, Q, W, E, R, T, Y,FN11, FN5,FN12, P, FN8, FN9, FN30,/*14X*/ | |
LCTL,A,FN13, D, F,FN14, H, J, K, L,FN27, FN7, ENT, /*13X*/ | |
LSHIFT, Z, X,FN15, V, B, N, M, VOLD,VOLU, MUTE,MPLY,TRNS,/*13X*/ | |
LALT,LGUI, SPC, FN2, LEFT, DOWN, RGHT /*7X*/ | |
), | |
KEYMAP(/* CODE Layer */ | |
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, FN20, FN21, DEL,/*14X*/ | |
TAB, Q, W, E, R, T, Y,FN11, FN5, FN4, FN22, FN16, FN17,FN19,/*14X*/ | |
LCTL,A,FN13, FN1, F,FN14, H, J, K, L,SCLN, FN7, FN24, /*13X*/ | |
LSHIFT, Z, X,FN15, V, B, N, M, FN25,FN26, SLSH, UP, FN3,/*13X*/ | |
LALT,LGUI, SPC, TRNS, LEFT, DOWN, RGHT /*7X*/ | |
), | |
KEYMAP(/* Windows Toggle Layer */ | |
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC,/*14X*/ | |
TAB, Q, W, E, R, T, Y,FN11, FN5,FN12, P, FN8, FN9, FN30,/*14X*/ | |
LCTL,A,FN13, D, F,FN14, H, J, K, L,SCLN, FN7, ENT, /*13X*/ | |
LSHIFT, Z, X,FN15, V, B, N, M, FN25,FN26, SLSH, UP, FN10,/*13X*/ | |
LALT,LGUI, SPC, FN2, LEFT, DOWN, RGHT /*7X*/ | |
), | |
}; | |
/* | |
* Macro definition | |
*/ | |
enum macro_id { | |
MAXIMIZE, | |
TR_U,TR_I,TR_O,TR_S,TR_G,TR_C,TR_i, | |
SHIFT_ESC, | |
BACKTICK, | |
CO1,CC1, | |
V_PREV,V_NEXT,V_DIFF,V_CHANGED, | |
C_PREV,C_NEXT, | |
IDE_COLOR,IDE_SWITCH,IDE_COMMANDS, | |
CO2,CC2, | |
SEMICOLON, | |
WINDOWS_MODE, | |
CHROME_INSPECT, | |
DELAY_TEST | |
}; | |
void my_delay(times) | |
{ | |
int i; | |
for(i=0;i<times*10;i++) | |
{ | |
_delay_us(100); | |
} | |
} | |
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |
{ | |
switch (id) { | |
case V_PREV: | |
return (record->event.pressed?MACRO(D(LCTRL),D(LSHIFT),T(PGUP),U(LSHIFT),U(LCTRL),END):MACRO(END)); | |
case V_NEXT: | |
return (record->event.pressed?MACRO(D(LCTRL),D(LSHIFT),T(PGDN),U(LSHIFT),U(LCTRL),END):MACRO(END)); | |
case V_DIFF: | |
return (record->event.pressed?MACRO(D(LCTRL),D(LALT),T(D),U(LALT),U(LCTRL),END):MACRO(END)); | |
case V_CHANGED: | |
return (record->event.pressed?MACRO(D(LCTRL),D(LGUI),T(U),U(LGUI),U(LCTRL),END):MACRO(END)); | |
case C_PREV: | |
return (record->event.pressed?MACRO(D(LGUI),T(PGDN),U(LGUI),END):MACRO(END)); | |
case C_NEXT: | |
return (record->event.pressed?MACRO(D(LGUI),T(PGUP),U(LGUI),END):MACRO(END)); | |
case IDE_COLOR: | |
return (record->event.pressed?MACRO(D(LGUI),D(LSHIFT),T(C),U(LSHIFT),U(LGUI),END):MACRO(END)); | |
case IDE_SWITCH: | |
return (record->event.pressed?MACRO(D(LCTRL),D(LGUI),T(P),U(LGUI),U(LCTRL),END):MACRO(END)); | |
case IDE_COMMANDS: | |
return (record->event.pressed?MACRO(D(LGUI),D(LSHIFT),T(P),U(LSHIFT),U(LGUI),END):MACRO(END)); | |
case SEMICOLON: | |
return (record->event.pressed?MACRO(D(LSHIFT),T(SCLN),U(LSHIFT),END):MACRO(END)); | |
case CHROME_INSPECT: | |
return (record->event.pressed?MACRO(D(LALT),D(LGUI),T(J),U(LGUI),U(LALT),END):MACRO(END)); | |
case DELAY_TEST: | |
if (record->event.pressed) { | |
register_code(KC_D); | |
unregister_code(KC_D); | |
wait_ms(200); | |
register_code(KC_E); | |
unregister_code(KC_E); | |
wait_ms(200); | |
register_code(KC_L); | |
unregister_code(KC_L); | |
wait_ms(200); | |
register_code(KC_A); | |
unregister_code(KC_A); | |
wait_ms(200); | |
register_code(KC_Y); | |
unregister_code(KC_Y); | |
} | |
break; | |
case MAXIMIZE: | |
if (record->event.pressed) { | |
/*U"LGui"+U"LCtrl"+U"LAlt"+U"LShift"+U"O"*/ | |
register_code(KC_LGUI); | |
register_code(KC_LCTRL); | |
register_code(KC_LALT); | |
register_code(KC_LSHIFT); | |
register_code(KC_O); | |
wait_ms(40); | |
register_code(KC_SPACE); | |
unregister_code(KC_SPACE); | |
register_code(KC_SPACE); | |
unregister_code(KC_SPACE); | |
register_code(KC_ESC); | |
unregister_code(KC_ESC); | |
register_code(KC_ESC); | |
unregister_code(KC_ESC); | |
unregister_code(KC_O); | |
unregister_code(KC_LSHIFT); | |
unregister_code(KC_LALT); | |
unregister_code(KC_LCTRL); | |
unregister_code(KC_LGUI); | |
} | |
break; | |
} | |
return MACRO_NONE; | |
} | |
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) | |
{ | |
static bool TR_U_mode = false,TR_I_mode = false,TR_i_mode = false,TR_O_mode = false,TR_S_mode = false,TR_G_mode = false,TR_C_mode = false,SE_mode=false,BACKTICK_mode=false,CO1_mode=false,CC1_mode=false; | |
static bool windows_mode=false; | |
switch (id) { | |
case WINDOWS_MODE: | |
if(windows_mode) layer_off(4),windows_mode=false; | |
else layer_on(4),windows_mode=true; | |
/*led_set(0);*/ | |
break; | |
case TR_U: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_U_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
my_delay(3); | |
register_code(KC_RBRC);unregister_code(KC_RBRC); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_U); | |
} | |
} else { | |
if (TR_U_mode) { | |
TR_U_mode = false; | |
} else { | |
unregister_code(KC_U); | |
} | |
} | |
break; | |
case TR_I: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_I_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_I);unregister_code(KC_I); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_I); | |
} | |
} else { | |
if (TR_I_mode) { | |
TR_I_mode = false; | |
} else { | |
unregister_code(KC_I); | |
} | |
} | |
break; | |
case TR_i: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_i_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_LSHIFT); | |
register_code(KC_QUOT);unregister_code(KC_QUOT); | |
unregister_code(KC_LSHIFT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_BSLS); | |
} | |
} else { | |
if (TR_i_mode) { | |
TR_i_mode = false; | |
} else { | |
unregister_code(KC_BSLS); | |
} | |
} | |
break; | |
case TR_O: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_O_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_COMM);unregister_code(KC_COMM); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_O); | |
} | |
} else { | |
if (TR_O_mode) { | |
TR_O_mode = false; | |
} else { | |
unregister_code(KC_O); | |
} | |
} | |
break; | |
case TR_S: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_S_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_SCLN);unregister_code(KC_SCLN); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_S); | |
} | |
} else { | |
if (TR_S_mode) { | |
TR_S_mode = false; | |
} else { | |
unregister_code(KC_S); | |
} | |
} | |
break; | |
case TR_G: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_G_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_LBRC);unregister_code(KC_LBRC); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_G); | |
} | |
} else { | |
if (TR_G_mode) { | |
TR_G_mode = false; | |
} else { | |
unregister_code(KC_G); | |
} | |
} | |
break; | |
case TR_C: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
TR_C_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
_delay_ms(1); | |
register_code(KC_DOT);unregister_code(KC_DOT); | |
register_code(KC_F13); | |
unregister_code(KC_F13); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_C); | |
} | |
} else { | |
if (TR_C_mode) { | |
TR_C_mode = false; | |
} else { | |
unregister_code(KC_C); | |
} | |
} | |
break; | |
case BACKTICK: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
BACKTICK_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_GRV); | |
unregister_code(KC_GRV); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_QUOT); | |
} | |
} else { | |
if (BACKTICK_mode) { | |
BACKTICK_mode = false; | |
} else { | |
unregister_code(KC_QUOT); | |
} | |
} | |
break; | |
case CO1: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
CO1_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_SLSH); unregister_code(KC_SLSH); | |
register_code(KC_LSHIFT); register_code(KC_8); unregister_code(KC_8); unregister_code(KC_LSHIFT); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_LBRC); | |
} | |
} else { | |
if (CO1_mode) { | |
CO1_mode = false; | |
} else { | |
unregister_code(KC_LBRC); | |
} | |
} | |
break; | |
case CC1: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
CC1_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_LSHIFT); register_code(KC_8); unregister_code(KC_8); unregister_code(KC_LSHIFT); | |
register_code(KC_SLSH); unregister_code(KC_SLSH); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_RBRC); | |
} | |
} else { | |
if (CC1_mode) { | |
CC1_mode = false; | |
} else { | |
unregister_code(KC_RBRC); | |
} | |
} | |
break; | |
case CO2: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
CO1_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_LSHIFT); register_code(KC_COMM); unregister_code(KC_COMM); register_code(KC_1); unregister_code(KC_1); unregister_code(KC_LSHIFT); | |
register_code(KC_MINS); unregister_code(KC_MINS); | |
register_code(KC_MINS); unregister_code(KC_MINS); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_COMM); | |
} | |
} else { | |
if (CO1_mode) { | |
CO1_mode = false; | |
} else { | |
unregister_code(KC_COMM); | |
} | |
} | |
break; | |
case CC2: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LALT)) { | |
CO1_mode = true; | |
unregister_code(KC_LALT); | |
register_code(KC_MINS); unregister_code(KC_MINS); | |
register_code(KC_MINS); unregister_code(KC_MINS); | |
register_code(KC_LSHIFT); register_code(KC_DOT); unregister_code(KC_DOT); unregister_code(KC_LSHIFT); | |
register_code(KC_LALT); | |
} else { | |
register_code(KC_DOT); | |
} | |
} else { | |
if (CO1_mode) { | |
CO1_mode = false; | |
} else { | |
unregister_code(KC_DOT); | |
} | |
} | |
break; | |
case SHIFT_ESC: | |
if (record->event.pressed) { | |
if (keyboard_report->mods & MOD_BIT(KC_LSHIFT)) { | |
SE_mode = true; | |
register_code(KC_GRV); | |
unregister_code(KC_GRV); | |
} else { | |
register_code(KC_ESC); | |
} | |
} else { | |
if (SE_mode) { | |
SE_mode = false; | |
} else { | |
unregister_code(KC_ESC); | |
} | |
} | |
break; | |
} | |
} | |
/* | |
* Fn action definition | |
*/ | |
const action_t fn_actions[] PROGMEM = {\ | |
[0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) | |
[1] = ACTION_MACRO(DELAY_TEST), // HHKB layer(toggle with 5 taps) | |
[2] = ACTION_LAYER_MOMENTARY(2), | |
[3] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift | |
[4] = ACTION_MACRO(MAXIMIZE), // Maximize window | |
[5] = ACTION_FUNCTION(TR_I), | |
[6] = ACTION_FUNCTION(SHIFT_ESC), | |
[7] = ACTION_FUNCTION(BACKTICK), | |
[8] = ACTION_FUNCTION(CO1), | |
[9] = ACTION_FUNCTION(CC1), | |
[10]= ACTION_LAYER_MOMENTARY(1), // Right-Fn | |
[11] = ACTION_FUNCTION(TR_U), | |
[12] = ACTION_FUNCTION(TR_O), | |
[13] = ACTION_FUNCTION(TR_S), | |
[14] = ACTION_FUNCTION(TR_G), | |
[15] = ACTION_FUNCTION(TR_C), | |
[16] = ACTION_MACRO(V_PREV), /* [ */ | |
[17] = ACTION_MACRO(V_NEXT), /* ] */ | |
[18] = ACTION_MACRO(V_DIFF), /* D */ | |
[19] = ACTION_MACRO(V_CHANGED), /* \ */ | |
[20] = ACTION_MACRO(C_PREV), /* - */ | |
[21] = ACTION_MACRO(C_NEXT), /* = */ | |
[22] = ACTION_MACRO(IDE_SWITCH), /* P */ | |
[23] = ACTION_MACRO(IDE_COLOR), /* C */ | |
[24] = ACTION_MACRO(IDE_COMMANDS), /* Enter */ | |
[25] = ACTION_FUNCTION(CO2), /* <!-- */ | |
[26] = ACTION_FUNCTION(CC2), /* --> */ | |
[27] = ACTION_MACRO(SEMICOLON), /* : */ | |
[28] = ACTION_FUNCTION(WINDOWS_MODE), /* : */ | |
[29] = ACTION_LAYER_TOGGLE(3), | |
[30] = ACTION_FUNCTION(TR_i), | |
[31] = ACTION_MACRO(CHROME_INSPECT), | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment