Skip to content

Commit

Permalink
Spring update
Browse files Browse the repository at this point in the history
Numerous fixes (AppMenu), tweaks (adaptives, combos, timing, defaults)
  • Loading branch information
moutis authored Mar 20, 2024
1 parent 85e93ba commit 41720be
Show file tree
Hide file tree
Showing 18 changed files with 1,281 additions and 497 deletions.
171 changes: 171 additions & 0 deletions adaptive_trailer.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
//
// adaptive_trailer.c
//
//
// Created by Alan on 1/22/24.
//
//
// embedded in the switch in adaptive.c
//

// Using Adaptives for macros (like a flexible LeaderKey)
case ADAPTIVE_TRAILER:

if (preprior_keycode) // allow only 1 deep
break;
return_state = false; // presume we do something.
switch (prior_keycode) {
#ifdef adaptAHASH
case KC_A: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptAHASH); //
break;
#endif
#ifdef adaptBHASH
case KC_B: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptBHASH); //
break;
#endif
#ifdef adaptCHASH
case KC_C: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptCHASH); //
break;
#endif
#ifdef adaptDHASH
case KC_D: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptDHASH); //
break;
#endif
#ifdef adaptEHASH
case KC_E: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptEHASH); //
break;
#endif
#ifdef adaptFHASH
case KC_F: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptFHASH); //
break;
#endif
#ifdef adaptGHASH
case KC_G: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptGHASH); //
break;
#endif
#ifdef adaptHHASH
case KC_H: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptHHASH); //
break;
#endif
#ifdef adaptIHASH
case KC_I: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptIHASH); //
break;
#endif
#ifdef adaptJHASH
case KC_J: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptJHASH); //
break;
#endif
#ifdef adaptKHASH
case KC_K: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptKHASH); //
break;
#endif
#ifdef adaptLHASH
case KC_L: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptLHASH); //
break;
#endif
#ifdef adaptMHASH
case KC_M: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptMHASH); //
break;
#endif
#ifdef adaptNHASH
case KC_N: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptNHASH); //
break;
#endif
#ifdef adaptOHASH
case KC_O: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptOHASH); //
break;
#endif
#ifdef adaptPHASH
case KC_P: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptPHASH); //
break;
#endif
#ifdef adaptRHASH
case KC_R: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptRHASH); //
break;
#endif
#ifdef adaptSHASH
case KC_S: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptSHASH); //
break;
#endif
#ifdef adaptTHASH
case KC_T: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptTHASH); //
break;
#endif
#ifdef adaptUHASH
case KC_U: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptUHASH); //
break;
#endif
#ifdef adaptVHASH
case KC_V: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptVHASH); //
break;
#endif
#ifdef adaptWHASH
case KC_W: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptWHASH); //
break;
#endif
#ifdef adaptXHASH
case KC_X: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptXHASH); //
break;
#endif
#ifdef adaptYHASH
case KC_Y: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptYHASH); //
break;
#endif
#ifdef adaptZHASH
case KC_Z: //
tap_code(KC_BSPC); // and may have been lowercase
send_string(adaptZHASH); //
break;
#endif
default: //
return_state = true; // didn't end up doing anything.
}
break;
23 changes: 2 additions & 21 deletions config.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,30 +55,11 @@
#define COMBO_HOLD (TAPPING_TERM) // time to hold to trigger delayed combo
#endif


#ifdef COMBO_HOLD
#undef ADAPTIVE_TERM
#define ADAPTIVE_TERM COMBO_HOLD // use COMBO_HOLD time as a standard threshold (same recation time)
#else
#define ADAPTIVE_TERM (TAPPING_TERM/5) // rolling threshold
#endif

#define LINGER_TIME TAPPING_TERM * 1.2 // how long to hold before a time-depentant behavior begins
// how long to leave a state active before resetting like APPMENU or SHIFTWORD
#define STATE_RESET_TIME LINGER_TIME * 3

#define ADAPTIVE_ENABLE
#define ADAPTIVE_TRAILER KC_3

//#define THUMB_REPEATER
#ifdef THUMB_REPEATER
#define HD_REPEATER_A HD_BSPC
#define HD_REPEATER_B KC_ENT
#endif

#define EN_HDIGRAPH_COMBOS // English H-Digraph combos (Th,Ch,Wh,Sh,Gh,Ph,Sch)
#define EN_PRONOUN_COMBOS // English First Person pronoun combos (I, I'm, I've I'd I'll etc) (184 bytes on AVR)
#define EN_PRONOUN_COMBOS_ALL // combos for you('ve), We('ve), They('ve) etc. (616 bytes on AVR)
#define EN_W_PRONOUNS
#define JP_MODE_ENABLE // Japanese mode features switch output for Japanese input (552 bytes on AVR)
#define JP_YOUON_COMBOS // must have JP_MODE_ENABLE. min contracted sounds as combos (746 bytes on AVR)
#define JP_YOUON_COMBOS_ALL // must have JP_YOUON_COMBOS. all contracted sounds as combos (862 bytes on AVR)

