~ruther/qmk_firmware

7830d671d35994dab68c4cd89c40b40a6665e8d8 — QMK Bot 4 years ago 1fdf766 + 6f54286
Merge remote-tracking branch 'origin/master' into develop
M keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c => keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c +21 -22
@@ 16,46 16,45 @@
    K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
    K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
    K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
                   KTA, KTB, KTC, KTD                 \
              KTA, KTB, KTC, KTD, KTE, KTF            \
  ) \
  LAYOUT_wrapper( \
    K01, K02, K03, K04, K05,                   K06, K07, K08, K09, K0A, \
    K11, K12, K13, K14, K15,                   K16, K17, K18, K19, K1A, \
    K21, K22, K23, K24, K25,                   K26, K27, K28, K29, K2A, \
         TAB, GUI,                                  MIN, SLS,           \
                            KTA, KTB, KTC, KTD,                         \
         TAB, KTA,                                  KTF, SLS,           \
                            KTB, KTC, KTD, KTE,                         \
                            CTL, DEL, QUE, CTL,                         \
                            ___, ___, ___, ___                         \
                            ___, ___, ___, ___                          \
  )

#define LAYOUT_dm_base_wrapper(...)       LAYOUT_dm_base(__VA_ARGS__)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_dm_base_wrapper(
    ________________DVORAK_L1_______________,                   ________________DVORAK_R1_______________,
    ________________DVORAK_L2_______________,                   ________________DVORAK_R2_______________,
    ________________DVORAK_L3_______________,                   ________________DVORAK_R3_______________,
                                     LW_BSPC,SFT_ESC,   ALT_ENT,RS_SPC
    LUP,    LUR,    LUM,    LUI,    LUII,       RUII,   RUI,    RUM,    RUR,    RUP,
    SHLP,   CTLR,   ALLM,   LMI,    GULII,      GURII,  RMI,    ALRM,   CTRR,   SHRP,
    LLP,    LLR,    LLM,    LLI,    LLII,       RLII,   RLI,    RLM,    RLR,    RLP,
                    CT_ESC, LW_E,   SF_BSPC,    AL_ENT, RS_SPC, TRAISE
),

[_RAISE] = LAYOUT_dm_base_wrapper(
    ________________RAISE_L1________________,                   ________________RAISE_R1________________,
    ________________RAISE_L2________________,                   ________________RAISE_R2________________,
    ________________RAISE_L3________________,                   ________________RAISE_R3________________,
                                     ADDDD,  _______,   _______,_______
    KC_EXLM,KC_AT,  KC_UP,  KC_LCBR,KC_RCBR,    KC_BSLS,KC_7,   KC_8,   KC_9,   KC_ASTR ,
    KC_HASH,CT_LEFT,AL_DOWN,KC_RGHT,KC_DLR,     GU_EQL, KC_4,   AL_FIVE,CT_SIX, SH_ZERO ,
    KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR,    KC_GRV, KC_1,   KC_2,   KC_3,   KC_PLUS ,
                    _______,ADDDD  ,_______,    _______,RS_SPC, _______
),
[_LOWER] = LAYOUT_dm_base_wrapper(
    ________________LOWER_L1________________,                   ________________LOWER_R1________________,
    ________________LOWER_L2________________,                   ________________LOWER_R2________________,
    ________________LOWER_L3________________,                   ________________LOWER_R3________________,
                                     _______,_______,   _______,ADDDD
    KC_ESC, KC_QUES,KC_UNDS,KC_F1,  KC_F2,      KC_F3,  KC_F4,  KC_MINS,KC_SLSH,KC_BSPC ,
    KC_LSFT,KC_PSCR,KC_PGUP,KC_F5,  KC_F6,      KC_F7,  KC_F8,  KC_HOME,KC_LALT,KC_ENT  ,
    KC_CLCK,KC_SLCK,KC_PGDN,KC_F9,  KC_F10,     KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH ,
                    _______,_______,_______,    _______,ADDDD,  _______
),
[_ADJUST] = LAYOUT_dm_base_wrapper(
    ________________ADJUST_L1_______________,                   ________________ADJUST_R1_______________,
    ________________ADJUST_L2_______________,                   ________________ADJUST_R2_______________,
    ________________ADJUST_L3_______________,                   ________________ADJUST_R3_______________,
                                     _______,_______,   _______,_______
),
};
    _______,EXPLR,  KC_UP,  PRVTAB, PRVWIN,     NXTWIN, NXTTAB, _______,_______,LCKGUI,
    TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB,      DNTAB,  KC_ENT, KC_LGUI,_______,CALDL,
    _______,CLSGUI, _______,CONPST, RESET,      _______,_______,_______,_______,_______,
                    _______,_______,_______,    _______,_______,_______
),};
// clang-format on


