From b5dd2bec950ba99e4436308d0826d3f16a029b2c Mon Sep 17 00:00:00 2001 From: kemonine Date: Sat, 14 Nov 2020 00:34:08 -0500 Subject: [PATCH] Update tidbit mouse keys based on tidbit mouse keys --- keyboards/nullbitsco/tidbit/config.h | 1 + keyboards/nullbitsco/tidbit/keymap.c | 64 +++++++++++++++--- .../nullbitsco/tidbit/layer-1---mouse.json | 20 +++--- .../nullbitsco/tidbit/layer-1---mouse.png | Bin 14789 -> 14804 bytes .../tidbit/keymaps/kemonine/config.h | 1 + .../tidbit/keymaps/kemonine/keymap.c | 64 +++++++++++++++--- 6 files changed, 124 insertions(+), 26 deletions(-) diff --git a/keyboards/nullbitsco/tidbit/config.h b/keyboards/nullbitsco/tidbit/config.h index 284498bc..e9d4ec96 100644 --- a/keyboards/nullbitsco/tidbit/config.h +++ b/keyboards/nullbitsco/tidbit/config.h @@ -29,6 +29,7 @@ #define MOUSEKEY_WHEEL_INTERVAL 50 #define MOUSEKEY_WHEEL_TIME_TO_MAX 20 #define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MK_COMBINED // Encoder #define ENCODERS_PAD_A { D3 } diff --git a/keyboards/nullbitsco/tidbit/keymap.c b/keyboards/nullbitsco/tidbit/keymap.c index 1188acf5..3f5eea2e 100644 --- a/keyboards/nullbitsco/tidbit/keymap.c +++ b/keyboards/nullbitsco/tidbit/keymap.c @@ -20,16 +20,31 @@ enum custom_keycodes { PROG = SAFE_RANGE, + ACCEL, + ACCEL_ADJ, }; +enum { + ACCEL_0 = 0, + ACCEL_1 = 1, + ACCEL_2 = 2, +}; +static uint8_t acceleration_level = ACCEL_0; +void change_accel(void) { + acceleration_level++; + if (acceleration_level > ACCEL_2) { + acceleration_level = ACCEL_0; + } +} + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Base layer (numpad) [0] = LAYOUT( - TO(1), PROG, KC_NO, \ - LCTL(LALT(KC_TAB)), LGUI(KC_DOWN), KC_NO, KC_AUDIO_VOL_UP, \ - KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_AUDIO_VOL_DOWN, \ - KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3, \ - KC_NO, KC_MS_WH_LEFT, KC_MS_WH_RIGHT, KC_ESC \ + TO(1), PROG, KC_AUDIO_VOL_UP, \ + KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_AUDIO_VOL_DOWN, \ + KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, LCTL(LALT(KC_TAB)), \ + KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, LGUI(KC_DOWN), \ + KC_NO, KC_ESC, ACCEL_ADJ, ACCEL \ ), // Function layer (numpad) @@ -52,10 +67,43 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { rgblight_disable_noeeprom(); bootloader_jump(); //jump to bootloader } - break; - + break; + case ACCEL: + if (record->event.pressed) { + switch(acceleration_level) { + case ACCEL_0: + register_code16(KC_ACL0); + break; + case ACCEL_1: + register_code16(KC_ACL1); + break; + case ACCEL_2: + register_code16(KC_ACL2); + break; + } + } else { + switch(acceleration_level) { + case ACCEL_0: + unregister_code16(KC_ACL0); + break; + case ACCEL_1: + unregister_code16(KC_ACL1); + break; + case ACCEL_2: + unregister_code16(KC_ACL2); + break; + } + } + return false; // Skip all further processing of this key + case ACCEL_ADJ: + if (record->event.pressed) { + } + else { + change_accel(); + } + return false; // Skip all further processing of this key default: - break; + break; } return true; } diff --git a/keyboards/nullbitsco/tidbit/layer-1---mouse.json b/keyboards/nullbitsco/tidbit/layer-1---mouse.json index ef3e08a7..dca94b0f 100644 --- a/keyboards/nullbitsco/tidbit/layer-1---mouse.json +++ b/keyboards/nullbitsco/tidbit/layer-1---mouse.json @@ -11,36 +11,36 @@ }, "TG(1)", "Boot", - "" + "Vol Up" ], [ - "Ctrl + Alt + Tab", - "GUI + Down", + "Wheel Left", "", - "Vol Up" + "Wheel Right", + "Vol Down" ], [ "Left Click", "Up", "Right Click", - "Vol Down" + "Ctrl + Alt + Tab" ], [ "Left", "Down", "Right", - "Mouse 3" + "GUI + Down" ], [ { "a": 5 }, - "W Up\nW Dn\n\n\n\n\nEnc", + "W Up\nW Dn", { "a": 7 }, - "W Left", - "W Right", - "Esc" + "Esc", + "Accel Mode", + "Accel" ] ] \ No newline at end of file diff --git a/keyboards/nullbitsco/tidbit/layer-1---mouse.png b/keyboards/nullbitsco/tidbit/layer-1---mouse.png index 67818b19dfd3832a96d3f951f5010a991468d080..52f8cf79b72c81ccb85e57aa49a93fc7900f889a 100644 GIT binary patch literal 14804 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 literal 14789 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 T7O4uaXCkhsXet*fq5}U90c~4d diff --git a/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/config.h b/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/config.h index 5145f11c..625b85be 100644 --- a/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/config.h +++ b/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/config.h @@ -29,6 +29,7 @@ #define MOUSEKEY_WHEEL_INTERVAL 50 #define MOUSEKEY_WHEEL_TIME_TO_MAX 20 #define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MK_COMBINED // Encoder #define ENCODERS_PAD_A { D3 } diff --git a/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/keymap.c b/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/keymap.c index 4face859..b6d6b1fa 100644 --- a/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/keymap.c +++ b/qmk/keyboards/nullbitsco/tidbit/keymaps/kemonine/keymap.c @@ -20,16 +20,31 @@ enum custom_keycodes { PROG = SAFE_RANGE, + ACCEL, + ACCEL_ADJ, }; +enum { + ACCEL_0 = 0, + ACCEL_1 = 1, + ACCEL_2 = 2, +}; +static uint8_t acceleration_level = ACCEL_0; +void change_accel(void) { + acceleration_level++; + if (acceleration_level > ACCEL_2) { + acceleration_level = ACCEL_0; + } +} + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Base layer (numpad) [0] = LAYOUT( - TO(1), PROG, KC_NO, \ - LCTL(LALT(KC_TAB)), LGUI(KC_DOWN), KC_NO, KC_AUDIO_VOL_UP, \ - KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_AUDIO_VOL_DOWN, \ - KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN3, \ - KC_NO, KC_MS_WH_LEFT, KC_MS_WH_RIGHT, KC_ESC \ + TO(1), PROG, KC_AUDIO_VOL_UP, \ + KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_AUDIO_VOL_DOWN, \ + KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, LCTL(LALT(KC_TAB)), \ + KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, LGUI(KC_DOWN), \ + KC_NO, KC_ESC, ACCEL_ADJ, ACCEL \ ), // Function layer (numpad) @@ -52,10 +67,43 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { rgblight_disable_noeeprom(); bootloader_jump(); //jump to bootloader } - break; - + break; + case ACCEL: + if (record->event.pressed) { + switch(acceleration_level) { + case ACCEL_0: + register_code16(KC_ACL0); + break; + case ACCEL_1: + register_code16(KC_ACL1); + break; + case ACCEL_2: + register_code16(KC_ACL2); + break; + } + } else { + switch(acceleration_level) { + case ACCEL_0: + unregister_code16(KC_ACL0); + break; + case ACCEL_1: + unregister_code16(KC_ACL1); + break; + case ACCEL_2: + unregister_code16(KC_ACL2); + break; + } + } + return false; // Skip all further processing of this key + case ACCEL_ADJ: + if (record->event.pressed) { + } + else { + change_accel(); + } + return false; // Skip all further processing of this key default: - break; + break; } return true; }