7 changes: 4 additions & 3 deletions moutis.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ uint8_t saved_mods = 0; // to pass state between process_record_user and matrix
uint16_t record_keycode = 0; // the keykcode we poke at in process_record
uint16_t key_trap = 0; // the actual keycode registered (need to unregister)
#ifdef ADAPTIVE_ENABLE
uint16_t preprior_keycode = KC_NO;
uint16_t prior_keycode = KC_NO;
uint16_t prior_keydown = 0; // timer of keydown for adaptive threshhold.
#endif

uint16_t linger_key = 0; // keycode for linger actions (ex. "Qu")
uint32_t linger_timer = 0; // time to hold a key before something else happens.
uint32_t state_reset_timer = 0; // time to leave a state active before shutting it down automatically.
bool appmenu_on = false; // state of windows-like app switcher
bool mods_held = false; // nood to remember how we entered the appmenu state
uint32_t appmenu_timer = 0; // time to leave appmenu active before shutting it down automatically.
bool appmenu_on = false; // appmenu triggered (after holding key)
bool mods_held = false; // need to remember how we entered the appmenu state

#ifdef JP_MODE_ENABLE
bool IS_ENGLISH_MODE = true;
Expand Down
66 changes: 52 additions & 14 deletions moutis.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
#pragma once

//
// which HD alpha variation are we using?
//
// defines all variation dependent constants/files/keycodes, etc.
// they will be used in the respective keymap for each keyboard

#include "handsdown/vb-config.h" // definitions for the Alpha layer and mnemonic combos
#include "moutis_layers.h" // definitions for all the other layers


#ifndef USERSPACE
#define USERSPACE
#endif
Expand Down Expand Up @@ -51,6 +41,49 @@ extern rgblight_config_t rgblight_config;
#define RGBLIGHT_VAL_STEP 4
#endif

//
// which HD alpha variation are we using?
//
// defines all variation dependent constants/files/keycodes, etc.
// they will be used in the respective keymap for each keyboard

#include "personalizedmacros.h"


#ifdef THUMB_SHIFT
#include "handsdown/vb-config.ts.h" // definitions for the Alpha layer and mnemonic combos
#include "moutis_layers.ts.h" // definitions for all the other layers
#else
#include "handsdown/vb-config.h" // definitions for the Alpha layer and mnemonic combos
#include "moutis_layers.h" // definitions for all the other layers
#endif



#define LINGER_TIME TAPPING_TERM * 1.2 // how long to hold before a time-depentant behavior begins
// how long to leave a state active before resetting like APPMENU or CAPSWORD
#define STATE_RESET_TIME LINGER_TIME * 3

//#define THUMB_SHIFT // use the thumb shift variant instead of index shift


#ifdef COMBO_HOLD
#undef ADAPTIVE_TERM
#define ADAPTIVE_TERM COMBO_HOLD * 1.35 // use COMBO_HOLD time as a standard threshold (same recation time)
#else
#define ADAPTIVE_TERM (TAPPING_TERM/4) // rolling threshold
#endif

#define ADAPT_VOWEL_H // eliminate vowel SFBs (AU/UA;EO/OE) using vH instead of v'
#define ADAPTIVE_ENABLE
#define ADAPTIVE_TRAILER KC_3
//#define FR_ADAPTIVES // eliminate 'h SFB for French

//#define THUMB_REPEATER
#ifdef THUMB_REPEATER
#define HD_REPEATER_A HD_BSPC
#define HD_REPEATER_B KC_ENT
#endif


#ifdef COMBO_ENABLE
Expand Down Expand Up @@ -94,22 +127,27 @@ enum my_layers {// must be difined before semantickeys.h
L_FUN, // 3 - function & number rows
L_NUM, // 4 - numpad (right); navpad (left)
L_NAV, // 5 - nav pad (right); meta keys (left)
L_CFG // 6 - Media/Consumer controls; Keyboard settings
L_CFG, // 6 - Media/Consumer controls; Keyboard settings
L_count
};

enum OS_Platform { // Used for platform support via SemKeys
OS_Mac, // Mac with ANSI_US_EXTENDED layout
// OS_iOS, // iOS?
OS_Win, // Win with default English/ANSI layout?
// OS_Lux, // Linux (Gnome?/KDE?)
OS_Lux, // Linux (Gnome?/KDE?)
// OS_And, // Android (flavors?)
OS_count
};

#include "moutis_semantickeys.h"

#define register_linger_key(kc) {((kc > (uint16_t)SK_KILL) && (kc < (uint16_t)SemKeys_COUNT)) ? register_SemKey(kc) : register_code16(kc);linger_key = kc;linger_timer = state_reset_timer = timer_read();}
#define tap_HDkey(kc) {is_SemKey(kc) ? tap_SemKey(kc) : tap_code16(kc);}
#define register_HDkey(kc) {is_SemKey(kc) ? register_SemKey(kc) : register_code16(kc);}
#define unregister_HDkey(kc) {is_SemKey(kc) ? unregister_SemKey(kc) : unregister_code16(kc);}

#define register_linger_key(kc) {register_HDkey(kc);linger_key = kc;linger_timer = timer_read();}
#define unregister_linger_key() {unregister_HDkey(linger_key) ;linger_key = 0;}

#define unregister_linger_key() {((linger_key > (uint16_t)SK_KILL) && (linger_key < (uint16_t)SemKeys_COUNT)) ? unregister_SemKey(linger_key) : unregister_code16(linger_key);linger_key = 0;}

void matrix_scan_user_process_combo(void);
Loading

0 comments on commit 41720be

Please sign in to comment.