mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-11-03 10:20:07 -05:00
num layer and NumWord refactor
This commit is contained in:
parent
d31eef7e68
commit
0568104b4b
8 changed files with 181 additions and 392 deletions
|
|
@ -1,7 +1,6 @@
|
|||
#include "capslist.h"
|
||||
|
||||
static bool caps_list_active = false;
|
||||
//static bool last_word = false;
|
||||
static unsigned short int capslist_countdown = 0;
|
||||
static unsigned short int countdown_end = 5;
|
||||
|
||||
|
|
@ -11,7 +10,6 @@ void enable_caps_list(void) {
|
|||
if (is_caps_lock_on()) { tap_code(KC_CAPS); }
|
||||
caps_word_on();
|
||||
caps_list_active = true;
|
||||
//last_word = false;
|
||||
capslist_countdown = 0;
|
||||
countdown_end = 5;
|
||||
}
|
||||
|
|
@ -34,7 +32,6 @@ bool process_caps_list(uint16_t keycode, keyrecord_t *record) {
|
|||
if (keycode == CAPSLIST) {
|
||||
if (record->event.pressed) {
|
||||
toggle_caps_list();
|
||||
//enable_caps_list();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -55,12 +52,11 @@ bool process_caps_list(uint16_t keycode, keyrecord_t *record) {
|
|||
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
|
||||
// Earlier return if this has not been considered tapped yet
|
||||
if (record->tap.count == 0) { return true; }
|
||||
keycode = keycode & 0xFF; // Get tapping keycode.
|
||||
keycode = tap_hold_extractor(keycode); // Get tapping keycode.
|
||||
break;
|
||||
}
|
||||
|
||||
if (should_continue_caps_list(keycode)) {
|
||||
//if (is_caps_lock_on()) { return true; }
|
||||
if (caps_word_reactivation()) {
|
||||
caps_word_on(); // Reactivate Caps Word for a new word
|
||||
capslist_countdown = 0;
|
||||
|
|
@ -71,7 +67,7 @@ bool process_caps_list(uint16_t keycode, keyrecord_t *record) {
|
|||
return true;
|
||||
}
|
||||
|
||||
//bool caps_list_press_user(uint16_t keycode) {
|
||||
|
||||
bool should_continue_caps_list(uint16_t keycode) {
|
||||
if (keycode == KC_BSPC) {
|
||||
capslist_countdown--;
|
||||
|
|
@ -97,6 +93,7 @@ bool should_continue_caps_list(uint16_t keycode) {
|
|||
return false; // Deactivate Caps List.
|
||||
}
|
||||
|
||||
|
||||
bool caps_word_reactivation(void) {
|
||||
|
||||
// Words that continue Caps List.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,122 @@
|
|||
/* Copyright 2025 @Kawamashi
|
||||
*
|
||||
* 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 "numword.h"
|
||||
|
||||
//static uint16_t num_word_timer = 0;
|
||||
//static bool is_num_word_on = false;
|
||||
bool is_num_word_on = false;
|
||||
static bool exit_num_word = false;
|
||||
|
||||
bool is_num_word_enabled(void) {
|
||||
return is_num_word_on;
|
||||
}
|
||||
|
||||
void enable_num_word(void) {
|
||||
//if (is_num_word_on) return;
|
||||
is_num_word_on = true;
|
||||
layer_on(_NUMBERS);
|
||||
}
|
||||
|
||||
void disable_num_word(void) {
|
||||
//if (!is_num_word_on) return;
|
||||
is_num_word_on = false;
|
||||
layer_off(_NUMBERS);
|
||||
exit_num_word = false;
|
||||
}
|
||||
|
||||
void toggle_num_word(void) {
|
||||
if (is_num_word_on) {
|
||||
disable_num_word();
|
||||
} else {
|
||||
enable_num_word();
|
||||
}
|
||||
}
|
||||
|
||||
bool should_exit_num_word(uint16_t keycode, const keyrecord_t *record) {
|
||||
|
||||
switch (keycode) {
|
||||
// Keycodes which should not disable num word mode.
|
||||
|
||||
// Numpad keycodes
|
||||
case KC_1 ... KC_0:
|
||||
case KC_PDOT:
|
||||
//case PG_X:
|
||||
//case PG_EACU:
|
||||
case PG_MOIN:
|
||||
case PG_ASTX:
|
||||
case PG_PLUS:
|
||||
case PG_SLSH:
|
||||
case PG_EXP:
|
||||
case PG_IND:
|
||||
case PG_H:
|
||||
case PG_2PTS:
|
||||
case LT_EURO:
|
||||
case NNB_SPC:
|
||||
|
||||
// Misc
|
||||
case KC_BSPC:
|
||||
case PG_ODK: // Not to exit Numword when chording it with ODK
|
||||
case NUMWORD: // For the combo NUMWORD to work
|
||||
|
||||
/*
|
||||
case PG_EGAL:
|
||||
case PG_BSLS:*/
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool process_numword(uint16_t keycode, const keyrecord_t *record) {
|
||||
// Handle the custom keycodes that go with this feature
|
||||
if (keycode == NUMWORD) {
|
||||
if (record->event.pressed) { toggle_num_word(); }
|
||||
return false;
|
||||
}
|
||||
|
||||
// Other than the custom keycodes, nothing else in this feature will activate
|
||||
// if the behavior is not on, so allow QMK to handle the event as usual.
|
||||
if (!is_num_word_on) { return true; }
|
||||
// Nothing else acts on key release, either
|
||||
if (!record->event.pressed) { return true; }
|
||||
|
||||
// Get the base keycode of a mod or layer tap key
|
||||
switch (keycode) {
|
||||
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
|
||||
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
|
||||
// Earlier return if this has not been considered tapped yet
|
||||
if (record->tap.count == 0) { return true; }
|
||||
keycode = keycode & 0xFF;
|
||||
break;
|
||||
/* case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: // `LT(layer, key)` keys.
|
||||
// Release event on a held layer-tap key when numword is on.
|
||||
if (record->tap.count == 0 && !record->event.pressed) {
|
||||
return false; // Skip default handling so that layer stays on.
|
||||
} else {
|
||||
keycode = keycode & 0xFF; // Get tapping keycode.
|
||||
}
|
||||
break; */
|
||||
}
|
||||
|
||||
exit_num_word = should_exit_num_word(keycode, record);
|
||||
return true;
|
||||
}
|
||||
|
||||
void numword_exit_check(void) {
|
||||
if (exit_num_word) { disable_num_word(); }
|
||||
}
|
||||
|
|
@ -64,7 +64,8 @@ bool should_exit_num_word(uint16_t keycode, const keyrecord_t *record) {
|
|||
case PG_IND:
|
||||
case PG_H:
|
||||
case PG_2PTS:
|
||||
case LT_EURO:
|
||||
case PG_EURO:
|
||||
//case LT_NBSPC:
|
||||
case NNB_SPC:
|
||||
|
||||
// Misc
|
||||
|
|
@ -85,36 +86,38 @@ bool should_exit_num_word(uint16_t keycode, const keyrecord_t *record) {
|
|||
bool process_numword(uint16_t keycode, const keyrecord_t *record) {
|
||||
// Handle the custom keycodes that go with this feature
|
||||
if (keycode == NUMWORD) {
|
||||
if (record->event.pressed) {
|
||||
toggle_num_word();
|
||||
return false;
|
||||
}
|
||||
if (record->event.pressed) { toggle_num_word(); }
|
||||
return false;
|
||||
}
|
||||
|
||||
// Other than the custom keycodes, nothing else in this feature will activate
|
||||
// if the behavior is not on, so allow QMK to handle the event as usual.
|
||||
if (!is_num_word_on) { return true; }
|
||||
// Nothing else acts on key release, either
|
||||
if (record->event.pressed) {
|
||||
|
||||
// Get the base keycode of a mod or layer tap key
|
||||
switch (keycode) {
|
||||
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
|
||||
// Earlier return if this has not been considered tapped yet
|
||||
if (record->tap.count == 0) { return true; }
|
||||
keycode = keycode & 0xFF;
|
||||
break;
|
||||
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: // `LT(layer, key)` keys.
|
||||
// Release event on a held layer-tap key when numword is on.
|
||||
if (record->tap.count == 0 && !record->event.pressed && is_num_word_on) {
|
||||
return false; // Skip default handling so that layer stays on.
|
||||
} else {
|
||||
keycode = keycode & 0xFF; // Get tapping keycode.
|
||||
}
|
||||
break;
|
||||
/* default:
|
||||
break; */
|
||||
// Get the base keycode of a mod or layer tap key
|
||||
switch (keycode) {
|
||||
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
|
||||
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
|
||||
// Earlier return if this has not been considered tapped yet
|
||||
if (record->tap.count == 0) { return true; }
|
||||
keycode = tap_hold_extractor(keycode);
|
||||
break;
|
||||
/* case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: // `LT(layer, key)` keys.
|
||||
// Release event on a held layer-tap key when numword is on.
|
||||
if (record->tap.count == 0 && !record->event.pressed) {
|
||||
return false; // Skip default handling so that layer stays on.
|
||||
} else {
|
||||
keycode = keycode & 0xFF; // Get tapping keycode.
|
||||
}
|
||||
break; */
|
||||
}
|
||||
|
||||
exit_num_word = should_exit_num_word(keycode, record);
|
||||
} else {
|
||||
if (exit_num_word) { disable_num_word(); }
|
||||
}
|
||||
|
||||
exit_num_word = should_exit_num_word(keycode, record);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ bool is_followed_by_apos(uint16_t keycode, uint16_t prev_keycode) {
|
|||
// even if the tap/hold key is a custom one, with non-basic tap keycode.
|
||||
uint16_t tap_hold_extractor(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case LT_NBSPC:
|
||||
return NNB_SPC;
|
||||
default:
|
||||
return keycode &= 0xff;
|
||||
}
|
||||
|
|
@ -80,21 +82,21 @@ bool process_custom_tap_hold(uint16_t keycode, keyrecord_t *record) {
|
|||
switch (keycode) {
|
||||
|
||||
case RCTL_T(FEN_B):
|
||||
return process_tap_hold(LWIN(KC_DOWN), record);
|
||||
return process_tap_hold(LWIN(KC_DOWN), record);
|
||||
|
||||
case SFT_T(COPY):
|
||||
return process_tap_hold(C(PG_C), record);
|
||||
return process_tap_hold(C(PG_C), record);
|
||||
|
||||
/* case LT_NUMWORD:
|
||||
return process_numword(NUMWORD, record); */
|
||||
case LT_NBSPC:
|
||||
return process_tap_hold(NNB_SPC, record);
|
||||
|
||||
case LT_REPT:
|
||||
repeat_key_invoke(&record->event);
|
||||
return false;
|
||||
repeat_key_invoke(&record->event);
|
||||
return false;
|
||||
|
||||
case LT_MGC:
|
||||
alt_repeat_key_invoke(&record->event);
|
||||
return false;
|
||||
alt_repeat_key_invoke(&record->event);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true; // Process all other keycodes normally
|
||||
|
|
|
|||
|
|
@ -1,326 +0,0 @@
|
|||
/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
|
||||
*
|
||||
* 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 QMK_KEYBOARD_H
|
||||
#include "keymap.h"
|
||||
#include "features/layer_lock.h"
|
||||
|
||||
|
||||
bool is_caps_lock_on(void) { return host_keyboard_led_state().caps_lock; }
|
||||
|
||||
bool is_letter(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case KC_A ... KC_L:
|
||||
case PG_M:
|
||||
case KC_N ... KC_Z:
|
||||
case PG_AGRV:
|
||||
case PG_U:
|
||||
case PG_EGRV:
|
||||
case PG_CCED:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Achordion
|
||||
|
||||
uint16_t achordion_timeout(uint16_t tap_hold_keycode) { return 500; }
|
||||
|
||||
bool achordion_eager_mod(uint8_t mod) {
|
||||
switch (mod) {
|
||||
case MOD_LSFT:
|
||||
case MOD_RSFT:
|
||||
case MOD_LCTL:
|
||||
case MOD_RCTL:
|
||||
return true; // Eagerly apply Shift and Ctrl mods.
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Caps Word
|
||||
|
||||
bool caps_word_press_user(uint16_t keycode) {
|
||||
// Keycodes that continue Caps Word, with shift applied.
|
||||
if (is_letter(keycode)) {
|
||||
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
|
||||
return true;
|
||||
} else {
|
||||
switch (keycode) {
|
||||
// Keycodes that continue Caps Word, without shifting.
|
||||
case PG_MOIN:
|
||||
case KC_KP_1 ... KC_KP_0:
|
||||
case KC_LEFT:
|
||||
case KC_RIGHT:
|
||||
case KC_BSPC:
|
||||
case KC_DEL:
|
||||
case PG_APOS:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false; // Deactivate Caps Word.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Combo
|
||||
combo_t key_combos[] = {};
|
||||
uint16_t COMBO_LEN = 0;
|
||||
|
||||
|
||||
// Custom altGr keys
|
||||
|
||||
const custom_altgr_key_t custom_altgr_keys[] = {
|
||||
{PG_AGRV, PG_AE},
|
||||
{PG_B, PG_TS},
|
||||
{PG_A, PG_CDAQ},
|
||||
{PG_I, PG_RDAQ},
|
||||
{PG_N, PG_ESPR},
|
||||
{PG_T, PG_AROB},
|
||||
{ALGR_T(PG_A), PG_CDAQ},
|
||||
{LCTL_T(PG_I), PG_RDAQ},
|
||||
{RCTL_T(PG_N), PG_ESPR},
|
||||
{ALGR_T(PG_T), PG_AROB},
|
||||
{PG_POIN, PG_NM},
|
||||
{KC_KP_8, PG_INFN},
|
||||
{PG_F, PG_HASH},
|
||||
{PG_G, PG_HEG},
|
||||
{PG_CCED, PG_DEDL},
|
||||
{PG_Q, PG_TECT},
|
||||
{PG_X, PG_PVIR},
|
||||
{PG_D, PG_DOPY},
|
||||
};
|
||||
|
||||
uint8_t NUM_CUSTOM_ALTGR_KEYS =
|
||||
sizeof(custom_altgr_keys) / sizeof(custom_altgr_key_t);
|
||||
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
//achordion_task();
|
||||
recent_keys_task();
|
||||
swapper_task();
|
||||
}
|
||||
|
||||
// Tap-hold configuration
|
||||
|
||||
// Handle keyrecord before quantum processing
|
||||
static uint16_t next_keycode;
|
||||
static keyrecord_t next_record;
|
||||
|
||||
bool pre_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint16_t prev_keycode;
|
||||
static bool tap_condition;
|
||||
|
||||
if (record->event.pressed) {
|
||||
// Store the previous keycode for instant tap decision
|
||||
prev_keycode = next_keycode;
|
||||
// Cache the next input for mod-tap decisions
|
||||
next_keycode = keycode;
|
||||
next_record = *record;
|
||||
}
|
||||
|
||||
// Match mod-tap keys. Tweak this to limit conditions that matches your keyboard and habits.
|
||||
tap_condition = ((IS_LAYER_ON(_BASE)) && IS_QK_MOD_TAP(keycode) && !IS_QK_LAYER_TAP(prev_keycode) && !is_mod_tap_control(prev_keycode));
|
||||
return process_instant_tap(keycode, record, prev_keycode, tap_condition);
|
||||
}
|
||||
|
||||
bool forbidden_chord(uint16_t tap_hold_keycode, keyrecord_t* tap_hold_record, uint16_t other_keycode, keyrecord_t* other_record) {
|
||||
switch (tap_hold_keycode) {
|
||||
case LT_VIRG:
|
||||
case OSM(MOD_LSFT):
|
||||
case OSM(MOD_RSFT):
|
||||
return false;
|
||||
|
||||
default:
|
||||
// Otherwise, follow the opposite hands rule.
|
||||
return same_side_combination(tap_hold_record, other_record);
|
||||
}
|
||||
}
|
||||
|
||||
bool first_of_chorded_mods(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case LT_TAB: // Pour pouvoir faire OSM shift + LT_TAB (win + shift + flèche).
|
||||
case PG_CCED: // Pour pouvoir faire Alt + F4, Alt + F11.
|
||||
case LCTL_T(PG_I):
|
||||
case RCTL_T(PG_N):
|
||||
case OSM(MOD_LSFT): // Pour pouvoir faire OSM shift + LT_TAB (win + shift + flèche).
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
if (record->event.key.col != next_record.event.key.col) {
|
||||
// Sinon on a des effets de bord quand on veut taper des chiffres.
|
||||
if (IS_LAYER_ON(_BASE)) {
|
||||
// When a mod-tap key overlaps with another non-Ctrl key on the same hand, send its base keycode
|
||||
if (forbidden_chord(keycode, record, next_keycode, &next_record) && !first_of_chorded_mods(keycode)) {
|
||||
tap_converter(keycode, record);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
if (forbidden_chord(keycode, record, next_keycode, &next_record)) {
|
||||
tap_converter(keycode, record);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
// Achordion
|
||||
//if (!process_achordion(keycode, record)) { return false; }
|
||||
|
||||
// Custom alt gr
|
||||
if (!process_custom_altgr_keys(keycode, record)) { return false; }
|
||||
|
||||
// Recent keys
|
||||
if (!process_clever_keys(keycode, record)) { return false; }
|
||||
|
||||
// Numword
|
||||
if (!process_numword(keycode, record)) { return false; }
|
||||
|
||||
// Layer lock
|
||||
if (!process_layer_lock(keycode, record, LAYER_LCK)) { return false; }
|
||||
|
||||
// Select word
|
||||
if (!process_select_word(keycode, record, SELWORD)) { return false; }
|
||||
|
||||
// Macros
|
||||
if (!process_macros(keycode, record)) { return false; }
|
||||
|
||||
return true; // Process all other keycodes normally
|
||||
}
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* Base Layer: ALPHAS
|
||||
*»\
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Helpsc | À | B | É | . | - | | ^ | V | L | M | X | W |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|0
|
||||
* | Enter | O | U |A/AltG|I/Ctrl| J | | G | T | S | N | R | F |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | Tab | Q | Y | È |P/Win | "" | Bksp | End | | Home |Delete| K | D | Z | H | C | Ç/Alt |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* |NavNum| Space|Shift | E | , | | ' | Space|Shift| Win | Mute |
|
||||
* | | | |NavNum|Symb. | |Funct.|NavNum| | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, PG_AGRV, PG_B, PG_U, PG_X, PG_MOIN, PG_ACIR, PG_G, PG_C, PG_M, PG_POIN, PG_W,
|
||||
KC_ENT, ALT_T(PG_O), SFT_T(PG_L), ALGR_T(PG_A), LCTL_T(PG_I), PG_J, PG_VIRG, RCTL_T(PG_N), ALGR_T(PG_T), RSFT_T(PG_S), ALT_T(PG_R), PG_V,
|
||||
LT_TAB, PG_Q, PG_Y, PG_EGRV, LWIN_T(PG_P), PG_HQUO, KC_BSPC, KC_END, KC_HOME, KC_DEL, PG_K, RWIN_T(PG_H), PG_Z, PG_F, PG_D, PG_CCED,
|
||||
TG(_SYMBOLS), KC_SPC, OSM(MOD_LSFT), LT(_SYMBOLS,PG_E), LT_VIRG, LT_APOS, LT(_SYMBOLS,KC_SPC), OSM(MOD_RSFT), KC_RGUI, KC_MUTE
|
||||
),
|
||||
|
||||
|
||||
/*
|
||||
* Layer 1 : Numpad + symbols
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Helpsc | ! | ? | & | ; | | | | ⁻ | 7 | 8 | 9 | * |NumLock |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | { | } | ( | ) | LOCK | | = | 4 | 5 | 6 | / | \ |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | [ | ] | < | > |Indice| | | | | |Expos.| 1 | 2 | 3 | + | % |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | 0 | . | | |
|
||||
* | | | | | | | , | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_SYMBOLS] = LAYOUT(
|
||||
KC_ESC, PG_EXCL, PG_QUES, PG_ESPR, PG_PVIR, PG_PIPE, PG_MOIN, KC_P7, KC_P8, KC_P9, PG_ASTX, KC_NUM,
|
||||
_______, PG_CACL, SFT_T(PG_RACL), ALGR_T(PG_LPRN), PG_RPRN, LAYER_LCK, PG_EGAL, RCTL_T(KC_P4), ALGR_T(KC_P5), KC_P6, PG_TLSH, PG_BSLS,
|
||||
_______, PG_CBKT, PG_RBKT, PG_INF, PG_SUP, PG_CARN, _______, _______, _______, _______, PG_ACIR, KC_P1, KC_P2, KC_P3, PG_PLUS, PG_PERC,
|
||||
_______, _______, _______, KC_SPC, PG_EACU, NUMWORD, KC_P0, KC_PDOT, _______ , _______
|
||||
),
|
||||
/*
|
||||
* Layer 2 : Symbols + function keys
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Helpsc | F1 | F2 | F3 | F4 | F5 | | | ; | ! | # | ° | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | |Ctrl A|Ctrl X|Ctrl V|Ctrl C| LOCK | | Mute | ( | ) | @ | & | Mute |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | F6 | F7 | F8 | F9 | F10 | | | | | | |Ctrl Z|Ctrl Y| F11 | F12 | |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | !!! | , | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_SHORTNAV] = LAYOUT(
|
||||
KC_ESC, A(KC_F4), ALT_TAB, LWIN(PG_G), _______, _______, _______, C(KC_LEFT), KC_UP, C(KC_RIGHT), _______, _______,
|
||||
_______, C(PG_A), C(PG_POIN), C(PG_G), C(PG_D), LAYER_LCK, KC_MUTE, RCTL_T(KC_LEFT), KC_DOWN, KC_RIGHT, KC_F2 , KC_MUTE,
|
||||
_______, SELWORD, LWIN(KC_TAB), REV_TAB, ALT_TAB, _______, _______, S(KC_END), S(KC_HOME), _______, _______, C(PG_Z), C(PG_Y), _______, _______, _______,
|
||||
_______, _______, _______, QUES_PT, QUES_PT, EXCL_PT, EXCL_PT, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* Layer 3 : Function keys + windows management
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | | F12 | F7 | F8 | F9 | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | F11 | F4 | F5 | F6 | LOCK | | | | | | | |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | F10 | F1 | F2 | F3 | | | | | | | | | | | | |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_FUNCAPPS] = LAYOUT(
|
||||
KC_ESC, KC_F12, KC_F9, KC_F8, KC_F7, C(KC_PAUS), _______, SWIN(KC_LEFT), LWIN(KC_UP), SWIN(KC_RIGHT), _______, QK_BOOT,
|
||||
_______, ALT_T(KC_F11), SFT_T(KC_F6), KC_F5, KC_F4, LAYER_LCK, _______, RCTL_T(FEN_G), LWIN(KC_DOWN), LWIN(KC_RIGHT), _______, _______,
|
||||
_______, KC_F10, KC_F3, KC_F2, KC_F1, _______, _______, _______, _______, _______, _______, LWIN(PG_H), LWIN(KC_HOME), _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
// /*
|
||||
// * Layer template
|
||||
// *
|
||||
// * ,-------------------------------------------. ,-------------------------------------------.
|
||||
// * | | | | | | | | | | | | | |
|
||||
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
// * | | | | | | | | | | | | | |
|
||||
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
// * | | | | | | | | | | | | | | | | | |
|
||||
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
// * | | | | | | | | | | | |
|
||||
// * | | | | | | | | | | | |
|
||||
// * `----------------------------------' `----------------------------------'
|
||||
// */
|
||||
// [_LAYERINDEX] = LAYOUT(
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
// ),
|
||||
};
|
||||
|
|
@ -106,17 +106,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
// Custom behaviour of the typo dead-key
|
||||
if (!process_odk_layer(keycode, record)) { return false; }
|
||||
|
||||
// Clever keys
|
||||
// Clever keys
|
||||
if (!process_clever_keys(keycode, record)) { return false; }
|
||||
|
||||
// Process all other keycodes normally
|
||||
// Process all other keycodes normally
|
||||
return true;
|
||||
}
|
||||
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t* record) {
|
||||
|
||||
os4a_layer_exit_check();
|
||||
numword_exit_check();
|
||||
//numword_exit_check();
|
||||
end_CK(record);
|
||||
}
|
||||
|
||||
|
|
@ -203,10 +203,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_SYMBOLS] = LAYOUT(
|
||||
_______, PG_ACIR, PG_LCBR, PG_RCBR, PG_DLR, PG_PERC, PG_HASH, PG_DQUO, PG_EGAL, ALGR(PG_J), PG_GRV, _______,
|
||||
_______, ALGR(PG_O), PG_LPRN, PG_RPRN, PG_PVIR, PG_2PTS, PG_BSLS, MT_SLSH, PG_MOIN, PG_PLUS, PG_ASTX, _______,
|
||||
_______, PG_INF, PG_LSBR, PG_RSBR, PG_SUP, _______, _______, _______, _______, _______, _______, PG_APOD, PG_ESPR, PG_PIPE, PG_TILD, _______,
|
||||
_______, _______, _______, PG_UNDS, KC_SPC, _______, _______, _______, _______, _______
|
||||
_______, PG_ACIR, PG_LCBR, PG_RCBR, PG_DLR, PG_PERC, PG_HASH, PG_DQUO, PG_EGAL, ALGR(PG_J), PG_GRV, _______,
|
||||
_______, ALGR(PG_O), PG_LPRN, PG_RPRN, PG_PVIR, PG_2PTS, PG_BSLS, MT_SLSH, PG_MOIN, PG_PLUS, PG_ASTX, _______,
|
||||
_______, PG_INF, PG_LSBR, PG_RSBR, PG_SUP, _______, _______, _______, _______, _______, _______, PG_APOD, PG_ESPR, PG_PIPE, PG_TILD, _______,
|
||||
_______, _______, _______, PG_UNDS, KC_SPC, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
|
||||
|
|
@ -225,10 +225,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_NUMBERS] = LAYOUT(
|
||||
_______, PG_DLR, PG_MOIN, PG_PLUS, _______, PG_PERC, PG_EXP, _______, PG_EGAL, PG_ASTX, _______, _______,
|
||||
_______, KC_4, KC_3, KC_2, MT_1, PG_2PTS, PG_IND, MT_SLSH, KC_6, KC_7, KC_8, _______,
|
||||
_______, _______, _______, PG_H, KC_5, _______, _______, _______, _______, _______, _______, KC_9, PG_DEG, _______, PG_ODK, _______,
|
||||
_______, _______, KC_PDOT, KC_0 , LT_EURO, NNB_SPC, KC_SPC, KC_PDOT, _______, _______
|
||||
_______, PG_DLR, PG_MOIN, PG_PLUS, PG_EURO, PG_PERC, PG_EXP, _______, PG_EGAL, PG_ASTX, _______, _______,
|
||||
_______, KC_4, KC_3, KC_2, MT_1, PG_2PTS, PG_IND, MT_SLSH, KC_6, KC_7, KC_8, _______,
|
||||
_______, _______, _______, PG_H, KC_5, _______, _______, _______, _______, _______, _______, KC_9, PG_DEG, _______, PG_ODK, _______,
|
||||
_______, _______, KC_PDOT, KC_0 , LT_NBSPC, _______, KC_SPC, _______, _______, _______
|
||||
),
|
||||
|
||||
|
||||
|
|
@ -269,7 +269,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_SHORTNAV] = LAYOUT(
|
||||
_______, KC_BSPC, LWIN(KC_TAB), LWIN(PG_V), RCS(PG_V), KC_VOLU, KC_PGUP, C(KC_LEFT), KC_UP, C(KC_RGHT), _______, _______,
|
||||
_______, _______, LWIN(KC_TAB), LWIN(PG_V), RCS(PG_V), KC_VOLU, KC_PGUP, C(KC_LEFT), KC_UP, C(KC_RGHT), _______, _______,
|
||||
_______, C(PG_A), C(PG_X), C(PG_V), SFT_T(COPY), KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F2 , _______,
|
||||
_______, KC_SPC, KC_SPC, KC_MUTE, C(PG_Z), C(PG_Y), _______, _______, _______, _______, _______, C(KC_PGUP), C(KC_PGDN), C(PG_W), _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
|
|
|
|||
|
|
@ -53,20 +53,12 @@ enum custom_keycodes {
|
|||
RAZ,
|
||||
CAPSWORD,
|
||||
OU_GRV,
|
||||
//PG_OE,
|
||||
//E_CIRC,
|
||||
/* I_CIRC,
|
||||
A_CIRC,
|
||||
O_CIRC,
|
||||
U_CIRC,
|
||||
I_TREM,*/
|
||||
MAGIC,
|
||||
OS_SHFT,
|
||||
OS_CTRL,
|
||||
OS_RALT,
|
||||
OS_LALT,
|
||||
OS_WIN,
|
||||
//OS_ODK,
|
||||
CNL_ODK,
|
||||
TG_APOS,
|
||||
PG_DEG
|
||||
|
|
@ -81,8 +73,7 @@ enum custom_keycodes {
|
|||
#define TT_FA TT(_FUNCAPPS)
|
||||
#define MT_SLSH SFT_T(PG_SLSH)
|
||||
#define MT_1 SFT_T(KC_1)
|
||||
//#define LT_NUMWORD LT(_SHORTNAV, NUMWORD)
|
||||
#define LT_EURO LT(_SHORTNAV, PG_EURO)
|
||||
#define LT_NBSPC LT(_SHORTNAV, NNB_SPC)
|
||||
#define E_CIRC S(FG_0)
|
||||
#define OS_ODK OSL(_ODK)
|
||||
#define OS_RSA OSM(MOD_RALT | MOD_LSFT)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ , │ É │ U │ P │ - │ V │ M │ C │ J │ X │ ' │ - │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ O │ A │ I │ N │ . │ G │ T │ S │ R │ L │ ’ │ € │ │
|
||||
* │ │ O │ A │ I │ N │ . │ G │ T │ S │ R │ L │ _ │ ’ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ E │ Q │ Z │ Y │ H │ B │ K │ D │ F │ W │ **│ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
#define PG_S KC_K // S
|
||||
#define PG_R KC_L // R
|
||||
#define PG_L KC_SCLN // L
|
||||
#define PG_EURO KC_QUOT // €
|
||||
#define PG_UNDS KC_QUOT // _
|
||||
#define PG_APOS KC_NUHS // ’
|
||||
|
||||
// Row 4
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ | │ < │ > │ $ │ % │ ^ │ & │ _ │ # │ @ │ * │ \ │ │
|
||||
* │ ~ │ € │ < │ > │ $ │ % │ ^ │ & │ | │ # │ @ │ * │ \ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ ? │ │ │ │ ! │ │ │ │ │ │ " │ + │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
|
|
@ -109,14 +109,14 @@
|
|||
|
||||
// Row 1
|
||||
#define PG_TILD S(KC_GRV) // ~
|
||||
#define PG_PIPE S(KC_1) // |
|
||||
#define PG_EURO S(KC_1) // €
|
||||
#define PG_INF S(KC_2) // <
|
||||
#define PG_SUP S(KC_3) // >
|
||||
#define PG_DLR S(KC_4) // $
|
||||
#define PG_PERC S(KC_5) // %
|
||||
#define PG_ACIR S(KC_6) // ^
|
||||
#define PG_ESPR S(KC_7) // &
|
||||
#define PG_UNDS S(KC_8) // _
|
||||
#define PG_PIPE S(KC_8) // |
|
||||
#define PG_HASH S(KC_9) // #
|
||||
#define PG_AROB S(KC_0) // @
|
||||
#define PG_ASTX S(PG_SLSH) // *
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
// Row 3
|
||||
#define PG_2PTS S(PG_POIN) // :
|
||||
#define PG_RSBR S(PG_APOS) // ]
|
||||
#define PG_LSBR S(PG_EURO) // [
|
||||
#define PG_LSBR S(PG_UNDS) // [
|
||||
|
||||
// Row 4
|
||||
#define PG_PVIR S(PG_ODK)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue