Skip to content

Instantly share code, notes, and snippets.

@jimppa
Last active January 30, 2020 17:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jimppa/13d1acd833ba7f4b217d0ee54a30bb44 to your computer and use it in GitHub Desktop.
Save jimppa/13d1acd833ba7f4b217d0ee54a30bb44 to your computer and use it in GitHub Desktop.
katana60 keymap
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
// place overrides here
#endif
#include QMK_KEYBOARD_H
// Layers
#define BASE 0 // Default
#define FN1 1 // left pinkie
#define SYS 2 // System + Numpad
// Tap dance declarations
enum {
TD_SEMIC_QUOT = 0,
TD_OPEN_BRAC = 1,
TD_CLOSE_BRAC = 2,
TD_PGUP_HOME = 3,
TD_PGDN_END = 4
};
// Tap dance left bracket callbacks
void dance_open_bracket_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_LBRACKET);
} else {
register_code(KC_RSFT);
register_code(KC_LBRACKET);
}
}
void dance_open_bracket_reset(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_LBRACKET);
} else {
unregister_code(KC_RSFT);
unregister_code(KC_LBRACKET);
}
}
// Right bracket callbacks
void dance_close_bracket_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code(KC_RBRACKET);
} else {
register_code(KC_RSFT);
register_code(KC_RBRACKET);
}
}
void dance_close_bracket_reset(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code(KC_RBRACKET);
} else {
unregister_code(KC_RSFT);
unregister_code(KC_RBRACKET);
}
}
// Register tap dance actions
qk_tap_dance_action_t tap_dance_actions[] = {
// Tap once for quote/ä, twice for semicolon/ö
[TD_SEMIC_QUOT] = ACTION_TAP_DANCE_DOUBLE(KC_QUOTE, KC_SCOLON),
// Once for [, twice for {
[TD_OPEN_BRAC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_open_bracket_finished, dance_open_bracket_reset),
// And same for closing
[TD_CLOSE_BRAC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_close_bracket_finished, dance_close_bracket_reset),
[TD_PGUP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_HOME),
[TD_PGDN_END] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_END)
};
// MacOS based definitions.
#define PRVWD LALT(KC_LEFT) // Previous word
#define NXTWD LALT(KC_RIGHT) // Next word
#define UNDO LGUI(KC_Z) // UNDO
#define CUT LGUI(KC_X) // CUT
#define COPY LGUI(KC_C) // COPY
#define PASTE LGUI(KC_V) // PASTE
#define Z_CTRL CTL_T(KC_Z)
#define DIM KC_SLCK
#define BRIGHT KC_PAUS
#define TD_LBR TD(TD_OPEN_BRAC)
#define TD_RBR TD(TD_CLOSE_BRAC)
#define TD_QUO TD(TD_SEMIC_QUOT)
#define TD_PGUP TD(TD_PGUP_HOME)
#define TD_PGDN TD(TD_PGDN_END)
// The keymap
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT( /* Base */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TD_LBR, TD_RBR, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_SCOLON, TD_PGUP, KC_H, KC_J, KC_K, KC_L, TD_QUO, KC_ENT,
KC_LSPO, Z_CTRL, KC_X, KC_C, KC_V, KC_B, KC_MEH, TD_PGDN, KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
KC_CAPS, DF(SYS), KC_LCTL, KC_LALT, KC_LGUI, KC_HYPR, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
),
[FN1] = LAYOUT(
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , DIM , BRIGHT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, PRVWD , KC_END , NXTWD , _______, KC_DEL,
_______, _______, KC_LCTL, KC_LALT, KC_LSFT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT,_______, _______,
_______, UNDO , CUT , COPY , PASTE , _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[SYS] = LAYOUT(
RESET , _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
_______, _______, _______, KC_MS_U, _______, _______, _______, KC_7, KC_8, KC_9, KC_PPLS, _______, _______, _______,
_______, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, _______, _______,
_______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, KC_1, KC_2, KC_3, KC_PENT, _______, _______, _______,
_______,DF(BASE), _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______
)
};
COMMAND_ENABLE = no
TAP_DANCE_ENABLE = yes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment