#include QMK_KEYBOARD_H
enum layer_number {
_BASE = 0,_C,_S,_B,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,
};
enum custom_keycodes {
VOICE = SAFE_RANGE,PRN,BRC,CBR,ABK,
};
#define SEND_PAIR(str) if (record->event.pressed) SEND_STRING(str);
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case VOICE: SEND_PAIR(SS_TAP(X_LNG1) SS_RCTL(SS_LSFT("s"))); break;
case PRN: SEND_PAIR("()"); break;
case BRC: SEND_PAIR("[]"); break;
case CBR: SEND_PAIR("<>"); break;
case ABK: SEND_PAIR("{}"); break;
}
return true;
}
enum {
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
};
#define TD_LTR(kc) ACTION_TAP_DANCE_DOUBLE(KC_##kc, S(KC_##kc))
#define TD_ROW(a, b, c, d, e) \
[a] = TD_LTR(A), [b] = TD_LTR(B), [c] = TD_LTR(C), [d] = TD_LTR(D), [e] = TD_LTR(E)
tap_dance_action_t tap_dance_actions[] = {
[A] = TD_LTR(A), [B] = TD_LTR(B), [C] = TD_LTR(C), [D] = TD_LTR(D), [E] = TD_LTR(E),
[F] = TD_LTR(F), [G] = TD_LTR(G), [H] = TD_LTR(H), [I] = TD_LTR(I), [J] = TD_LTR(J),
[K] = TD_LTR(K), [L] = TD_LTR(L), [M] = TD_LTR(M), [N] = TD_LTR(N), [O] = TD_LTR(O),
[P] = TD_LTR(P), [Q] = TD_LTR(Q), [R] = TD_LTR(R), [S] = TD_LTR(S), [T] = TD_LTR(T),
[U] = TD_LTR(U), [V] = TD_LTR(V), [W] = TD_LTR(W), [X] = TD_LTR(X), [Y] = TD_LTR(Y),
[Z] = TD_LTR(Z),
};
#define BSPC KC_BSPC
#define ENG KC_LNG2
#define JPN KC_LNG1
#define DEL KC_DEL
#define SPC KC_SPC
#define BTN1 KC_BTN1
#define BTN2 KC_BTN2
#define BTN3 KC_BTN3
#define ESC KC_ESC
#define TAB KC_TAB
#define ENT KC_ENT
#define RGHT KC_RGHT
#define LEFT KC_LEFT
#define HOME KC_HOME
#define END KC_END
#define MPLY KC_MPLY
#define MINECRAFT C(KC_F1) // minecraft-launcher
#define KEYBOARD C(KC_F2) // xfce4-keyboard-settings
#define MOUSE C(KC_F3) // xfce4-mouse-settings
#define CHROME C(KC_F4) // google-chrome
#define VSCODE C(KC_F5) // vscode
#define SOUND C(KC_F6) // pavucontrol
#define APPEARANCE C(KC_F7) // xfce4-appearance-settings
#define WINDOW C(KC_F8) // xfwm4-settings
#define FIREFOX C(KC_F9) // firefox-esr
#define APPFINDER C(KC_F10) // xfce4-appfinder
#define THUNAR C(KC_F11) // thunar
#define TERMINAL C(KC_F12) // xfce4-terminal
#define OBS C(KC_F13) // obs
#define KDENLIVE C(KC_F14) // kdenlive
#define INKSCAPE C(KC_F15) // inkscape
#define GIMP C(KC_F16) // gimp
#define BLENDER C(KC_F17) // blender
#define DESKFLOW C(KC_F18) // deskflow
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
LT(_8,ESC), LT(_7,KC_DOT),LT(_6,KC_COMM),MS_WHLU, VOICE, /* */ VOICE, MS_WHLU, LT(_6,KC_COMM),LT(_7,KC_DOT),LT(_8,ESC),
LT(_9,BTN3), LEFT, RGHT, LT(_5,BTN1), LT(_4,TAB), /* */ LT(_4,TAB), LT(_5,BTN1), LEFT, RGHT, LT(_9,BTN3),
LT(_10,ENT), KC_VOLD, KC_VOLU, MS_WHLD, LT(_3,SPC), /* */ LT(_3,SPC), MS_WHLD, KC_VOLD, KC_VOLU, LT(_10,ENT),
KC_MPLY, KC_MUTE, TG(_C), LT(_1,DEL), LT(_2,BSPC), /* */ LT(_2,BSPC), LT(_1,DEL), TG(_C), KC_MUTE, KC_MPLY),
[_C] = LAYOUT(
LT(_8,KC_L), LT(_7,KC_O), LT(_6,KC_E), KC_Y, KC_W, /* */ KC_P, KC_R, LT(_6,KC_T), LT(_7,KC_S), LT(_8,KC_X),
LT(_9,KC_A), KC_J, KC_C, LT(_5,KC_I), LT(_4,KC_F), /* */ LT(_4,KC_H), LT(_5,KC_N), KC_D, KC_Z, LT(_9,KC_K),
LT(_10,KC_Q), LEFT, RGHT, KC_U, LT(_3,KC_V), /* */ LT(_3,KC_B), KC_M, LEFT, RGHT, LT(_10,KC_G),
KC_MPLY, KC_MUTE, TG(_C), LT(_S,DEL), LT(_B,BSPC), /* */ LT(_S,SPC), LT(_B,ENT), TG(_C), KC_MUTE, KC_MPLY),
[_S] = LAYOUT(
S(KC_L), S(KC_O), S(KC_E), S(KC_Y), S(KC_W), /* */ S(KC_P), S(KC_R), S(KC_T), S(KC_S), S(KC_X),
S(KC_A), S(KC_J), S(KC_C), S(KC_I), S(KC_F), /* */ S(KC_H), S(KC_N), S(KC_D), S(KC_Z), S(KC_K),
S(KC_Q), XXXXXXX, XXXXXXX, S(KC_U), S(KC_V), /* */ S(KC_B), S(KC_M), XXXXXXX, XXXXXXX, S(KC_G),
XXXXXXX, XXXXXXX, XXXXXXX, PRN, KC_UNDS, /* */ JPN, ENG, XXXXXXX, XXXXXXX, XXXXXXX),
[_B] = LAYOUT(
ESC, KC_DOT, KC_COMM, MS_WHLU, VOICE, /* */ VOICE, MS_WHLU, KC_COMM, KC_DOT, ESC,
BTN3, LEFT, RGHT, BTN1, TAB, /* */ TAB, BTN1, LEFT, RGHT, BTN3,
ENT, XXXXXXX, XXXXXXX, MS_WHLD, SPC, /* */ SPC, MS_WHLD, XXXXXXX, XXXXXXX, ENT,
XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, /* */ LEFT, RGHT, XXXXXXX, XXXXXXX, XXXXXXX),
[_1] = LAYOUT(
TD(L), TD(O), TD(E), TD(Y), TD(W), /* */ TD(W), TD(Y), TD(E), TD(O), TD(L),
TD(A), TD(J), TD(C), TD(I), TD(F), /* */ TD(F), TD(I), TD(C), TD(J), TD(A),
TD(Q), XXXXXXX, XXXXXXX, TD(U), TD(V), /* */ TD(V), TD(U), XXXXXXX, XXXXXXX, TD(Q),
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JPN, /* */ JPN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
[_2] = LAYOUT(
TD(X), TD(S), TD(T), TD(R), TD(P), /* */ TD(P), TD(R), TD(T), TD(S), TD(X),
TD(K), TD(Z), TD(D), TD(N), TD(H), /* */ TD(H), TD(N), TD(D), TD(Z), TD(K),
TD(G), XXXXXXX, XXXXXXX, TD(M), TD(B), /* */ TD(B), TD(M), XXXXXXX, XXXXXXX, TD(G),
XXXXXXX, XXXXXXX, XXXXXXX, ENG, XXXXXXX, /* */ XXXXXXX, ENG, XXXXXXX, XXXXXXX, XXXXXXX),
[_3] = LAYOUT(
KC_F2, S(HOME), S(END), S(KC_UP), C(KC_A), /* */ C(KC_A), S(KC_UP), S(HOME), S(END), KC_F2,
RCS(KC_V), S(LEFT), S(RGHT), C(KC_C), C(KC_X), /* */ C(KC_X), C(KC_C), S(LEFT), S(RGHT), RCS(KC_V),
C(KC_V), XXXXXXX, XXXXXXX, S(KC_DOWN), XXXXXXX, /* */ XXXXXXX, S(KC_DOWN), XXXXXXX, XXXXXXX, C(KC_V),
XXXXXXX, XXXXXXX, XXXXXXX, S(DEL), A(KC_F4), /* */ A(KC_F4), S(DEL), XXXXXXX, XXXXXXX, XXXXXXX),
[_4] = LAYOUT(
MINECRAFT, MOUSE, KEYBOARD, CHROME, DESKFLOW, /* */ DESKFLOW, CHROME, KEYBOARD, MOUSE, MINECRAFT,
APPFINDER, APPEARANCE, WINDOW, QK_BOOT, XXXXXXX, /* */ XXXXXXX, QK_BOOT, WINDOW, APPEARANCE, APPFINDER,
XXXXXXX, XXXXXXX, XXXXXXX, FIREFOX, VSCODE, /* */ VSCODE, FIREFOX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, THUNAR, TERMINAL, /* */ TERMINAL, THUNAR, XXXXXXX, XXXXXXX, XXXXXXX),
[_5] = LAYOUT(
KC_HASH, KC_COLN, KC_SLSH, XXXXXXX, KC_CAPS, /* */ KC_CAPS, XXXXXXX, KC_SLSH, KC_COLN, KC_HASH,
BTN2, KC_EXLM, KC_QUES, XXXXXXX, C(KC_T), /* */ C(KC_T), XXXXXXX, KC_QUES, KC_EXLM, BTN2,
KC_UNDS, XXXXXXX, XXXXXXX, C(KC_Y), C(KC_Z), /* */ C(KC_Z), C(KC_Y), XXXXXXX, XXXXXXX, KC_UNDS,
XXXXXXX, XXXXXXX, XXXXXXX, RCS(KC_T), C(KC_W), /* */ C(KC_W), RCS(KC_T), XXXXXXX, XXXXXXX, XXXXXXX),
[_6] = LAYOUT(
C(KC_PSCR), KC_PSCR, XXXXXXX, C(HOME), S(KC_PSCR), /* */ S(KC_PSCR), C(HOME), XXXXXXX, KC_PSCR, C(KC_PSCR),
OBS, XXXXXXX, XXXXXXX, A(TAB), XXXXXXX, /* */ XXXXXXX, A(TAB), XXXXXXX, XXXXXXX, OBS,
KDENLIVE, XXXXXXX, XXXXXXX, C(END), C(KC_H), /* */ C(KC_H), C(END), XXXXXXX, XXXXXXX, KDENLIVE,
XXXXXXX, XXXXXXX, XXXXXXX, RCS(KC_C), C(KC_F), /* */ C(KC_F), RCS(KC_C), XXXXXXX, XXXXXXX, XXXXXXX),
[_7] = LAYOUT(
BLENDER, XXXXXXX, INKSCAPE, PRN, ABK, /* */ ABK, PRN, INKSCAPE, XXXXXXX, BLENDER,
GIMP, XXXXXXX, XXXXXXX, BRC, CBR, /* */ CBR, BRC, XXXXXXX, XXXXXXX, GIMP,
XXXXXXX, XXXXXXX, XXXXXXX, KC_PLUS, KC_MINS, /* */ KC_MINS, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_ASTR, KC_EQL, /* */ KC_EQL, KC_ASTR, XXXXXXX, XXXXXXX, XXXXXXX),
[_8] = LAYOUT(
XXXXXXX, KC_SCLN, KC_BSLS, KC_AMPR, KC_TILD, /* */ KC_TILD, KC_AMPR, KC_BSLS, KC_SCLN, XXXXXXX,
XXXXXXX, KC_PIPE, KC_DLR, KC_AT, KC_PERC, /* */ KC_PERC, KC_AT, KC_DLR, KC_PIPE, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_GRV, /* */ KC_GRV, KC_CIRC, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_DQUO, KC_QUOT, /* */ KC_QUOT, KC_DQUO, XXXXXXX, XXXXXXX, XXXXXXX),
[_9] = LAYOUT(
TG(_11), RCS(KC_PGUP), RCS(KC_PGDN), KC_F11, KC_F5, /* */ KC_F5, KC_F11, RCS(KC_PGUP), RCS(KC_PGDN), TG(_11),
XXXXXXX, KC_F7, KC_F8, LCTL_T(MPLY), KC_F10, /* */ KC_F10, LCTL_T(MPLY), KC_F8, KC_F7, XXXXXXX,
KC_MUTE, XXXXXXX, XXXXXXX, RCS(TAB), C(TAB), /* */ RCS(TAB), C(TAB), XXXXXXX, XXXXXXX, KC_MUTE,
XXXXXXX, XXXXXXX, XXXXXXX, A(LEFT), A(RGHT), /* */ A(LEFT), A(RGHT), XXXXXXX, XXXXXXX, XXXXXXX),
[_10] = LAYOUT(
S(KC_MUTE), KC_1, KC_2, KC_3, KC_4, /* */ KC_1, KC_2, KC_3, KC_4, S(KC_MUTE),
SOUND, KC_5, KC_6, KC_7, KC_8, /* */ KC_5, KC_6, KC_7, KC_8, SOUND,
XXXXXXX, XXXXXXX, XXXXXXX, KC_9, KC_0, /* */ KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLU, /* */ KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX),
[_11] = LAYOUT(
TG(_11), KC_E, BTN2, SPC, KC_Q, /* */ KC_Q, SPC, BTN2, KC_E, TG(_11),
LT(_12,ESC), BTN2, KC_LSFT, BTN1, KC_F3, /* */ KC_F3, BTN1, KC_LSFT, BTN2, LT(_12,ESC),
A(TAB), XXXXXXX, XXXXXXX, S(BTN1), C(KC_W), /* */ C(KC_W), S(BTN1), XXXXXXX, XXXXXXX, A(TAB),
XXXXXXX, XXXXXXX, XXXXXXX, S(KC_S), S(KC_W), /* */ S(KC_W), S(KC_S), XXXXXXX, XXXXXXX, XXXXXXX),
[_12] = LAYOUT(
XXXXXXX, KC_1, KC_2, KC_3, KC_4, /* */ KC_1, KC_2, KC_3, KC_4, XXXXXXX,
XXXXXXX, KC_5, KC_6, KC_7, KC_8, /* */ KC_5, KC_6, KC_7, KC_8, XXXXXXX,
ENG, XXXXXXX, XXXXXXX, KC_F, KC_9, /* */ KC_9, KC_F, XXXXXXX, XXXXXXX, ENG,
XXXXXXX, XXXXXXX, XXXXXXX, KC_S, KC_W, /* */ KC_W, KC_S, XXXXXXX, XXXXXXX, XXXXXXX),
};