summaryrefslogtreecommitdiffstats
path: root/keyboards/karn/keymaps/colemak/keymap.c
blob: 02b770747c3890e4c67b2f25d25a96526b49b42f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0

#include QMK_KEYBOARD_H

// Tap Dance declarations
enum {
    TD_F1_F11,
    TD_F2_F12,
};

// Tap Dance definitions
tap_dance_action_t tap_dance_actions[] = {
    // Tap once for F1, twice for F11
    [TD_F1_F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F11),
    [TD_F2_F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F12),
};

bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case SFT_T(KC_Z): // Special case for Shift
            return true; // Immediately select the hold action when another key is pressed.
        case SFT_T(KC_ESC):
            return true;
        default:
            return false; // Do not select the hold action when another key is pressed.
    }
}

bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case CTL_T(KC_X):
            return true;
        case ALT_T(KC_C):
            return true;
        case CMD_T(KC_V):
            return true;
        case CMD_T(KC_M):
            return true;
        case ALT_T(KC_COMM):
            return true;
        case CTL_T(KC_DOT):
            return true;
        case KC_X:
            return true;
        case KC_C:
            return true;
        case KC_V:
            return true;
        case KC_M:
            return true;
        case KC_COMM:
            return true;
        case KC_DOT:
            return true;
        default:
            return false;
    }
}

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


    // default (colemak)
    [0] = LAYOUT_split_3x6_3(
        KC_NO,         KC_Q,       KC_W,       KC_F,       KC_P,       KC_G,                        KC_J,  KC_L,       KC_U,          KC_Y,         KC_SCLN,        KC_NO,
        HYPR_T(KC_TAB),KC_A,       KC_R,       KC_S,       KC_T,       KC_D,                        KC_H,  KC_N,       KC_E,          KC_I,         KC_O,           HYPR_T(KC_ENT),
        KC_NO,         SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B,                        KC_K,  CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO,
                                                           MO(1),      SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2)
    ),

    // symbols
    [1] = LAYOUT_split_3x6_3(
        _______, KC_BSLS, KC_GRV,  KC_QUOT, KC_DQT,  KC_LCBR,                    KC_RCBR, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, _______,
        _______, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
        _______, _______, _______, _______, _______, _______,                    _______, _______, _______, _______, _______, _______,
                                            _______, _______, _______,  KC_DEL,  _______, _______
    ),

    // nav
    [2] = LAYOUT_split_3x6_3(
        _______, _______, KC_Q,      _______,   _______,   KC_VOLU,                    _______, _______, _______, KC_SCLN, _______, _______,
        _______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD,                    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_CAPS, _______,
        _______, _______, _______,   _______,   _______,   KC_MUTE,                    _______, _______, _______, _______, _______, _______,
                                                _______,   _______, _______,  _______, _______, _______
    ),

    // numbers
    [3] = LAYOUT_split_3x6_3(
        _______, TD(TD_F1_F11), TD(TD_F2_F12), KC_F3,   KC_F4,   KC_F5,                      KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
        _______, KC_1,          KC_2,          KC_3,    KC_4,    KC_5,                       KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______,
        _______, _______,       _______,       _______, _______, _______,                    _______, _______, _______, _______, _______, _______,
                                                        _______, _______, _______,  _______, _______, _______
    )
};