summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorishtob <ishtob@gmail.com>2018-08-10 11:30:21 -0400
committerDrashna Jaelre <drashna@live.com>2018-08-10 08:30:21 -0700
commitfd0bd29a0a3f2de93a3e561007805fac67e7e0cd (patch)
treed7c9a379d6b04fb851854102631cdde5c3f9b607
parentfeb5e4aaebb78842c090230f68ea9de80a5c17e6 (diff)
downloadqmk_firmware-fd0bd29a0a3f2de93a3e561007805fac67e7e0cd.tar.gz
qmk_firmware-fd0bd29a0a3f2de93a3e561007805fac67e7e0cd.zip
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
-rwxr-xr-xkeyboards/planck/keymaps/ishtob/config.h60
-rw-r--r--keyboards/planck/keymaps/ishtob/keymap.c112
-rw-r--r--keyboards/planck/keymaps/ishtob/macros_public.h57
-rw-r--r--keyboards/planck/keymaps/ishtob/readme.md7
-rwxr-xr-xkeyboards/planck/keymaps/ishtob/rule.mk4
-rwxr-xr-xusers/ishtob/config.h76
-rw-r--r--users/ishtob/ishtob.c69
-rw-r--r--users/ishtob/ishtob.h76
-rw-r--r--users/ishtob/readme.md87
-rwxr-xr-xusers/ishtob/rules.mk7
10 files changed, 349 insertions, 206 deletions
diff --git a/keyboards/planck/keymaps/ishtob/config.h b/keyboards/planck/keymaps/ishtob/config.h
index 730b4eaed9..e58ade0b0f 100755
--- a/keyboards/planck/keymaps/ishtob/config.h
+++ b/keyboards/planck/keymaps/ishtob/config.h
@@ -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
diff --git a/keyboards/planck/keymaps/ishtob/keymap.c b/keyboards/planck/keymaps/ishtob/keymap.c
index be74a0d519..36720c4c3e 100644
--- a/keyboards/planck/keymaps/ishtob/keymap.c
+++ b/keyboards/planck/keymaps/ishtob/keymap.c
@@ -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
-
diff --git a/keyboards/planck/keymaps/ishtob/macros_public.h b/keyboards/planck/keymaps/ishtob/macros_public.h
deleted file mode 100644
index 27d6f75649..0000000000
--- a/keyboards/planck/keymaps/ishtob/macros_public.h
+++ /dev/null
@@ -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;
-} \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ishtob/readme.md b/keyboards/planck/keymaps/ishtob/readme.md
index 22873141fd..108b9ee0c3 100644
--- a/keyboards/planck/keymaps/ishtob/readme.md
+++ b/keyboards/planck/keymaps/ishtob/readme.md
@@ -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.
diff --git a/keyboards/planck/keymaps/ishtob/rule.mk b/keyboards/planck/keymaps/ishtob/rule.mk
index 923c3a5dc4..c8940c3b40 100755
--- a/keyboards/planck/keymaps/ishtob/rule.mk
+++ b/keyboards/planck/keymaps/ishtob/rule.mk
@@ -1,7 +1,3 @@
-ifeq ($(strip $(SECRETS)),yes)
- OPT_DEF += -DSECRETS
-endif
-
# Build Options
# comment out to disable the options.
#
diff --git a/users/ishtob/config.h b/users/ishtob/config.h
new file mode 100755
index 0000000000..9c4a7ed8dd
--- /dev/null
+++ b/users/ishtob/config.h
@@ -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
diff --git a/users/ishtob/ishtob.c b/users/ishtob/ishtob.c
new file mode 100644
index 0000000000..1b847d6306
--- /dev/null
+++ b/users/ishtob/ishtob.c
@@ -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);
+}
+
diff --git a/users/ishtob/ishtob.h b/users/ishtob/ishtob.h
new file mode 100644
index 0000000000..2c47fce791
--- /dev/null
+++ b/users/ishtob/ishtob.h
@@ -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 \ No newline at end of file
diff --git a/users/ishtob/readme.md b/users/ishtob/readme.md
new file mode 100644
index 0000000000..5b7064de9e
--- /dev/null
+++ b/users/ishtob/readme.md
@@ -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. \ No newline at end of file
diff --git a/users/ishtob/rules.mk b/users/ishtob/rules.mk
new file mode 100755
index 0000000000..d19e952667
--- /dev/null
+++ b/users/ishtob/rules.mk
@@ -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