diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c
index e9c1f92d..81d3c789 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/oco9oco/keymap.c
@@ -17,6 +17,7 @@ along with this program. If not, see .
#include "oco9oco.h" //look for users/oco9oco/
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//clang-format off
@@ -44,17 +45,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
SFT_CAPS,__________________QWERTY_SACS_L2___________, __________________QWERTY_R2________________, KC_QUOT,
KC_LGUI, KC_Z, KC_X, LT(_ONEHAND,KC_C),KC_V, KC_B, __________________QWERTY_HOME_R3___________, KC_BSLS,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
- THUMB_L1,THUMB_L2, TT(_ONEHAND),/* */THUMB_R3,THUMB_R2,
- THUMB_L3, USR_LNG,/* */THUMB_R1
-// ╰───────────────────────────╯ ╰──────────────────╯
+ THUMB_L1,THUMB_L2, THUMB_L3,/* */THUMB_R3,THUMB_R2,
+ USR_LNG, TT(_ONEHAND),/* */THUMB_R1
+// ╰───────────────────────────╯ ╰──────────────────╯qmk
),
[_IPC] = LAYOUT_charybdis_wrapper(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
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, _______,
+ ALT_TAB, INV_DSP, KC_LEFT, KC_RGHT, 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,
+ KC_LGUI, SNIPING, HWP_CITE,KC_BTN2, KC_BTN1, DRGSCRL, IME_CHG, _________NUM_123_________, _______, KC_PIPE,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
_______, _______, _______,/* */HWP_MACRO, LT(_NAV, KC_0),
QK_BOOT, _______,/* */IME_CHG
@@ -98,15 +99,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ONEHAND] = LAYOUT_charybdis_wrapper(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
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,
+ XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, KC_WH_U, XXXXXXX, S_D_RMOD,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_MAKE,
+ XXXXXXX, KC_LCTL, KC_BTN2, KC_LSFT, KC_BTN1, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DRG_TOG, DRGSCRL, KC_BTN2, _______, KC_BTN1, DPI_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
- KC_LCTL, _______, _______,/* */_______, _______,
- _______, DRG_TOG,/* */_______
+ THUMB_L1, SNIPING, TO(_BASE),/* */_______, _______,
+ _______, _______,/* */_______
// ╰───────────────────────────╯ ╰──────────────────╯
),
};
+
+
// 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
diff --git a/keymap_charybdis.json b/keymap_charybdis.json
new file mode 100644
index 00000000..bdb525c9
--- /dev/null
+++ b/keymap_charybdis.json
@@ -0,0 +1,13 @@
+{
+ "keyboard": "bastardkb/charybdis/4x6/v2/splinky_3",
+ "keymap": "oco9oco",
+ "layers": [
+ ["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", "KC_Z", "KC_X", "LT(_ONEHAND,KC_C)", "KC_V", "KC_B", "__________________QWERTY_HOME_R3___________", "KC_BSLS", "THUMB_L1", "THUMB_L2", "THUMB_L3", "THUMB_R3", "THUMB_R2", "USR_LNG", "TT(_ONEHAND)", "THUMB_R1"],
+ ["ALT_F4", "C(KC_F1)", "KC_P", "KC_X", "INV_DSP", "TO(_ONEHAND)", "KC_LBRC", "KC_RBRC", "KC_LPRN", "KC_RPRN", "KC_NO", "KC_TRNS", "ALT_TAB", "INV_DSP", "KC_LEFT", "KC_RGHT", "CLASS_A", "HWP_MACRO", "KC_GRV", "_________NUM_789_________", "KC_NO", "KC_TRNS", "KC_TRNS", "IPC(A)", "IPC(S)", "IPC_MIN", "IPC(F)", "KC_DOT", "AT_IPC", "_________NUM_456_________", "KC_COLN", "KC_DQUO", "KC_LGUI", "SNIPING", "HWP_CITE", "KC_BTN2", "KC_BTN1", "DRGSCRL", "IME_CHG", "_________NUM_123_________", "KC_TRNS", "KC_PIPE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "HWP_MACRO", "LT(_NAV, KC_0)", "QK_BOOT", "KC_TRNS", "IME_CHG"],
+ ["KC_TRNS", "CTRL_F1", "KC_F2", "KC_F3", "ALT_F4", "KC_F5", "KC_NO", "A(KC_7)", "A(KC_5)", "A(KC_9)", "A(KC_0)", "KC_NO", "ALT_TAB", "NAV_NS", "LCA(KC_J)", "LCA(KC_K)", "LCA(KC_L)", "KC_F6", "S(A(KC_3))", "A(KC_4)", "A(KC_8)", "A(KC_6)", "KC_NO", "KC_NO", "KC_LGUI", "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_F7", "KC_INS", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "DPI_MOD", "G(C(KC_D))", "NAV(Z)", "C(KC_X)", "C(KC_C)", "C(KC_V)", "C(KC_B)", "KC_APP", "KC_HOME", "KC_PGDN", "KC_PGUP", "KC_END", "DPI_RMOD", "KC_TRNS", "KC_BSPC", "KC_DEL", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"],
+ ["KC_TRNS", "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", "KC_WH_R", "KC_NO", "KC_NO", "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_BTN4", "KC_BTN5", "KC_NO", "KC_NO", "KC_TRNS", "KC_BSPC", "KC_DEL", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"],
+ ["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "QK_BOOT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_F12", "KC_F7", "KC_F8", "KC_F9", "KC_NO", "KC_NO", "KC_NO", "KC_LSFT", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_NO", "KC_F11", "KC_F4", "KC_F5", "KC_F6", "KC_NO", "KC_NO", "KC_NO", "KC_LGUI", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_F10", "KC_F1", "KC_F2", "KC_F3", "KC_NO", "KC_NO", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"],
+ ["ALT_F4", "CTRL_F1", "KC_LEFT", "KC_NO", "KC_RGHT", "KC_F5", "S_D_MOD", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "QK_BOOT", "KC_NO", "KC_NO", "KC_WH_D", "KC_NO", "KC_WH_U", "KC_NO", "S_D_RMOD", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "QK_MAKE", "KC_NO", "KC_LCTL", "KC_BTN2", "KC_LSFT", "KC_BTN1", "DPI_MOD", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "DRG_TOG", "DRGSCRL", "KC_BTN2", "KC_TRNS", "KC_BTN1", "DPI_RMOD", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "THUMB_L1", "THUMB_L2", "THUMB_L3", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]
+ ],
+ "layout": "LAYOUT_charybdis_wrapper"
+}
diff --git a/users/oco9oco/oco9oco.c b/users/oco9oco/oco9oco.c
index fc956a37..715cef43 100644
--- a/users/oco9oco/oco9oco.c
+++ b/users/oco9oco/oco9oco.c
@@ -570,12 +570,24 @@ case LSFT_T(KC_F):
} else {return false;}
break;
+ case LALT_T(KC_S):
+ if (other_keycode == THUMB_L1) {
+ return true;
+ } else {return false;}
+ break;
+
case THUMB_L1:
case THUMB_L2:
-case THUMB_L3:
+case THUMB_L3:
+case TT(_ONEHAND):
case THUMB_R1:
case THUMB_R2:
case THUMB_R3:
+case IPC(A):
+case IPC(S):
+case IPC_MIN:
+case IPC(F):
+case IPC(Z):
return true;
break;
}
@@ -584,3 +596,57 @@ return get_chordal_hold_default(tap_hold_record, other_record);
}
+
+// charybdis trackball angular alignment calibration
+// This code rotates the mouse report by 15 degrees counter-clockwise.
+
+// #include "math.h"
+
+// #define FIXED_POINT 256
+// #define COS_15 ((int16_t)(cosf(15.0 * M_PI / 180.0) * FIXED_POINT)) // 0.9659
+// #define SIN_15 ((int16_t)(sinf(15.0 * M_PI / 180.0) * FIXED_POINT)) // 0.2588
+
+// report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+// report_mouse_t new_report = mouse_report;
+
+// int16_t x = mouse_report.x;
+// int16_t y = mouse_report.y;
+
+// int16_t new_x = (COS_15 * x - SIN_15 * y) / FIXED_POINT;
+// int16_t new_y = (SIN_15 * x + COS_15 * y) / FIXED_POINT;
+
+// new_report.x = (int8_t)new_x;
+// new_report.y = (int8_t)new_y;
+
+// return new_report;
+// }
+
+
+// charybdis trackball angular alignment calibration(floating point)
+// This code rotates the mouse report by 15 degrees counter-clockwise.
+
+
+// #include "math.h"
+
+// report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+// report_mouse_t new_report = mouse_report;
+
+// // 15도 회전 변환 공식 (반시계 방향)
+// // x' = cos(15°) * x - sin(15°) * y
+// // y' = sin(15°) * x + cos(15°) * y
+
+// float angle = 15.0 * M_PI / 180.0; // 라디안 변환
+// float cos_a = cosf(angle); // 약 0.9659
+// float sin_a = sinf(angle); // 약 0.2588
+
+// float old_x = (float)mouse_report.x;
+// float old_y = (float)mouse_report.y;
+
+// float new_x = cos_a * old_x - sin_a * old_y;
+// float new_y = sin_a * old_x + cos_a * old_y;
+
+// new_report.x = (int8_t)roundf(new_x);
+// new_report.y = (int8_t)roundf(new_y);
+
+// return new_report;
+// }
\ No newline at end of file
diff --git a/users/oco9oco/rules.mk b/users/oco9oco/rules.mk
index 3ef46847..f976b28e 100644
--- a/users/oco9oco/rules.mk
+++ b/users/oco9oco/rules.mk
@@ -12,3 +12,6 @@ SRC+=oco9oco.c
MOUSEKEY_ENABLE = yes
# RGB 라이트 기능 활성화
RGBLIGHT_ENABLE = no
+
+# 트랙볼 캘리브레이션용. 버벅거린다면 주석처리
+# FLOAT_ENABLE = yes
\ No newline at end of file