main
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 <¯o_param_1to1>,
19 <¯o_tap &kp MACRO_PLACEHOLDER>;
20)
21
22// ´ to input
23ZMK_MACRO_ONE_PARAM(AIGU, bindings =
24 <&kp SQT>,
25 <¯o_param_1to1>,
26 <¯o_tap &kp MACRO_PLACEHOLDER>;
27)
28
29// ¨ to input
30ZMK_MACRO_ONE_PARAM(TREM, bindings =
31 <&kp DQT>,
32 <¯o_param_1to1>,
33 <¯o_tap &kp MACRO_PLACEHOLDER>;
34)
35
36// ~ to input (TILDE = LS(GRAVE), so use shift + grave)
37// Note: can't use "TILD" as name — it's a deprecated ZMK keycode #define
38ZMK_MACRO_ONE_PARAM(TILDEMACRO, bindings =
39 <¯o_press &kp LSHFT>,
40 <¯o_tap &kp GRAVE>,
41 <¯o_release &kp LSHFT>,
42 <¯o_param_1to1>,
43 <¯o_tap &kp MACRO_PLACEHOLDER>;
44)
45
46// Standalone dead key macros (dead key + space) for use in combos
47ZMK_MACRO(standalone_dquo, bindings = <¯o_tap &kp DQT &kp SPACE>;) // "
48ZMK_MACRO(standalone_tild, bindings = <¯o_press &kp LSHFT>, <¯o_tap &kp GRAVE>, <¯o_release &kp LSHFT>, <¯o_tap &kp SPACE>;) // ~
49ZMK_MACRO(standalone_grav, bindings = <¯o_tap &kp GRAVE &kp SPACE>;) // `
50
51// ^ to input
52ZMK_MACRO_ONE_PARAM(CIRC, bindings =
53 <&kp CARET>,
54 <¯o_param_1to1>,
55 <¯o_tap &kp MACRO_PLACEHOLDER>;
56)
57
58// tap: minus | shift + tap: question mark
59ZMK_MOD_MORPH(min_qma,
60 bindings = <&kp MINUS>, <&kp QMARK>;
61 mods = <(MOD_LSFT|MOD_RSFT)>;
62)
63
64// tap: comma | shift + tab: semicolon
65ZMK_MOD_MORPH(com_smc,
66 bindings = <&kp COMMA>, <&kp SEMICOLON>;
67 mods = <(MOD_LSFT|MOD_RSFT)>;
68)
69
70// tap: period | shift + tap: colon
71ZMK_MOD_MORPH(dot_col,
72 bindings = <&kp DOT>, <&kp COLON>;
73 mods = <(MOD_LSFT|MOD_RSFT)>;
74)
75
76// Bépo morphs
77
78// tap: quote (') | shift + tab: question mark
79ZMK_MOD_MORPH(sqt_qma,
80 bindings = <&AIGU SPACE>, <&kp QMARK>;
81 mods = <(MOD_LSFT|MOD_RSFT)>;
82)
83
84// tap: Caret (^) | shift + tap: EXCLAMATION (!)
85ZMK_MOD_MORPH(car_excl,
86 bindings = <&kp CARET>, <&kp EXCLAMATION>;
87 mods = <(MOD_LSFT|MOD_RSFT)>;
88)
89
90// tap: B | right_alt + tap : pipe (|)
91ZMK_MOD_MORPH(b_pipe,
92 bindings = <&kp B>, <&kp PIPE>;
93 mods = <(MOD_RALT)>;
94)
95
96// tap: P | right_alt + tap : ampersand (&)
97ZMK_MOD_MORPH(p_amp,
98 bindings = <&kp P>, <&kp AMPERSAND>;
99 mods = <(MOD_RALT)>;
100)
101
102// hold: numbers layer | tap: SPACE | right_alt + tap : undercore (_)
103ZMK_MOD_MORPH(num_spc_und,
104 bindings = << NUM SPACE>, <&kp UNDERSCORE>;
105 mods = <(MOD_RALT)>;
106)
107
108// hold: left control | tap: E | right_alt + tap: EURO (€)
109ZMK_MOD_MORPH(cl_e_euro,
110 bindings = <&hml CL E>, <&kp EURO>;
111 mods = <(MOD_RALT)>;
112)
113
114// hold: right_hype | tap: comma | shift + tab: semicolon
115ZMK_MOD_MORPH(hyp_com_smc,
116 bindings = <&hml HL COMMA>, <&kp SEMICOLON>;
117 mods = <(MOD_LSFT|MOD_RSFT)>;
118)
119
120/*
121Local Variables:
122mode: c
123End:
124*/