~andrew/qmk

292416976d9e69add4a68a890815e79c5a78c2da — Andrew Reisner a month ago cb94b83
Changes for WSL2
M keyboards/keyball/keyball39/keymaps/init/keymap.c => keyboards/keyball/keyball39/keymaps/init/keymap.c +55 -5
@@ 19,6 19,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H

#include "quantum.h"
#include "os_detection.h"

// Home row mods
#define HR_A KC_A


@@ 26,7 27,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define HR_D MT(MOD_LSFT, KC_D)
#define HR_F MT(MOD_LCTL, KC_F)

#define HR_J MT(MOD_RCTL, KC_J)
#define HR_J MT(MOD_LCTL, KC_J)
#define HR_K MT(MOD_RSFT, KC_K)
#define HR_L MT(MOD_RALT, KC_L)
#define HR_SCLN KC_SCLN


@@ 41,6 42,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

enum {
    TD_UNDO,
    TD_NAV,
};

// Combo for caps word


@@ 50,8 52,48 @@ combo_t key_combos[] = {
    COMBO(capsword_combo, QK_CAPS_WORD_TOGGLE),
};

// Advanced tap dance for bottom-left thumb key: hold = momentary layer 5, double tap = toggle layer 1
typedef enum {
    TD_NAV_NONE,
    TD_NAV_SINGLE_HOLD,
    TD_NAV_DOUBLE_TAP,
} td_nav_state_t;

static td_nav_state_t nav_tap_state = TD_NAV_NONE;

td_nav_state_t nav_cur_dance(tap_dance_state_t *state) {
    if (state->count == 1) {
        return state->pressed ? TD_NAV_SINGLE_HOLD : TD_NAV_NONE;
    } else if (state->count == 2) {
        return TD_NAV_DOUBLE_TAP;
    }
    return TD_NAV_NONE;
}

void nav_finished(tap_dance_state_t *state, void *user_data) {
    nav_tap_state = nav_cur_dance(state);
    switch (nav_tap_state) {
        case TD_NAV_SINGLE_HOLD:
            layer_on(5);
            break;
        case TD_NAV_DOUBLE_TAP:
            layer_invert(1);
            break;
        default:
            break;
    }
}

void nav_reset(tap_dance_state_t *state, void *user_data) {
    if (nav_tap_state == TD_NAV_SINGLE_HOLD) {
        layer_off(5);
    }
    nav_tap_state = TD_NAV_NONE;
}

tap_dance_action_t tap_dance_actions[] = {
    [TD_UNDO] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_EUNDO),
    [TD_NAV]  = ACTION_TAP_DANCE_FN_ADVANCED(NULL, nav_finished, nav_reset),
};

// clang-format off


@@ 61,15 103,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_Q     , KC_W     , KC_E     , KC_R     , KC_T     ,                            KC_Y     , TD(TD_UNDO), KC_I   , KC_O     , KC_P     ,
        HR_A     , HR_S     , HR_D     , HR_F     , KC_G     ,                            KC_H     , HR_J     , HR_K     , HR_L     , HR_SCLN  ,
        KC_Z     , KC_X     , KC_C     , KC_V     , KC_B     ,                            KC_N     , KC_M     , KC_COMM  , KC_DOT   , KC_SLSH  ,
        MO(5)    , KC_TAB   , KC_ESC   , LT(3,KC_TAB), LT(4,KC_BSPC), KC_LGUI,      MT(MOD_RGUI, KC_ENT), LT(4,KC_SPC), _______,  _______,  _______, KC_QUOT
        TD(TD_NAV), KC_TAB   , KC_ESC   , LT(3,KC_TAB), LT(4,KC_BSPC), KC_LGUI,      MT(MOD_RGUI, KC_ENT), LT(4,KC_SPC), _______,  _______,  _______, KC_QUOT
    ),

    // Transparent layer for HR_L GUI+N behavior
    // Transparent layer for HR_L GUI+N behavior; GUI thumb keys become RCTL, RCTL home row mod becomes LCTL
    [1] = LAYOUT_universal(
        _______ , _______ , _______ , _______ , _______ ,                            _______ , _______ , _______ , _______ , _______ ,
        _______ , _______ , _______ , _______ , _______ ,                            _______ , MT(MOD_LCTL, KC_J), _______ , _______ , _______ ,
        _______ , _______ , _______ , _______ , _______ ,                            _______ , _______ , _______ , _______ , _______ ,
        _______ , _______ , _______ , _______ , _______ ,                            _______ , _______ , _______ , _______ , _______ ,
        _______ , _______ , _______ , _______ , _______ , _______ ,          _______ , _______ , _______ , _______ , _______ , _______
        _______ , _______ , _______ , _______ , _______ , KC_RCTL,          MT(MOD_RCTL, KC_ENT), _______ , _______ , _______ , _______ , _______
    ),

    // Gaming layer (removes home row mods via layer toggle)


@@ 135,6 177,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
}

bool process_detected_host_os_user(os_variant_t detected_os) {
	if (detected_os == OS_WINDOWS)
		layer_on(1);
	else
		layer_off(1);
	return true;
}

bool caps_word_press_user(uint16_t keycode) {
    switch (keycode) {
        // Keycodes that continue Caps Word, with shift applied.

M keyboards/keyball/keyball39/keymaps/init/rules.mk => keyboards/keyball/keyball39/keymaps/init/rules.mk +1 -0
@@ 4,4 4,5 @@ CAPS_WORD_ENABLE = yes
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
POINTING_DEVICE_ENABLE = yes
OS_DETECTION_ENABLE = yes