From de0c578f56689a671a8261ab9af7e4f3f2d555ab Mon Sep 17 00:00:00 2001 From: oco9oco Date: Thu, 8 May 2025 13:46:38 +0900 Subject: [PATCH] Refactor keymap and configuration files; enable user language key and adjust mouse settings --- .../charybdis/4x6/keymaps/oco9oco/config.h | 10 +- .../charybdis/4x6/keymaps/oco9oco/keymap.c | 124 +++++++++--------- .../oco9oco/config - 복사본.h:Zone.Identifier | 0 users/oco9oco/oco9oco.c | 10 ++ users/oco9oco/oco9oco.h | 6 +- .../oco9oco/rules - 복사본.mk:Zone.Identifier | 0 users/oco9oco/user_config.h | 78 +++++++++++ users/oco9oco/user_rules.mk | 14 ++ 8 files changed, 175 insertions(+), 67 deletions(-) create mode 100644 users/oco9oco/config - 복사본.h:Zone.Identifier create mode 100644 users/oco9oco/rules - 복사본.mk:Zone.Identifier create mode 100644 users/oco9oco/user_config.h create mode 100644 users/oco9oco/user_rules.mk diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/config.h index 4a1ce5c2..11d4790d 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/config.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/config.h @@ -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 + + + diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c index aaf68d61..e9c1f92d 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c @@ -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, _______, - _______, 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, + 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, + 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 - 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 +// 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) { diff --git a/users/oco9oco/config - 복사본.h:Zone.Identifier b/users/oco9oco/config - 복사본.h:Zone.Identifier new file mode 100644 index 00000000..e69de29b diff --git a/users/oco9oco/oco9oco.c b/users/oco9oco/oco9oco.c index 2de6e8b8..fc956a37 100644 --- a/users/oco9oco/oco9oco.c +++ b/users/oco9oco/oco9oco.c @@ -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; } diff --git a/users/oco9oco/oco9oco.h b/users/oco9oco/oco9oco.h index afd602ab..a322a80a 100644 --- a/users/oco9oco/oco9oco.h +++ b/users/oco9oco/oco9oco.h @@ -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)) diff --git a/users/oco9oco/rules - 복사본.mk:Zone.Identifier b/users/oco9oco/rules - 복사본.mk:Zone.Identifier new file mode 100644 index 00000000..e69de29b diff --git a/users/oco9oco/user_config.h b/users/oco9oco/user_config.h new file mode 100644 index 00000000..46ab8808 --- /dev/null +++ b/users/oco9oco/user_config.h @@ -0,0 +1,78 @@ +/* +Copyright 2022 oco9oco +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 . +*/ +#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 diff --git a/users/oco9oco/user_rules.mk b/users/oco9oco/user_rules.mk new file mode 100644 index 00000000..3ef46847 --- /dev/null +++ b/users/oco9oco/user_rules.mk @@ -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