Refactor keymap and configuration files; enable user language key and adjust mouse settings

This commit is contained in:
oco9oco 2025-05-08 13:46:38 +09:00
commit de0c578f56
8 changed files with 175 additions and 67 deletions

View file

@ -1,6 +1,10 @@
#define CHARYBDIS_CONFIG_SYNC
#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
#define AUTO_MOUSE_DEFAULT_LAYER 10
#define AUTO_MOUSE_TIME 400
// #define POINTING_DEVICE_AUTO_MOUSE_ENABLE
// #define AUTO_MOUSE_DEFAULT_LAYER 10
// #define AUTO_MOUSE_TIME 400
// #define AUTO_MOUSE_DELAY TAPPING_TERM
#define CHARYBDIS_DRAGSCROLL_REVERSE_Y
#define TAPPING_TOGGLE 1

View file

@ -42,22 +42,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, __________________NUMROW_L_________________, __________________NUMROW_R_________________, KC_MINS,
KC_TAB, __________________QWERTY_L1________________, __________________QWERTY_R1________________, KC_EQL,
SFT_CAPS,__________________QWERTY_SACS_L2___________, __________________QWERTY_R2________________, KC_QUOT,
KC_LGUI, __________________QWERTY_L3________________, __________________QWERTY_HOME_R3___________, KC_BSLS,
KC_LGUI, KC_Z, KC_X, LT(_ONEHAND,KC_C),KC_V, KC_B, __________________QWERTY_HOME_R3___________, KC_BSLS,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
THUMB_L1,THUMB_L2, KC_LNG1,/* */THUMB_R3,THUMB_R2,
THUMB_L3, KC_LNG2,/* */THUMB_R1
THUMB_L1,THUMB_L2, TT(_ONEHAND),/* */THUMB_R3,THUMB_R2,
THUMB_L3, USR_LNG,/* */THUMB_R1
// ╰───────────────────────────╯ ╰──────────────────╯
),
[_IPC] = LAYOUT_charybdis_wrapper(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
ALT_F4, C(KC_F1),KC_P, KC_X, C(G(KC_C)),TO(_ONEHAND), KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, XXXXXXX, _______,
KC_LNG2, C(G(KC_C)), XXXXXXX, CLASS_E, CLASS_A, HWP_MACRO, KC_GRV, _________NUM_789_________, XXXXXXX, _______,
ALT_F4, C(KC_F1),KC_P, KC_X, INV_DSP, TO(_ONEHAND), KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, XXXXXXX, _______,
ALT_TAB, INV_DSP, XXXXXXX, CLASS_E, CLASS_A, HWP_MACRO, KC_GRV, _________NUM_789_________, XXXXXXX, _______,
_______, IPC(A), IPC(S), IPC_MIN, IPC(F), KC_DOT, AT_IPC, _________NUM_456_________, KC_COLN, KC_DQUO,
G(C(KC_SPC)), IPC(Z), HWP_CITE,IPC(C), KC_EQL, KC_BSLS, XXXXXXX, _________NUM_123_________, _______, KC_PIPE,
IME_CHG, IPC(Z), HWP_CITE,IPC(C), KC_EQL, KC_BSLS, XXXXXXX, _________NUM_123_________, _______, KC_PIPE,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
_______, _______, _______,/* */HWP_MACRO, LT(_NAV, KC_0),
QK_BOOT, _______,/* */G(C(KC_SPC))
QK_BOOT, _______,/* */IME_CHG
// ╰───────────────────────────╯ ╰──────────────────╯
),
[_NAV] = LAYOUT_charybdis_wrapper(
@ -74,12 +74,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOUSE] = LAYOUT_charybdis_wrapper(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
_______, CTRL_F1, KC_F2, KC_F3, ALT_F4, KC_F5, KC_F8, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
KC_U, KC_BTN4, KC_WH_D, KC_MS_U, KC_WH_U, KC_F6, KC_F9, KC_WH_L, XXXXXXX, XXXXXXX, XXXXXXX, QK_MAKE,
KC_U, KC_BTN4, KC_WH_D, KC_MS_U, KC_WH_U, KC_F6, KC_F9, KC_WH_L, KC_WH_R, XXXXXXX, XXXXXXX, QK_MAKE,
KC_P, KC_LSFT, KC_MS_L, KC_MS_D, KC_MS_R, KC_F7, KC_F10, KC_ACL0, KC_BTN1, KC_BTN2, KC_BTN3, KC_ENT,
KC_X, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, BOLDFACE, KC_APP, KC_ACL0, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX,
KC_X, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, BOLDFACE, KC_APP, KC_ACL0, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
_______, KC_BSPC, KC_DEL,/* */_______, _______,
_______, _______,/* */QK_BOOT
_______, _______,/* */_______
// ╰───────────────────────────╯ ╰──────────────────╯
),
@ -97,66 +97,66 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ONEHAND] = LAYOUT_charybdis_wrapper(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
XXXXXXX, CTRL_F1, KC_F2, KC_F3, ALT_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_MAKE,
S_D_MOD, KC_LCTL, KC_BTN2, KC_LSFT, KC_BTN1, DPI_MOD, C(KC_TAB), KC_BTN3, KC_BTN1, KC_BTN2, DRGSCRL, XXXXXXX,
S_D_RMOD,KC_BTN3, KC_X, KC_C, KC_V, DPI_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SNIPING, XXXXXXX,
ALT_F4, CTRL_F1, KC_LEFT, XXXXXXX, KC_RGHT, KC_F5, S_D_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, KC_WH_U, XXXXXXX, S_D_RMOD,KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, QK_MAKE,
XXXXXXX, KC_LCTL, KC_BTN2, KC_LSFT, KC_BTN1, DPI_MOD, C(KC_TAB), KC_BTN3, KC_BTN1, KC_BTN2, DRGSCRL, XXXXXXX,
DRG_TOG, DRGSCRL, KC_BTN2, _______, KC_BTN1, DPI_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SNIPING, XXXXXXX,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
KC_LCTL, _______, DRGSCRL,/* */THUMB_R3,THUMB_R2,
_______, SNIPING,/* */TO(_BASE)
KC_LCTL, _______, _______,/* */_______, _______,
_______, DRG_TOG,/* */_______
// ╰───────────────────────────╯ ╰──────────────────╯
),
};
// in keymap.c:
void pointing_device_init_user(void) {
set_auto_mouse_layer(_ONEHAND); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>
set_auto_mouse_enable(true); // always required before the auto mouse feature will work
}
// void pointing_device_init_user(void) {
// set_auto_mouse_layer(_ONEHAND); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>
// set_auto_mouse_enable(true); // always required before the auto mouse feature will work
// }
layer_state_t layer_state_set_user(layer_state_t state) {
// checks highest layer other than target layer
switch(get_highest_layer(remove_auto_mouse_layer(state, true))) {
case _MOUSE:
case _NAV:
case _IPC:
// remove_auto_mouse_target must be called to adjust state *before* setting enable
state = remove_auto_mouse_layer(state, false);
set_auto_mouse_enable(false);
break;
// layer_state_t layer_state_set_user(layer_state_t state) {
// // checks highest layer other than target layer
// switch(get_highest_layer(remove_auto_mouse_layer(state, true))) {
// case _MOUSE:
// case _NAV:
// case _IPC:
// // remove_auto_mouse_target must be called to adjust state *before* setting enable
// state = remove_auto_mouse_layer(state, false);
// set_auto_mouse_enable(false);
// break;
default:
set_auto_mouse_enable(true);
break;
}
// recommend that any code that makes adjustment based on auto mouse layer state would go here
// default:
// set_auto_mouse_enable(true);
// break;
// }
// // recommend that any code that makes adjustment based on auto mouse layer state would go here
static bool mouse_layer_on = false;
bool now_on = layer_state_cmp(state, _ONEHAND);
//if (now_on && !mouse_layer_on) {
// 마우스 레이어 진입 시
// tap_code(KC_LCTL); // 예: 음소거 키 입력
//} else
if (!now_on && mouse_layer_on) {
// 마우스 레이어 탈출 시
tap_code(KC_LCTL); // 예: 볼륨업 키 입력
}
mouse_layer_on = now_on;
return state;
}
// static bool mouse_layer_on = false;
// bool now_on = layer_state_cmp(state, _ONEHAND);
// //if (now_on && !mouse_layer_on) {
// // 마우스 레이어 진입 시
// // tap_code(KC_LCTL); // 예: 음소거 키 입력
// //} else
// if (!now_on && mouse_layer_on) {
// // 마우스 레이어 탈출 시
// tap_code(KC_LCTL);
// }
// mouse_layer_on = now_on;
// return state;
// }
bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) {
switch(keycode) {
case DRGSCRL:
case SNIPING:
case KC_LCTL:
case KC_LALT:
case KC_LSFT:
return true;
default:
return false;
}
return is_mouse_record_user(keycode, record);
}
// bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) {
// switch(keycode) {
// case DRGSCRL:
// case SNIPING:
// case KC_LCTL:
// case KC_LALT:
// case KC_LSFT:
// return true;
// default:
// return false;
// }
// return is_mouse_record_user(keycode, record);
// }
char chordal_hold_handedness(keypos_t key) {
if (key.col == 0 || key.col == MATRIX_COLS - 1) {

View file

@ -465,6 +465,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
unregister_code(KC_TAB);
}
break;
case USR_LNG:
if (__TAPPED__ && __PRESSED__) {
tap_code(KC_LNG1);
} else if (__PRESSED__) {
register_code(KC_LNG2);
} else {
unregister_code(KC_LNG2);
}
return false;
break;
}

