aboutsummaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/billypython/billypython.c32
-rw-r--r--users/billypython/billypython.h34
-rw-r--r--users/billypython/config.h19
-rw-r--r--users/billypython/rules.mk6
-rw-r--r--users/billypython/tap_dance.c33
-rw-r--r--users/billypython/tap_dance.h9
-rw-r--r--users/drashna/config.h63
-rw-r--r--users/drashna/drashna.h7
-rw-r--r--users/drashna/process_records.c24
-rw-r--r--users/drashna/process_records.h4
-rw-r--r--users/drashna/rgb_stuff.c8
-rw-r--r--users/drashna/wrappers.h4
-rw-r--r--users/konstantin/config.h1
-rw-r--r--users/konstantin/konstantin.c5
-rw-r--r--users/konstantin/konstantin.h10
-rw-r--r--users/konstantin/rules.mk1
-rw-r--r--users/vosechu/config.h24
-rw-r--r--users/vosechu/readme.md14
-rw-r--r--users/vosechu/rules.mk1
-rw-r--r--users/vosechu/vosechu.c25
-rw-r--r--users/vosechu/vosechu.h71
21 files changed, 341 insertions, 54 deletions
diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c
new file mode 100644
index 000000000..7bdfe33a4
--- /dev/null
+++ b/users/billypython/billypython.c
@@ -0,0 +1,32 @@
1#include "billypython.h"
2
3__attribute__((weak))
4bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
5 return true;
6}
7
8bool process_record_user(uint16_t keycode, keyrecord_t *record) {
9 if (!process_record_keymap(keycode, record)) {
10 return false;
11 }
12
13 switch (keycode) {
14 case CLEAR:
15 if (record->event.pressed) {
16 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
17 }
18 return false;
19
20 default:
21 return true;
22 }
23}
24
25__attribute__((weak))
26uint32_t layer_state_set_keymap(uint32_t state) {
27 return state;
28}
29
30uint32_t layer_state_set_user(uint32_t state) {
31 return layer_state_set_keymap(state);
32}
diff --git a/users/billypython/billypython.h b/users/billypython/billypython.h
new file mode 100644
index 000000000..4a444e978
--- /dev/null
+++ b/users/billypython/billypython.h
@@ -0,0 +1,34 @@
1#pragma once
2
3#include "quantum.h"
4
5#ifdef TAP_DANCE_ENABLE
6 #include "tap_dance.h"
7#endif
8
9#ifdef LAYER_FN
10 #define FN MO(L_FN)
11 #define FN_CAPS LT(L_FN, KC_CAPS)
12 #define FN_FNLK TT(L_FN)
13#endif
14
15#define TOP LCTL(KC_HOME)
16#define BOTTOM LCTL(KC_END)
17
18enum keycodes_user {
19 CLEAR = SAFE_RANGE,
20
21 RANGE_KEYMAP,
22};
23
24enum layers_user {
25 L_BASE,
26#ifdef LAYER_FN
27 L_FN,
28#endif
29
30 L_RANGE_KEYMAP,
31};
32
33bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
34uint32_t layer_state_set_keymap(uint32_t state);
diff --git a/users/billypython/config.h b/users/billypython/config.h
new file mode 100644
index 000000000..705e6c934
--- /dev/null
+++ b/users/billypython/config.h
@@ -0,0 +1,19 @@
1#pragma once
2
3#define FORCE_NKRO
4
5#define MAGIC_KEY_BOOTLOADER B
6
7#define MOUSEKEY_DELAY 50
8#define MOUSEKEY_INTERVAL 15
9#define MOUSEKEY_MAX_SPEED 4
10#define MOUSEKEY_TIME_TO_MAX 50
11#define MOUSEKEY_WHEEL_MAX_SPEED 1
12#define MOUSEKEY_WHEEL_TIME_TO_MAX 50
13
14#define NO_ACTION_FUNCTION
15#define NO_ACTION_MACRO
16
17#define PERMISSIVE_HOLD
18#define TAPPING_TERM 200
19#define TAPPING_TOGGLE 2
diff --git a/users/billypython/rules.mk b/users/billypython/rules.mk
new file mode 100644
index 000000000..915323b49
--- /dev/null
+++ b/users/billypython/rules.mk
@@ -0,0 +1,6 @@
1SRC += billypython.c
2ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
3 SRC += tap_dance.c
4endif
5
6EXTRAFLAGS += -flto
diff --git a/users/billypython/tap_dance.c b/users/billypython/tap_dance.c
new file mode 100644
index 000000000..74ae16639
--- /dev/null
+++ b/users/billypython/tap_dance.c
@@ -0,0 +1,33 @@
1#include "tap_dance.h"
2
3#define ACTION_TAP_DANCE_DOUBLE_MODS(mod1, mod2) { \
4 .fn = { td_double_mods_each, NULL, td_double_mods_reset }, \
5 .user_data = &(qk_tap_dance_pair_t){ mod1, mod2 }, \
6 }
7
8void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) {
9 qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data;
10 // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2
11 if (state->count == 1 || state->count == 3) {
12 register_code(mods->kc1);
13 } else if (state->count == 2) {
14 unregister_code(mods->kc1);
15 register_code(mods->kc2);
16 }
17 // Prevent tap dance from sending kc1 and kc2 as weak mods
18 state->weak_mods &= ~(MOD_BIT(mods->kc1) | MOD_BIT(mods->kc2));
19}
20
21void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) {
22 qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data;
23 if (state->count == 1 || state->count >= 3) {
24 unregister_code(mods->kc1);
25 }
26 if (state->count >= 2) {
27 unregister_code(mods->kc2);
28 }
29}
30
31qk_tap_dance_action_t tap_dance_actions[] = {
32 [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MODS(KC_RSFT, KC_RCTL),
33};
diff --git a/users/billypython/tap_dance.h b/users/billypython/tap_dance.h
new file mode 100644
index 000000000..258198141
--- /dev/null
+++ b/users/billypython/tap_dance.h
@@ -0,0 +1,9 @@
1#pragma once
2
3#include "quantum.h"
4
5#define RSF_RCT TD(TD_RSF_RCT)
6
7enum tap_dance {
8 TD_RSF_RCT,
9};
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 827b1b8ac..20e58fd0b 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -2,43 +2,50 @@
2 2
3 3
4#ifdef AUDIO_ENABLE 4#ifdef AUDIO_ENABLE
5#define AUDIO_CLICKY 5 #define AUDIO_CLICKY
6#define STARTUP_SONG SONG(RICK_ROLL) 6 #define STARTUP_SONG SONG(RICK_ROLL)
7#define GOODBYE_SONG SONG(SONIC_RING) 7 #define GOODBYE_SONG SONG(SONIC_RING)
8#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ 8 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
9 SONG(COLEMAK_SOUND), \ 9 SONG(COLEMAK_SOUND), \
10 SONG(DVORAK_SOUND), \ 10 SONG(DVORAK_SOUND), \
11 SONG(OVERWATCH_THEME) \ 11 SONG(OVERWATCH_THEME) \
12 } 12 }
13 13
14#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f 14 #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
15// #ifdef RGBLIGHT_ENABLE 15 // #ifdef RGBLIGHT_ENABLE
16// #define NO_MUSIC_MODE 16 // #define NO_MUSIC_MODE
17// #endif //RGBLIGHT_ENABLE/ 17 // #endif //RGBLIGHT_ENABLE/
18#ifndef __arm__ 18 #ifndef __arm__
19#undef NOTE_REST 19 #undef NOTE_REST
20#define NOTE_REST 1.00f 20 #define NOTE_REST 1.00f
21#endif // !__arm__ 21 #endif // !__arm__
22
23#define UNICODE_SONG_OSX SONG(RICK_ROLL)
24#define UNICODE_SONG_LNX SONG(RICK_ROLL)
25#define UNICODE_SONG_WIN SONG(RICK_ROLL)
26#define UNICODE_SONG_BSD SONG(RICK_ROLL)
27#define UNICODE_SONG_WINC SONG(RICK_ROLL)
28
22#endif // !AUDIO_ENABLE 29#endif // !AUDIO_ENABLE
23 30
24#ifdef RGBLIGHT_ENABLE 31#ifdef RGBLIGHT_ENABLE
25#define RGBLIGHT_SLEEP 32 #define RGBLIGHT_SLEEP
26#undef RGBLIGHT_ANIMATIONS 33 #undef RGBLIGHT_ANIMATIONS
27#define RGBLIGHT_EFFECT_BREATHING 34 #define RGBLIGHT_EFFECT_BREATHING
28#define RGBLIGHT_EFFECT_SNAKE 35 #define RGBLIGHT_EFFECT_SNAKE
29#define RGBLIGHT_EFFECT_KNIGHT 36 #define RGBLIGHT_EFFECT_KNIGHT
30#endif // RGBLIGHT_ENABLE 37#endif // RGBLIGHT_ENABLE
31 38
32#ifndef ONESHOT_TAP_TOGGLE 39#ifndef ONESHOT_TAP_TOGGLE
33#define ONESHOT_TAP_TOGGLE 2 40 #define ONESHOT_TAP_TOGGLE 2
34#endif // !ONESHOT_TAP_TOGGLE 41#endif // !ONESHOT_TAP_TOGGLE
35 42
36#ifndef ONESHOT_TIMEOUT 43#ifndef ONESHOT_TIMEOUT
37#define ONESHOT_TIMEOUT 3000 44 #define ONESHOT_TIMEOUT 3000
38#endif// !ONESHOT_TIMEOUT 45#endif// !ONESHOT_TIMEOUT
39 46
40#ifndef QMK_KEYS_PER_SCAN 47#ifndef QMK_KEYS_PER_SCAN
41#define QMK_KEYS_PER_SCAN 4 48 #define QMK_KEYS_PER_SCAN 4
42#endif // !QMK_KEYS_PER_SCAN 49#endif // !QMK_KEYS_PER_SCAN
43 50
44 51
@@ -48,18 +55,18 @@
48// and when this option isn't enabled, z rapidly followed by x 55// and when this option isn't enabled, z rapidly followed by x
49// actually sends Ctrl-x. That's bad.) 56// actually sends Ctrl-x. That's bad.)
50#define IGNORE_MOD_TAP_INTERRUPT 57#define IGNORE_MOD_TAP_INTERRUPT
51#undef PERMISSIVE_HOLD 58// #define PERMISSIVE_HOLD
52//#define TAPPING_FORCE_HOLD 59//#define TAPPING_FORCE_HOLD
53//#define RETRO_TAPPING 60//#define RETRO_TAPPING
54 61
55#define FORCE_NKRO 62#define FORCE_NKRO
56 63
57#ifndef TAPPING_TOGGLE 64#ifndef TAPPING_TOGGLE
58#define TAPPING_TOGGLE 1 65 #define TAPPING_TOGGLE 1
59#endif 66#endif
60 67
61#ifdef TAPPING_TERM 68#ifdef TAPPING_TERM
62#undef TAPPING_TERM 69 #undef TAPPING_TERM
63#endif // TAPPING_TERM 70#endif // TAPPING_TERM
64#if defined(KEYBOARD_ergodox_ez) 71#if defined(KEYBOARD_ergodox_ez)
65 #define TAPPING_TERM 185 72 #define TAPPING_TERM 185
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 0a3d0f632..ca55198e3 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -36,7 +36,11 @@ enum userspace_layers {
36 _COLEMAK, 36 _COLEMAK,
37 _DVORAK, 37 _DVORAK,
38 _WORKMAN, 38 _WORKMAN,
39 _MODS, 39 _NORMAN,
40 _MALTRON,
41 _EUCALYN,
42 _CARPLAX,
43 _MODS, /* layer 8 */
40 _GAMEPAD, 44 _GAMEPAD,
41 _DIABLO, 45 _DIABLO,
42 _MACROS, 46 _MACROS,
@@ -76,6 +80,7 @@ typedef union {
76 bool is_overwatch :1; 80 bool is_overwatch :1;
77 bool nuke_switch :1; 81 bool nuke_switch :1;
78 uint8_t unicode_mod :4; 82 uint8_t unicode_mod :4;
83 bool swapped_numbers :1;
79 }; 84 };
80} userspace_config_t; 85} userspace_config_t;
81 86
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
index 17d7dc01c..73cad92f6 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -20,34 +20,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
20 // If console is enabled, it will print the matrix position and status of each key pressed 20 // If console is enabled, it will print the matrix position and status of each key pressed
21#ifdef KEYLOGGER_ENABLE 21#ifdef KEYLOGGER_ENABLE
22 #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) 22 #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2)
23 xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); 23 xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
24 #else 24 #else
25 xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); 25 xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
26 #endif 26 #endif
27#endif //KEYLOGGER_ENABLE 27#endif //KEYLOGGER_ENABLE
28 28
29 switch (keycode) { 29 switch (keycode) {
30 case KC_QWERTY: 30 case KC_QWERTY ... KC_CARPLAX:
31 if (record->event.pressed) { 31 if (record->event.pressed) {
32 set_single_persistent_default_layer(_QWERTY); 32 set_single_persistent_default_layer(keycode - KC_QWERTY);
33 } 33 }
34 break; 34 break;
35 case KC_COLEMAK:
36 if (record->event.pressed) {
37 set_single_persistent_default_layer(_COLEMAK);
38 }
39 break;
40 case KC_DVORAK:
41 if (record->event.pressed) {
42 set_single_persistent_default_layer(_DVORAK);
43 }
44 break;
45 case KC_WORKMAN:
46 if (record->event.pressed) {
47 set_single_persistent_default_layer(_WORKMAN);
48 }
49 break;
50
51 35
52 case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader 36 case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
53 if (!record->event.pressed) { 37 if (!record->event.pressed) {
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index 620997add..f7f2193ec 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -13,6 +13,10 @@ enum userspace_custom_keycodes {
13 KC_COLEMAK, // Sets default layer to COLEMAK 13 KC_COLEMAK, // Sets default layer to COLEMAK
14 KC_DVORAK, // Sets default layer to DVORAK 14 KC_DVORAK, // Sets default layer to DVORAK
15 KC_WORKMAN, // Sets default layer to WORKMAN 15 KC_WORKMAN, // Sets default layer to WORKMAN
16 KC_NORMAN, // Sets default layer to NORMAN
17 KC_MALTRON, // Sets default layer to MALTRON
18 KC_EUCALYN, // Sets default layer to EUCALYN
19 KC_CARPLAX, // Sets default layer to CARPLAX
16 KC_DIABLO_CLEAR, // Clears all Diablo Timers 20 KC_DIABLO_CLEAR, // Clears all Diablo Timers
17 KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat) 21 KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
18 KC_SALT, // See drashna.c for details 22 KC_SALT, // See drashna.c for details
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index 7d00604b4..37076ce99 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -315,6 +315,14 @@ uint32_t layer_state_set_rgb(uint32_t state) {
315 rgblight_sethsv_noeeprom_springgreen(); break; 315 rgblight_sethsv_noeeprom_springgreen(); break;
316 case _WORKMAN: 316 case _WORKMAN:
317 rgblight_sethsv_noeeprom_goldenrod(); break; 317 rgblight_sethsv_noeeprom_goldenrod(); break;
318 case _NORMAN:
319 rgblight_sethsv_noeeprom_coral(); break;
320 case _MALTRON:
321 rgblight_sethsv_noeeprom_yellow(); break;
322 case _EUCALYN:
323 rgblight_sethsv_noeeprom_pink(); break;
324 case _CARPLAX:
325 rgblight_sethsv_noeeprom_blue(); break;
318 default: 326 default:
319 rgblight_sethsv_noeeprom_cyan(); break; 327 rgblight_sethsv_noeeprom_cyan(); break;
320 } 328 }
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
index 070a5a0a4..3260c58ae 100644
--- a/users/drashna/wrappers.h
+++ b/users/drashna/wrappers.h
@@ -91,11 +91,11 @@ NOTE: These are all the same length. If you do a search/replace
91 91
92#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B 92#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
93#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F 93#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F
94#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J KC_G, KC_COMM 94#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
95 95
96#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L 96#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
97#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R 97#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R
98#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X 98#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
99 99
100 100
101#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q 101#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q
diff --git a/users/konstantin/config.h b/users/konstantin/config.h
index d03333f05..800b8e49b 100644
--- a/users/konstantin/config.h
+++ b/users/konstantin/config.h
@@ -14,6 +14,7 @@
14 14
15#define NO_ACTION_FUNCTION 15#define NO_ACTION_FUNCTION
16#define NO_ACTION_MACRO 16#define NO_ACTION_MACRO
17#define NO_ACTION_ONESHOT
17 18
18#define PERMISSIVE_HOLD 19#define PERMISSIVE_HOLD
19#define TAPPING_TERM 200 20#define TAPPING_TERM 200
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
index 977111c1f..47596279c 100644
--- a/users/konstantin/konstantin.c
+++ b/users/konstantin/konstantin.c
@@ -3,8 +3,9 @@
3#ifdef LAYER_NUMPAD 3#ifdef LAYER_NUMPAD
4static void toggle_numpad(void) { 4static void toggle_numpad(void) {
5 layer_invert(L_NUMPAD); 5 layer_invert(L_NUMPAD);
6 bool num_lock = host_keyboard_leds() & 1<<USB_LED_NUM_LOCK; 6 bool numpad_on = IS_LAYER_ON(L_NUMPAD);
7 if (num_lock != (bool)IS_LAYER_ON(L_NUMPAD)) { 7 bool num_lock_on = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
8 if (num_lock_on != numpad_on) {
8 tap_code(KC_NLCK); // Toggle Num Lock to match layer state 9 tap_code(KC_NLCK); // Toggle Num Lock to match layer state
9 } 10 }
10} 11}
diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h
index 06081496b..f67f9f1b7 100644
--- a/users/konstantin/konstantin.h
+++ b/users/konstantin/konstantin.h
@@ -25,6 +25,16 @@
25 25
26#define LCT_CPS LCTL_T(KC_CAPS) 26#define LCT_CPS LCTL_T(KC_CAPS)
27 27
28#ifdef SEND_STRING_CLEAN
29 #undef SEND_STRING
30 #define SEND_STRING(...) { \
31 uint8_t ss_mods = get_mods(); \
32 clear_mods(); \
33 send_string_P(PSTR(__VA_ARGS__)); \
34 set_mods(ss_mods); \
35 }
36#endif
37
28enum keycodes_user { 38enum keycodes_user {
29 CLEAR = SAFE_RANGE, 39 CLEAR = SAFE_RANGE,
30#ifdef LAYER_NUMPAD 40#ifdef LAYER_NUMPAD
diff --git a/users/konstantin/rules.mk b/users/konstantin/rules.mk
index 7f25a8107..d2522b952 100644
--- a/users/konstantin/rules.mk
+++ b/users/konstantin/rules.mk
@@ -2,7 +2,6 @@ BOOTMAGIC_ENABLE = no
2COMMAND_ENABLE = yes 2COMMAND_ENABLE = yes
3CONSOLE_ENABLE = yes 3CONSOLE_ENABLE = yes
4EXTRAKEY_ENABLE = yes 4EXTRAKEY_ENABLE = yes
5KEYBOARD_SHARED_EP = yes # TODO: Disable once Command is fixed
6MOUSEKEY_ENABLE = yes 5MOUSEKEY_ENABLE = yes
7NKRO_ENABLE = yes 6NKRO_ENABLE = yes
8TAP_DANCE_ENABLE = yes 7TAP_DANCE_ENABLE = yes
diff --git a/users/vosechu/config.h b/users/vosechu/config.h
new file mode 100644
index 000000000..837cc60ff
--- /dev/null
+++ b/users/vosechu/config.h
@@ -0,0 +1,24 @@
1#pragma once
2
3// this makes it possible to do rolling combos (zx) with keys that
4// convert to other keys on hold (z becomes ctrl when you hold it,
5// and when this option isn't enabled, z rapidly followed by x
6// actually sends Ctrl-x. That's bad.)
7#define IGNORE_MOD_TAP_INTERRUPT
8#undef PERMISSIVE_HOLD
9//#define TAPPING_FORCE_HOLD
10//#define RETRO_TAPPING
11
12#ifndef TAPPING_TOGGLE
13#define TAPPING_TOGGLE 2
14#endif
15
16#ifdef TAPPING_TERM
17#undef TAPPING_TERM
18#endif
19#define TAPPING_TERM 150
20
21// Disable action_get_macro and fn_actions, since we don't use these
22// and it saves on space in the firmware.
23#define NO_ACTION_MACRO
24#define NO_ACTION_FUNCTION
diff --git a/users/vosechu/readme.md b/users/vosechu/readme.md
new file mode 100644
index 000000000..44789a9ff
--- /dev/null
+++ b/users/vosechu/readme.md
@@ -0,0 +1,14 @@
1Copyright 2018 Chuck Lauer Vose vosechu@gmail.com @vosechu
2
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7
8This program is distributed in the hope that it will be useful,
9but WITHOUT ANY WARRANTY; without even the implied warranty of
10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11GNU General Public License for more details.
12
13You should have received a copy of the GNU General Public License
14along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/vosechu/rules.mk b/users/vosechu/rules.mk
new file mode 100644
index 000000000..e346db93f
--- /dev/null
+++ b/users/vosechu/rules.mk
@@ -0,0 +1 @@
SRC += vosechu.c
diff --git a/users/vosechu/vosechu.c b/users/vosechu/vosechu.c
new file mode 100644
index 000000000..3f58ca26a
--- /dev/null
+++ b/users/vosechu/vosechu.c
@@ -0,0 +1,25 @@
1#include "vosechu.h"
2
3// void my_custom_function(void) {
4
5// }
6
7// [DV] = { /* ================================================== DVORAK ============================================================ */
8// { KC_1, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
9// { KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
10// { KC_3, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
11// { KC_4, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
12// { KC_5, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }
13// },
14
15// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
16// if (record->event.pressed) {
17// // These also need to be defined in the header file
18// switch(keycode) {
19// case PAWFIVE:
20// SEND_STRING(":pawfive:");
21// return false;
22// }
23// }
24// return true;
25// };
diff --git a/users/vosechu/vosechu.h b/users/vosechu/vosechu.h
new file mode 100644
index 000000000..5cd2217ea
--- /dev/null
+++ b/users/vosechu/vosechu.h
@@ -0,0 +1,71 @@
1#pragma once
2
3#include "quantum.h"
4
5// Each layer gets a name for readability, which is then used in the keymap matrix below.
6enum userspace_custom_layers {
7 DV = 0,
8 QW,
9 GAM1,
10 RSE,
11 LWR,
12 LFT,
13 MOUSE
14};
15
16enum userspace_custom_keycodes {
17 PAWFIVE = SAFE_RANGE,
18 MOUKEY,
19 MS_BTN1,
20 MS_BTN2,
21 MS_BTN3
22};
23
24// Transparent macro to indicate that this spot is already being pressed
25// to activate this layer
26#define _LAYER_ KC_TRNS
27
28// == Dual-action keys on most of the modifiers
29#define CTL_ESC CTL_T(KC_ESC)
30#define CTL_GRV CTL_T(KC_GRV)
31#define ALT_TAB ALT_T(KC_TAB)
32#define SFT_SPC SFT_T(KC_SPC)
33
34// == Macro keys for commonly used apps
35// -- Slack
36// Move one conversation up/down
37#define SLACKUP LALT(LSFT(KC_UP))
38#define SLACKDN LALT(LSFT(KC_DOWN))
39
40// -- Browser and OS X
41// Activate one tab left/right
42#define TAB_LFT LGUI(LSFT(KC_LBRC))
43#define TAB_RGT LGUI(LSFT(KC_RBRC))
44// Go back/forward in history
45#define BWSR_BK LGUI(KC_LBRC)
46#define BWSR_FW LGUI(KC_RBRC)
47
48// -- Screen management
49// Make window fill the left/right side
50#define SCR_LFT HYPR(KC_LEFT)
51#define SCR_RGT HYPR(KC_RGHT)
52// Make window fill the whole monitor
53#define SCR_FUL HYPR(KC_F)
54
55// == Extended alpha layer toggles
56// -- Dvorak
57// Pressing U opens up the LWR layer (numpad)
58#define LWR_U LT(LWR, KC_U)
59// Pressing H opens up the RSE layer (brackets/parens)
60#define RSE_H LT(RSE, KC_H)
61
62// -- Qwerty
63// Pressing F opens up the LWR layer (numpad)
64#define LWR_F LT(LWR, KC_F)
65// Pressing J opens up the RSE layer (brackets/parens)
66#define RSE_J LT(RSE, KC_J)
67
68// -- LFT layer (Works on both Qwerty and Dvorak)
69// Pressing Back space or Enter opens up the LFT layer (media/navigation)
70#define LFT_BK LT(LFT, KC_BSPC)
71#define LFT_ENT LT(LFT, KC_ENT)