Last active
February 25, 2021 01:35
-
-
Save iakobou/64e53f4d35d353855eb7c864a450175f to your computer and use it in GitHub Desktop.
Drop.com Carina 60% keymap for use at work
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Drop.com Carina keymap for use at work | |
#include QMK_KEYBOARD_H | |
enum carina_keycodes { | |
L_BRI = SAFE_RANGE, //LED Brightness Increase | |
L_BRD, //LED Brightness Decrease | |
L_EDG_I, //LED Edge Brightness Increase | |
L_EDG_D, //LED Edge Brightness Decrease | |
L_EDG_M, //LED Edge lighting mode | |
L_PTN, //LED Pattern Select Next | |
L_PTP, //LED Pattern Select Previous | |
L_PSI, //LED Pattern Speed Increase | |
L_PSD, //LED Pattern Speed Decrease | |
L_T_MD, //LED Toggle Mode | |
L_T_ONF, //LED Toggle On / Off | |
L_ON, //LED On | |
L_OFF, //LED Off | |
L_T_BR, //LED Toggle Breath Effect | |
L_T_PTD, //LED Toggle Scrolling Pattern Direction and effect | |
MD_BOOT, //Restart into bootloader after hold timeout | |
MEET, | |
CARINA, | |
MAKE, | |
MDLOAD, | |
CLEAR, | |
BRB, | |
FOOD, | |
AWAY, | |
BACK, | |
READJUMP, | |
PATIENT, | |
SLEEP, | |
ROD, | |
}; | |
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) | |
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) | |
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) | |
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |
static uint32_t key_timer; | |
static uint8_t scroll_effect = 0; | |
switch (keycode) { | |
case L_BRI: | |
if (record->event.pressed) { | |
if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX; | |
else gcr_desired += LED_GCR_STEP; | |
if (led_animation_breathing) gcr_breathe = gcr_desired; | |
} | |
return false; | |
case L_BRD: | |
if (record->event.pressed) { | |
if (LED_GCR_STEP > gcr_desired) gcr_desired = 0; | |
else gcr_desired -= LED_GCR_STEP; | |
if (led_animation_breathing) gcr_breathe = gcr_desired; | |
} | |
return false; | |
case L_EDG_M: | |
if (record->event.pressed) { | |
led_edge_mode++; | |
if (led_edge_mode > LED_EDGE_MODE_MAX) { | |
led_edge_mode = LED_EDGE_MODE_ALL; | |
} | |
} | |
return false; | |
case L_EDG_I: | |
if (record->event.pressed) { | |
led_edge_brightness += 0.1; | |
if (led_edge_brightness > 1) { led_edge_brightness = 1; } | |
} | |
return false; | |
case L_EDG_D: | |
if (record->event.pressed) { | |
led_edge_brightness -= 0.1; | |
if (led_edge_brightness < 0) { led_edge_brightness = 0; } | |
} | |
return false; | |
case L_PTN: | |
if (record->event.pressed) { | |
if (led_animation_id == led_setups_count - 1) led_animation_id = 0; | |
else led_animation_id++; | |
} | |
return false; | |
case L_PTP: | |
if (record->event.pressed) { | |
if (led_animation_id == 0) led_animation_id = led_setups_count - 1; | |
else led_animation_id--; | |
} | |
return false; | |
case L_PSI: | |
if (record->event.pressed) { | |
led_animation_speed += ANIMATION_SPEED_STEP; | |
} | |
return false; | |
case L_PSD: | |
if (record->event.pressed) { | |
led_animation_speed -= ANIMATION_SPEED_STEP; | |
if (led_animation_speed < 0) led_animation_speed = 0; | |
} | |
return false; | |
case L_T_MD: | |
if (record->event.pressed) { | |
led_lighting_mode++; | |
if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL; | |
} | |
return false; | |
case L_T_ONF: | |
if (record->event.pressed) { | |
I2C3733_Control_Set(!I2C3733_Control_Get()); | |
} | |
return false; | |
case L_ON: | |
if (record->event.pressed) { | |
I2C3733_Control_Set(1); | |
} | |
return false; | |
case L_OFF: | |
if (record->event.pressed) { | |
I2C3733_Control_Set(0); | |
} | |
return false; | |
case L_T_BR: | |
if (record->event.pressed) { | |
led_animation_breathing = !led_animation_breathing; | |
if (led_animation_breathing) { | |
gcr_breathe = gcr_desired; | |
led_animation_breathe_cur = BREATHE_MIN_STEP; | |
breathe_dir = 1; | |
} | |
} | |
return false; | |
case L_T_PTD: | |
if (record->event.pressed) { | |
scroll_effect++; | |
if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left) | |
led_animation_direction = 1; | |
led_animation_orientation = 0; | |
led_animation_circular = 0; | |
} else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom) | |
led_animation_direction = 1; | |
led_animation_orientation = 1; | |
led_animation_circular = 0; | |
} else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top) | |
led_animation_direction = 0; | |
led_animation_orientation = 1; | |
led_animation_circular = 0; | |
} else if (scroll_effect == 4) { //Patterns with scroll explode from center | |
led_animation_direction = 0; | |
led_animation_orientation = 0; | |
led_animation_circular = 1; | |
} else if (scroll_effect == 5) { //Patterns with scroll implode on center | |
led_animation_direction = 1; | |
led_animation_orientation = 0; | |
led_animation_circular = 1; | |
} else { //Patterns with scroll move horizontal (Left to right) | |
scroll_effect = 0; | |
led_animation_direction = 0; | |
led_animation_orientation = 0; | |
led_animation_circular = 0; | |
} | |
} | |
return false; | |
case MD_BOOT: | |
if (record->event.pressed) { | |
key_timer = timer_read32(); | |
} else { | |
if (timer_elapsed32(key_timer) >= BOOTKEY_HOLD_MS) { | |
reset_keyboard(); | |
} | |
} | |
return false; | |
case MEET: | |
if (record->event.pressed) { | |
// when keycode MEET is pressed | |
SEND_STRING("insert URL here"); | |
} else { | |
// when keycode MEET is released | |
} | |
break; | |
case CARINA: | |
if (record->event.pressed) { | |
// when keycode KBD5 is pressed | |
SEND_STRING("cd /file/path/to/qmk_firmware"SS_TAP(X_ENTER)); | |
} else { | |
// when keycode KBD5 is released | |
} | |
break; | |
case MAKE: | |
if (record->event.pressed) { | |
// when keycode MAKE is pressed | |
SEND_STRING("make massdrop/carina:Phonevon"SS_TAP(X_ENTER)); | |
} else { | |
// when keycode MAKE is released | |
} | |
break; | |
case MDLOAD: | |
if (record->event.pressed) { | |
// when keycode MDLOAD is pressed | |
SEND_STRING("./mdloader_windows.exe --first --download massdrop_carina_Phonevon.bin --restart"SS_TAP(X_ENTER)); | |
} else { | |
// when keycode MDLOAD is released | |
} | |
break; | |
case CLEAR: | |
if (record->event.pressed) { | |
// when keycode CLEAR is pressed | |
SEND_STRING(SS_LGUI(SS_LSFT("x"))); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_TAP(X_ENTER)); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_LGUI(SS_LSFT("x"))); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_TAP(X_ENTER)); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_LGUI(SS_LSFT("x"))); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_TAP(X_ENTER)); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_LGUI(SS_LSFT("x"))); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_TAP(X_ENTER)); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_LGUI(SS_LSFT("x"))); | |
CLK_delay_ms(500); | |
SEND_STRING(SS_TAP(X_ENTER)); | |
} else { | |
// when keycode CLEAR is released | |
} | |
break; | |
case BRB: | |
if (record->event.pressed) { | |
// when keycode BRB is pressed | |
SEND_STRING("/status "SS_TAP(X_SPACE)); | |
CLK_delay_ms(500); | |
SEND_STRING(":brb: "); | |
CLK_delay_ms(500); | |
SEND_STRING("Stepping away for a brief moment"SS_TAP(X_ENTER)); | |
} else { | |
// when keycode BRB is released | |
} | |
break; | |
case FOOD: | |
if (record->event.pressed) { | |
// when keycode FOOD is pressed | |
SEND_STRING("/status "SS_TAP(X_SPACE)); | |
CLK_delay_ms(500); | |
SEND_STRING(":pizza: "); | |
CLK_delay_ms(500); | |
SEND_STRING("Fooding . . ."SS_TAP(X_ENTER)); | |
} else { | |
// when keycode FOOD is released | |
} | |
break; | |
case AWAY: | |
if (record->event.pressed) { | |
// when keycode AWAY is pressed | |
SEND_STRING("/status "SS_TAP(X_SPACE)); | |
CLK_delay_ms(500); | |
SEND_STRING(":away: "); | |
CLK_delay_ms(500); | |
SEND_STRING("I am away from my computer."SS_TAP(X_ENTER)); | |
} else { | |
// when keycode AWAY is released | |
} | |
break; | |
case BACK: | |
if (record->event.pressed) { | |
// when keycode BACK is pressed | |
SEND_STRING("/status "SS_TAP(X_SPACE)); | |
CLK_delay_ms(500); | |
SEND_STRING("clear"SS_TAP(X_ENTER)); | |
} else { | |
// when keycode BACK is released | |
} | |
break; | |
case READJUMP: | |
if (record->event.pressed) { | |
// when keycode READJUMP is pressed | |
SEND_STRING(SS_TAP(X_ESCAPE)); | |
SEND_STRING(SS_TAP(X_END)); | |
} else { | |
// when keycode READJUMP is released | |
} | |
break; | |
case PATIENT: | |
if (record->event.pressed) { | |
// when keycode WAIT is pressed | |
SEND_STRING("Wait script here "); | |
} else { | |
// when keycode WAIT is released | |
} | |
break; | |
case SLEEP: | |
if (record->event.pressed) { | |
//when keycode SLEEP is pressed | |
SEND_STRING(SS_LCTRL(SS_LGUI("q"))); | |
CLK_delay_ms(250); | |
SEND_STRING(SS_TAP(X_ESCAPE)); | |
} else { | |
//when keycode SLEEP is released | |
} | |
break; | |
case ROD: | |
if (record->event.pressed) { | |
//when keycode ROD is pressed | |
SEND_STRING("Insert macro text here"); | |
} else { | |
//when keycode ROD is released | |
} | |
break; | |
} | |
return true; //Process all other keycodes normally | |
} | |
keymap_config_t keymap_config; | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
[0] = LAYOUT( | |
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_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, | |
MO(1), 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, | |
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(2), MO(3), MO(4), MO(5) | |
), | |
[1] = LAYOUT( | |
KC_GRAVE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LGUI(LSFT(KC_X)), | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_END, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F13, KC_TRNS, KC_TRNS, KC_PGDN, KC_MRWD, KC_MFFD, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |
), | |
[2] = LAYOUT( | |
READJUMP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, PATIENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CLEAR, | |
KC_TRNS, MEET, KC_TRNS, ROD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
BRB, FOOD, AWAY, BACK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |
), | |
[3] = LAYOUT( | |
LGUI(LALT(KC_ESC)), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, SLEEP, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(LGUI(KC_Q)), KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |
), | |
[4] = LAYOUT( | |
KC_TRNS, CARINA, MAKE, MDLOAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MD_BOOT, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, L_T_ONF, L_T_MD, KC_TRNS, KC_TRNS, L_EDG_M, KC_TRNS, KC_TRNS, KC_TRNS, | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |
), | |
[5] = LAYOUT( | |
RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, KC_TRNS, KC_TRNS, \ | |
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | |
KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | |
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ | |
), | |
}; | |
/* review https://docs.qmk.fm/#/feature_rgb_matrix for RGB Matrix Lighting in QMK */ | |
// Runs just one time when the keyboard initializes. | |
void matrix_init_user(void) { | |
}; | |
// Runs constantly in the background, in a loop. | |
void matrix_scan_user(void) { | |
}; | |
void rgb_matrix_init_user(void) { | |
led_lighting_mode = LED_MODE_INDICATORS_ONLY; //Start Rocketeer with only indicator lights | |
} | |
led_instruction_t led_instructions[] = { | |
//Please see ../default_md/keymap.c for examples | |
//max bitwise per ID# (LED 1-87) is 4294967295 for each driver (.id0, etc.) as each driver only has 32 LEDs maximum except .id2 which only has 23 and a max bitwise of 8388607 | |
//find ID# in config_led.h | |
//note: ID# is not the .id0, .id1, etc.; it is the index number of the LED whereas .id0, etc. are the drivers for the matrices | |
//calculate bitwise via formula: POWER(2,MOD((ID-1),32)) or 2^n where n = (ID - 1)/32 | |
//All LEDs use the user's selected pattern (this is the factory default) | |
// layer 0 = default | BLUE | |
{ .flags = LED_FLAG_USE_ROTATE_PATTERN | LED_FLAG_MATCH_LAYER, .layer = 0, .pattern_id = 1 }, // all keys except function layer keys | |
// layer 1 = CAPS functions | GREEN | |
{ .flags = LED_FLAG_USE_RGB | LED_FLAG_MATCH_LAYER, .layer = 1, .r = 0, .g = 255, .b = 0 }, // layer 1 GREEN for assigned keys | |
// layer 2 = macros | PINK | |
{ .flags = LED_FLAG_USE_RGB | LED_FLAG_MATCH_LAYER, .layer = 2, .r = 248, .g = 24, .b = 148 }, // layer 2 PINK for assigned keys | |
// layer 3 = system functions | ORANGE | |
{ .flags = LED_FLAG_USE_RGB | LED_FLAG_MATCH_LAYER, .layer = 3, .r = 255, .g = 165, .b = 0 }, // layer 3 ORANGE for assigned keys | |
// layer 4 = keyboard functions | RED | |
{ .flags = LED_FLAG_USE_RGB | LED_FLAG_MATCH_LAYER, .layer = 4, .r = 255, .g = 0, .b = 0 }, // layer 4 RED for assigned keys | |
// layer 5 = miscellaneous | RAINBOW SCROLLING on assigned keys but NULL on unassigned keys | |
{ .flags = LED_FLAG_USE_RGB | LED_FLAG_MATCH_LAYER, .layer = 5, .r = 0, .g = 100, .b = 200 }, // layer 5 RAINBOW SCROLLING for assigned keys | |
//end must be set to 1 to indicate end of instruction set | |
{ .end = 1 } | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment