system-manager-wakasu
  1#define EACUT  RA(E)      // é/É
  2#define EURO   RA(N5)     // €
  3#define AE     RA(Z)      // æ/Æ
  4#define OE     RA(K)       // œ/Œ
  5#define CDIL   RA(COMMA)  // ç/Ç
  6#define NTIL   RA(N)      // ñ/Ñ
  7
  8#define ACC_AC RC(SEMI)         // ´
  9#define ACC_AI RA(SLASH)        // ´
 10#define ACC_CI LBKT             // ^
 11#define ACC_GR RA(LBKT)         // `
 12#define ACC_TI RC(RBKT)         // ~
 13#define ACC_TR LS(LBKT)         // ¨
 14
 15// ` to input
 16ZMK_MACRO_ONE_PARAM(AGRA, bindings =
 17    <&kp GRAVE>,
 18    <&macro_param_1to1>,
 19    <&macro_tap &kp MACRO_PLACEHOLDER>;
 20)
 21
 22// ´ to input
 23ZMK_MACRO_ONE_PARAM(AIGU, bindings =
 24    <&kp SQT>,
 25    <&macro_param_1to1>,
 26    <&macro_tap &kp MACRO_PLACEHOLDER>;
 27)
 28
 29// ¨ to input
 30ZMK_MACRO_ONE_PARAM(TREM, bindings =
 31    <&kp DQT>,
 32    <&macro_param_1to1>,
 33    <&macro_tap &kp MACRO_PLACEHOLDER>;
 34)
 35
 36// ^ to input
 37ZMK_MACRO_ONE_PARAM(CIRC, bindings =
 38    <&kp CARET>,
 39    <&macro_param_1to1>,
 40    <&macro_tap &kp MACRO_PLACEHOLDER>;
 41)
 42
 43// tap: minus | shift + tap: question mark
 44ZMK_MOD_MORPH(min_qma,
 45    bindings = <&kp MINUS>, <&kp QMARK>;
 46    mods = <(MOD_LSFT|MOD_RSFT)>;
 47)
 48
 49// tap: comma | shift + tab: semicolon
 50ZMK_MOD_MORPH(com_smc,
 51    bindings = <&kp COMMA>, <&kp SEMICOLON>;
 52    mods = <(MOD_LSFT|MOD_RSFT)>;
 53)
 54  
 55// tap: period | shift + tap: colon
 56ZMK_MOD_MORPH(dot_col,
 57    bindings = <&kp DOT>, <&kp COLON>;
 58    mods = <(MOD_LSFT|MOD_RSFT)>;
 59)
 60
 61// Bépo morphs
 62
 63// tap: quote (') | shift + tab: question mark
 64ZMK_MOD_MORPH(sqt_qma,
 65    bindings = <&AIGU SPACE>, <&kp QMARK>;
 66    mods = <(MOD_LSFT|MOD_RSFT)>;
 67)
 68
 69// tap: Caret (^) | shift + tap: EXCLAMATION (!)
 70ZMK_MOD_MORPH(car_excl,
 71    bindings = <&kp CARET>, <&kp EXCLAMATION>;
 72    mods = <(MOD_LSFT|MOD_RSFT)>;
 73)
 74
 75// tap: B | right_alt + tap : pipe (|)
 76ZMK_MOD_MORPH(b_pipe,
 77    bindings = <&kp B>, <&kp PIPE>;
 78    mods = <(MOD_RALT)>;
 79)
 80
 81// tap: P | right_alt + tap : ampersand (&)
 82ZMK_MOD_MORPH(p_amp,
 83    bindings = <&kp P>, <&kp AMPERSAND>;
 84    mods = <(MOD_RALT)>;
 85)
 86
 87// hold: numbers layer | tap: SPACE | right_alt + tap : undercore (_)
 88ZMK_MOD_MORPH(num_spc_und,
 89    bindings = <&lt NUM SPACE>, <&kp UNDERSCORE>;
 90    mods = <(MOD_RALT)>;
 91)
 92
 93// hold: left control | tap: E | right_alt + tap: EURO (€)
 94ZMK_MOD_MORPH(cl_e_euro,
 95    bindings = <&hml CL E>, <&kp EURO>;
 96    mods = <(MOD_RALT)>;
 97)
 98
 99// hold: right_hype | tap: comma | shift + tab: semicolon
