]> git.donarmstrong.com Git - qmk_firmware.git/blob - users/talljoe/talljoe.h
Keymap: Talljoe's keymap for oddball keyboards (#3910)
[qmk_firmware.git] / users / talljoe / talljoe.h
1 #ifndef USERSPACE
2 #define USERSPACE
3
4 #include "quantum.h"
5
6 enum userspace_custom_keycodes {
7   KC_MAKE = SAFE_RANGE, // can always be here
8   DFAULTS,
9   TOGGLE_BACKLIGHT,
10   EFFECT,
11   EFFECT_END = EFFECT + 20
12 };
13
14 #ifndef RESET_LAYER
15 #define RESET_LAYER 15
16 #endif
17
18 enum layers {
19     _BASE = 0,
20     _WORKMAN,
21     _NORMAN,
22     _DVORAK,
23     _COLMAK,
24     _MALTROFF,
25     _GAME,
26     _NAV,
27     _NUM,
28     _ADJUST,
29     _RESET = RESET_LAYER,
30 };
31
32 enum tap_dancers {
33   TD_SEMICOLON,
34   TD_GRAVE,
35   TD_QUOTE,
36 };
37
38 #define _______ KC_TRNS
39 #define XXXXXXX KC_NO
40
41 #define MO_NAV    MO(_NAV)
42 #define MO_ADJ    MO(_ADJUST)
43 #define MO_RST    MO(_RESET)
44 #define TG_ADJ    TG(_ADJUST)
45 #define TG_NUM    TG(_NUM)
46 #ifdef ENABLE_GAME_LAYER
47   #define TG_GAME TG(_GAME)
48 #else
49   #define TG_GAME KC_NO
50 #endif
51 #define LY_QWER   DF(_BASE)
52 #define LY_WORK   DF(_WORKMAN)
53 #define LY_NRMN   DF(_NORMAN)
54 #define LY_DVRK   DF(_DVORAK)
55 #define LY_CLMK   DF(_COLMAK)
56 #if SPACE_COUNT >= 2
57   #define LY_MALT DF(_MALTROFF)
58 #else
59   #define LY_MALT KC_NO
60 #endif
61 #define TG_NKRO   MAGIC_TOGGLE_NKRO
62 #define KC_PTT    KC_F24
63 #define MS_MID    KC_MS_BTN3
64 #define FX(x)     (EFFECT + x)
65
66 #define CTL_ESC   CTL_T(KC_ESC)
67 #define US_ENT    RCTL_T(KC_ENT)
68 #define US_MINS   RCTL_T(KC_QUOT)
69 #define US_BSLS   LCA_T(KC_BSLS)
70 #define US_SCLN   TD(TD_SEMICOLON)
71 #define US_GRV    TD(TD_GRAVE)
72 #define US_QUOT   TD(TD_QUOTE)
73 #define US_TAB    C_S_T(KC_TAB)
74 #define SH_LBRC   LSFT_T(KC_LBRC)
75 #define SH_RBRC   RSFT_T(KC_RBRC)
76
77 #define MLT_E     LT(_NUM, KC_E)
78
79 #ifndef SPACE_COUNT
80   #define SPACE_COUNT 1
81 #endif
82 #if (SPACE_COUNT == 1)
83   #define KC_SPC1   LT(_NAV, KC_SPC)
84   #define KC_SPC2   XXXXXXX
85   #define KC_SPC3   XXXXXXX
86
87   #define NV_SPC1   _______
88   #define NV_SPC2   _______
89   #define NV_SPC3   _______
90
91   #define NM_SPC1   _______
92   #define NM_SPC2   _______
93   #define NM_SPC3   _______
94 #elif (SPACE_COUNT == 2)
95   #define KC_SPC1   LT(_NAV,KC_SPC)
96   #define KC_SPC2   LT(_NUM,KC_ENT)
97
98   #define NV_SPC1   KC_SPC
99   #define NV_SPC2   KC_ENT
100
101   #define NM_SPC1   KC_0
102   #define NM_SPC2   KC_SPC
103
104   #define KC_SPC3   XXXXXXX
105   #define NV_SPC3   XXXXXXX
106   #define NM_SPC3   XXXXXXX
107 #elif (SPACE_COUNT == 3)
108   #ifdef SWAP_HANDS_ENABLE
109     #define KC_SPC1 SH_T(KC_BSPC)
110   #else
111     #define KC_SPC1 KC_BSPC
112   #endif
113   #define KC_SPC2   LT(_NUM,KC_ENT)
114   #define KC_SPC3   LT(_NAV,KC_SPC)
115
116   #define NV_SPC1   KC_SPC
117   #define NV_SPC2   KC_ENT
118   #define NV_SPC3   KC_SPC
119
120   #define NM_SPC1   KC_SPC
121   #define NM_SPC2   XXXXXXX
122   #define NM_SPC3   KC_0
123 #else
124   #error "Unsupported space count:" SPACE_COUNT
125 #endif
126
127 #ifndef ZEAL_RGB
128   #define BR_INC KC_NO
129   #define BR_DEC KC_NO
130   #define EF_INC KC_NO
131   #define EF_DEC KC_NO
132   #define ES_INC KC_NO
133   #define ES_DEC KC_NO
134   #define H1_INC KC_NO
135   #define H1_DEC KC_NO
136   #define S1_INC KC_NO
137   #define S1_DEC KC_NO
138   #define H2_INC KC_NO
139   #define H2_DEC KC_NO
140   #define S2_INC KC_NO
141   #define S2_DEC KC_NO
142   #define FN_MO13 KC_NO
143   #define FN_MO2 KC_NO
144 #endif
145
146 #ifndef TEMPLATE
147   #define _X_ KC_NO
148   #define TEMPLATE( \
149     KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6,      \
150     KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,           \
151     KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,           \
152     KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3, KA5,           \
153     KA4, KP2, KC6,           KX1, KK6, KX2,           KC0, KM3, KD0, KA1            \
154   ) TEMPLATE_TKL ( \
155     KJ6,      _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_,   _X_, _X_, KA5, \
156     KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   _X_, _X_, _X_, \
157     KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   _X_, _X_, _X_, \
158     KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
159     KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        _X_,      \
160     KA4, KP2, KC6,           KX1, KK6, KX2,           KC0, KM3, KD0, KA1,   _X_, _X_, _X_  \
161   )
162 #endif
163 #ifndef TEMPLATE_TKL
164   #define TEMPLATE_TKL( \
165     KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
166     KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
167     KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
168     KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
169     KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
170     KA4, KP2, KC6,           KX1, KK6, KX2,           KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
171   ) TEMPLATE( \
172     KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6,      \
173     KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,           \
174     KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,           \
175     KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3, KA5,           \
176     KA4, KP2, KC6,           KX1, KK6, KX2,           KC0, KM3, KD0, KA1            \
177   )
178 #endif
179
180 #ifndef TEMPLATE_ALT
181   #define TEMPLATE_ALT TEMPLATE
182 #endif
183 #ifndef TEMPLATE_NUM
184   #define TEMPLATE_NUM TEMPLATE_ALT
185 #endif
186 #ifndef TEMPLATE_NAV
187   #define TEMPLATE_NAV TEMPLATE_ALT
188 #endif
189 #ifndef TEMPLATE_ADJUST
190   #define TEMPLATE_ADJUST TEMPLATE_ALT
191 #endif
192
193 #ifndef TEMPLATE_RESET
194   #define TEMPLATE_RESET TEMPLATE_ALT( \
195       RESET  , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET  ,  \
196       RESET  , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET  ,           \
197       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,           \
198       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX, XXXXXXX,           \
199       RESET  , XXXXXXX, XXXXXXX,                   XXXXXXX, RESET  , XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX)
200 #endif
201
202 #endif