num layer and NumWord refactor

This commit is contained in:
Kawamashi 2025-09-01 16:06:10 +02:00
commit 0568104b4b
8 changed files with 181 additions and 392 deletions

View file

@ -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.

View file

@ -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(); }
}

View file

@ -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;
}

View file

@ -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

View file

@ -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(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};

View file

@ -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), _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______

View file

@ -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)

View file

@ -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)