From a5f547f1076205db43d68d3a28e453a8e3069cee Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Fri, 25 Jun 2021 00:10:49 -0600 Subject: [PATCH] Add mouse wiggler and enhanced lock function --- keymap/keymap.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++-- keymap/keymap.h | 2 ++ keymap/rules.mk | 2 +- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/keymap/keymap.c b/keymap/keymap.c index 52470f9..9cd3dd2 100644 --- a/keymap/keymap.c +++ b/keymap/keymap.c @@ -7,6 +7,7 @@ #define _T3 _TALI_LAYER3 #define _GL _GAME_LAYER #define _FL _FUNCTION_LAYER +#define _F2 _FUNCTION2_LAYER #define _UL _UNB_W_LAY #define _U2 _UNB_W_LAY_2 #define _TT _TEAMS_LAYER @@ -29,6 +30,8 @@ enum ashe_keycodes { AD_UASH, // Æ: Upper-case ash AD_LASH, // æ: Lower-case ash AD_TEAM, // Teams push-to-talk macro + AD_MOUS, // Toggle mouse wiggle + AD_LOCK, // Lock screen and toggle layer // Pomodoro ADP_PAU, // Pause @@ -51,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_TYPING_LAYER] = LAYOUT_65_ansi_blocker( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_RCTL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, \ + MO(_F2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \ KC_LCTL, AD_WIND, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT \ ), @@ -86,10 +89,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION_LAYER] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RCTL(KC_BSPC), RALT(KC_PSCR), \ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, TG(_TL), _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_DEL, \ - _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, TG(_GL), TG(_UL), _______, _______, G(KC_L), _______, _______, RCTL(KC_ENT), KC_VOLU, \ + _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, TG(_GL), TG(_UL), _______, _______, AD_LOCK, _______, _______, RCTL(KC_ENT), KC_VOLU, \ _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, RCTL(KC_SLSH), _______, KC_PGUP, KC_VOLD, \ KC_NLCK, _______, _______, KC_MEDIA_PLAY_PAUSE, _______, MO(_FL), RCTL(KC_LEFT), KC_PGDN, RCTL(KC_RGHT) \ ), + [_FUNCTION2_LAYER] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + MO(_F2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, AD_MOUS, _______, _______, _______, _______, _______ \ + ), [_WIN_LAYER] = LAYOUT_65_ansi_blocker( KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, TG(_TT), _______, _______, _______, _______, _______, _______, _______, _______, _______, \ @@ -156,6 +166,7 @@ void keyboard_post_init_user(void) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; static bool gui_disable_tap; + bool had_shift = MODS_SHIFT; // Enable / disable WIN_LAYER if (keycode == AD_WIND) { @@ -232,6 +243,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { unregister_code(KC_LSHIFT); return false; + case AD_MOUS: + if (!record -> event.pressed) return false; + enable_mouse_wiggle = !enable_mouse_wiggle; + return false; + + case AD_LOCK: + if (record -> event.pressed) { + // Lock device + if (had_shift) { + unregister_code(KC_RSHIFT); + } + + register_code(KC_LGUI); + tap_code(KC_L); + unregister_code(KC_LGUI); + + if (had_shift) { + register_code(KC_RSHIFT); + } + } else { + if (had_shift) { + layer_on(_TALI_LAYER); + } + } + return false; + // Pomodoro new, play / payse case ADP_NEW: if (!record->event.pressed) return false; @@ -329,6 +366,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } void rgb_matrix_indicators_user(void) { + static uint32_t wiggle_timer; + static bool wiggle_left; + if (g_suspend_state || disable_layer_color || rgb_matrix_get_flags() == LED_FLAG_NONE || rgb_matrix_get_flags() == LED_FLAG_UNDERGLOW) { @@ -338,6 +378,25 @@ void rgb_matrix_indicators_user(void) { set_layer_color(get_highest_layer(layer_state)); tick_pom(); + + if (enable_mouse_wiggle) { + hsv_matrix_set_color(61, (uint8_t[3]) C_TALI); + + if (!wiggle_timer) { + wiggle_timer = timer_read32(); + } + + if (timer_elapsed32(wiggle_timer) > 1500) { + wiggle_timer = 0; + wiggle_left = !wiggle_left; + + if (wiggle_left) { + tap_code(KC_MS_LEFT); + } else { + tap_code(KC_MS_RIGHT); + } + } + } } const uint16_t NUMPAD_CODES[] = { diff --git a/keymap/keymap.h b/keymap/keymap.h index b8dbc86..cf25fbd 100644 --- a/keymap/keymap.h +++ b/keymap/keymap.h @@ -21,6 +21,7 @@ enum layout_names { _UNB_W_LAY, _UNB_W_LAY_2, _FUNCTION_LAYER, + _FUNCTION2_LAYER, _WIN_LAYER, _TALI_LAYER, _TALI_LAYER2, @@ -31,5 +32,6 @@ enum layout_names { extern bool g_suspend_state; bool disable_layer_color; +bool enable_mouse_wiggle; void send_alt_code(int); \ No newline at end of file diff --git a/keymap/rules.mk b/keymap/rules.mk index d6544e8..5030849 100644 --- a/keymap/rules.mk +++ b/keymap/rules.mk @@ -5,7 +5,7 @@ BOOTMAGIC_ENABLE = no # AUTO_SHIFT_ENABLE = yes # Auto Shift NKRO_ENABLE = yes # USB Nkey Rollover DYNAMIC_MACRO_ENABLE = no # Dynamic macro recording and play -MOUSEKEY_ENABLE = no # Enable mouse control keycodes. Increases firmware size. +MOUSEKEY_ENABLE = yes # Enable mouse control keycodes. Increases firmware size. TAP_DANCE_ENABLE = no # Enable tap dance keys CONSOLE_ENABLE = no # Enable debugging console. Increases firmware size. TERMINAL_ENABLE = no