View file

@ -118,9 +118,11 @@ Z X C V B N M , . /
#define _NUM_D LT(_NUM, KC_D)
#define _NUM_F LT(_NUM, KC_F)
#define _NUM_MIN LCTL_T(KC_MINS)
#define IME_CHG G(C(KC_SPC))
#define INV_DSP G(C(KC_C))
#define USR_LNG LT(_BASE, KC_LNG1)
#define NUM(x) LT(_NUM, KC_##x)
//#define DRGMT LT(_ONEHAND, KC_F22)
#define BULLET_U C(S(KC_LBRC))
#define BULLET_D C(S(KC_RBRC))

View file

@ -0,0 +1,78 @@
/*
Copyright 2022 oco9oco <oco9oco@gmail.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/>.
*/
#pragma once
/* Handedness. */
// #define MASTER_LEFT
// #undef MASTER_RIGHT
#define MASTER_RIGHT
// TAP-HOLD OPTIONS
#define TAPPING_TERM 200
#define QUICK_TAP_TERM 0
//#define PERMISSIVE_HOLD_PER_KEY
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
#define CHORDAL_HOLD
// AUTO SHIFT OPTIONS
#define NO_AUTO_SHIFT_ALPHA
//MOUSEKEY OPTIONS
//#define MOUSEKEY_INERTIA
// #ifdef MOUSEKEY_INERTIA
#undef MOUSEKEY_DELAY
#undef MOUSEKEY_INTERVAL
#undef MOUSEKEY_MAX_SPEED //Maximum cursor speed at which acceleration stops
#undef MOUSEKEY_TIME_TO_MAX //Number of frames until maximum cursor speed is reached
#undef MOUSEKEY_FRICTION //How quickly the cursor stops after releasing a key
#undef MOUSEKEY_MOVE_DELTA //How much to move on first frame (1 strongly recommended)
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_INTERVAL 16 //Time between cursor movements in milliseconds (16 = 60fps)
#define MOUSEKEY_MAX_SPEED 18 //Maximum cursor speed at which acceleration stops
#define MOUSEKEY_TIME_TO_MAX 20 //Number of frames until maximum cursor speed is reached
#define MOUSEKEY_FRICTION 50 //How quickly the cursor stops after releasing a key
#define MOUSEKEY_MOVE_DELTA 1 //How much to move on first frame (1 strongly recommended)
// #endif
#undef MOUSEKEY_WHEEL_DELAY //Delay between pressing a wheel key and wheel movement
#undef MOUSEKEY_WHEEL_INTERVAL //Time between wheel movements
#undef MOUSEKEY_WHEEL_MAX_SPEED //Maximum number of scroll steps per scroll action
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
#define MOUSEKEY_WHEEL_DELAY 0 //Delay between pressing a wheel key and wheel movement
#define MOUSEKEY_WHEEL_INTERVAL 50 //Time between wheel movements
#define MOUSEKEY_WHEEL_MAX_SPEED 3
#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
#ifdef MK_KINETIC_SPEED
#define MOUSEKEY_MOVE_DELTA 30
#define MOUSEKEY_INITIAL_SPEED 300
#define MOUSEKEY_BASE_SPEED 2000
#define MOUSEKEY_DECELERATED_SPEED 300
#define MOUSEKEY_ACCELERATED_SPEED 2500
#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 5
#define MOUSEKEY_WHEEL_BASE_MOVEMENTS 8
#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 12
#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 5
#endif
// ONESHOT OPTIONS
// #define ONESHOT_TAP_TOGGLE 1 /* Tapping this number of times holds the key until tapped once again. */
// #define ONESHOT_TIMEOUT 5000
// COMBO OPTIONS
#define COMBO_TERM 40
#define COMBO_TERM_PER_COMBO
#define COMBO_COUNT 4

View file

@ -0,0 +1,14 @@
CONSOLE_ENABLE = no
COMMAND_ENABME = no
OLED_ENABLE = no
KEY_OVERRIDE_ENABLE = no
COMBO_ENABLE = no
AUTO_SHIFT_ENABLE= no
SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
NKRO_ENABLE = yes
SRC+=oco9oco.c
MOUSEKEY_ENABLE = yes
# RGB 라이트 기능 활성화
RGBLIGHT_ENABLE = no