summaryrefslogtreecommitdiff
path: root/users/bbaserdem/bb-encoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/bbaserdem/bb-encoder.c')
-rw-r--r--users/bbaserdem/bb-encoder.c514
1 files changed, 0 insertions, 514 deletions
diff --git a/users/bbaserdem/bb-encoder.c b/users/bbaserdem/bb-encoder.c
deleted file mode 100644
index eea9751051..0000000000
--- a/users/bbaserdem/bb-encoder.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/* Copyright 2021 Batuhan Başerdem
- * <baserdem.batuhan@gmail.com> @bbaserdem
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-#include "bb-encoder.h"
-
-// Need this to call velocikey activation
-#ifdef VELOCIKEY_ENABLE
-# include "velocikey.h"
-#endif // VELOCIKEY_ENABLE
-// Need memcpy and memcmp from string.h along with transfer stuff
-#ifdef OLED_ENABLE
-# include <string.h>
-#endif // OLED_ENABLE
-
-/* ROTARY ENCODER
- * This contains my general rotary encoder code
- * Encoders each have a list of different modes they can be in.
- * Each mode also have an on click action as well.
- * Modes can be cycled using either shift-click or ctrl-click
- * Modes can be reset using OS click
- * Some modes are only accessible through some keymap layers
- */
-
-// Default state for the encoders
-void reset_encoder_state(void) {
- userspace_config.e0base = 0;
- userspace_config.e0point = 0;
- userspace_config.e0rgb = 0;
- userspace_config.e1base = 1;
- userspace_config.e1point = 1;
- userspace_config.e1rgb = 1;
-}
-
-// Encoder scroll functionality
-bool encoder_update_user(uint8_t index, bool clockwise) {
- uint8_t this_number;
- // Differentiate layer roles
- switch (get_highest_layer(layer_state)) {
-# ifdef RGB_MATRIX_ENABLE
- case _MEDI:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0rgb;
- } else if (index == 1) {
- this_number = userspace_config.e1rgb;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Effect the RGB mode
- if (clockwise) {
- rgb_matrix_step_noeeprom();
- } else {
- rgb_matrix_step_reverse_noeeprom();
- }
- break;
- case 1: // Effect the RGB hue
- if (clockwise) {
- rgb_matrix_increase_hue_noeeprom();
- } else {
- rgb_matrix_decrease_hue_noeeprom();
- }
- break;
- case 2: // Effect the RGB saturation
- if (clockwise) {
- rgb_matrix_increase_sat_noeeprom();
- } else {
- rgb_matrix_decrease_sat_noeeprom();
- }
- break;
- case 3: // Effect the RGB brightness
- if (clockwise) {
- rgb_matrix_increase_val_noeeprom();
- } else {
- rgb_matrix_decrease_val_noeeprom();
- }
- break;
- case 4: // Effect the RGB effect speed
- if (clockwise) {
- rgb_matrix_increase_speed_noeeprom();
- } else {
- rgb_matrix_decrease_speed_noeeprom();
- }
- break;
- }
- break;
-# endif // RGB_MATRIX_ENABLE
-# ifdef MOUSEKEY_ENABLE
- case _MOUS:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0point;
- } else if (index == 1) {
- this_number = userspace_config.e1point;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Move mouse on horizontal axis
- if (clockwise) {
- tap_code(KC_MS_R);
- } else {
- tap_code(KC_MS_L);
- }
- break;
- case 1: // Move mouse on vertical axis
- if (clockwise) {
- tap_code(KC_MS_D);
- } else {
- tap_code(KC_MS_U);
- }
- break;
- case 2: // Move mouse wheel on vertical axis
- if (clockwise) {
- tap_code(KC_WH_D);
- } else {
- tap_code(KC_WH_U);
- }
- break;
- case 3: // Move mouse on horizontal axis
- if (clockwise) {
- tap_code(KC_WH_R);
- } else {
- tap_code(KC_WH_L);
- }
- break;
- }
- break;
-# endif // MOUSEKEY_ENABLE
- default:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0base;
- } else if (index == 1) {
- this_number = userspace_config.e1base;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Volume
- if (clockwise) {
- tap_code16(KC_VOLU);
- } else {
- tap_code16(KC_VOLD);
- }
- break;
- case 1: // Song change
- if (clockwise) {
- tap_code16(KC_MNXT);
- } else {
- tap_code16(KC_MPRV);
- }
- break;
- case 2: // Move to audio sink
- if (clockwise) {
- tap_code16(KC_F13);
- } else {
- tap_code16(S(KC_F13));
- }
- break;
- case 3: // Volume of source
- if (clockwise) {
- tap_code16(S(KC_VOLU));
- } else {
- tap_code16(C(KC_VOLD));
- }
- break;
- case 4: // Move to audio source
- if (clockwise) {
- tap_code16(C(KC_F13));
- } else {
- tap_code16(C(S(KC_F13)));
- }
- break;
- case 5: // Left-right
- if (clockwise) {
- tap_code16(KC_RGHT);
- } else {
- tap_code16(KC_LEFT);
- }
- break;
- case 6: // Up-down
- if (clockwise) {
- tap_code16(KC_DOWN);
- } else {
- tap_code16(KC_UP);
- }
- break;
- case 7: // Page Up-down
- if (clockwise) {
- tap_code16(KC_PGDN);
- } else {
- tap_code16(KC_PGUP);
- }
- break;
- case 8: // Delete
- if (clockwise) {
- tap_code16(KC_DEL);
- } else {
- tap_code16(KC_BSPC);
- }
- break;
- }
- break;
- }
- return false;
-}
-
-void encoder_click_action(uint8_t index) {
- uint8_t this_number;
- // Differentiate layer roles
- switch (get_highest_layer(layer_state)) {
-# ifdef RGB_MATRIX_ENABLE
- case _MEDI:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0rgb;
- } else if (index == 1) {
- this_number = userspace_config.e1rgb;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Return to no animation
- rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
- break;
- case 1:
- case 2:
- case 3: // Toggle
- rgb_matrix_increase_val_noeeprom();
- break;
- case 4: // Toggle velocikey
-# ifdef VELOCIKEY_ENABLE
- velocikey_toggle();
-# endif // VELOCIKEY_ENABLE
- break;
- }
- break;
-# endif // RGB_MATRIX_ENABLE
-# ifdef MOUSEKEY_ENABLE
- case _MOUS:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0point;
- } else if (index == 1) {
- this_number = userspace_config.e1point;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Left click
- tap_code16(KC_BTN1);
- break;
- case 1: // Right click
- tap_code16(KC_BTN2);
- break;
- case 2:
- case 3: // Middle click
- tap_code16(KC_BTN2);
- break;
- }
- break;
-# endif // MOUSEKEY_ENABLE
- default:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0base;
- } else if (index == 1) {
- this_number = userspace_config.e1base;
- } else {
- this_number = 128;
- }
- switch(this_number) {
- case 0: // Toggle mute
- case 2:
- tap_code16(KC_MUTE);
- break;
- case 1: // Pause
- tap_code16(KC_MPLY);
- break;
- case 3: // Mute source
- case 4:
- tap_code16(A(KC_MUTE));
- break;
- case 5: // Insert
- tap_code16(KC_INS);
- break;
- case 6: // Capslock
- tap_code16(KC_CAPS);
- break;
- case 7: // Redo
- tap_code16(BB_REDO);
- break;
- case 8: // Undo
- tap_code16(BB_UNDO);
- break;
- }
- break;
- }
-}
-
-bool process_record_encoder(uint16_t keycode, keyrecord_t *record) {
- // Check if and which encoder
- int encoder_index = -1;
-
- // Get the pressed encoder
- switch (keycode) {
- case BB_ENC0:
- encoder_index = 0;
- break;
- case BB_ENC1:
- encoder_index = 1;
- break;
- }
-
- // Activate encoder function of button
- if ((encoder_index >= 0) & (!record->event.pressed)) {
- // If shifted, move mode one point forward
- if (get_mods() & MOD_MASK_SHIFT) {
- switch (get_highest_layer(layer_state)) {
-# ifdef RGB_MATRIX_ENABLE
- case _MEDI:
- if (encoder_index == 0) {
- userspace_config.e0rgb = (userspace_config.e0rgb + 1) % 5;
- } else {
- userspace_config.e1rgb = (userspace_config.e1rgb + 1) % 5;
- }
- break;
-# endif // RGB_MATRIX_ENABLE
-# ifdef MOUSEKEY_ENABLE
- case _MOUS:
- if (encoder_index == 0) {
- userspace_config.e0point = (userspace_config.e0point + 1) % 4;
- } else {
- userspace_config.e1point = (userspace_config.e1point + 1) % 4;
- }
- break;
-# endif // MOUSEKEY_ENABLE
- default:
- if (encoder_index == 0) {
- userspace_config.e0base = (userspace_config.e0base + 1) % 9;
- } else {
- userspace_config.e1base = (userspace_config.e1base + 1) % 9;
- }
- break;
- }
- // If ctrl is active, move mode one point backwards
- } else if (get_mods() & MOD_MASK_CTRL) {
- switch (get_highest_layer(layer_state)) {
-# ifdef RGB_MATRIX_ENABLE
- case _MEDI:
- if (encoder_index == 0) {
- userspace_config.e0rgb = (userspace_config.e0rgb + 5 - 1) % 5;
- } else {
- userspace_config.e1rgb = (userspace_config.e1rgb + 5 - 1) % 5;
- }
- break;
-# endif // RGB_MATRIX_ENABLE
-# ifdef MOUSEKEY_ENABLE
- case _MOUS:
- if (encoder_index == 0) {
- userspace_config.e0point = (userspace_config.e0point + 4 - 1) % 4;
- } else {
- userspace_config.e1point = (userspace_config.e1point + 4 - 1) % 4;
- }
- break;
-# endif // MOUSEKEY_ENABLE
- default:
- if (encoder_index == 0) {
- userspace_config.e0base = (userspace_config.e0base + 9 - 1) % 9;
- } else {
- userspace_config.e1base = (userspace_config.e1base + 9 - 1) % 9;
- }
- break;
- }
- // If meta is active, reset the encoder states
- } else if (get_mods() & MOD_MASK_GUI) {
- reset_encoder_state();
- eeconfig_update_user(userspace_config.raw);
- // If nothing else; just perform the click action
- } else {
- encoder_click_action(encoder_index);
- }
- }
- return true;
-}
-
-// For printing status to OLED
-#ifdef OLED_ENABLE
-void encoder_state_string(uint8_t index, uint8_t layer, char* buffer) {
- uint8_t this_number;
- // Get the layer straight from the main function
- switch (layer) {
- // If RGB control mode is enabled
-# ifdef RGB_MATRIX_ENABLE
- case _MEDI:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0rgb;
- } else if (index == 1) {
- this_number = userspace_config.e1rgb;
- } else {
- this_number = 128;
- }
- switch (this_number) {
- case 0:
- strcpy(buffer, "ani mode");
- break;
- case 1:
- strcpy(buffer, "hue ");
- break;
- case 2:
- strcpy(buffer, "saturat.");
- break;
- case 3:
- strcpy(buffer, "bright. ");
- break;
- case 4:
- strcpy(buffer, "ani. spd");
- break;
- default:
- strcpy(buffer, " -N/A- ");
- break;
- }
- break;
-# endif // RGB_MATRIX_ENABLE
- // If pointer control is enabled
-# ifdef MOUSEKEY_ENABLE
- case _MOUS:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0point;
- } else if (index == 1) {
- this_number = userspace_config.e1point;
- } else {
- this_number = 128;
- }
- switch (this_number) {
- case 0:
- strcpy(buffer, "Lateral ");
- break;
- case 1:
- strcpy(buffer, "Vertical");
- break;
- case 2:
- strcpy(buffer, "Scr. Ver");
- break;
- case 3:
- strcpy(buffer, "Scr. Lat");
- break;
- default:
- strcpy(buffer, " -N/A- ");
- break;
- }
- break;
-# endif // MOUSEKEY_ENABLE
- default:
- // Get correct index
- if (index == 0) {
- this_number = userspace_config.e0base;
- } else if (index == 1) {
- this_number = userspace_config.e1base;
- } else {
- this_number = 128;
- }
- switch (this_number) {
- case 0:
- strcpy(buffer, "Volume ");
- break;
- case 1:
- strcpy(buffer, "Song ");
- break;
- case 2:
- strcpy(buffer, "Sink ");
- break;
- case 3:
- strcpy(buffer, "Src. Vol");
- break;
- case 4:
- strcpy(buffer, "Source ");
- break;
- case 5:
- strcpy(buffer, "Arrow LR");
- break;
- case 6:
- strcpy(buffer, "Arrow UD");
- break;
- case 7:
- strcpy(buffer, "Page U/D");
- break;
- case 8:
- strcpy(buffer, "Erase ");
- break;
- default:
- strcpy(buffer, " -N/A- ");
- break;
- }
- break;
- }
-}
-#endif // OLED_ENABLE