100ZMK_MOD_MORPH(hyp_com_smc,
101    bindings = <&hml HL COMMA>, <&kp SEMICOLON>;
102    mods = <(MOD_LSFT|MOD_RSFT)>;
103)
104
105// Additional bépo right_alt (AltGr) behaviors based on https://www.raktres.net/projects/svg_kbd_layout/
106
107// tap: O | right_alt + tap: œ (OE ligature)
108ZMK_MOD_MORPH(o_oe,
109    bindings = <&kp O>, <&kp OE>;
110    mods = <(MOD_RALT)>;
111)
112
113// tap: V | right_alt + tap: ? (question mark)
114ZMK_MOD_MORPH(v_qmark,
115    bindings = <&kp V>, <&kp QMARK>;
116    mods = <(MOD_RALT)>;
117)
118
119// tap: L | right_alt + tap: / (forward slash)
120ZMK_MOD_MORPH(l_fslh,
121    bindings = <&kp L>, <&kp FSLH>;
122    mods = <(MOD_RALT)>;
123)
124
125// tap: Z | right_alt + tap: (skip - schwa not easily available)
126
127// tap: W | right_alt + tap: (skip - breve dead key)
128
129// tap: Y | right_alt + tap: { (left brace)
130ZMK_MOD_MORPH(y_lbrc,
131    bindings = <&kp Y>, <&kp LBRC>;
132    mods = <(MOD_RALT)>;
133)
134
135// tap: X | right_alt + tap: } (right brace)
136ZMK_MOD_MORPH(x_rbrc,
137    bindings = <&kp X>, <&kp RBRC>;
138    mods = <(MOD_RALT)>;
139)
140
141// tap: K | right_alt + tap: ~ (tilde)
142ZMK_MOD_MORPH(k_tilde,
143    bindings = <&kp K>, <&kp TILDE>;
144    mods = <(MOD_RALT)>;
145)
146
147// tap: Q | right_alt + tap: ° (degree)
148ZMK_MOD_MORPH(q_deg,
149    bindings = <&kp Q>, <&kp RA(LS(N8))>;
150    mods = <(MOD_RALT)>;
151)
152
153// tap: G | right_alt + tap: µ (micro)
154ZMK_MOD_MORPH(g_mu,
155    bindings = <&kp G>, <&kp RA(M)>;
156    mods = <(MOD_RALT)>;
157)
158
159// tap: H | right_alt + tap: (skip - dagger not easily available)
160
161// tap: F | right_alt + tap: (skip - ogonek dead key)
162
163// tap: À | right_alt + tap: \ (backslash)
164ZMK_MOD_MORPH(agra_a_bslh,
165    bindings = <&AGRA A>, <&kp BSLH>;
166    mods = <(MOD_RALT)>;
167)
168
169// tap: C | right_alt + tap: © (copyright)
170ZMK_MOD_MORPH(c_copy,
171    bindings = <&hmr HL C>, <&kp RA(C)>;
172    mods = <(MOD_RALT)>;
173)
174
175// tap: T | right_alt + tap: (skip - thorn not easily available)
176
177// tap: S | right_alt + tap: ß (eszett/sharp s)
178ZMK_MOD_MORPH(s_ss,
179    bindings = <&hmr SR S>, <&kp RA(S)>;
180    mods = <(MOD_RALT)>;
181)
182
183// tap: R | right_alt + tap: ® (registered)
184ZMK_MOD_MORPH(r_reg,
185    bindings = <&hmr AR R>, <&kp RA(R)>;
186    mods = <(MOD_RALT)>;
187)
188
189// tap: N | right_alt + tap: ~ (tilde)
190ZMK_MOD_MORPH(n_tilde,
191    bindings = <&hmr GL N>, <&kp TILDE>;
192    mods = <(MOD_RALT)>;
193)
194
195// tap: M | right_alt + tap: (skip - macron dead key)
196
197// Shift+AltGr (right_alt+shift) behaviors based on bépo standard
198
199// tap: B | right_alt + tap: | | shift+right_alt + tap: ¦ (broken pipe)
200ZMK_MOD_MORPH(b_pipe_brkp,
201    bindings = <&b_pipe>, <&kp RA(LS(BSLH))>;
202    mods = <(MOD_LSFT|MOD_RSFT)>;
203)
204
205// tap: P | right_alt + tap: & | shift+right_alt + tap: § (section)
206ZMK_MOD_MORPH(p_amp_sect,
207    bindings = <&p_amp>, <&kp RA(S)>;
208    mods = <(MOD_LSFT|MOD_RSFT)>;
209)
210
211// tap: O/œ | shift+right_alt + tap: Œ (capital OE)
212ZMK_MOD_MORPH(o_oe_cap,
213    bindings = <&o_oe>, <&kp RA(LS(K))>;
214    mods = <(MOD_LSFT|MOD_RSFT)>;
215)
216
217// tap: L | right_alt + tap: / | shift+right_alt + tap: £ (pound)
218ZMK_MOD_MORPH(l_fslh_pound,
219    bindings = <&l_fslh>, <&kp RA(LS(N4))>;
220    mods = <(MOD_LSFT|MOD_RSFT)>;
221)
222
223// tap: Y | right_alt + tap: { | shift+right_alt + tap: ' (right single quote)
224ZMK_MOD_MORPH(y_lbrc_rsqt,
225    bindings = <&y_lbrc>, <&kp RA(RBKT)>;
226    mods = <(MOD_LSFT|MOD_RSFT)>;
227)
228
229// tap: X | right_alt + tap: } | shift+right_alt + tap: ' (left single quote)
230ZMK_MOD_MORPH(x_rbrc_lsqt,
231    bindings = <&x_rbrc>, <&kp RA(LBKT)>;
232    mods = <(MOD_LSFT|MOD_RSFT)>;
233)
234
235// tap: À | right_alt + tap: \ | shift+right_alt + tap: Æ (capital AE)
236ZMK_MOD_MORPH(agra_a_bslh_ae,
237    bindings = <&agra_a_bslh>, <&kp RA(LS(Z))>;
238    mods = <(MOD_LSFT|MOD_RSFT)>;
239)
240
241// tap: C/© | shift+right_alt + tap: © (keep same - copyright)
242// Already handled by c_copy
243
244// tap: T | shift+right_alt + tap: ™ (trademark)
245ZMK_MOD_MORPH(t_tm,
246    bindings = <&hmr CR T>, <&kp RA(LS(N2))>;
247    mods = <(MOD_LSFT|MOD_RALT)>;
248)
249
250// tap: G | right_alt + tap: µ | shift+right_alt + tap: † (dagger)
251ZMK_MOD_MORPH(g_mu_dag,
252    bindings = <&g_mu>, <&kp RA(T)>;
253    mods = <(MOD_LSFT|MOD_RSFT)>;
254)
255
256// tap: H | shift+right_alt + tap: ‡ (double dagger)
257ZMK_MOD_MORPH(h_ddag,
258    bindings = <&kp H>, <&kp RA(LS(N7))>;
259    mods = <(MOD_LSFT|MOD_RALT)>;
260)
261
262/*
263Local Variables:
264mode: c
265End:
266*/