Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Copyright 2020 cfbender
- *
- * 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 QMK_KEYBOARD_H
- #define _mediaControl 0
- #define _mayaControl 1
- #define _psControl 2
- #define _layerSelector 3
- #define _codingControl 4
- #define _codingControlV1 5
- #define _codingControlV2 6
- #define SAVE LCTL(KC_S)
- #define OPEN LCTL(KC_O)
- #define COPY LCTL(KC_C)
- #define PAST LCTL(KC_V)
- #define CUNDO LCTL(LALT(KC_Z))
- #define INVERT LCTL(LSFT(KC_I))
- #define NLAYER LSFT(LCTL(KC_N))
- #define UNDO LCTL(KC_Z)
- #define TRANS LCTL(KC_T)
- #define ALIGNL LCTL(LSFT(KC_L))
- #define ALIGNC LCTL(LSFT(KC_C))
- #define ALIGNR LCTL(LSFT(KC_R))
- #define BRINGF LCTL(KC_RBRC)
- #define BRINGB LCTL(KC_LBRC)
- // Illustrator layer shortcuts.
- #define SHAPE LSFT(KC_M)
- #define RULER LCTL(LALT(KC_R))
- // Premiere layer shortcuts.
- #define REDO LCTL(LSFT(KC_Z))
- #define EXPORT LCTL(KC_M)
- #define IMPORT LCTL(KC_I)
- #define PCOPY LCTL(KC_V)
- #define PPASTE LCTL(LSFT(KC_V))
- // Experience Design layer shortcuts. (can be used with others too.)
- #define NEW LCTL(KC_N)
- #define LOCK LCTL(KC_L)
- #define SYMB LCTL(KC_K)
- #define HIDE LCTL(KC_SCLN)
- #define REPEAT LCTL(KC_R)
- #define MASK LCTL(LSFT(KC_M))
- #define GROUP LCTL(KC_G)
- #define UNGRP LCTL(LSFT(KC_G))
- #define VIEW LCTL(KC_TAB)
- #define HORZ LSFT(KC_C)
- #define VERT LSFT(KC_M)
- //static uint8_t current_layer = 0;
- enum { TD_RGB = 0 };
- enum { TD_Layer = 1 };
- enum my_keycodes { CC_LayerSwitch = SAFE_RANGE, CC_runCodeAll, CC_runCodeSelection, CC_MAYA_runCodeAll, CC_MAYA_runCodeSelection,CC_smartCMD1 };
- void encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- switch (biton32(layer_state)) {
- case 6:
- if (clockwise) {
- tap_code(KC_RIGHT);
- } else {
- tap_code(KC_LEFT);
- }
- break;
- case 5:
- if (clockwise) {
- tap_code(KC_DOWN);
- } else {
- tap_code(KC_UP);
- }
- break;
- case 4:
- if (clockwise) {
- tap_code16(C(KC_Y));
- } else {
- tap_code16(C(KC_Z));
- }
- break;
- case 3:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- case 2:
- if (clockwise) {
- tap_code16(LCTL(LSFT(KC_Z)));
- } else {
- tap_code16(LCTL(KC_Z));
- }
- break;
- case 1:
- if (clockwise) {
- tap_code16(C(KC_Y));
- } else {
- tap_code16(C(KC_Z));
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- }
- }
- }
- //void keyboard_post_init_user(void) {
- // Customise these values to desired behaviour
- //debug_enable = true;
- //debug_matrix = true;
- //debug_keyboard=true;
- // debug_mouse=true;
- //}
- /*
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_PGUP:
- if (record->event.pressed) {
- if (current_layer == HIGHEST_LAYER) {
- for (int i = 1; i <= HIGHEST_LAYER; i++) {
- layer_off(i);
- }
- current_layer = 0;
- } else {
- current_layer++;
- layer_on(current_layer);
- }
- }
- return false;
- case KC_PGDOWN:
- if (record->event.pressed) {
- if (current_layer == 0) {
- for (int i = 1; i <= HIGHEST_LAYER; i++) {
- layer_on(i);
- }
- current_layer = HIGHEST_LAYER;
- } else {
- layer_off(current_layer);
- current_layer--;
- }
- }
- return false;
- default:
- return true;
- }
- }
- */
- void dance_rgb_finished(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code(KC_MEDIA_PREV_TRACK);
- unregister_code(KC_MEDIA_PREV_TRACK);
- } else if (state->count == 2) {
- register_code(KC_MEDIA_NEXT_TRACK);
- unregister_code(KC_MEDIA_NEXT_TRACK);
- } else if (state->count == 3) {
- //smart command test
- register_code(KC_LCTRL);
- register_code(KC_LSHIFT);
- register_code(KC_S);
- unregister_code(KC_LCTRL);
- unregister_code(KC_LSHIFT);
- unregister_code(KC_S);
- }
- }
- void layerChange(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- //register_code(KC_PGUP);
- //unregister_code(KC_PGUP);
- //layer_move(_layerSelector);
- switch (biton32(layer_state)) {
- case 6:
- layer_move(_codingControl);
- break;
- case 5:
- layer_move(_codingControlV2);
- break;
- case 3:
- rgblight_toggle();
- break;
- case 2:
- register_code(KC_B);
- unregister_code(KC_B);
- break;
- case 1:
- register_code(KC_LCTRL);
- register_code(KC_A);
- unregister_code(KC_LCTRL);
- unregister_code(KC_A);
- break;
- default:
- register_code(KC_AUDIO_MUTE);
- unregister_code(KC_AUDIO_MUTE);
- break;
- }
- //rgblight_toggle();
- //rgblight_sethsv_noeeprom(HSV_PURPLE);
- } else if (state->count == 2) {
- //register_code(KC_PGDOWN);
- //unregister_code(KC_PGDOWN);
- switch (biton32(layer_state)) {
- case 6:
- layer_move(_codingControl);
- break;
- case 3:
- rgblight_toggle();
- break;
- case 2:
- register_code(KC_B);
- unregister_code(KC_B);
- break;
- case 1:
- register_code(KC_LCTRL);
- register_code(KC_A);
- unregister_code(KC_LCTRL);
- unregister_code(KC_A);
- break;
- default:
- register_code(KC_AUDIO_MUTE);
- unregister_code(KC_AUDIO_MUTE);
- break;
- }
- //rgblight_mode(1);
- // rgblight_sethsv_noeeprom(HSV_BLUE);
- }
- }
- // All tap dance functions would go here. Only showing this one.
- qk_tap_dance_action_t tap_dance_actions[] = {[TD_RGB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_rgb_finished, NULL),
- [TD_Layer] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, layerChange, NULL)};
- //
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // buttion closest to usb is first
- [_mediaControl] = LAYOUT(CC_LayerSwitch, TD(TD_RGB), KC_MEDIA_PLAY_PAUSE, KC_PGUP, KC_PGDN),
- [_mayaControl] = LAYOUT(CC_LayerSwitch, KC_F8, KC_F9, CC_MAYA_runCodeSelection,CC_MAYA_runCodeAll),
- [_psControl] = LAYOUT(CC_LayerSwitch, OPEN, SAVE, COPY, PAST),
- [_layerSelector] = LAYOUT(TD(TD_RGB), TO(_mediaControl), TO(_mayaControl), TO(_codingControl), TO(_psControl) ),
- [_codingControl] = LAYOUT(CC_LayerSwitch, COPY, PAST, CC_runCodeSelection,CC_runCodeAll),
- [_codingControlV1] = LAYOUT(TD(TD_Layer), COPY, PAST, CC_runCodeSelection,CC_runCodeAll),
- [_codingControlV2] = LAYOUT(TD(TD_Layer), COPY, PAST, CC_runCodeSelection,CC_runCodeAll),
- };
- layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _codingControlV2:
- rgblight_mode(17);
- rgblight_sethsv_noeeprom(HSV_GOLD);
- break;
- case _codingControlV1:
- rgblight_mode(16);
- rgblight_sethsv_noeeprom(HSV_GOLD);
- break;
- case _codingControl:
- rgblight_mode(1);
- rgblight_sethsv_noeeprom(HSV_GOLD);
- break;
- case _layerSelector:
- rgblight_mode(18);
- rgblight_sethsv_noeeprom(HSV_WHITE);
- break;
- case _mediaControl:
- rgblight_mode(9);
- rgblight_sethsv_noeeprom(HSV_BLUE);
- break;
- case _mayaControl:
- rgblight_mode(1);
- rgblight_sethsv_noeeprom(HSV_AZURE);
- break;
- case _psControl:
- rgblight_mode(1);
- rgblight_sethsv_noeeprom(HSV_BLUE);
- break;
- default: // for any other layers, or the default layer
- rgblight_mode(9);
- rgblight_sethsv_noeeprom(HSV_BLUE);
- break;
- }
- return state;
- }
- static uint16_t key_timer;
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_MEDIA_PLAY_PAUSE:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- register_code(KC_LCTRL);
- register_code(KC_LSHIFT);
- register_code(KC_D);
- unregister_code(KC_LCTRL);
- unregister_code(KC_LSHIFT);
- unregister_code(KC_D);
- return false;
- } else {
- // if key was tapped
- register_code(KC_MEDIA_PLAY_PAUSE);
- unregister_code(KC_MEDIA_PLAY_PAUSE);
- return true;
- }
- }
- case CC_MAYA_runCodeSelection:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- tap_code16(LCTL(KC_ENTER));
- return false;
- } else {
- // if key was tapped
- register_code(KC_F10);
- unregister_code(KC_F10);
- return true;
- }
- }
- case CC_MAYA_runCodeAll:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- tap_code16(LCTL(KC_A));
- tap_code16(LCTL(KC_ENTER));
- return false;
- } else {
- // if key was tapped
- register_code(KC_F11);
- unregister_code(KC_F11);
- return true;
- }
- }
- case CC_runCodeSelection:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- tap_code16(LCTL(KC_ENTER));
- return false;
- } else {
- // if key was tapped
- register_code(KC_PGDN);
- unregister_code(KC_PGDN);
- return true;
- }
- }
- case CC_runCodeAll:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- tap_code16(LCTL(KC_A));
- tap_code16(LCTL(KC_ENTER));
- return false;
- } else {
- // if key was tapped
- register_code(KC_PGUP);
- unregister_code(KC_PGUP);
- return true;
- }
- }
- case KC_PGUP:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- register_code(KC_LSHIFT);
- register_code(KC_DEL);
- unregister_code(KC_LSHIFT);
- unregister_code(KC_DEL);
- return false;
- } else {
- // if key was tapped
- register_code(KC_PGUP);
- unregister_code(KC_PGUP);
- return true;
- }
- }
- break;
- case KC_PGDN:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 200) {
- register_code(KC_LCTRL);
- register_code(KC_LALT);
- register_code(KC_DEL);
- unregister_code(KC_LCTRL);
- unregister_code(KC_LALT);
- unregister_code(KC_DEL);
- return false;
- } else {
- // if key was tapped
- register_code(KC_PGDN);
- unregister_code(KC_PGDN);
- return true;
- }
- }
- break;
- case CC_LayerSwitch:
- if (record->event.pressed) {
- key_timer = timer_read(); // start the timer
- return false; // return false to keep the 1 from being sent
- } else {
- // If key was held
- if (timer_elapsed(key_timer) > 300) {
- layer_move(_layerSelector);
- return false;
- } else {
- // if key was tapped
- switch (biton32(layer_state)) {
- case 4:
- layer_move(_codingControlV1);
- break;
- case 3:
- rgblight_toggle();
- break;
- case 2:
- register_code(KC_B);
- unregister_code(KC_B);
- break;
- case 1:
- register_code(KC_LCTRL);
- register_code(KC_A);
- unregister_code(KC_LCTRL);
- unregister_code(KC_A);
- break;
- default:
- register_code(KC_AUDIO_MUTE);
- unregister_code(KC_AUDIO_MUTE);
- break;}
- return true;
- }
- }
- break;
- }
- return true;
- };
- /*
- // Runs constantly in the background, in a loop.
- void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
- // INSERT CODE HERE: turn off all leds
- switch (layer) {
- case _mediaControl:
- rgblight_sethsv_noeeprom(HSV_WHITE);
- // INSERT CODE HERE: turn on leds that correspond to YOUR_LAYER_1
- break;
- case _mayaControl:
- rgblight_sethsv_noeeprom(HSV_AZURE);
- // INSERT CODE HERE: turn on leds that correspond to YOUR_LAYER_2
- break;
- // add case for each layer
- case _psControl:
- rgblight_sethsv_noeeprom(HSV_BLUE);
- // INSERT CODE HERE: turn on leds that correspond to YOUR_LAYER_2
- break;
- // add case for each layer
- }
- };
- */
Advertisement
Add Comment
Please, Sign In to add comment