mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-11-08 04:29:58 -05:00
ça marche
This commit is contained in:
parent
4fe2f51a99
commit
152251c6c0
4 changed files with 55 additions and 14 deletions
|
|
@ -23,7 +23,7 @@ bool clever_key_finder(uint16_t next_keycode, keyrecord_t* record) {
|
|||
|
||||
uint16_t prev_keycode = recent[RECENT_SIZE - 1];
|
||||
|
||||
if (isLetter(next_keycode) || isSendStringMacro(next_keycode)) {
|
||||
/* if (isLetter(next_keycode) || isSendStringMacro(next_keycode)) {
|
||||
switch (prev_keycode) {
|
||||
case FG_EXLM:
|
||||
case FG_QUES:
|
||||
|
|
@ -49,12 +49,6 @@ bool clever_key_finder(uint16_t next_keycode, keyrecord_t* record) {
|
|||
|
||||
switch (prev_keycode) {
|
||||
|
||||
/* case FG_C:
|
||||
if (next_keycode == FG_A) {
|
||||
invoke_key(FG_U,record);
|
||||
break;
|
||||
} */
|
||||
|
||||
case FG_Q:
|
||||
switch (next_keycode) {
|
||||
|
||||
|
|
@ -252,6 +246,14 @@ bool clever_key_finder(uint16_t next_keycode, keyrecord_t* record) {
|
|||
case AGRV_SPC:
|
||||
layer_off(_ODK);
|
||||
return finish_word((uint16_t[]) {FG_AGR, KC_SPC}, 2, record);
|
||||
} */
|
||||
switch (next_keycode) {
|
||||
case FG_O:
|
||||
if (prev_keycode == FG_U && recent[RECENT_SIZE - 2] != FG_Q) {
|
||||
// "uo" -> "un"
|
||||
return replace_next_key(FG_N, record);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return false; // Process next keycode normally
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ unsigned short int bkspc_countdown = RECENT_SIZE + 1;
|
|||
|
||||
// Copy of the record argument for the clever key.
|
||||
static keyrecord_t mod_record;
|
||||
static bool processingCK = false;
|
||||
|
||||
void clear_recent_keys(void) {
|
||||
memset(recent, 0, sizeof(recent)); // Set all zeros (KC_NO).
|
||||
|
|
@ -36,7 +37,7 @@ void recent_keys_task(void) {
|
|||
|
||||
// Handles one event. Returns false if the key was appended to `recent`.
|
||||
uint16_t get_next_keycode(uint16_t keycode, keyrecord_t* record) {
|
||||
if (!record->event.pressed) { return KC_NO; }
|
||||
//if (!record->event.pressed) { return KC_NO; }
|
||||
|
||||
uint8_t mods = get_mods() | get_oneshot_mods();
|
||||
|
||||
|
|
@ -150,11 +151,17 @@ void invoke_key(uint16_t keycode, keyrecord_t* record) {
|
|||
bkspc_countdown = 1;
|
||||
}
|
||||
|
||||
bool replace_next_key(uint16_t keycode, keyrecord_t* record) {
|
||||
invoke_key(keycode, record);
|
||||
bool replace_next_key(uint16_t new_keycode, keyrecord_t* record) {
|
||||
//store_keycode(new_keycode, record);
|
||||
record->keycode = new_keycode;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* bool replace_next_key(uint16_t keycode, keyrecord_t* record) {
|
||||
invoke_key(keycode, record);
|
||||
return true;
|
||||
} */
|
||||
|
||||
void process_word(uint16_t keycodes[], uint8_t num_keycodes, keyrecord_t* record) {
|
||||
for (int i = 0; i < num_keycodes; ++i) {
|
||||
invoke_key(keycodes[i], record);
|
||||
|
|
@ -173,14 +180,44 @@ bool finish_magic(uint16_t keycodes[], uint8_t num_keycodes, keyrecord_t* record
|
|||
return finish_word(keycodes, num_keycodes, record);
|
||||
}
|
||||
|
||||
|
||||
bool process_clever_keys(uint16_t keycode, keyrecord_t* record) {
|
||||
|
||||
uint16_t next_keycode = get_next_keycode(keycode, record);
|
||||
//if (record->event.pressed && !processingCK) {
|
||||
if (record->event.pressed) {
|
||||
uint16_t next_keycode = get_next_keycode(keycode, record);
|
||||
|
||||
if (next_keycode != KC_NO) {
|
||||
if (next_keycode != KC_NO) {
|
||||
if (clever_key_finder(next_keycode, record)) {
|
||||
processingCK = true;
|
||||
//return false;
|
||||
}
|
||||
store_keycode(next_keycode, record);
|
||||
}
|
||||
//return true; // If no clever key was found, process keycode normally.
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (clever_key_finder(next_keycode, record)) { return false; }
|
||||
store_keycode(next_keycode, record);
|
||||
|
||||
/* bool process_clever_keys(uint16_t keycode, keyrecord_t* record) {
|
||||
|
||||
if (record->event.pressed) {
|
||||
uint16_t next_keycode = get_next_keycode(keycode, record);
|
||||
|
||||
if (next_keycode != KC_NO) {
|
||||
|
||||
if (clever_key_finder(next_keycode, record)) { return false; }
|
||||
store_keycode(next_keycode, record);
|
||||
}
|
||||
}
|
||||
return true; // If no clever key was found, process keycode normally.
|
||||
} */
|
||||
|
||||
void end_CK(keyrecord_t* record) {
|
||||
if (processingCK) {
|
||||
processingCK = false;
|
||||
record->event.pressed = false;
|
||||
process_record(record);
|
||||
}
|
||||
}
|
||||
|
|
@ -43,6 +43,7 @@ bool finish_word(uint16_t keycodes[], uint8_t num_keycodes, keyrecord_t* record)
|
|||
bool finish_magic(uint16_t keycodes[], uint8_t num_keycodes, keyrecord_t* record);
|
||||
|
||||
bool process_clever_keys(uint16_t keycode, keyrecord_t* record);
|
||||
void end_CK(keyrecord_t* record);
|
||||
|
||||
//bool process_accent(uint16_t accent, uint16_t letter, keyrecord_t* record);
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ void post_process_record_user(uint16_t keycode, keyrecord_t* record) {
|
|||
os4a_layer_exit_check();
|
||||
numword_exit_check();
|
||||
odk_layer_exit_check(keycode);
|
||||
end_CK(record);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue