Keymap: adding my personal userspace to QMK master (#3605)
* Adding my personal planck keymap * Adding readme.md to my keymap * Create my userspace add users/ishtob/ * Moved macros off keymap macros now exsists in my userspace, moved them off keyboard specific keymaps * Create my userspace add users/ishtob/ * rebase from main QMK repo
This commit is contained in:
		| @@ -1,60 +1,36 @@ | ||||
| #ifndef CONFIG_USER_H | ||||
| #define CONFIG_USER_H | ||||
|  | ||||
| #include "../../config.h" | ||||
| #ifndef USERSPACE_CONFIG_H | ||||
| #define USERSPACE_CONFIG_H | ||||
|  | ||||
| #define LEADER_TIMEOUT 300 | ||||
| //#define BACKLIGHT_BREATHING | ||||
| #define PREVENT_STUCK_MODIFIERS | ||||
|  | ||||
| #ifdef AUDIO_ENABLE | ||||
|  | ||||
| // #define STARTUP_SONG SONG(E1M1_DOOM) | ||||
| // #define GOODBYE_SONG  SONG(SONIC_RING) | ||||
| /* #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ | ||||
|                                   SONG(COLEMAK_SOUND), \ | ||||
|                                   SONG(DVORAK_SOUND), \ | ||||
|                                 } | ||||
| */ | ||||
| //audio clicky | ||||
|     #define AUDIO_CLICKY | ||||
|   // to enable clicky on startup | ||||
|   //#define AUDIO_CLICKY_ON | ||||
| 	#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f | ||||
|  | ||||
| /* ws2812 RGB LED | ||||
| #define RGB_DI_PIN B5 | ||||
| #define RGBLIGHT_ANIMATIONS | ||||
| #define RGBLED_NUM 8     // Number of LEDs | ||||
| #define RGBLIGHT_HUE_STEP 10 | ||||
| #define RGBLIGHT_SAT_STEP 17 | ||||
| */ | ||||
| #undef PLANCK_MIT_LAYOUT | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #define FORCE_NKRO | ||||
|  | ||||
| #define LEADER_TIMEOUT 300 | ||||
| #define PREVENT_STUCK_MODIFIERS | ||||
|  | ||||
| #undef DEBOUNCE | ||||
| #define DEBOUNCE 0 | ||||
|  | ||||
| //rgb-reactive | ||||
| #define RGB_MATRIX_KEYPRESSES | ||||
| #define EECONFIG_RGB_MATRIX (uint32_t *)16 | ||||
|  | ||||
| //skip usb startup check | ||||
| //#define NO_USB_STARTUP_CHECK | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * MIDI options | ||||
|  */ | ||||
|  | ||||
| /* Prevent use of disabled MIDI features in the keymap */ | ||||
| //#define MIDI_ENABLE_STRICT 1 | ||||
|  | ||||
| /* enable basic MIDI features: | ||||
|    - MIDI notes can be sent when in Music mode is on | ||||
| */ | ||||
| #define MIDI_BASIC | ||||
|  | ||||
| /* enable advanced MIDI features: | ||||
|    - MIDI notes can be added to the keymap | ||||
|    - Octave shift and transpose | ||||
|    - Virtual sustain, portamento, and modulation wheel | ||||
|    - etc. | ||||
| */ | ||||
| //#define MIDI_ADVANCED | ||||
|  | ||||
| /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||||
| //#define MIDI_TONE_KEYCODE_OCTAVES 2 | ||||
|  | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| // This is the canonical layout file for the Quantum project. If you want to add another keyboard, | ||||
| // this is the style you want to emulate. | ||||
|  | ||||
| #pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example" | ||||
| #include "planck.h" | ||||
| #include "action_layer.h" | ||||
| // #include "dynamic_macro.h" | ||||
| @@ -9,65 +8,10 @@ | ||||
|   #include "audio.h" | ||||
| #endif | ||||
| #include "eeconfig.h" | ||||
|  | ||||
| //Macro definition | ||||
| #if (__has_include("macros_private.h") && !defined(SECRETS)) | ||||
| #include "macros_private.h" | ||||
| #else | ||||
| #include "macros_public.h" | ||||
| #endif | ||||
| #include "ishtob.h" | ||||
|  | ||||
| extern keymap_config_t keymap_config; | ||||
|  | ||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||||
| // entirely and just use numbers. | ||||
| #define _QWERTY 0 | ||||
| #define _COLEMAK 1 | ||||
| #define _DVORAK 2 | ||||
| #define _LOWER 3 | ||||
| #define _RAISE 4 | ||||
| #define _PLOVER 5 | ||||
| #define _FNLAYER 6 | ||||
| #define _NUMLAY 7 | ||||
| #define _MOUSECURSOR 8 | ||||
| #define _ADJUST 16 | ||||
|  | ||||
| enum planck_keycodes { | ||||
|   QWERTY = SAFE_RANGE, | ||||
|   COLEMAK, | ||||
|   DVORAK, | ||||
|   PLOVER, | ||||
|   LOWER, | ||||
|   RAISE, | ||||
|   BACKLIT, | ||||
|   EXT_PLV, | ||||
|   DFU, | ||||
| }; | ||||
|  | ||||
| // Fillers to make layering more clear | ||||
| #define _______ KC_TRNS | ||||
| #define XXXXXXX KC_NO | ||||
| // Custom macros | ||||
| #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl | ||||
| #define CTL_TTAB    CTL_T(KC_TAB)               // Tap for Esc, hold for Ctrl | ||||
| #define CTL_ENT     CTL_T(KC_ENT)               // Tap for Enter, hold for Ctrl | ||||
| #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift | ||||
| // Requires KC_TRNS/_______ for the trigger key in the destination layer | ||||
| #define LT_FN(kc)   LT(_FNLAYER, kc)            // L-ayer T-ap Function Layer | ||||
| #define LT_MC(kc)   LT(_MOUSECURSOR, kc)        // L-ayer T-ap M-ouse C-ursor | ||||
| #define LT_RAI(kc)  LT(_RAISE, kc)              // L-ayer T-ap to Raise | ||||
| #define TG_NUMLAY   TG(_NUMLAY)                 //Toggle for layer _NUMLAY | ||||
| #define P_CITRIX    M(KC_CITRIX)                // My login macros | ||||
| #define P_MPASS     M(KC_MPASS) | ||||
| #define P_META      M(KC_META) | ||||
| #define O_DAYRN     M(KC_DAYRN)                 // My work macros | ||||
| #define O_AUTODC    M(KC_AUTODC) | ||||
| #define O_RTQ6H     M(KC_RTQ6H) | ||||
| #define M_EMAIL     M(KC_EMAIL)                 // My personal email | ||||
| #define M_EMAIL2    M(KC_EMAIL2)                // My work email | ||||
|  | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
| /* Qwerty | ||||
|  ,-----------------------------------------------------------------------------------. | ||||
| @@ -86,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, LT_RAI(KC_MINS), | ||||
|   KC_ESC,        KC_CAPS, KC_LGUI, KC_LALT, LOWER,   KC_SPC,  KC_SPC,  RAISE, KC_RALT, TG_NUMLAY, KC_APP,  KC_DEL | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Colemak | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp | | ||||
| @@ -104,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   KC_LSFT,   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, LT_RAI(KC_MINS), | ||||
|   KC_ESC,    KC_CAPS, KC_LGUI, KC_LALT, LOWER,   KC_SPC,  KC_SPC,  RAISE, KC_RALT, TG_NUMLAY, KC_APP,  KC_DEL | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Dvorak | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | | ||||
| @@ -122,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z, LT_RAI(KC_MINS), | ||||
|   KC_ESC,  KC_CAPS, KC_LGUI, KC_LALT, LOWER,   KC_SPC,  KC_SPC,  RAISE, KC_RALT, TG_NUMLAY, KC_APP,  KC_DEL | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Lower | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   ~  |  \   | | ||||
| @@ -140,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______, | ||||
|   _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Raise | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   *  |  \   | | ||||
| @@ -158,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC__MUTE, KC_VOLD, KC_1,    KC_2,    KC_3,    KC_UP, KC_SLSH,   _______, | ||||
|   _______, _______, _______, _______, _______, KC_SPC,  KC_0,   _______,  KC_LEFT, KC_DOWN, KC_RIGHT,   KC_NLCK | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Plover layer (http://opensteno.org) | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  | | ||||
| @@ -170,14 +114,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|  * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
|  | ||||
|   | ||||
| [_PLOVER] = LAYOUT_planck_grid( | ||||
|   KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   , | ||||
|   XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, | ||||
|   XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, | ||||
|   EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* FN layer on Esc key | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |      |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   +  | | ||||
| @@ -195,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______, | ||||
|   _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Num Layer | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |      |   Q  |  Up  |   4  |      |      |   7  |   8  |   9  |   -  |   +  | Bksp | | ||||
| @@ -213,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   _______, KC_Z,    KC_X,    KC_C,     KC_V,    XXXXXXX,  KC_P1,  KC_P2,  KC_P3,   KC_PDOT, KC_PSLS,  _______, | ||||
|   _______, _______, _______, _______, _______, _______,   KC_P0,  KC_PDOT, _______, _______, KC_NLCK, KC_MPLY | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Mouse Layer (semi-col) | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * | ACCL0| ACCL1| ACCL2|Email |Email2| Home | Wh_Up| WHL_L| M_Up | WHL_R|PASS| Meta | | ||||
| @@ -225,14 +169,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|  * |      |      |      |      |      |     BTN1    |      |      |      | Citx |      | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
|  | ||||
|   | ||||
| [_MOUSECURSOR] = LAYOUT_planck_grid( | ||||
|   KC_ACL0, KC_ACL1, KC_ACL2, M_EMAIL,M_EMAIL2, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R, P_MPASS, P_META, | ||||
|   _______, XXXXXXX, XXXXXXX, XXXXXXX, O_RTQ6H, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, O_DAYRN, | ||||
|   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, | ||||
|   _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, P_CITRIX, O_AUTODC | ||||
| ), | ||||
|  | ||||
|   | ||||
| /* Adjust (Lower + Raise) | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * | Reset|RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +|      |      |  Del | | ||||
| @@ -250,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG, | ||||
|   _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG | ||||
| ) | ||||
|  | ||||
|   | ||||
|  | ||||
| }; | ||||
|  | ||||
| @@ -281,7 +225,7 @@ void persistant_default_layer_set(uint16_t default_layer) { | ||||
| void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); }; | ||||
|  | ||||
|  | ||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||
| bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||||
|   switch (keycode) { | ||||
|     case QWERTY: | ||||
|       if (record->event.pressed) { | ||||
| @@ -369,36 +313,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||
|       } | ||||
|       return false; | ||||
|       break; | ||||
|     case DFU: | ||||
|       if (record->event.pressed) { | ||||
|         clear_keyboard(); | ||||
|       #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) | ||||
|         process_midi_all_notes_off(); | ||||
|       #endif | ||||
|       #if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE) | ||||
|        music_all_notes_off(); | ||||
|         uint16_t timer_start = timer_read(); | ||||
|         PLAY_NOTE_ARRAY(tone_goodbye, false, 0); | ||||
|         shutdown_user(); | ||||
|       while(timer_elapsed(timer_start) < 250) | ||||
|         wait_ms(1); | ||||
|         stop_all_notes(); | ||||
|       #else | ||||
|         wait_ms(250); | ||||
|       #endif | ||||
|       // this is also done later in bootloader.c - not sure if it's neccesary here | ||||
|       #ifdef BOOTLOADER_CATERINA | ||||
|         *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific | ||||
|       #endif | ||||
|         bootloader_jump(); | ||||
|       } | ||||
|       return false; | ||||
|       break; | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| void matrix_init_user(void) { | ||||
| void matrix_init_keymap(void) { | ||||
|     #ifdef AUDIO_ENABLE | ||||
|         startup_user(); | ||||
|     #endif | ||||
| @@ -432,4 +351,3 @@ void music_scale_user(void) | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,57 +0,0 @@ | ||||
| enum macro_keycodes { | ||||
|   KC_CITRIX, | ||||
|   KC_MPASS, | ||||
|   KC_META, | ||||
|   KC_RTQ6H, | ||||
|   KC_DAYRN, | ||||
|   KC_3DRN, | ||||
|   KC_AUTODC, | ||||
|   KC_EMAIL, | ||||
|   KC_EMAIL2 | ||||
| }; | ||||
|  | ||||
| const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||||
| { | ||||
|     if (!eeconfig_is_enabled()) { | ||||
|       eeconfig_init(); | ||||
|     } | ||||
|  | ||||
|     switch (id) { | ||||
|       //my login macros | ||||
|       case KC_CITRIX: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(1), END); | ||||
|         } | ||||
|       case KC_MPASS: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(1), END); | ||||
|         } | ||||
|       case KC_META: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(1), END); | ||||
|         } | ||||
|       //my work macros | ||||
|       case KC_RTQ6H: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(TAB), T(0), T (3), T(0), T(0), T(TAB), T(DOWN), T(TAB), T(0), T (9), T(0), T(0), T(TAB), T(DOWN), T(TAB), T(1), T (5), T(0), T(0), T(TAB), T(DOWN), T(TAB), T(2), T (1), T(0), T(0), T(TAB), D(LALT), T(O), U(LALT), END); | ||||
|         } | ||||
|       case KC_AUTODC: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), D(LALT), T(V), U(LALT), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(T), T(TAB),T(N), D(LALT), T(S), U(LALT), END); | ||||
|         } | ||||
|       case KC_DAYRN: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(TAB), T(TAB), T(TAB), T(TAB), T(TAB), T(1), D(LALT), T(S), U(LALT), END); | ||||
|         } | ||||
|       //Ops macros | ||||
|       case KC_EMAIL: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(1), END);        }         | ||||
|       case KC_EMAIL2: | ||||
|         if (record->event.pressed){ | ||||
|           return MACRO (I(1), T(1), END); | ||||
|         }   | ||||
|     } | ||||
|  | ||||
|     return MACRO_NONE; | ||||
| }  | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #Ishtob's personal planck layout | ||||
|  | ||||
| THis is the default layout used with my planck light, though the rest of the keymap could also be used for the full sized planck or let's split. | ||||
| This is the default layout used with my planck light, though the rest of the keymap could also be used for the full sized planck or let's split. | ||||
|  | ||||
|  | ||||
| Main difference with the default layout: | ||||
| @@ -14,8 +14,3 @@ Main difference with the default layout: | ||||
| * Capslock is on the base layer as it is used quite often with my work's software | ||||
|  | ||||
| * Numbers layer on lower is positioned to resemble a numpad with 5 taking the location of J for the homing bump and easier entry | ||||
|  | ||||
|  | ||||
| # Secret Macros | ||||
|  | ||||
| `macros_public.h` contains a list of macros that can be replaced with passwords or other sensative private macros. `macros_private.h` will be used if it exsists in the folder during compiling and will ignore `macros_public.h` The private macros can be excluded from git commits by adding it to the exclusion list. | ||||
|   | ||||
| @@ -1,7 +1,3 @@ | ||||
| ifeq ($(strip $(SECRETS)),yes) | ||||
| 	OPT_DEF += -DSECRETS | ||||
| endif | ||||
|  | ||||
| # Build Options | ||||
| #   comment out to disable the options. | ||||
| # | ||||
|   | ||||
							
								
								
									
										76
									
								
								users/ishtob/config.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										76
									
								
								users/ishtob/config.h
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| #ifndef CONFIG_USER_H | ||||
| #define CONFIG_USER_H | ||||
|  | ||||
| #include "config_common.h" | ||||
|  | ||||
| #ifdef AUDIO_ENABLE | ||||
|     #define STARTUP_SONG SONG(PLANCK_SOUND) | ||||
|     // #define STARTUP_SONG SONG(NO_SOUND) | ||||
|  | ||||
|     #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ | ||||
|                                   SONG(COLEMAK_SOUND), \ | ||||
|                                   SONG(DVORAK_SOUND) \ | ||||
|                                 } | ||||
| #endif | ||||
|  | ||||
| //#define LEADER_TIMEOUT 300 | ||||
| //#define BACKLIGHT_BREATHING | ||||
| #define PREVENT_STUCK_MODIFIERS | ||||
| //#define PERMISSIVE_HOLD | ||||
| // #define QMK_KEYS_PER_SCAN 4 | ||||
|  | ||||
| //audio clicky | ||||
|   //#define AUDIO_CLICKY | ||||
|   // to enable clicky on startup | ||||
|   //#define AUDIO_CLICKY_ON | ||||
|   //#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f | ||||
|  | ||||
| /* ws2812 RGB LED | ||||
| #define RGB_DI_PIN B5 | ||||
| #define RGBLIGHT_ANIMATIONS | ||||
| #define RGBLED_NUM 8     // Number of LEDs | ||||
| #define RGBLIGHT_HUE_STEP 10 | ||||
| #define RGBLIGHT_SAT_STEP 17 | ||||
| */ | ||||
| #undef PLANCK_MIT_LAYOUT | ||||
|  | ||||
| //#define MUON_LEFT | ||||
|  | ||||
| #undef DEBOUNCE | ||||
| #define DEBOUNCE 0 | ||||
|  | ||||
| //rgb-reactive | ||||
| //#define RGB_MATRIX_KEYPRESSES | ||||
| //#define EECONFIG_RGB_MATRIX (uint32_t *)16 | ||||
|  | ||||
| //skip usb startup check | ||||
| //#define NO_USB_STARTUP_CHECK | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * MIDI options | ||||
|  */ | ||||
|  | ||||
| /* Prevent use of disabled MIDI features in the keymap */ | ||||
| //#define MIDI_ENABLE_STRICT 1 | ||||
|  | ||||
| /* enable basic MIDI features: | ||||
|    - MIDI notes can be sent when in Music mode is on | ||||
| */ | ||||
| #define MIDI_BASIC | ||||
|  | ||||
| /* enable advanced MIDI features: | ||||
|    - MIDI notes can be added to the keymap | ||||
|    - Octave shift and transpose | ||||
|    - Virtual sustain, portamento, and modulation wheel | ||||
|    - etc. | ||||
| */ | ||||
| //#define MIDI_ADVANCED | ||||
|  | ||||
| /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||||
| //#define MIDI_TONE_KEYCODE_OCTAVES 2 | ||||
|  | ||||
| // Most tactile encoders have detents every 4 stages | ||||
| #define ENCODER_RESOLUTION 4 | ||||
|                                  | ||||
| #endif | ||||
							
								
								
									
										69
									
								
								users/ishtob/ishtob.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								users/ishtob/ishtob.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| /* | ||||
| Based on userspace written by @drashna 2017 | ||||
| Copyright 2018 Hsian Chang  <ishtob@gmail.com> @ishtob | ||||
|  | ||||
| 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 "ishtob.h" | ||||
| #include "action.h" | ||||
| #include "action_layer.h" | ||||
| // #include "dynamic_macro.h" | ||||
| #ifdef AUDIO_ENABLE | ||||
|   #include "audio.h" | ||||
| #endif | ||||
|  | ||||
|  | ||||
| // Add reconfigurable functions here, for keymap customization | ||||
| // This allows for a global, userspace functions, and continued | ||||
| // customization of the keymap.  Use _keymap instead of _user | ||||
| // functions in the keymaps | ||||
| __attribute__ ((weak)) | ||||
| void matrix_init_keymap(void) {} | ||||
|  | ||||
| __attribute__ ((weak)) | ||||
| void matrix_scan_keymap(void) {} | ||||
|  | ||||
| __attribute__ ((weak)) | ||||
| bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| __attribute__ ((weak)) | ||||
| bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| // Call user matrix init, then call the keymap's init function | ||||
| void matrix_init_user(void) { | ||||
|   matrix_init_keymap(); | ||||
| } | ||||
|  | ||||
| // No global matrix scan code, so just run keymap's matix | ||||
| // scan function | ||||
| void matrix_scan_user(void) { | ||||
|   matrix_scan_keymap(); | ||||
| } | ||||
|  | ||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||
|     switch (keycode) { | ||||
|     case DFU: | ||||
|       if (record->event.pressed) { | ||||
|         clear_keyboard(); | ||||
|         reset_keyboard(); | ||||
|       } | ||||
|       return false; | ||||
|       break;       | ||||
|     } | ||||
|   return process_record_keymap(keycode, record) && process_record_secrets(keycode, record); | ||||
| } | ||||
|  | ||||
							
								
								
									
										76
									
								
								users/ishtob/ishtob.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								users/ishtob/ishtob.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| #ifndef USERSPACE | ||||
| #define USERSPACE | ||||
| #include "quantum.h" | ||||
|  | ||||
| enum userspace_keycodes { | ||||
|   QWERTY = SAFE_RANGE, | ||||
|   COLEMAK, | ||||
|   DVORAK, | ||||
|   PLOVER, | ||||
|   LOWER, | ||||
|   RAISE, | ||||
|   BACKLIT, | ||||
|   EXT_PLV, | ||||
|   DFU, | ||||
|   P_CITRIX, //these macro exsists in macros_private.c, which is excluded from git | ||||
|   P_MPASS, | ||||
|   P_META, | ||||
|   O_DAYRN, | ||||
|   O_RTQ6H, | ||||
|   O_3DRN, | ||||
|   O_AUTODC, | ||||
|   M_EMAIL, | ||||
|   M_EMAIL2 | ||||
| }; | ||||
|  | ||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||||
| // entirely and just use numbers. | ||||
| #define _QWERTY 0 | ||||
| #define _COLEMAK 1 | ||||
| #define _DVORAK 2 | ||||
| #define _LOWER 3 | ||||
| #define _RAISE 4 | ||||
| #define _PLOVER 5 | ||||
| #define _FNLAYER 6 | ||||
| #define _NUMLAY 7 | ||||
| #define _MOUSECURSOR 8 | ||||
| #define _ADJUST 16 | ||||
|  | ||||
|  | ||||
|  | ||||
| #define LOWER MO(_LOWER) | ||||
| #define RAISE MO(_RAISE) | ||||
|  | ||||
| // Fillers to make layering more clear | ||||
| #define _______ KC_TRNS | ||||
| #define XXXXXXX KC_NO | ||||
| // Custom macros | ||||
| #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl | ||||
| #define CTL_TTAB    CTL_T(KC_TAB)               // Tap for Esc, hold for Ctrl | ||||
| #define CTL_ENT     CTL_T(KC_ENT)               // Tap for Enter, hold for Ctrl | ||||
| #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift | ||||
| // Requires KC_TRNS/_______ for the trigger key in the destination layer | ||||
| #define LT_FN(kc)   LT(_FNLAYER, kc)            // L-ayer T-ap Function Layer | ||||
| #define LT_MC(kc)   LT(_MOUSECURSOR, kc)        // L-ayer T-ap M-ouse C-ursor | ||||
| #define LT_RAI(kc)  LT(_RAISE, kc)              // L-ayer T-ap to Raise | ||||
| #define TG_NUMLAY   TG(_NUMLAY)                 //Toggle for layer _NUMLAY | ||||
| /* | ||||
| enum userspace_layers { | ||||
|   _QWERTY = 0, | ||||
|   _COLEMAK, | ||||
|   _DVORAK, | ||||
|   _LOWER, | ||||
|   _RAISE, | ||||
|   _PLOVER, | ||||
|   _FNLAYER, | ||||
|   _NUMLAY, | ||||
|   _MOUSECURSOR, | ||||
|   _ADJUST | ||||
| }; | ||||
| */ | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif // !USERSPACE | ||||
							
								
								
									
										87
									
								
								users/ishtob/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								users/ishtob/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| # Ishtob's userspace | ||||
|  | ||||
| under developement | ||||
|  | ||||
| # Secret Macros | ||||
|  | ||||
| This section is a modified version of what @drashna did in his userspace: https://github.com/qmk/qmk_firmware/tree/master/users/drashna#secret-macros | ||||
|  | ||||
| `macros_private.c` will be used if it exsists in the userspace folder during compiling. | ||||
|  | ||||
| To get started, put the following in rules.mk. this will have the compiler include the macros_private.c file if it exsists. | ||||
| ``` | ||||
| SRC += ishtob.c | ||||
| ifneq ($(wildcard $(USER_PATH)/macros_private.c),"") | ||||
|   SRC += macros_private.c | ||||
| endif | ||||
| ifeq ($(strip $(NO_SECRETS)), yes) | ||||
|     OPT_DEFS += -DNO_SECRETS | ||||
| endif | ||||
| ``` | ||||
|  | ||||
| Remember that all macro keycode has to be present in the header file (ishtob.h) to prevent error during compile. | ||||
|  | ||||
| Next, you setup macros_private.c, ensure the keycodes are defined in ishtob.h (or your keymap.h). | ||||
| Here is an example of my macros with the sensitive login information removed: | ||||
| ``` | ||||
| #include "ishtob.h" //replace this with your userspace or keymap | ||||
| #include "quantum.h" | ||||
|  | ||||
| #pragma message "secret macros included" //debug line to let me know this file is included in the compile | ||||
|  | ||||
| //this str is for the monthly password rotation per my workplace's security policy | ||||
| char my_str[5] = "stuff"; | ||||
|  | ||||
| bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { | ||||
|   if (record->event.pressed) { | ||||
|     switch(keycode) { | ||||
|       //my login macros | ||||
|       case P_CITRIX: | ||||
|           SEND_STRING("username"SS_TAP(X_TAB)"something"); | ||||
|           send_string(my_str); | ||||
|           return false; | ||||
|       case P_MPASS: | ||||
|           SEND_STRING("something"); | ||||
|           send_string(my_str); | ||||
|           return false; | ||||
|       case P_META: | ||||
|           SEND_STRING("metausername"); | ||||
|           return false; | ||||
|       //my work macros for the meta application | ||||
|       case O_RTQ6H: | ||||
|           SEND_STRING(SS_TAP(X_TAB)"0300"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"0900"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"1500"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"2100"SS_TAP(X_TAB)SS_LALT("o")); | ||||
|           return false; | ||||
|       case O_AUTODC: | ||||
|           SEND_STRING(SS_LALT("v")SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)"T"SS_TAP(X_TAB)"N"SS_LALT("s")); | ||||
|           return false; | ||||
|       case O_DAYRN: | ||||
|           SEND_STRING(SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)"1"SS_LALT("s")); | ||||
|           return false; | ||||
|       //Ops macros | ||||
|       case M_EMAIL: | ||||
|           SEND_STRING("privatemail@email.com"); | ||||
|           return false;        | ||||
|       case M_EMAIL2: | ||||
|           SEND_STRING("workemail@work.com"); | ||||
|           return false; | ||||
|      } | ||||
|    } | ||||
|   return true; | ||||
| }  | ||||
| ``` | ||||
|  | ||||
|  | ||||
| Finally, add the following to .git/info/exclude to prevent private macros from being committed to git. | ||||
| ``` | ||||
| # git ls-files --others --exclude-from=.git/info/exclude | ||||
| # Lines that start with '#' are comments. | ||||
| # For a project mostly in C, the following would be a good set of | ||||
| # exclude patterns (uncomment them if you want to use them): | ||||
| # *.[oa] | ||||
| # *~ | ||||
| /users/ishtob/macros_private.c | ||||
| ``` | ||||
|  | ||||
| # Special mentions | ||||
|  | ||||
| special thanks to @drashna for helping me through quite a bit of these codes. | ||||
							
								
								
									
										7
									
								
								users/ishtob/rules.mk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								users/ishtob/rules.mk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| SRC += ishtob.c | ||||
| ifneq ($(wildcard $(USER_PATH)/macros_private.c),"") | ||||
|   SRC += macros_private.c | ||||
| endif | ||||
| ifeq ($(strip $(NO_SECRETS)), yes) | ||||
|     OPT_DEFS += -DNO_SECRETS | ||||
| endif | ||||
		Reference in New Issue
	
	Block a user