A users/ibnuda/abstraction.c => users/ibnuda/abstraction.c +17 -0
@@ 0,0 1,17 @@
/* Copyright 2021 Ibnu D. Aji
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "abstraction.h"
\ No newline at end of file

A users/ibnuda/abstraction.h => users/ibnuda/abstraction.h +117 -0
@@ 0,0 1,117 @@
/* Copyright 2021 Ibnu D. Aji
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once
#include "quantum.h"

enum {
    _BASE,
    _LOWER,
    _RAISE,
    _ADJUST,
};

// keycode abstraction
// ABC:
//  A: L  = left
//     R  = right
//  B: U  = upper row
//     M  = middle row
//     L  = lower row
//  C: P  = pinky finger
//     R  = ring finger
//     M  = middle finger
//     I  = index finger
//     II = inner index finger
#define LUP  KC_Q
#define LUR  KC_V
#define LUM  KC_C
#define LUI  KC_P
#define LUII KC_B
#define LMP  KC_R
#define LMR  KC_S
#define LMM  KC_T
#define LMI  KC_H
#define LMII KC_D
#define LLP  KC_QUOT
#define LLR  KC_J
#define LLM  KC_G
#define LLI  KC_K
#define LLII KC_X

#define RUP  KC_Z
#define RUR  KC_Y
#define RUM  KC_U
#define RUI  KC_L
#define RUII KC_DOT
#define RMP  KC_O
#define RMR  KC_I
#define RMM  KC_A
#define RMI  KC_N
#define RMII KC_F
#define RLP  KC_SLSH
#define RLR  KC_SCLN
#define RLM  KC_W
#define RLI  KC_M
#define RLII KC_COMM


// thumb keys.
#define TRAISE   TG(_RAISE)
#define AL_ENT   ALT_T(KC_ENT)
#define SF_BSPC  SFT_T(KC_BSPC)
#define CT_ESC   CTL_T(KC_ESC)

// home row mods.
#define CTLR    LCTL_T(LMR)
#define CTRR    RCTL_T(RMR)
#define CT_LEFT LCTL_T(KC_LEFT)
#define CT_SIX  RCTL_T(KC_6)

#define SHLP    LSFT_T(LMP)
#define SHRP    RSFT_T(RMP)
#define SH_HASH LSFT_T(KC_HASH)
#define SH_ZERO RSFT_T(KC_0)

#define ALLM    LALT_T(LMM)
#define ALRM    RALT_T(RMM)
#define AL_DOWN LALT_T(KC_DOWN)
#define AL_FIVE RALT_T(KC_5)

#define GULII   RGUI_T(LMII)
#define GURII   LGUI_T(RMII)
#define GU_DLR  RGUI_T(KC_DLR)
#define GU_EQL  LGUI_T(KC_EQL)

// layer toggle.
#define LW_E     LT(_LOWER, KC_E)
#define RS_SPC   LT(_RAISE, KC_SPC)

#define ADDDD    MO(_ADJUST)

// common shortcuts for windows and linux that i use.
#define NXTTAB LCTL(KC_PGDN)
#define PRVTAB LCTL(KC_PGUP)
#define UPTAB  LCTL(LSFT(KC_PGUP))
#define DNTAB  LCTL(LSFT(KC_PGDN))
#define NXTWIN LALT(KC_TAB)
#define PRVWIN LALT(LSFT(KC_TAB))
#define CALDL  LCTL(LALT(KC_DELT))
#define TSKMGR LCTL(LSFT(KC_ESC))
#define EXPLR  LGUI(KC_E)
#define LCKGUI LGUI(KC_L)
#define CONPST LSFT(KC_INS)
#define CLSGUI LALT(KC_F4)

M users/ibnuda/combo.h => users/ibnuda/combo.h +72 -37
@@ 1,61 1,96 @@
#pragma once
#include "quantum.h"

#include "abstraction.h"

// enum for combos.
enum combos {
    // left hand combinations.
    COLON_COMMA,
    COMMA_DOT,
    DOT_P,
    QUOT_Q,
    Q_J,
    J_K,
    R_U_PINKY_RING,
    R_U_RING_MIDDLE,
    R_U_RING_INDEX,
    R_U_MIDDLE_INDEX,
    R_U_MIDDLE_INNER_INDEX,
    R_U_INDEX_INNER_INDEX,
    R_L_PINKY_RING,
    R_L_RING_MIDDLE,
    R_L_RING_INDEX,
    R_L_MIDDLE_INDEX,
    R_L_INDEX_INNER_INDEX,

    // right hand combinations.
    L_R,
    R_C,
    C_G,
    V_W,
    W_M,
    L_U_PINKY_RING,
    L_U_RING_MIDDLE,
    L_U_RING_INDEX,
    L_U_MIDDLE_INDEX,
    L_U_MIDDLE_INNER_INDEX,
    L_U_INNER_INNER_INDEX,
    L_L_PINKY_RING,
    L_L_RING_MIDDLE,
    L_L_MIDDLE_INDEX,
    L_L_RING_INDEX,
    L_L_INDEX_INNER_INDEX,

    // both hands combinations.
    J_W,
    B_L_MIDDLE_MIDDLE,
};

// left hand combinations.
const uint16_t PROGMEM colon_comma_combo[] = {KC_SCLN, KC_COMM, COMBO_END};
const uint16_t PROGMEM comma_dot_combo[]   = {KC_COMM, KC_DOT, COMBO_END};
const uint16_t PROGMEM dot_p_combo[]       = {KC_DOT, KC_P, COMBO_END};
const uint16_t PROGMEM quot_q_combo[]      = {KC_QUOT, KC_Q, COMBO_END};
const uint16_t PROGMEM q_j_combo[]         = {KC_Q, KC_J, COMBO_END};
const uint16_t PROGMEM j_k_combo[]         = {KC_J, KC_K, COMBO_END};
const uint16_t PROGMEM lu_p_r_combo[]     = {LUP, LUR,  COMBO_END};
const uint16_t PROGMEM lu_r_m_combo[]     = {LUR, LUM,  COMBO_END};
const uint16_t PROGMEM lu_r_i_combo[]     = {LUR, LUI,  COMBO_END};
const uint16_t PROGMEM lu_m_i_combo[]     = {LUM, LUI,  COMBO_END};
const uint16_t PROGMEM lu_m_ii_combo[]    = {LUM, LUII, COMBO_END};
const uint16_t PROGMEM lu_i_ii_combo[]    = {LUI, LUII, COMBO_END};
const uint16_t PROGMEM ll_p_r_combo[]     = {LLP, LLR,  COMBO_END};
const uint16_t PROGMEM ll_r_m_combo[]     = {LLR, LLM,  COMBO_END};
const uint16_t PROGMEM ll_r_i_combo[]     = {LLR, LLI,  COMBO_END};
const uint16_t PROGMEM ll_m_i_combo[]     = {LLM, LLI,  COMBO_END};
const uint16_t PROGMEM ll_i_ii_combo[]    = {LLI, LLII, COMBO_END};

// right hand combinations.
const uint16_t PROGMEM l_r_combo[]         = {KC_L, KC_R, COMBO_END};
const uint16_t PROGMEM r_c_combo[]         = {KC_R, KC_C, COMBO_END};
const uint16_t PROGMEM c_g_combo[]         = {KC_C, KC_G, COMBO_END};
const uint16_t PROGMEM v_w_combo[]         = {KC_V, KC_W, COMBO_END};
const uint16_t PROGMEM w_m_combo[]         = {KC_W, KC_M, COMBO_END};
const uint16_t PROGMEM ru_p_r_combo[]      = {RUP, RUR, COMBO_END};
const uint16_t PROGMEM ru_r_m_combo[]      = {RUR, RUM, COMBO_END};
const uint16_t PROGMEM ru_r_i_combo[]      = {RUR, RUI, COMBO_END};
const uint16_t PROGMEM ru_m_i_combo[]      = {RUM, RUI, COMBO_END};
const uint16_t PROGMEM ru_m_ii_combo[]     = {RUM, RUII, COMBO_END};
const uint16_t PROGMEM ru_i_ii_combo[]     = {RUI, RUII, COMBO_END};
const uint16_t PROGMEM rl_p_r_combo[]      = {RLP, RLR, COMBO_END};
const uint16_t PROGMEM rl_r_m_combo[]      = {RLR, RLM, COMBO_END};
const uint16_t PROGMEM rl_r_i_combo[]      = {RLR, RLI, COMBO_END};
const uint16_t PROGMEM rl_m_i_combo[]      = {RLM, RLI, COMBO_END};
const uint16_t PROGMEM rl_i_ii_combo[]     = {RLI, RLII, COMBO_END};

// both hand combinations.
const uint16_t PROGMEM j_w_combo[]         = {KC_J, KC_W, COMBO_END};
const uint16_t PROGMEM bl_m_m_combo[]      = {LLM, RLM, COMBO_END};

combo_t key_combos[COMBO_COUNT] = {
    // left hand combinations.
    [COLON_COMMA]   = COMBO(colon_comma_combo,  KC_TAB),
    [COMMA_DOT]     = COMBO(comma_dot_combo,    KC_QUES),
    [DOT_P]         = COMBO(dot_p_combo,        KC_UNDS),
    [QUOT_Q]        = COMBO(quot_q_combo,       KC_ENT),
    [Q_J]           = COMBO(q_j_combo,          LCTL(KC_W)),
    [J_K]           = COMBO(j_k_combo,          KC_DELT),
    [R_U_PINKY_RING]          = COMBO(lu_p_r_combo,  KC_TAB),
    [R_U_RING_MIDDLE]         = COMBO(lu_r_m_combo,  KC_QUES),
    [R_U_RING_INDEX]          = COMBO(lu_r_i_combo,  PRVTAB),
    [R_U_MIDDLE_INDEX]        = COMBO(lu_m_i_combo,  KC_UNDS),
    [R_U_MIDDLE_INNER_INDEX]  = COMBO(lu_m_ii_combo, KC_ENT),
    [R_U_INDEX_INNER_INDEX]   = COMBO(lu_i_ii_combo, KC_PIPE),
    [R_L_PINKY_RING]          = COMBO(ll_p_r_combo,  KC_ENT),
    [R_L_RING_MIDDLE]         = COMBO(ll_r_m_combo,  LCTL(KC_W)),
    [R_L_RING_INDEX]          = COMBO(ll_r_i_combo,  KC_TAB),
    [R_L_MIDDLE_INDEX]        = COMBO(ll_m_i_combo,  KC_DELT),
    [R_L_INDEX_INNER_INDEX]   = COMBO(ll_i_ii_combo, KC_TILD),

    // right hand combinations.
    [L_R]           = COMBO(l_r_combo,          KC_BSPC),
    [R_C]           = COMBO(r_c_combo,          KC_SLSH),
    [C_G]           = COMBO(c_g_combo,          KC_MINS),
    [V_W]           = COMBO(v_w_combo,          KC_APP),
    [W_M]           = COMBO(w_m_combo,          KC_DELT),
    [L_U_PINKY_RING]          = COMBO(ru_p_r_combo,  KC_BSPC),
    [L_U_RING_MIDDLE]         = COMBO(ru_r_m_combo,  KC_SLSH),
    [L_U_RING_INDEX]          = COMBO(ru_r_i_combo,  NXTTAB),
    [L_U_MIDDLE_INDEX]        = COMBO(ru_m_i_combo,  KC_MINS),
    [L_U_MIDDLE_INNER_INDEX]  = COMBO(ru_m_ii_combo, KC_ENT),
    [L_U_INNER_INNER_INDEX]   = COMBO(ru_i_ii_combo, KC_BSLS),
    [L_L_PINKY_RING]          = COMBO(rl_p_r_combo,  KC_BSLS),
    [L_L_RING_MIDDLE]         = COMBO(rl_r_m_combo,  KC_APP),
    [L_L_RING_INDEX]          = COMBO(rl_r_i_combo,  LSFT(KC_TAB)),
    [L_L_MIDDLE_INDEX]        = COMBO(rl_m_i_combo,  KC_DELT),
    [L_L_INDEX_INNER_INDEX]   = COMBO(rl_i_ii_combo, KC_GRV),

    // both hand combinations.
    [J_W]           = COMBO(j_w_combo,          KC_ENT),
};
    [B_L_MIDDLE_MIDDLE]       = COMBO(bl_m_m_combo,  KC_ENT),
};
\ No newline at end of file

M users/ibnuda/config.h => users/ibnuda/config.h +3 -5
@@ 1,9 1,7 @@
#pragma once

#define COMBO_COUNT 18
#define COMBO_TERM 100
#define COMBO_TERM  50
#define COMBO_COUNT 50

#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD

#define TAPPING_TERM 200
#define PERMISSIVE_HOLD
\ No newline at end of file

M users/ibnuda/ibnuda.h => users/ibnuda/ibnuda.h +1 -51
@@ 1,55 1,5 @@
#pragma once
#include "quantum.h"

#include "tapdance.h"
#include "abstraction.h"
#include "wrapper.h"
//#include "combo.h"

enum {
    _BASE,
    _LOWER,
    _RAISE,
    _ADJUST,
};

// thumb keys.
#define ALT_ENT   ALT_T(KC_ENT)
#define SFT_ESC   SFT_T(KC_ESC)

// home row mods.
#define CT_O LCTL_T(KC_O)
#define CT_N RCTL_T(KC_N)
#define SH_A LSFT_T(KC_A)
#define SH_S RSFT_T(KC_S)
#define AL_E LALT_T(KC_E)
#define AL_T RALT_T(KC_T)
#define GU_I LGUI_T(KC_I)
#define GU_D RGUI_T(KC_D)

// layer toggle.
#define LW_I     LT(_LOWER, KC_I)
#define LW_BSPC  LT(_LOWER, KC_BSPC)
#define RS_SPC   LT(_RAISE, KC_SPC)
#define RS_D     LT(_RAISE, KC_D)

// idk, man. not used, i guess.
#define ADDDD    MO(_ADJUST)

// common shortcuts for windows and linux that i use.
#define NXTTAB LCTL(KC_PGDN)
#define PRVTAB LCTL(KC_PGUP)
#define UPTAB  LCTL(LSFT(KC_PGUP))
#define DNTAB  LCTL(LSFT(KC_PGDN))
#define NXTWIN LALT(KC_TAB)
#define PRVWIN LALT(LSFT(KC_TAB))
#define CALDL  LCTL(LALT(KC_DELT))
#define TSKMGR LCTL(LSFT(KC_ESC))
#define EXPLR  LGUI(KC_E)
#define LCKGUI LGUI(KC_L)
#define CONPST LSFT(KC_INS)
#define CLSGUI LALT(KC_F4)

// tap dances
#define CTL_DLT TD(TD_DLT_CTLDLT)
#define SM_CLN  TD(TD_SCLN_CLN)
#define LFT_TMB TD(TD_LEFT_THUMB)

M users/ibnuda/rules.mk => users/ibnuda/rules.mk +0 -6
@@ 1,14 1,8 @@
COMBO_ENABLE		= yes
COMMAND_ENABLE		= yes
CONSOLE_ENABLE		= yes
TAP_DANCE_ENABLE	= yes

SRC += ibnuda.c

ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
	SRC += tapdance.c
endif

ifeq ($(strip $(COMBO_ENABLE)), yes)
	SRC += combo.c
endif

D users/ibnuda/tapdance.c => users/ibnuda/tapdance.c +0 -83
@@ 1,83 0,0 @@
#include "tapdance.h"

static td_state_t td_state;

void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_code16(KC_DELT);
    } else {
        register_code16(C(KC_DELT));
    }
}

void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        unregister_code16(KC_DELT);
    } else {
        unregister_code16(C(KC_DELT));
    }
}

void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        register_code(KC_LSFT);
    }
    register_code(KC_SCLN);
}

void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
    if (state->count == 1) {
        unregister_code(KC_LSFT);
    }
    unregister_code(KC_SCLN);
}

int current_dance(qk_tap_dance_state_t *state) {
    if (state->count == 1) {
        if (state->interrupted || !state->pressed) {
            return SINGLE_TAP;
        } else {
            return SINGLE_HOLD;
        }
    }
    if (state->count == 2) {
        return DOUBLE_TAP;
    } else {
        return 3;
    }
}

void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) {
    td_state = current_dance(state);
    switch (td_state) {
        case SINGLE_TAP:
            register_code16(KC_ESC);
            break;
        case SINGLE_HOLD:
            register_mods(MOD_BIT(KC_LSFT));
            break;
        case DOUBLE_TAP:
            register_code16(KC_DELT);
            break;
    }
}

void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) {
    switch (td_state) {
        case SINGLE_TAP:
            unregister_code16(KC_ESC);
            break;
        case SINGLE_HOLD:
            unregister_mods(MOD_BIT(KC_LSFT));
            break;
        case DOUBLE_TAP:
            unregister_code16(KC_DELT);
            break;
    }
}

qk_tap_dance_action_t tap_dance_actions[] = {
    [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset),
    [TD_SCLN_CLN]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
    [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset),
};

D users/ibnuda/tapdance.h => users/ibnuda/tapdance.h +0 -23
@@ 1,23 0,0 @@
#pragma once
#include "ibnuda.h"

#ifdef TAP_DANCE_ENABLE
typedef enum {
    SINGLE_TAP,
    SINGLE_HOLD,
    DOUBLE_TAP,
} td_state_t;

int current_dance(qk_tap_dance_state_t *state);

void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data);
void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data);

// enum for tap dances.
enum {
    TD_DLT_CTLDLT = 0,
    TD_SCLN_CLN,
    TD_LEFT_THUMB,
};

#endif // TAP_DANCE_ENABLE

M users/ibnuda/wrapper.h => users/ibnuda/wrapper.h +0 -38
@@ 1,46 1,8 @@
#pragma once
#include "ibnuda.h"

/*
Since our quirky block definitions are basically a list of comma separated
arguments, we need a wrapper in order for these definitions to be
expanded before being used as arguments to the LAYOUT_xxx macro.
*/
#if (!defined(LAYOUT) && defined(KEYMAP))
#    define LAYOUT KEYMAP
#endif

#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)

#define ________________DVORAK_L1_______________     KC_SCLN,KC_COMM,KC_DOT, KC_P,   KC_Y
#define ________________DVORAK_L2_______________     SH_A,   CT_O,   AL_E,   KC_U,   GU_I
#define ________________DVORAK_L3_______________     KC_QUOT,KC_Q,   KC_J,   KC_K,   KC_X

#define ________________DVORAK_R1_______________     KC_F,   KC_G,   KC_C,   KC_R,   KC_L
#define ________________DVORAK_R2_______________     GU_D,   KC_H,   AL_T,   CT_N,   SH_S
#define ________________DVORAK_R3_______________     KC_B,   KC_M,   KC_W,   KC_V,   KC_Z

#define ________________RAISE_L1________________     KC_EXLM,KC_AT,  KC_UP,  KC_LCBR,KC_RCBR
#define ________________RAISE_L2________________     KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR
#define ________________RAISE_L3________________     KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR

#define ________________RAISE_R1________________     KC_BSLS,KC_7,   KC_8,   KC_9,   KC_ASTR
#define ________________RAISE_R2________________     KC_EQL, KC_4,   KC_5,   KC_6,   KC_0
#define ________________RAISE_R3________________     KC_GRV, KC_1,   KC_2,   KC_3,   KC_PLUS

#define ________________LOWER_L1________________     KC_ESC, KC_QUES,KC_UNDS,KC_F1,  KC_F2
#define ________________LOWER_L2________________     KC_LSFT,KC_TAB, KC_PGUP,KC_F5,  KC_F6
#define ________________LOWER_L3________________     KC_CLCK,KC_SLCK,KC_PGDN,KC_F9,  KC_F10

#define ________________LOWER_R1________________     KC_F3,  KC_F4,  KC_MINS,KC_SLSH,KC_BSPC
#define ________________LOWER_R2________________     KC_F7,  KC_F8,  KC_HOME,KC_LALT,KC_ENT
#define ________________LOWER_R3________________     KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH

#define ________________ADJUST_L1_______________     _______,EXPLR,  KC_UP,  PRVTAB, PRVWIN
#define ________________ADJUST_L2_______________     TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB
#define ________________ADJUST_L3_______________     _______,CLSGUI, _______,CONPST, RESET

#define ________________ADJUST_R1_______________     NXTWIN, NXTTAB, _______,_______,LCKGUI
#define ________________ADJUST_R2_______________     DNTAB,  KC_ENT, KC_LGUI,_______,CALDL
#define ________________ADJUST_R3_______________     _______,_______,_______,_______,_______