From fcbf3a48421550a09b5128d71ee1c7b34e58b042 Mon Sep 17 00:00:00 2001 From: burkfers <6268175+burkfers@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:52:13 +0200 Subject: [PATCH] add simle maccel to cnano --- .../charybdis/3x5/keymaps/vendor/keymap.c | 12 +- .../charybdis/3x5/keymaps/vendor/rules.mk | 4 + .../features/maccel/assets/accel_curve.png | Bin 0 -> 177510 bytes .../features/maccel/assets/charybdis_3x5.json | 187 ++++++++ .../features/maccel/assets/charybdis_3x6.json | 331 +++++++++++++ .../features/maccel/assets/charybdis_4x6.json | 221 +++++++++ .../features/maccel/assets/dilemma_max.json | 437 ++++++++++++++++++ .../features/maccel/assets/dilemma_v2.json | 362 +++++++++++++++ .../bastardkb/features/maccel/assets/via.json | 71 +++ .../bastardkb/features/maccel/assets/via.png | Bin 0 -> 18348 bytes users/bastardkb/features/maccel/maccel.c | 221 +++++++++ users/bastardkb/features/maccel/maccel.h | 36 ++ users/bastardkb/features/maccel/maccel_via.c | 174 +++++++ users/bastardkb/features/maccel/readme.md | 295 ++++++++++++ users/bastardkb/features/maccel/rules.mk | 9 + users/bastardkb/rules.mk | 1 + 16 files changed, 2359 insertions(+), 2 deletions(-) create mode 100644 users/bastardkb/features/maccel/assets/accel_curve.png create mode 100644 users/bastardkb/features/maccel/assets/charybdis_3x5.json create mode 100644 users/bastardkb/features/maccel/assets/charybdis_3x6.json create mode 100644 users/bastardkb/features/maccel/assets/charybdis_4x6.json create mode 100644 users/bastardkb/features/maccel/assets/dilemma_max.json create mode 100644 users/bastardkb/features/maccel/assets/dilemma_v2.json create mode 100644 users/bastardkb/features/maccel/assets/via.json create mode 100644 users/bastardkb/features/maccel/assets/via.png create mode 100644 users/bastardkb/features/maccel/maccel.c create mode 100644 users/bastardkb/features/maccel/maccel.h create mode 100644 users/bastardkb/features/maccel/maccel_via.c create mode 100644 users/bastardkb/features/maccel/readme.md create mode 100644 users/bastardkb/features/maccel/rules.mk create mode 100644 users/bastardkb/rules.mk diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/keymap.c index 30fa3d9f4fe..f2c3c9b042b 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/keymap.c @@ -19,6 +19,9 @@ #ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE # include "timer.h" #endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +#ifdef MACCEL_ENABLE + #include "features/maccel/maccel.h" +#endif enum charybdis_keymap_layers { LAYER_BASE = 0, @@ -216,8 +219,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // clang-format on #ifdef POINTING_DEVICE_ENABLE -# ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { +# ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE if (abs(mouse_report.x) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD || abs(mouse_report.y) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD) { if (auto_pointer_layer_timer == 0) { layer_on(LAYER_POINTER); @@ -228,10 +231,15 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { } auto_pointer_layer_timer = timer_read(); } +# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +#ifdef MACCEL_ENABLE + mouse_report = pointing_device_task_maccel(mouse_report); +#endif return mouse_report; } void matrix_scan_user(void) { +# ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE if (auto_pointer_layer_timer != 0 && TIMER_DIFF_16(timer_read(), auto_pointer_layer_timer) >= CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS) { auto_pointer_layer_timer = 0; layer_off(LAYER_POINTER); @@ -239,8 +247,8 @@ void matrix_scan_user(void) { rgb_matrix_mode_noeeprom(RGB_MATRIX_DEFAULT_MODE); # endif // RGB_MATRIX_ENABLE } -} # endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +} # ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER layer_state_t layer_state_set_user(layer_state_t state) { diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/rules.mk index 1e5b99807cb..4dea2893b28 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/rules.mk +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/vendor/rules.mk @@ -1 +1,5 @@ VIA_ENABLE = yes + +USER_NAME := bastardkb + +MACCEL_ENABLE = yes diff --git a/users/bastardkb/features/maccel/assets/accel_curve.png b/users/bastardkb/features/maccel/assets/accel_curve.png new file mode 100644 index 0000000000000000000000000000000000000000..57ab94df65d677e74bfca9f702431a264b1036df GIT binary patch literal 177510 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 literal 0 HcmV?d00001 diff --git a/users/bastardkb/features/maccel/assets/charybdis_3x5.json b/users/bastardkb/features/maccel/assets/charybdis_3x5.json new file mode 100644 index 00000000000..a3b61d96b21 --- /dev/null +++ b/users/bastardkb/features/maccel/assets/charybdis_3x5.json @@ -0,0 +1,187 @@ +{ + "name": "Charybdis Nano", + "vendorId": "0xA8F8", + "productId": "0x1832", + "menus": [ + "qmk_rgb_matrix", + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } + ], + "matrix": { + "rows": 8, + "cols": 5 + }, + "customKeycodes": [ + { + "title": "Default DPI Increase", + "name": "Default DPI Inc", + "shortName": "DPI+" + }, + { + "title": "Default DPI Decrease", + "name": "Default DPI Dec", + "shortName": "DPI-" + }, + { + "title": "Sniping DPI Increase", + "name": "Sniping DPI Inc", + "shortName": "Snp+" + }, + { + "title": "Sniping DPI Decrease", + "name": "Sniping DPI Dec", + "shortName": "Snp-" + }, + { + "title": "Sniping Momentary", + "name": "Sniping MO", + "shortName": "Snp" + }, + { + "title": "Sniping Toggle", + "name": "Sniping TO", + "shortName": "SnpT" + }, + { + "title": "Drag-scroll Momentary", + "name": "Drag-scroll MO", + "shortName": "Drg" + }, + { + "title": "Drag-scroll Toggle", + "name": "Drag-scroll TG", + "shortName": "DrgT" + } + ], + "layouts": { + "keymap": [ + [ + "0,0", + "0,1", + "0,2", + "0,3", + "0,4", + { + "x": 4 + }, + "4,4", + "4,3", + "4,2", + "4,1", + "4,0" + ], + [ + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + { + "x": 4 + }, + "5,4", + "5,3", + "5,2", + "5,1", + "5,0" + ], + [ + "2,0", + "2,1", + "2,2", + "2,3", + "2,4", + { + "x": 4 + }, + "6,4", + "6,3", + "6,2", + "6,1", + "6,0" + ], + [ + { + "x": 3 + }, + "3,2", + "3,3", + "3,0", + { + "x": 2 + }, + "7,0", + "7,2" + ] + ] + } +} diff --git a/users/bastardkb/features/maccel/assets/charybdis_3x6.json b/users/bastardkb/features/maccel/assets/charybdis_3x6.json new file mode 100644 index 00000000000..5b86bc86046 --- /dev/null +++ b/users/bastardkb/features/maccel/assets/charybdis_3x6.json @@ -0,0 +1,331 @@ +{ + "name": "Charybdis Mini", + "vendorId": "0xA8F8", + "productId": "0x1834", + "matrix": { + "rows": 8, + "cols": 6 + }, + "menus": [ + "qmk_rgb_matrix", + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } + ], + "keycodes": [ + "qmk_lighting" + ], + "customKeycodes": [ + { + "name": "Default DPI Forward", + "title": "Default DPI Forward", + "shortName": "DPI+" + }, + { + "name": "Default DPI Reverse", + "title": "Default DPI Reverse", + "shortName": "DPI-" + }, + { + "name": "Sniping DPI Forward", + "title": "Sniping DPI Forward", + "shortName": "Sniping+" + }, + { + "name": "Sniping DPI Reverse", + "title": "Sniping DPI Reverse", + "shortName": "Sniping-" + }, + { + "name": "Sniping Mode", + "title": "Sniping Mode", + "shortName": "SnipeMO" + }, + { + "name": "Sniping Toggle", + "title": "Sniping Toggle", + "shortName": "SnipeTG" + }, + { + "name": "Dragscroll Mode", + "title": "Dragscroll Mode", + "shortName": "DragScl" + }, + { + "name": "Dragscroll Toggle", + "title": "Dragscroll Toggle", + "shortName": "DragTog" + } + ], + "layouts": { + "labels": [ + [ + "Trackball", + "Right", + "Left" + ] + ], + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 8 + }, + "4,3" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "0,2" + ], + [ + { + "y": -1, + "x": 4 + }, + "0,4", + { + "x": 6 + }, + "4,4", + { + "x": 1 + }, + "4,2" + ], + [ + { + "y": -0.98, + "x": 5 + }, + "0,5", + { + "x": 4 + }, + "4,5" + ], + [ + { + "y": -0.62 + }, + "0,0", + "0,1", + { + "x": 12 + }, + "4,1", + "4,0" + ], + [ + { + "y": -0.5, + "x": 3 + }, + "1,3", + { + "x": 8 + }, + "5,3" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "1,2", + { + "x": 1 + }, + "1,4", + { + "x": 6 + }, + "5,4", + { + "x": 1 + }, + "5,2" + ], + [ + { + "y": -0.98, + "x": 5 + }, + "1,5", + { + "x": 4 + }, + "5,5" + ], + [ + { + "y": -0.62 + }, + "1,0", + "1,1", + { + "x": 12 + }, + "5,1", + "5,0" + ], + [ + { + "y": -0.5, + "x": 3 + }, + "2,3", + { + "x": 8 + }, + "6,3" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "2,2", + { + "x": 1 + }, + "2,4", + { + "x": 6 + }, + "6,4", + { + "x": 1 + }, + "6,2" + ], + [ + { + "y": -0.98, + "x": 5 + }, + "2,5", + { + "x": 4 + }, + "6,5" + ], + [ + { + "y": -0.62 + }, + "2,0", + "2,1", + { + "x": 12 + }, + "6,1", + "6,0" + ], + [ + { + "x": 4.75 + }, + "3,3\n\n\n0,0", + "3,4\n\n\n0,0", + "3,1", + { + "x": 0.5 + }, + "7,1", + "7,3\n\n\n0,0", + { + "d": true + }, + "\n\n\n0,0" + ], + [ + { + "y": 0.5, + "x": 4.75, + "d": true + }, + "\n\n\n0,1", + "3,3\n\n\n0,1", + { + "x": 2.5 + }, + "7,4\n\n\n0,1", + "7,3\n\n\n0,1" + ] + ] + } +} diff --git a/users/bastardkb/features/maccel/assets/charybdis_4x6.json b/users/bastardkb/features/maccel/assets/charybdis_4x6.json new file mode 100644 index 00000000000..53be2376114 --- /dev/null +++ b/users/bastardkb/features/maccel/assets/charybdis_4x6.json @@ -0,0 +1,221 @@ +{ + "name": "Charybdis", + "vendorId": "0xA8F8", + "productId": "0x1833", + "menus": [ + "qmk_rgb_matrix", + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } + ], + "matrix": { + "rows": 10, + "cols": 6 + }, + "customKeycodes": [ + { + "title": "Default DPI Increase", + "name": "Default DPI Inc", + "shortName": "DPI+" + }, + { + "title": "Default DPI Decrease", + "name": "Default DPI Dec", + "shortName": "DPI-" + }, + { + "title": "Sniping DPI Increase", + "name": "Sniping DPI Inc", + "shortName": "Snp+" + }, + { + "title": "Sniping DPI Decrease", + "name": "Sniping DPI Dec", + "shortName": "Snp-" + }, + { + "title": "Sniping Momentary", + "name": "Sniping MO", + "shortName": "Snp" + }, + { + "title": "Sniping Toggle", + "name": "Sniping TO", + "shortName": "SnpT" + }, + { + "title": "Drag-scroll Momentary", + "name": "Drag-scroll MO", + "shortName": "Drg" + }, + { + "title": "Drag-scroll Toggle", + "name": "Drag-scroll TG", + "shortName": "DrgT" + } + ], + "layouts": { + "keymap": [ + [ + "0,0", + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + { + "x": 4 + }, + "5,5", + "5,4", + "5,3", + "5,2", + "5,1", + "5,0" + ], + [ + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + { + "x": 4 + }, + "6,5", + "6,4", + "6,3", + "6,2", + "6,1", + "6,0" + ], + [ + "2,0", + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + { + "x": 4 + }, + "7,5", + "7,4", + "7,3", + "7,2", + "7,1", + "7,0" + ], + [ + "3,0", + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + { + "x": 4 + }, + "8,5", + "8,4", + "8,3", + "8,2", + "8,1", + "8,0" + ], + [ + { + "x": 4 + }, + "4,3", + "4,4", + "4,1", + { + "x": 2 + }, + "9,1", + "9,3" + ], + [ + { + "x": 5 + }, + "4,5", + "4,2", + { + "x": 2 + }, + "9,5" + ] + ] + } +} diff --git a/users/bastardkb/features/maccel/assets/dilemma_max.json b/users/bastardkb/features/maccel/assets/dilemma_max.json new file mode 100644 index 00000000000..4b156df6df9 --- /dev/null +++ b/users/bastardkb/features/maccel/assets/dilemma_max.json @@ -0,0 +1,437 @@ +{ + "name": "Dilemma Max", + "vendorId": "0xA8F8", + "productId": "0x1837", + "matrix": { + "rows": 10, + "cols": 6 + }, + "menus": [ + "qmk_rgb_matrix", + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } + ], + "keycodes": [ + "qmk_lighting" + ], + "customKeycodes": [ + { + "name": "Default DPI Forward", + "title": "Default DPI Forward", + "shortName": "DPI+" + }, + { + "name": "Default DPI Reverse", + "title": "Default DPI Reverse", + "shortName": "DPI-" + }, + { + "name": "Sniping DPI Forward", + "title": "Sniping DPI Forward", + "shortName": "Sniping+" + }, + { + "name": "Sniping DPI Reverse", + "title": "Sniping DPI Reverse", + "shortName": "Sniping-" + }, + { + "name": "Sniping Mode", + "title": "Sniping Mode", + "shortName": "SnipeMO" + }, + { + "name": "Sniping Toggle", + "title": "Sniping Toggle", + "shortName": "SnipeTG" + }, + { + "name": "Dragscroll Mode", + "title": "Dragscroll Mode", + "shortName": "DragScl" + }, + { + "name": "Dragscroll Toggle", + "title": "Dragscroll Toggle", + "shortName": "DragTog" + } + ], + "layouts": { + "labels": [ + "Left Encoder", + "Right Encoder" + ], + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 7.5 + }, + "5,3" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "0,4" + ], + [ + { + "y": -1, + "x": 10.5 + }, + "5,4" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "0,2" + ], + [ + { + "y": -1, + "x": 5 + }, + "0,5" + ], + [ + { + "y": -1, + "x": 9.5 + }, + "5,5" + ], + [ + { + "y": -1, + "x": 12.5 + }, + "5,2" + ], + [ + { + "y": -0.4 + }, + "0,0", + "0,1", + { + "x": 11.5 + }, + "5,1", + "5,0" + ], + [ + { + "y": -0.9, + "x": 3 + }, + "1,3", + { + "x": 7.5 + }, + "6,3" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "1,4", + { + "x": 5.5 + }, + "6,4" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "1,2", + { + "x": 2 + }, + "1,5", + { + "x": 3.5 + }, + "6,5", + { + "x": 2 + }, + "6,2" + ], + [ + { + "y": -0.4 + }, + "1,0", + "1,1", + { + "x": 11.5 + }, + "6,1", + "6,0" + ], + [ + { + "y": -0.9, + "x": 3 + }, + "2,3", + { + "x": 7.5 + }, + "7,3" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "2,4", + { + "x": 5.5 + }, + "7,4" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "2,2", + { + "x": 2 + }, + "2,5", + { + "x": 3.5 + }, + "7,5", + { + "x": 2 + }, + "7,2" + ], + [ + { + "y": -0.4 + }, + "2,0", + "2,1", + { + "x": 11.5 + }, + "7,1", + "7,0" + ], + [ + { + "y": -0.9, + "x": 3 + }, + "3,3", + { + "x": 7.5 + }, + "8,3" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "3,4", + { + "x": 5.5 + }, + "8,4" + ], + [ + { + "y": -0.9, + "x": 2 + }, + "3,2", + { + "x": 2 + }, + "3,5", + { + "x": 3.5 + }, + "8,5", + { + "x": 2 + }, + "8,2" + ], + [ + { + "y": -0.4 + }, + "3,0", + "3,1", + { + "x": 11.5 + }, + "8,1", + "8,0" + ], + [ + { + "y": 0.5, + "x": 3.3 + }, + "4,3\n\n\n0,1\n\n\n\n\n\ne0", + { + "x": 6.9 + }, + "9,3\n\n\n1,1\n\n\n\n\n\ne1" + ], + [ + { + "rx": 3.9, + "ry": 9.175, + "y": -4.875, + "x": -0.6 + }, + "4,3\n\n\n0,0" + ], + [ + { + "rx": 11.6, + "y": -4.875, + "x": -0.4 + }, + "9,3\n\n\n1,0" + ], + [ + { + "r": 15, + "rx": 3.9, + "y": -4.875, + "x": -0.6 + }, + "4,1" + ], + [ + { + "r": 30, + "y": -1, + "x": -0.6 + }, + "4,2" + ], + [ + { + "r": 45, + "y": -1, + "x": -0.6 + }, + "4,4" + ], + [ + { + "r": -45, + "rx": 11.6, + "y": -4.875, + "x": -0.4 + }, + "9,4" + ], + [ + { + "r": -30, + "y": -1, + "x": -0.4 + }, + "9,2" + ], + [ + { + "r": -15, + "y": -1, + "x": -0.4 + }, + "9,1" + ] + ] + } +} diff --git a/users/bastardkb/features/maccel/assets/dilemma_v2.json b/users/bastardkb/features/maccel/assets/dilemma_v2.json new file mode 100644 index 00000000000..2abf3acfd6e --- /dev/null +++ b/users/bastardkb/features/maccel/assets/dilemma_v2.json @@ -0,0 +1,362 @@ +{ + "name": "Dilemma v2", + "vendorId": "0xA8F8", + "productId": "0x1836", + "menus": [ + "qmk_rgb_matrix", + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } + ], + "keycodes": [ + "qmk_lighting" + ], + "matrix": { + "rows": 8, + "cols": 5 + }, + "customKeycodes": [ + { + "title": "Default DPI Increase", + "name": "Default DPI Inc", + "shortName": "DPI+" + }, + { + "title": "Default DPI Decrease", + "name": "Default DPI Dec", + "shortName": "DPI-" + }, + { + "title": "Sniping DPI Increase", + "name": "Sniping DPI Inc", + "shortName": "Snp+" + }, + { + "title": "Sniping DPI Decrease", + "name": "Sniping DPI Dec", + "shortName": "Snp-" + }, + { + "title": "Sniping Momentary", + "name": "Sniping MO", + "shortName": "Snp" + }, + { + "title": "Sniping Toggle", + "name": "Sniping TO", + "shortName": "SnpT" + }, + { + "title": "Drag-scroll Momentary", + "name": "Drag-scroll MO", + "shortName": "Drg" + }, + { + "title": "Drag-scroll Toggle", + "name": "Drag-scroll TG", + "shortName": "DrgT" + } + ], + "layouts": { + "labels": [ + "Left Encoder", + "Right Encoder" + ], + "keymap": [ + [ + { + "x": 2 + }, + "0,2", + { + "x": 7 + }, + "4,2" + ], + [ + { + "y": -0.8, + "x": 3 + }, + "0,3" + ], + [ + { + "y": -1, + "x": 9 + }, + "4,3" + ], + [ + { + "y": -0.95, + "x": 4 + }, + "0,4", + { + "x": 3 + }, + "4,4" + ], + [ + { + "y": -0.85, + "x": 1 + }, + "0,1", + { + "x": 9 + }, + "4,1" + ], + [ + { + "y": -0.5999999999999999 + }, + "0,0", + { + "x": 11 + }, + "4,0" + ], + [ + { + "y": -0.8, + "x": 2 + }, + "1,2", + { + "x": 7 + }, + "5,2" + ], + [ + { + "y": -0.8, + "x": 3 + }, + "1,3", + { + "x": 5 + }, + "5,3" + ], + [ + { + "y": -0.9500000000000002, + "x": 4 + }, + "1,4", + { + "x": 3 + }, + "5,4" + ], + [ + { + "y": -0.8500000000000001, + "x": 1 + }, + "1,1", + { + "x": 9 + }, + "5,1" + ], + [ + { + "y": -0.5999999999999999 + }, + "1,0", + { + "x": 11 + }, + "5,0" + ], + [ + { + "y": -0.7999999999999998, + "x": 2 + }, + "2,2", + { + "x": 7 + }, + "6,2" + ], + [ + { + "y": -0.7999999999999998, + "x": 3 + }, + "2,3", + { + "x": 5 + }, + "6,3" + ], + [ + { + "y": -0.9500000000000002, + "x": 4 + }, + "2,4", + { + "x": 3 + }, + "6,4" + ], + [ + { + "y": -0.8500000000000001, + "x": 1 + }, + "2,1", + { + "x": 9 + }, + "6,1" + ], + [ + { + "y": -0.6000000000000001 + }, + "2,0", + { + "x": 11 + }, + "6,0" + ], + [ + { + "y": 0.6000000000000005, + "x": 2.5 + }, + "3,2\n\n\n0,1\n\n\n\n\n\ne0", + { + "x": 6 + }, + "7,2\n\n\n1,1\n\n\n\n\n\ne1" + ], + [ + { + "rx": 2.9, + "ry": 8.175, + "y": -4.875000000000001, + "x": -0.6000000000000001 + }, + "3,2\n\n\n0,0" + ], + [ + { + "rx": 10.2, + "y": -4.875000000000001, + "x": -0.5 + }, + "7,2\n\n\n1,0" + ], + [ + { + "r": 15, + "rx": 2.9, + "y": -4.875000000000001, + "x": -0.6000000000000001 + }, + "3,0" + ], + [ + { + "r": 30, + "y": -1, + "x": -0.6000000000000001 + }, + "3,1" + ], + [ + { + "r": -30, + "rx": 10.2, + "y": -4.875000000000001, + "x": -0.5 + }, + "7,1" + ], + [ + { + "r": -15, + "y": -1, + "x": -0.5 + }, + "7,0" + ] + ] + } +} diff --git a/users/bastardkb/features/maccel/assets/via.json b/users/bastardkb/features/maccel/assets/via.json new file mode 100644 index 00000000000..9536c4da44f --- /dev/null +++ b/users/bastardkb/features/maccel/assets/via.json @@ -0,0 +1,71 @@ + { + "label": "Mouse acceleration", + "content": [ + { + "label": "Acceleration", + "content": [ + { + "label": "Enabled", + "type": "toggle", + "content": [ + "id_maccel_enabled", + 24, + 5 + ] + }, + { + "label": "Takeoff", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_takeoff", + 24, + 1 + ] + }, + { + "label": "Growth Rate", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_growth_rate", + 24, + 2 + ] + }, + { + "label": "Offset", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_offset", + 24, + 3 + ] + }, + { + "label": "Limit", + "type": "range", + "options": [ + 0, + 60000 + ], + "content": [ + "id_maccel_limit", + 24, + 4 + ] + } + ] + } + ] + } diff --git a/users/bastardkb/features/maccel/assets/via.png b/users/bastardkb/features/maccel/assets/via.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6f94f4d2950ac4be9ee82f6d26900b21df8c56 GIT binary patch literal 18348 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 literal 0 HcmV?d00001 diff --git a/users/bastardkb/features/maccel/maccel.c b/users/bastardkb/features/maccel/maccel.c new file mode 100644 index 00000000000..af5bf2d8b92 --- /dev/null +++ b/users/bastardkb/features/maccel/maccel.c @@ -0,0 +1,221 @@ +// Copyright 2024 burkfers (@burkfers) +// Copyright 2024 Wimads (@wimads) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" // IWYU pragma: keep +#include "maccel.h" +#include "math.h" + +static uint32_t maccel_timer; + +#ifndef MACCEL_TAKEOFF +# define MACCEL_TAKEOFF 2.0 // lower/higher value = curve starts more smoothly/abruptly +#endif +#ifndef MACCEL_GROWTH_RATE +# define MACCEL_GROWTH_RATE 0.25 // lower/higher value = curve reaches its upper limit slower/faster +#endif +#ifndef MACCEL_OFFSET +# define MACCEL_OFFSET 2.2 // lower/higher value = acceleration kicks in earlier/later +#endif +#ifndef MACCEL_LIMIT +# define MACCEL_LIMIT 0.2 // lower limit of accel curve (minimum acceleration factor) +#endif +#ifndef MACCEL_CPI_THROTTLE_MS +# define MACCEL_CPI_THROTTLE_MS 200 // milliseconds to wait between requesting the device's current DPI +#endif +#ifndef MACCEL_LIMIT_UPPER +# define MACCEL_LIMIT_UPPER 1 // upper limit of accel curve, recommended to leave at 1; adjust DPI setting instead. +#endif +#ifndef MACCEL_ROUNDING_CARRY_TIMEOUT_MS +# define MACCEL_ROUNDING_CARRY_TIMEOUT_MS 200 // milliseconds after which to reset quantization error correction (forget rounding remainder) +#endif + +maccel_config_t g_maccel_config = { + // clang-format off + .growth_rate = MACCEL_GROWTH_RATE, + .offset = MACCEL_OFFSET, + .limit = MACCEL_LIMIT, + .takeoff = MACCEL_TAKEOFF, + .enabled = true + // clang-format on +}; + +#ifdef MACCEL_USE_KEYCODES +# ifndef MACCEL_TAKEOFF_STEP +# define MACCEL_TAKEOFF_STEP 0.01f +# endif +# ifndef MACCEL_GROWTH_RATE_STEP +# define MACCEL_GROWTH_RATE_STEP 0.01f +# endif +# ifndef MACCEL_OFFSET_STEP +# define MACCEL_OFFSET_STEP 0.1f +# endif +# ifndef MACCEL_LIMIT_STEP +# define MACCEL_LIMIT_STEP 0.01f +# endif +#endif + +float maccel_get_takeoff(void) { + return g_maccel_config.takeoff; +} +float maccel_get_growth_rate(void) { + return g_maccel_config.growth_rate; +} +float maccel_get_offset(void) { + return g_maccel_config.offset; +} +float maccel_get_limit(void) { + return g_maccel_config.limit; +} +void maccel_set_takeoff(float val) { + if (val >= 0.5) { // value less than 0.5 leads to nonsensical results + g_maccel_config.takeoff = val; + } +} +void maccel_set_growth_rate(float val) { + if (val >= 0) { // value less 0 leads to nonsensical results + g_maccel_config.growth_rate = val; + } +} +void maccel_set_offset(float val) { + g_maccel_config.offset = val; +} +void maccel_set_limit(float val) { + if (val >= 0) { + g_maccel_config.limit = val; + } +} + +void maccel_enabled(bool enable) { + g_maccel_config.enabled = enable; +#ifdef MACCEL_DEBUG + printf("maccel: enabled: %d\n", g_maccel_config.enabled); +#endif +} +bool maccel_get_enabled(void) { + return g_maccel_config.enabled; +} +void maccel_toggle_enabled(void) { + maccel_enabled(!maccel_get_enabled()); +} + +#define _CONSTRAIN(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) +#define CONSTRAIN_REPORT(val) (mouse_xy_report_t) _CONSTRAIN(val, XY_REPORT_MIN, XY_REPORT_MAX) + +report_mouse_t pointing_device_task_maccel(report_mouse_t mouse_report) { + // rounding carry to recycle dropped floats from int mouse reports, to smoothen low speed movements (credit @ankostis) + static float rounding_carry_x = 0; + static float rounding_carry_y = 0; + // time since last mouse report: + const uint16_t delta_time = timer_elapsed32(maccel_timer); + // skip maccel maths if report = 0, or if maccel not enabled. + if ((mouse_report.x == 0 && mouse_report.y == 0) || !g_maccel_config.enabled) { + return mouse_report; + } + // reset timer: + maccel_timer = timer_read32(); + // Reset carry if too much time passed + if (delta_time > MACCEL_ROUNDING_CARRY_TIMEOUT_MS) { + rounding_carry_x = 0; + rounding_carry_y = 0; + } + // Reset carry when pointer swaps direction, to follow user's hand. + if (mouse_report.x * rounding_carry_x < 0) rounding_carry_x = 0; + if (mouse_report.y * rounding_carry_y < 0) rounding_carry_y = 0; + // Limit expensive calls to get device cpi settings only when mouse stationary for > 200ms. + static uint16_t device_cpi = 300; + if (delta_time > MACCEL_CPI_THROTTLE_MS) { + device_cpi = pointing_device_get_cpi(); + } + // calculate dpi correction factor (for normalizing velocity range across different user dpi settings) + const float dpi_correction = (float)1000.0f / device_cpi; + // calculate euclidean distance moved (sqrt(x^2 + y^2)) + const float distance = sqrtf(mouse_report.x * mouse_report.x + mouse_report.y * mouse_report.y); + // calculate delta velocity: dv = distance/dt + const float velocity_raw = distance / delta_time; + // correct raw velocity for dpi + const float velocity = dpi_correction * velocity_raw; + // letter variables for readability of maths: + const float k = g_maccel_config.takeoff; + const float g = g_maccel_config.growth_rate; + const float s = g_maccel_config.offset; + const float m = g_maccel_config.limit; + // acceleration factor: f(v) = 1 - (1 - M) / {1 + e^[K(v - S)]}^(G/K): + // Generalised Sigmoid Function, see https://www.desmos.com/calculator/k9vr0y2gev + const float maccel_factor = MACCEL_LIMIT_UPPER - (MACCEL_LIMIT_UPPER - m) / powf(1 + expf(k * (velocity - s)), g / k); + // multiply mouse reports by acceleration factor, and account for previous quantization errors: + const float new_x = rounding_carry_x + maccel_factor * mouse_report.x; + const float new_y = rounding_carry_y + maccel_factor * mouse_report.y; + // Accumulate any difference from next integer (quantization). + rounding_carry_x = new_x - (int)new_x; + rounding_carry_y = new_y - (int)new_y; + // clamp values + const mouse_xy_report_t x = CONSTRAIN_REPORT(new_x); + const mouse_xy_report_t y = CONSTRAIN_REPORT(new_y); + +// console output for debugging (enable/disable in config.h) +#ifdef MACCEL_DEBUG + const float distance_out = sqrtf(x * x + y * y); + const float velocity_out = velocity * maccel_factor; + printf("MACCEL: DPI:%4i Tko: %.3f Grw: %.3f Ofs: %.3f Lmt: %.3f | Fct: %.3f v.in: %.3f v.out: %.3f d.in: %3i d.out: %3i\n", device_cpi, g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit, maccel_factor, velocity, velocity_out, CONSTRAIN_REPORT(distance), CONSTRAIN_REPORT(distance_out)); +#endif // MACCEL_DEBUG + + // report back accelerated values + mouse_report.x = x; + mouse_report.y = y; + + return mouse_report; +} + +#ifdef MACCEL_USE_KEYCODES +static inline float get_mod_step(float step) { + const uint8_t mod_mask = get_mods(); + if (mod_mask & MOD_MASK_CTRL) { + step *= 10; // control increases by factor 10 + } + if (mod_mask & MOD_MASK_SHIFT) { + step *= -1; // shift inverts + } + return step; +} + +bool process_record_maccel(uint16_t keycode, keyrecord_t *record, uint16_t toggle, uint16_t takeoff, uint16_t growth_rate, uint16_t offset, uint16_t limit) { + if (record->event.pressed) { + if (keycode == toggle) { + maccel_toggle_enabled(); + return false; + } + if (keycode == takeoff) { + maccel_set_takeoff(maccel_get_takeoff() + get_mod_step(MACCEL_TAKEOFF_STEP)); + printf("MACCEL:keycode: TKO: %.3f gro: %.3f ofs: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); + return false; + } + if (keycode == growth_rate) { + maccel_set_growth_rate(maccel_get_growth_rate() + get_mod_step(MACCEL_GROWTH_RATE_STEP)); + printf("MACCEL:keycode: tko: %.3f GRO: %.3f ofs: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); + return false; + } + if (keycode == offset) { + maccel_set_offset(maccel_get_offset() + get_mod_step(MACCEL_OFFSET_STEP)); + printf("MACCEL:keycode: tko: %.3f gro: %.3f OFS: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); + return false; + } + if (keycode == limit) { + maccel_set_limit(maccel_get_limit() + get_mod_step(MACCEL_LIMIT_STEP)); + printf("MACCEL:keycode: tko: %.3f gro: %.3f ofs: %.3f LMT: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); + return false; + } + } + return true; +} +#else +bool process_record_maccel(uint16_t keycode, keyrecord_t *record, uint16_t toggle, uint16_t takeoff, uint16_t growth_rate, uint16_t offset, uint16_t limit) { + // provide a do-nothing keyrecord function so a user doesn't need to un-shim when disabling the keycodes + return true; +} +#endif + +// provide weak do-nothing shims so users do not need to un-shim when disabling via +__attribute__((weak)) void keyboard_post_init_maccel(void) { + return; +} diff --git a/users/bastardkb/features/maccel/maccel.h b/users/bastardkb/features/maccel/maccel.h new file mode 100644 index 00000000000..cd94ff6c7eb --- /dev/null +++ b/users/bastardkb/features/maccel/maccel.h @@ -0,0 +1,36 @@ +// Copyright 2024 burkfers (@burkfers) +// Copyright 2024 Wimads (@wimads) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "action.h" +#include "report.h" + +report_mouse_t pointing_device_task_maccel(report_mouse_t mouse_report); +bool process_record_maccel(uint16_t keycode, keyrecord_t *record, uint16_t toggle, uint16_t takeoff, uint16_t growth_rate, uint16_t offset, uint16_t limit); + +typedef struct _maccel_config_t { + float growth_rate; + float offset; + float limit; + float takeoff; + bool enabled; +} maccel_config_t; + +extern maccel_config_t g_maccel_config; + +void maccel_enabled(bool enable); +bool maccel_get_enabled(void); +void maccel_toggle_enabled(void); + +float maccel_get_takeoff(void); +float maccel_get_growth_rate(void); +float maccel_get_offset(void); +float maccel_get_limit(void); +void maccel_set_growth_rate(float val); +void maccel_set_growth_rate(float val); +void maccel_set_offset(float val); +void maccel_set_limit(float val); + +void keyboard_post_init_maccel(void); diff --git a/users/bastardkb/features/maccel/maccel_via.c b/users/bastardkb/features/maccel/maccel_via.c new file mode 100644 index 00000000000..4a9a13b00d6 --- /dev/null +++ b/users/bastardkb/features/maccel/maccel_via.c @@ -0,0 +1,174 @@ +// Copyright 2024 burkfers (@burkfers) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "maccel.h" +#include "via.h" +#ifdef MACCEL_DEBUG +# include "debug.h" // IWYU pragma: keep +#endif + +_Static_assert(sizeof(maccel_config_t) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +enum via_maccel_channel { + // clang-format off + id_maccel = 24 + // clang-format on +}; +enum via_maccel_ids { + // clang-format off + id_maccel_takeoff = 1, + id_maccel_growth_rate = 2, + id_maccel_offset = 3, + id_maccel_limit = 4, + id_maccel_enabled = 5 + // clang-format on +}; + +#define MACCEL_VIA_TKO_MIN 0 +#define MACCEL_VIA_TKO_MAX 5 +#define MACCEL_VIA_GRO_MIN 0.01 +#define MACCEL_VIA_GRO_MAX 5 +#define MACCEL_VIA_OFS_MIN 0 +#define MACCEL_VIA_OFS_MAX 15 +#define MACCEL_VIA_LMT_MIN 0 +#define MACCEL_VIA_LMT_MAX 1 + +#define MACCEL_VIA_UINT16_MIN 0 +#define MACCEL_VIA_UINT16_MAX 60000 // Not using the full range for historic reasons. Should be changed with breaking change requiring via json update. + +#define PROJECT(val, rmin, rmax, tmin, tmax) (((float)(val - rmin) / (float)(rmax - rmin)) * (float)(tmax - tmin)) + tmin +#define PROJECT_TO_VIA(val, rmin, rmax) PROJECT(val, rmin, rmax, MACCEL_VIA_UINT16_MIN, MACCEL_VIA_UINT16_MAX) +#define PROJECT_FROM_VIA(val, tmin, tmax) PROJECT(val, MACCEL_VIA_UINT16_MIN, MACCEL_VIA_UINT16_MAX, tmin, tmax) + +#define COMBINE_UINT8(one, two) (two | (one << 8)) + +// Handle the data received by the keyboard from the VIA menus +void maccel_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_maccel_takeoff: { + uint16_t takeoff = COMBINE_UINT8(value_data[0], value_data[1]); + + g_maccel_config.takeoff = PROJECT_FROM_VIA(takeoff, MACCEL_VIA_TKO_MIN, MACCEL_VIA_TKO_MAX); +#ifdef MACCEL_DEBUG + printf("MACCEL:via: TKO: %.3f grw: %.3f ofs: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); +#endif + break; + } + case id_maccel_growth_rate: { + uint16_t growth_rate = COMBINE_UINT8(value_data[0], value_data[1]); + + g_maccel_config.growth_rate = PROJECT_FROM_VIA(growth_rate, MACCEL_VIA_GRO_MIN, MACCEL_VIA_GRO_MAX); +#ifdef MACCEL_DEBUG + printf("MACCEL:via: tko: %.3f GRW: %.3f ofs: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); +#endif + break; + } + case id_maccel_offset: { + uint16_t offset = COMBINE_UINT8(value_data[0], value_data[1]); + + g_maccel_config.offset = PROJECT_FROM_VIA(offset, MACCEL_VIA_OFS_MIN, MACCEL_VIA_OFS_MAX); +#ifdef MACCEL_DEBUG + printf("MACCEL:via: tko: %.3f grw: %.3f OFS: %.3f lmt: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); +#endif + break; + } + case id_maccel_limit: { + uint16_t limit = COMBINE_UINT8(value_data[0], value_data[1]); + + g_maccel_config.limit = PROJECT_FROM_VIA(limit, MACCEL_VIA_LMT_MIN, MACCEL_VIA_LMT_MAX); +#ifdef MACCEL_DEBUG + printf("MACCEL:via: tko: %.3f grw: %.3f ofs: %.3f LMT: %.3f\n", g_maccel_config.takeoff, g_maccel_config.growth_rate, g_maccel_config.offset, g_maccel_config.limit); +#endif + break; + } + case id_maccel_enabled: { + g_maccel_config.enabled = value_data[0]; + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void maccel_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_maccel_takeoff: { + // uint16_t takeoff = (g_maccel_config.takeoff - 0.5) / (4.5 / 6) * 10000; + uint16_t takeoff = PROJECT_TO_VIA(g_maccel_config.takeoff, MACCEL_VIA_TKO_MIN, MACCEL_VIA_TKO_MAX); + value_data[0] = takeoff >> 8; + value_data[1] = takeoff & 0xFF; + break; + } + case id_maccel_growth_rate: { + uint16_t growth_rate = PROJECT_TO_VIA(g_maccel_config.growth_rate, MACCEL_VIA_GRO_MIN, MACCEL_VIA_GRO_MAX); + value_data[0] = growth_rate >> 8; + value_data[1] = growth_rate & 0xFF; + break; + } + case id_maccel_offset: { + uint16_t offset = PROJECT_TO_VIA(g_maccel_config.offset, MACCEL_VIA_OFS_MIN, MACCEL_VIA_OFS_MAX); + value_data[0] = offset >> 8; + value_data[1] = offset & 0xFF; + break; + } + case id_maccel_limit: { + uint16_t limit = PROJECT_TO_VIA(g_maccel_config.limit, MACCEL_VIA_LMT_MIN, MACCEL_VIA_LMT_MAX); + value_data[0] = limit >> 8; + value_data[1] = limit & 0xFF; + break; + } + case id_maccel_enabled: { + value_data[0] = g_maccel_config.enabled; + break; + } + } +} + +// Save the data to persistent memory after changes are made +void maccel_config_save(void) { + eeconfig_update_user_datablock(&g_maccel_config); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_and_data = &(data[2]); + + if (*channel_id == id_maccel) { + switch (*command_id) { + case id_custom_set_value: + maccel_config_set_value(value_and_data); + break; + case id_custom_get_value: + maccel_config_get_value(value_and_data); + break; + case id_custom_save: + maccel_config_save(); + break; + default: + *command_id = id_unhandled; + break; + } + return; + } + + *command_id = id_unhandled; +} + +void eeconfig_init_user(void) { + // Write default value to EEPROM now + eeconfig_update_user_datablock(&g_maccel_config); +} + +// On Keyboard startup +void keyboard_post_init_maccel(void) { + // Read custom menu variables from memory + eeconfig_read_user_datablock(&g_maccel_config); +} diff --git a/users/bastardkb/features/maccel/readme.md b/users/bastardkb/features/maccel/readme.md new file mode 100644 index 00000000000..d8437b5eb8c --- /dev/null +++ b/users/bastardkb/features/maccel/readme.md @@ -0,0 +1,295 @@ +# Mouse acceleration + +This feature was born from the frustration of not having a tweakable acceleration curve that could work between OSes and hosts and be specific to one device, catalyzed by multiple users expressing interest. + +## Installation + +### Installation (keymap) + +Choose this route if you do not maintain a userspace. + +Place the `maccel` directory in your keymap directory. For example, if you were using the `via` keymap on a BastardKB Dilemma Max, you'd place it to be `keyboards/bastardkb/dilemma/4x6_4/keymaps/via/maccel/`. + +Add to `rules.mk` (Create it if it does not exist): +```make +# MACCEL +SRC += ./maccel/maccel.c +ifeq ($(strip $(VIA_ENABLE)), yes) + ifeq ($(strip $(MACCEL_VIA_ENABLE)), yes) + SRC += ./maccel/maccel_via.c + endif +endif +OPT_DEFS += -DMACCEL_ENABLE +``` + +Add to your `keymap.c`, near the top: +```c +#ifdef MACCEL_ENABLE + #include "maccel/maccel.h" +#endif +``` + +Continue with "Installation (common)", below. + +### Installation (userspace) + +Choose this route if you maintain a userspace. + +Place the `maccel` directory within `features/` in your userspace. For example, if your username was burkfers, you'd place it to be `users/burkfers/features/maccel/`. + +Add to `rules.mk` in the top level of your userspace (Create it if not present): + +```make +MACCEL_ENABLE = yes + +include $(USER_PATH)/features/maccel/rules.mk +``` + +You may instead place `MACCEL_ENABLE = yes` in your keymap's `rules.mk` if you wish to only enable maccel for some boards. + +Add to your userspace source file, near the top: +```c +#ifdef MACCEL_ENABLE + #include "features/maccel/maccel.h" +#endif +``` + +Continue with "Installation (common)", below. + +### Installation (common) + +Make sure the `pointing_device_task_user()` function in your `keymap.c` or userspace-sources exists, and contains the following code: +```c +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + // ... +#ifdef MACCEL_ENABLE + return pointing_device_task_maccel(mouse_report); +#endif +} +``` + +To minimize the chance of maxing out the mouse reports, it is recommended to define extended mouse reports in your config.h: +```c +#define MOUSE_EXTENDED_REPORT +``` + +See the section on runtime adjusting by keycodes and on via support for installation steps for these optional features. + +## Configuration +Before configuring maccel, make sure you have turned off your OS acceleration settings: On Windows, this setting is called "Enhance pointer precision". And make sure there isn't any 3rd party mouse acceleration software running. + +Several characteristics of the acceleration curve can be tweaked by adding relevant defines to `config.h`: +```c +#define MACCEL_TAKEOFF 2.0 // lower/higher value = curve takes off more smoothly/abruptly +#define MACCEL_GROWTH_RATE 0.25 // lower/higher value = curve reaches its upper limit slower/faster +#define MACCEL_OFFSET 2.2 // lower/higher value = acceleration kicks in earlier/later +#define MACCEL_LIMIT 0.2 // lower limit of accel curve (minimum acceleration factor) +``` +[![](assets/accel_curve.png)](https://www.desmos.com/calculator/k9vr0y2gev) + +The graph above shows the acceleration curve. You can interpret this graph as follows: the horizontal axis is input velocity (ie. how fast you are physically moving your mouse/trackball/trackpad); the vertical axis is the acceleration factor, which is the factor with which the input speed will be multiplied, resulting in your new output speed on screen. You can also understand this as a DPI scaling factor: the curve maxes out at 1, meaning your mouse sensitivity will never go higher than your default DPI setting; at the start of the curve your sensitivity is scaled down to a minimum that can be set by the LIMIT variable. The limit in this example is 0.2, which means at the lowest speeds your mouse sensitivity is scaled down to an equivalent of 0.2 times your default DPI. + +**If you click on the image of the curve**, you will be linked to Desmos, where you can play around with the variables to understand how each of them affect the shape of the curve. But in short: + +* The TAKEOFF variable controls how smoothly or abruptly the acceleration curve takes off. A higher value will make it take off more abruptly, a lower value smoothens out the start of the curve. + +* The GROWTH_RATE variable sets the growth rate of the acceleration curve. A lower value will result in a flatter curve which takes longer to reach its LIMIT. A higher value will result in a steeper curve, which will reach its LIMIT faster. + +* The OFFSET variable moves the entire curve towards the right. Offsetting the curve to the right means acceleration will kick in later, which is useful for low speed precision - in effect what you would otherwise have used SNIPING mode for. The maccel feature basically eliminates the need for a sniping mode. + +* The LIMIT variable sets the lower limit for the acceleration curve. This is the minimum acceleration factor at which the curve will start. In effect this adjusts the sensitivity for low speed precision movements. + +* The upper limit of the curve is fixed at 1, which means that at high speed sensitivity equals your default DPI. If you want to adjust high speed sensitivity, adjust your DPI. + +A good starting point for tweaking your settings, is to set your default DPI slightly higher than what you'd use without acceleration. Then set your LIMIT variable to a factor that would scale down to what you normally might have set your sniping DPI. For example, if your usual default DPI is 900, you might set it now to 1000. And if your usual sniping DPI is 200, you might set your LIMIT to 0.2 (0.2*1000=200). From there you can start playing around with the variables until you arrive at something to your liking. + +**Debug console**: To aid in dialing in your settings just right, a debug mode exists to print mathy details to the console. The debug console will print your current DPI setting and variable settings, as well as the acceleration factor, the input and output velocity, and the input and output distance. Refer to the QMK documentation on how to *enable the console and debugging*, then enable mouse acceleration debugging in `config.h`: +```c +#define MACCEL_DEBUG +/* + * Requires enabling float support for printf! + */ +#undef PRINTF_SUPPORT_DECIMAL_SPECIFIERS +#define PRINTF_SUPPORT_DECIMAL_SPECIFIERS 1 +``` + +## Runtime adjusting of curve parameters by keycodes (optional) + +### Additional required installation steps + +To use keycodes to adjust the parameters without recompiling, two more build steps are required. +First, add five keycodes to your keycode enum. You may choose different names, as long as you use the same names in the following step. If you are not yet using custom keycodes, add the following snippet to `keymap.c`: +```c +enum my_keycodes { + MA_TOGGLE = QK_USER, // toggle mouse acceleration + MA_TAKEOFF, // mouse acceleration curve takeoff (initial acceleration) step key + MA_GROWTH_RATE, // mouse acceleration curve growth rate step key + MA_OFFSET, // mouse acceleration curve offset step key + MA_LIMIT, // mouse acceleration curve limit step key +}; +``` +Next, add another shim, this time to `process_record_user`. If you have not previously implemented this function, simply place the following snippet in your `keymap.c`: +```c +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_maccel(keycode, record, MA_TOGGLE, MA_TAKEOFF, MA_GROWTH_RATE, MA_OFFSET, MA_LIMIT)) { + return false; + } + /* insert your own macros here */ + return true; +} +``` +Take care to use the same names that you used in the previous step. + +See the configuration section on how to enable this feature once you have set it up. + +Once the additional keycodes and shim are added, this feature can be enabled in `config.h`: +``` +#define MACCEL_USE_KEYCODES +``` + +Lastly, place the new keycodes on your keymap. + +--- +### Acceleration keycode usage + +The four keycodes can be used to adjust the curve parameters. This is *not* persisted unless you also enabled the via option - Adjusted values are printed to the console to aid in finding the right settings for `config.h`. +The step keys will adjust the parameters by the following amounts, which can optionally be adjusted: + +| Parameter | Default step value | Define name | +| --- | --- | --- | +| Takeoff | `+0.01` | `MACCEL_TAKEOFF_STEP` | +| Growth rate | `+0.01` | `MACCEL_GROWTH_RATE_STEP` | +| Offset | `+0.1` | `MACCEL_OFFSET_STEP` | +| Limit | `+0.1` | `MACCEL_LIMIT_STEP` | + +The modifier keys can be used to alter the step effect: + +| Modifier | Effect | +| --- | --- | +| Shift | Reverse step (subtract instead of adding) | +| Control | `step value * 10` (Step 10 times faster) | + +Modifiers can be combined. + +With every adjustment, an informational message is printed to the console. + +## VIA support + +![](assets/via.png) + +Mouse acceleration can now be configured though via. If your keyboard is not already supported by via, you must first [create a via definition](https://www.caniusevia.com/docs/specification). + +Add to `rules.mk`, *before* the include added previously: +```make +MACCEL_VIA_ENABLE = yes +`````` + +Add a shim to `keyboard_post_init_user`: +```c +void keyboard_post_init_user(void) { + keyboard_post_init_maccel(); +} +``` + +Add the entire function to your keymap if not already present, or insert the call to `keyboard_post_init_maccel` in your existing implementation. + +You must also configure the size of the EEPROM user block by placing the following define in `config.h`: +```c +#define EECONFIG_USER_DATA_SIZE 20 +``` + +Please be aware of the following caveats: +- The maccel via support takes over your eeprom user block. If you are already storing values in eeprom in your userspace, you must manually merge the features. +- The maccel via support implements `via_custom_value_command_kb`. This is not compatible with keyboards that already add custom features to via. If your keyboard has custom via configuration, you must manually shim the keyboard-level callback. + +Create a custom via definition: Find your keyboard's via definition in the [via keyboards repository](https://github.com/the-via/keyboards/tree/master/v3) if you did not create your own. + +Extend its `menus` configuration by placing the [menu definition](assets/via.json) on the `menu` node. Completed examples are provided for these keyboards: + +- [Charybdis 3x5](assets/charybdis_3x5.json) +- [Charybdis 3x6](assets/charybdis_3x6.json) +- [Charybdis 4x6](assets/charybdis_4x6.json) +- [Dilemma v2](assets/dilemma_v2.json) +- [Dilemma Max](assets/dilemma_max.json) + +Finally, after flashing the firmware to your board, load the custom via definition in the design tab in [via](https://usevia.app) (you may have to enable the "Show Design Tab" option in the settings). + +# Setup checklist + +- Place files in `users/YOUR_USERNAME/features/maccel/` +- Include `maccel/rules.mk` in your `rules.mk` +- Shim `pointing_device_task_user` +- Add configuration defines for parameters and optionally debugging +- Optional: Config keycodes: + - Enable keycode support by define + - Create five keycodes in the keycode enum + - Shim `process_record_user` +- Optional: VIA support: + - Enable in `rules.mk` + - Shim `keyboard_post_init_user` + - Set user eeprom data block size + - Create custom via json and side-load it in the web app + +## Limitations + +**Mac OS compatibility:** + +Unfortunately it seems maccel does not work well together with Mac OS. We cannot say with certainty why, but it seems like Apple does some post processing to the mouse reports that distorts the maccel result, even when the OS level acceleration is disabled. But some consolation for mac users: the default mac OS acceleration implementation seems to be quite good. + +**Sensor compatibility:** +* PMW3360: fully compatible, elaborately tested +* Other PMW33xx sensors will very likely perform equally well (but not tested so far) +* Cirque trackpad: compatible, limited testing +* Azoteq: still some issues to be resolved, not yet compatible +* No other QMK compatible sensors have been tested so far. We expect most sensors to work fine with maccel, but there could always be unexpected driver/firmware related conflicts we are not aware of. +* If you are using maccel successfully (or unsuccessfully) with a sensor that isn't listed here, we'd love to hear! + +**MCU compatibility:** +* This feature makes extensive use of floating point operations, and as such is not likely to work on AVR processors. So far tested only on RP2040! + +It is currently unknown how the un-throttled polling when used with `POINTING_DEVICE_MOTION_PIN` would interact with the expensive calculations. + +## Breaking changes + +### 2024 March 12 + +This new release changes the acceleration curve from a up-scaling curve to a down-scaling curve, to match how other acceleration tools work, and to avoid forcing users to set a very low DPI setting - this had been the goal from the start, but it took until now to overcome the technical challenges to make this work smoothly. + +See the configuration bit of this readme for an explanation of how the new curve works. This change means that you will have to readjust your variables; but do not worry, it is fairly easy to get this dialed in to *exactly* to how you had it set before: + +* First, change your default DPI: $DPI_{new} = DPI_{old} * {limit}_{old}$ +* Second, change your LIMIT variable (which is now lower instead of upper limit): $limit_{new} = \dfrac{DPI_{old}}{DPI_{new}}$ +* Your other variables can remain the same. +* If using via, make sure to clear EEPROM for the new settings to take effect. + +### 2024 March 10 + +A keycode for toggling mouse acceleration was added: If you enabled maccel keycodes, you must add a fifth keycode to your enum and add it to the shim between the record and takeoff arguments. Don't forget to place it on your keymap! + +### 2024 March 1 + +If you're updating from a previous version, you will have to make manual adjustments to your integration. Refer to the instructions for details on what the current version expects: +- The parameters have changed names and were expanded: + - `STEEPNESS` is now `GROWTH_RATE`, `TAKEOFF` was added + - Change the define names in your `config.h` for the parameter settings and step settings (if applicable) + - If using keycodes: Change the shim in `process_record_user` to call a fourth keycode +- If using via: Clear EEPROM and use a new via json. Do NOT load a previous via backup without adjusting the maccel values to the new format! + +If you set GROWTH_RATE to your previous value of `STEEPNESS` and keep `TAKEOFF` at a high value (eg. `10`), the behavior will be similar to previous versions. + +## Release history +- 2024 March 12 - Release of improved down scaling accel curve +- 2024 March 10 - Addition of toggle keycode +- 2024 March 1 - Release of new four-parameter acceleration curve +- 2024 February 23 - New four-parameter acceleration curve and improved documentation +- 2024 February 07 - Experimental new DPI correction to achieve consistent acceleration behavior across different user DPI settings. +- 2024 February 06 - First release candidate. Feedback welcome! + +## Credits +Thanks to everyone who helped! +Including, but not limited to: +- Wimads (@wimads) and burkfers (@burkfers) wrote most of the code +- ankostis (@ankostis) for catalyzing discussion about improving the acceleration curve and providing several enhancements +- Quentin (@balanstik) for insightful commentary on the math, and testing +- ouglop (@ouglop) for insightful commentary on the math +- Drashna Jael're (@drashna) for coding tips and their invaluable bag of magic C tricks diff --git a/users/bastardkb/features/maccel/rules.mk b/users/bastardkb/features/maccel/rules.mk new file mode 100644 index 00000000000..9ef6fc3f673 --- /dev/null +++ b/users/bastardkb/features/maccel/rules.mk @@ -0,0 +1,9 @@ +ifeq ($(strip $(MACCEL_ENABLE)), yes) + SRC += $(USER_PATH)/features/maccel/maccel.c + ifeq ($(strip $(VIA_ENABLE)), yes) + ifeq ($(strip $(MACCEL_VIA_ENABLE)), yes) + SRC += $(USER_PATH)/features/maccel/maccel_via.c + endif + endif + OPT_DEFS += -DMACCEL_ENABLE +endif diff --git a/users/bastardkb/rules.mk b/users/bastardkb/rules.mk new file mode 100644 index 00000000000..5a78670a70b --- /dev/null +++ b/users/bastardkb/rules.mk @@ -0,0 +1 @@ +include $(USER_PATH)/features/maccel/rules.mk