aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/config.h2
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/keycodes.c38
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/keycodes.h2
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/keymap.c11
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/overrides.c11
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/quad_tapdance.c57
6 files changed, 58 insertions, 63 deletions
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/config.h b/qmk/keyboards/sofle_choc/keymaps/custom/config.h
index 6463554..9473991 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/config.h
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/config.h
@@ -42,7 +42,7 @@
// the tap-dance before reporting the key to send.
// If I release the MOD-TAP key before, the modifier is not applied and the
// host receive a sequence of two keys, which is not what I want.
-#define PERMISSIVE_HOLD
+//#define PERMISSIVE_HOLD
//#define HOLD_ON_OTHER_KEY_PRESS
#define COMBO_MUST_PRESS_IN_ORDER
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.c b/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.c
index 761e653..d3cb716 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.c
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.c
@@ -50,8 +50,8 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KEY_E:
return 230;
- case LT_SFT:
- return 250;
+ case KEY_W:
+ return 300;
case KEY_EE:
return 350;
default:
@@ -75,22 +75,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
+ case KC_LEFT_SHIFT:
+ if (host_keyboard_led_state().caps_lock) {
+ tap_code16(KC_CAPS_LOCK);
+ }
+ return true;
case AL_ENT:
if (layer_state_is(LAYER_SYMBOLS) && !record->event.pressed) {
// Remove the layer the key is released.
layer_clear();
}
- return true; // Let QMK send the enter press/release events
+ return true;
// If a key where released just before, consider we are typing some text
// and not starting a new sequence
case KEY_E:
if (record->event.pressed && timer_elapsed32(key_timer) < TAPPING_TERM) {
+ if (is_caps_word_on()) {
+ add_oneshot_mods(MOD_MASK_SHIFT);
+ }
register_code(BP_E);
return false;
}
return true;
case KEY_T:
if (record->event.pressed && timer_elapsed32(key_timer) < TAPPING_TERM) {
+ if (is_caps_word_on()) {
+ add_oneshot_mods(MOD_MASK_SHIFT);
+ }
register_code(BP_T);
return false;
}
@@ -108,6 +119,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
return true;
+
+ // Override the key APP when hold into AltGR + Layer 1 when hold
+ case KEY_APP:
+ if (!record->tap.count && record->event.pressed) {
+ layer_on(1);
+ register_code(KC_RIGHT_ALT);
+ return false;
+ } else if (!record->tap.count && !record->event.pressed) {
+ unregister_code(KC_RIGHT_ALT);
+ layer_off(1);
+ return false;
+ }
+
+ case KC_LGUI:
+ if (record->event.pressed) {
+ layer_on(1);
+ }
+ else {
+ layer_off(1);
+ }
+ return true;
default:
return true; // Process all other keycodes normally
}
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.h b/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.h
index b68fb34..9bf6290 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.h
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/keycodes.h
@@ -19,10 +19,10 @@ enum {
};
#define MENU LGUI(BP_I)
+#define KEY_APP LT(0, KC_APP)
#define KEY_C TD(TD_C_CCED)
#define KEY_W TD(TD_W_CAPSLOCK)
#define KEY_PRC TD(TD_PRC)
-#define LT_SFT TD(TD_LSFT)
#define AL_ENT MT(MOD_RALT, KC_ENT)
#define AL_SPC MT(MOD_LALT, KC_SPC)
#define KEY_E MT(MOD_LCTL, BP_E)
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/keymap.c b/qmk/keyboards/sofle_choc/keymaps/custom/keymap.c
index cd3da66..b02567e 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/keymap.c
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/keymap.c
@@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KEY_PRC,
BP_DLR, BP_B, BP_EACU, BP_P, BP_O, KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z,
KC_TAB, BP_A, BP_U, BP_I, KEY_E, KEY_EE, KEY_C, KEY_T, BP_S, BP_R, BP_N, BP_M,
- LT_SFT, BP_AGRV,BP_Y, BP_X, BP_DOT, KC_B, KC_MUTE, KC_MPLY,BP_QUOT, BP_Q, BP_G, BP_H, BP_F, KEY_W,
- KC_LCTL, KC_DELETE,KC_LGUI,LY_SYMBOL,AL_SPC, AL_ENT, LY_SYMBOL,KC_APP, KEY_INS, KC_RCTL
+ KC_LSFT, BP_AGRV,BP_Y, BP_X, BP_DOT, KC_B, KC_MUTE, KC_MPLY,BP_QUOT, BP_Q, BP_G, BP_H, BP_F, KEY_W,
+ KC_LCTL, KC_DELETE,KC_LGUI,LY_SYMBOL,AL_SPC, AL_ENT, LY_SYMBOL,KEY_APP, KEY_INS, KC_RCTL
),
// In the number layout, I keep the mod-tap modifiers applies to the middle letters :
@@ -51,11 +51,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#define KEY_5 MT(MOD_LCTL, KC_P5)
#define KEY_DOWN MT(MOD_RCTL, KC_DOWN)
+// This layer is used to access to the numeric keypad, functions keys, and also provide some keys used with KC_LGUI
[LAYER_SYMBOLS] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_NO, KC_NO, S(BP_EQL),
- KC_TAB, KC_NO, KC_P4, KEY_5, KC_P6, KC_NO, KC_LEFT, KEY_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_NO,
- LT_SFT, KC_NO, KC_P1, KC_P2, KC_P3, KC_NO, KC_MUTE, KC_MPLY,KC_PGUP, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_RIGHT_SHIFT,
+ KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_NO, S(BP_EQL),
+ KC_TAB, KC_NO, KC_P4, KEY_5, KC_P6, KC_NO, KC_LEFT, KEY_DOWN, KC_RIGHT,BP_R, BP_N, KC_PGUP,
+ KC_LSFT, KC_NO, KC_P1, KC_P2, KC_P3, KC_NO, KC_MUTE, KC_MPLY,KC_PGUP, KC_TRNS, KC_PGDN, KC_TRNS, BP_F, KC_PGDN,
KC_P0, KC_PDOT, KC_TRNS, LY_SYMBOL,AL_SPC, AL_ENT, LY_SYMBOL,KC_TRNS, KC_RGUI, KC_TRNS
),
};
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/overrides.c b/qmk/keyboards/sofle_choc/keymaps/custom/overrides.c
index a64db44..a99582a 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/overrides.c
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/overrides.c
@@ -29,11 +29,6 @@ const key_override_t w_key_override =
const key_override_t e_key_override =
ko_make_basic(MOD_MASK_CTRL, KEY_E, RCTL(BP_E));
-// Override the key GUI + MENU and to map the key desktop from the typematrix
-const key_override_t menu_key_override =
- ko_make_basic(MOD_MASK_GUI, KC_APP, MENU);
-
-
// This globally defines all key overrides to be used
const key_override_t **key_overrides = (const key_override_t *[]){
&perc_key_override,
@@ -41,6 +36,10 @@ const key_override_t **key_overrides = (const key_override_t *[]){
&w_key_override,
&e_key_override,
&quote_key_override,
- &menu_key_override,
+ // Override the key GUI + MENU and to map the key desktop from the
+ // typematrix
+ &(ko_make_basic(MOD_MASK_GUI, KEY_APP, MENU)),
+
+
NULL
};
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/quad_tapdance.c b/qmk/keyboards/sofle_choc/keymaps/custom/quad_tapdance.c
index f0a5dbb..ab27f82 100644
--- a/qmk/keyboards/sofle_choc/keymaps/custom/quad_tapdance.c
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/quad_tapdance.c
@@ -77,10 +77,16 @@ static td_tap_t w_tap_state = {
void w_finished(tap_dance_state_t *state, void *user_data) {
w_tap_state.state = cur_dance(state);
switch (w_tap_state.state) {
- case TD_SINGLE_TAP: register_code(BP_W); break;
- case TD_SINGLE_HOLD: register_code(KC_RIGHT_SHIFT); break;
- case TD_DOUBLE_TAP: caps_word_on(); break;
- case TD_DOUBLE_SINGLE_TAP: tap_code(BP_W); register_code(BP_W); break;
+ case TD_SINGLE_TAP:
+ register_code(BP_W); break;
+ case TD_DOUBLE_TAP:
+ case TD_DOUBLE_SINGLE_TAP:
+ caps_word_on();
+ break;
+ case TD_SINGLE_HOLD:
+ case TD_DOUBLE_HOLD:
+ register_code(KC_RIGHT_SHIFT);
+ break;
default: break;
}
}
@@ -132,48 +138,6 @@ void ql_reset(tap_dance_state_t *state, void *user_data) {
}
//
-// Definiton for the key L_SHIFT.
-// The main usage of the key is to activate the LShift when hold. But the key
-// can also be used to active the CAPSLOCK mode.
-//
-//
-static td_tap_t lshift_tap_state = {
- .is_press_action = true,
- .state = TD_NONE
-};
-
-// Functions that control what our tap dance key does
-void lshift_finished(tap_dance_state_t *state, void *user_data) {
- lshift_tap_state.state = cur_dance(state);
- switch (lshift_tap_state.state) {
- // Remove the layer with a single tap, this way I always have a key to remove the
- // the layer, without knowing the previous state I had.
- case TD_SINGLE_HOLD:
- register_code(KC_LEFT_SHIFT);
- break;
- case TD_SINGLE_TAP:
- if (host_keyboard_led_state().caps_lock)
- register_code(KC_CAPS_LOCK);
- break;
- default: break;
- }
-}
-
-void lshift_reset(tap_dance_state_t *state, void *user_data) {
- switch (lshift_tap_state.state) {
- case TD_SINGLE_HOLD:
- unregister_code(KC_LEFT_SHIFT);
- break;
- case TD_SINGLE_TAP:
- if (host_keyboard_led_state().caps_lock)
- unregister_code(KC_CAPS_LOCK);
- break;
- default: break;
- }
- lshift_tap_state.state = TD_NONE;
-}
-
-//
// Declare the tapdance table here.
//
tap_dance_action_t tap_dance_actions[] = {
@@ -181,7 +145,6 @@ tap_dance_action_t tap_dance_actions[] = {
[TD_PRC] = ACTION_TAP_DANCE_DOUBLE(BP_EQL, BP_PERC),
[TD_W_CAPSLOCK] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, w_finished, w_reset),
[TD_LAYER_SYMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset),
- [TD_LSFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset),
[TD_EE] = ACTION_TAP_DANCE_DOUBLE(BP_COMM, BP_EGRV),
};