1 /* Copyright 2016 Didier Loiseau
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 /* Keymap macros for the French BÉPO layout - http://bepo.fr */
23 // First row (on usual keyboards)
24 #define BP_DOLLAR KC_GRAVE // $
25 #define BP_DLR BP_DOLLAR
26 #define BP_DOUBLE_QUOTE KC_1 // "
27 #define BP_DQOT BP_DOUBLE_QUOTE
28 #define BP_LEFT_GUILLEMET KC_2 // «
29 #define BP_LGIL BP_LEFT_GUILLEMET
30 #define BP_RIGHT_GUILLEMET KC_3 // »
31 #define BP_RGIL BP_RIGHT_GUILLEMET
32 #define BP_LEFT_PAREN KC_4 // (
33 #define BP_LPRN BP_LEFT_PAREN
34 #define BP_RIGHT_PAREN KC_5 // )
35 #define BP_RPRN BP_RIGHT_PAREN
36 #define BP_AT KC_6 // @
37 #define BP_PLUS KC_7 // +
38 #define BP_MINUS KC_8 // -
39 #define BP_MINS BP_MINUS
40 #define BP_SLASH KC_9 // /
41 #define BP_SLSH BP_SLASH
42 #define BP_ASTERISK KC_0 // *
43 #define BP_ASTR BP_ASTERISK
44 #define BP_EQUAL KC_MINUS // =
45 #define BP_EQL BP_EQUAL
46 #define BP_PERCENT KC_EQUAL // %
47 #define BP_PERC BP_PERCENT
51 #define BP_E_ACUTE KC_W // é
52 #define BP_ECUT BP_E_ACUTE
55 #define BP_E_GRAVE KC_T // è
56 #define BP_EGRV BP_E_GRAVE
57 #define BP_DEAD_CIRCUMFLEX KC_Y // dead ^
58 #define BP_DCRC BP_DEAD_CIRCUMFLEX
63 #define BP_Z KC_LBRACKET
64 #define BP_W KC_RBRACKET
71 #define BP_COMMA KC_G // ,
72 #define BP_COMM BP_COMMA
77 #define BP_N KC_SCOLON
79 #define BP_C_CEDILLA KC_BSLASH // ç
80 #define BP_CCED BP_C_CEDILLA
83 #define BP_E_CIRCUMFLEX KC_NONUS_BSLASH // ê
84 #define BP_ECRC BP_E_CIRCUMFLEX
85 #define BP_A_GRAVE KC_Z // à
86 #define BP_AGRV BP_A_GRAVE
89 #define BP_DOT KC_V // .
91 #define BP_APOSTROPHE KC_N
92 #define BP_APOS BP_APOSTROPHE // '
100 #define BP_HASH LSFT(BP_DOLLAR) // #
101 #define BP_1 LSFT(KC_1)
102 #define BP_2 LSFT(KC_2)
103 #define BP_3 LSFT(KC_3)
104 #define BP_4 LSFT(KC_4)
105 #define BP_5 LSFT(KC_5)
106 #define BP_6 LSFT(KC_6)
107 #define BP_7 LSFT(KC_7)
108 #define BP_8 LSFT(KC_8)
109 #define BP_9 LSFT(KC_9)
110 #define BP_0 LSFT(KC_0)
111 #define BP_DEGREE LSFT(BP_EQUAL) // °
112 #define BP_DEGR BP_DEGREE
113 #define BP_GRAVE LSFT(BP_PERCENT) // `
114 #define BP_GRV BP_GRAVE
117 #define BP_EXCLAIM LSFT(BP_DEAD_CIRCUMFLEX) // !
118 #define BP_EXLM BP_EXCLAIM
121 #define BP_SCOLON LSFT(BP_COMMA) // ;
122 #define BP_SCLN BP_SCOLON
125 #define BP_COLON LSFT(BP_DOT) // :
126 #define BP_COLN BP_COLON
127 #define BP_QUESTION LSFT(BP_APOS) // ?
128 #define BP_QEST BP_QUESTION
131 #define BP_NON_BREAKING_SPACE LSFT(KC_SPACE)
132 #define BP_NBSP BP_NON_BREAKING_SPACE
134 // AltGr-ed characters
136 #define BP_EN_DASH ALGR(BP_DOLLAR) // –
137 #define BP_NDSH BP_EN_DASH
138 #define BP_EM_DASH ALGR(KC_1) // —
139 #define BP_MDSH BP_EM_DASH
140 #define BP_LESS ALGR(KC_2) // <
141 #define BP_GREATER ALGR(KC_3) // >
142 #define BP_GRTR BP_GREATER
143 #define BP_LBRACKET ALGR(KC_4) // [
144 #define BP_LBRC BP_LBRACKET
145 #define BP_RBRACKET ALGR(KC_5) // ]
146 #define BP_RBRC BP_RBRACKET
147 #define BP_CIRCUMFLEX ALGR(KC_6) // ^
148 #define BP_CIRC BP_CIRCUMFLEX
149 #define BP_PLUS_MINUS ALGR(KC_7) // ±
150 #define BP_PSMS BP_PLUS_MINUS
151 #define BP_MATH_MINUS ALGR(KC_8) // −
152 #define BP_MMNS BP_MATH_MINUS
153 #define BP_OBELUS ALGR(KC_9) // ÷
154 #define BP_OBEL BP_OBELUS
155 // more conventional name of the symbol
156 #define BP_DIVISION_SIGN BP_OBELUS
157 #define BP_DVSN BP_DIVISION_SIGN
158 #define BP_TIMES ALGR(KC_0) // ×
159 #define BP_TIMS BP_TIMES
160 #define BP_DIFFERENT ALGR(BP_EQUAL) // ≠
161 #define BP_DIFF BP_DIFFERENT
162 #define BP_PERMILLE ALGR(BP_PERCENT) // ‰
163 #define BP_PMIL BP_PERMILLE
166 #define BP_PIPE ALGR(BP_B) // |
167 #define BP_DEAD_ACUTE ALGR(BP_E_ACUTE) // dead ´
168 #define BP_DACT BP_DEAD_ACUTE
169 #define BP_AMPERSAND ALGR(BP_P) // &
170 #define BP_AMPR BP_AMPERSAND
171 #define BP_OE_LIGATURE ALGR(BP_O) // œ
172 #define BP_OE BP_OE_LIGATURE
173 #define BP_DEAD_GRAVE ALGR(BP_E_GRAVE) // `
174 #define BP_DGRV BP_DEAD_GRAVE
175 #define BP_INVERTED_EXCLAIM ALGR(BP_DEAD_CIRCUMFLEX) // ¡
176 #define BP_IXLM BP_INVERTED_EXCLAIM
177 #define BP_DEAD_CARON ALGR(BP_V) // dead ˇ
178 #define BP_DCAR BP_DEAD_CARON
179 #define BP_ETH ALGR(BP_D) // ð
180 #define BP_DEAD_SLASH ALGR(BP_L) // dead /
181 #define BP_DSLH BP_DEAD_SLASH
182 #define BP_IJ_LIGATURE ALGR(BP_J) // ij
183 #define BP_IJ BP_IJ_LIGATURE
184 #define BP_SCHWA ALGR(BP_Z) // ə
185 #define BP_SCWA BP_SCHWA
186 #define BP_DEAD_BREVE ALGR(BP_W) // dead ˘
187 #define BP_DBRV BP_DEAD_BREVE
190 #define BP_AE_LIGATURE ALGR(BP_A) // æ
191 #define BP_AE BP_AE_LIGATURE
192 #define BP_U_GRAVE ALGR(BP_U) // ù
193 #define BP_UGRV BP_U_GRAVE
194 #define BP_DEAD_TREMA ALGR(BP_I) // dead ¨ (trema/umlaut/diaresis)
195 #define BP_DTRM BP_DEAD_TREMA
196 #define BP_EURO ALGR(BP_E) // €
197 #define BP_TYPOGRAPHICAL_APOSTROPHE ALGR(BP_COMMA) // ’
198 #define BP_TAPO BP_TYPOGRAPHICAL_APOSTROPHE
199 #define BP_COPYRIGHT ALGR(BP_C) // ©
200 #define BP_CPRT BP_COPYRIGHT
201 #define BP_THORN ALGR(BP_T) // þ
202 #define BP_THRN BP_THORN
203 #define BP_SHARP_S ALGR(BP_S) // ß
204 #define BP_SRPS BP_SHARP_S
205 #define BP_REGISTERED_TRADEMARK ALGR(BP_R) // ®
206 #define BP_RTM BP_REGISTERED_TRADEMARK
207 #define BP_DEAD_TILDE ALGR(BP_N) // dead ~
208 #define BP_DTLD BP_DEAD_TILDE
209 #define BP_DEAD_MACRON ALGR(BP_M) // dead ¯
210 #define BP_DMCR BP_DEAD_MACRON
211 #define BP_DEAD_CEDILLA ALGR(BP_C_CEDILLA) // dead ¸
212 #define BP_DCED BP_DEAD_CEDILLA
215 #define BP_NONUS_SLASH ALGR(BP_E_CIRCUMFLEX) // / on non-us backslash key (102nd key, ê in bépo)
216 #define BP_NUSL BP_NONUS_SLASH
217 #define BP_BACKSLASH ALGR(BP_A_GRAVE) /* \ */
218 #define BP_BSLS BP_BACKSLASH
219 #define BP_LEFT_CURLY_BRACE ALGR(BP_Y) // {
220 #define BP_LCBR BP_LEFT_CURLY_BRACE
221 #define BP_RIGHT_CURLY_BRACE ALGR(BP_X) // }
222 #define BP_RCBR BP_RIGHT_CURLY_BRACE
223 #define BP_ELLIPSIS ALGR(BP_DOT) // …
224 #define BP_ELPS BP_ELLIPSIS
225 #define BP_TILDE ALGR(BP_K) // ~
226 #define BP_TILD BP_TILDE
227 #define BP_INVERTED_QUESTION ALGR(BP_QUESTION) // ¿
228 #define BP_IQST BP_INVERTED_QUESTION
229 #define BP_DEAD_RING ALGR(BP_Q) // dead °
230 #define BP_DRNG BP_DEAD_RING
231 #define BP_DEAD_GREEK ALGR(BP_G) // dead Greek key (following key will make a Greek letter)
232 #define BP_DGRK BP_DEAD_GREEK
233 #define BP_DAGGER ALGR(BP_H) // †
234 #define BP_DAGR BP_DAGGER
235 #define BP_DEAD_OGONEK ALGR(BP_F) // dead ˛
236 #define BP_DOGO BP_DEAD_OGONEK
239 #define BP_UNDERSCORE ALGR(KC_SPACE) // _
240 #define BP_UNDS BP_UNDERSCORE
242 // AltGr-Shifted characters (different from capitalised AltGr-ed characters)
244 #define BP_PARAGRAPH ALGR(BP_HASH) // ¶
245 #define BP_PARG BP_PARAGRAPH
246 #define BP_LOW_DOUBLE_QUOTE ALGR(BP_1) // „
247 #define BP_LWQT BP_LOW_DOUBLE_QUOTE
248 #define BP_LEFT_DOUBLE_QUOTE ALGR(BP_2) // “
249 #define BP_LDQT BP_LEFT_DOUBLE_QUOTE
250 #define BP_RIGHT_DOUBLE_QUOTE ALGR(BP_3) // ”
251 #define BP_RDQT BP_RIGHT_DOUBLE_QUOTE
252 #define BP_LESS_OR_EQUAL ALGR(BP_4) // ≤
253 #define BP_LEQL BP_LESS_OR_EQUAL
254 #define BP_GREATER_OR_EQUAL ALGR(BP_5) // ≥
255 #define BP_GEQL BP_GREATER_OR_EQUAL
256 // nothing on ALGR(BP_6)
257 #define BP_NEGATION ALGR(BP_7) // ¬
258 #define BP_NEGT BP_NEGATION
259 #define BP_ONE_QUARTER ALGR(BP_8) // ¼
260 #define BP_1QRT BP_ONE_QUARTER
261 #define BP_ONE_HALF ALGR(BP_9) // ½
262 #define BP_1HLF BP_ONE_HALF
263 #define BP_THREE_QUARTERS ALGR(BP_0) // ¾
264 #define BP_3QRT BP_THREE_QUARTERS
265 #define BP_MINUTES ALGR(BP_DEGREE) // ′
266 #define BP_MNUT BP_MINUTES
267 #define BP_SECONDS ALGR(BP_GRAVE) // ″
268 #define BP_SCND BP_SECONDS
271 #define BP_BROKEN_PIPE LSFT(BP_PIPE) // ¦
272 #define BP_BPIP BP_BROKEN_PIPE
273 #define BP_DEAD_DOUBLE_ACUTE LSFT(BP_DEAD_ACUTE) // ˝
274 #define BP_DDCT BP_DEAD_DOUBLE_ACUTE
275 #define BP_SECTION ALGR(LSFT(BP_P)) // §
276 #define BP_SECT BP_SECTION
277 // LSFT(BP_DEAD_GRAVE) is actually the same character as LSFT(BP_PERCENT)
278 #define BP_GRAVE_BIS LSFT(BP_DEAD_GRAVE) // `
279 #define BP_GRVB BP_GRAVE_BIS
282 #define BP_DEAD_DOT_ABOVE LSFT(BP_DEAD_TREMA) // dead ˙
283 #define BP_DDTA BP_DEAD_DOT_ABOVE
284 #define BP_DEAD_CURRENCY LSFT(BP_EURO) // dead ¤ (next key will generate a currency code like ¥ or £)
285 #define BP_DCUR BP_DEAD_CURRENCY
286 #define BP_DEAD_HORN LSFT(ALGR(BP_COMMA)) // dead ̛
287 #define BP_DHRN BP_DEAD_HORN
288 #define BP_LONG_S LSFT(ALGR(BP_C)) // ſ
289 #define BP_LNGS BP_LONG_S
290 #define BP_TRADEMARK LSFT(BP_REGISTERED_TRADEMARK) // ™
291 #define BP_TM BP_TRADEMARK
292 #define BP_ORDINAL_INDICATOR_O LSFT(ALGR(BP_M)) // º
293 #define BP_ORDO BP_ORDINAL_INDICATOR_O
294 #define BP_DEAD_COMMA LSFT(BP_DEAD_CEDILLA) // dead ˛
295 #define BP_DCOM BP_DEAD_COMMA
298 #define BP_LEFT_QUOTE LSFT(ALGR(BP_Y)) // ‘
299 #define BP_LQOT BP_LEFT_QUOTE
300 #define BP_RIGHT_QUOTE LSFT(ALGR(BP_X)) // ’
301 #define BP_RQOT BP_RIGHT_QUOTE
302 #define BP_INTERPUNCT LSFT(ALGR(BP_DOT)) // ·
303 #define BP_IPCT BP_INTERPUNCT
304 #define BP_DEAD_HOOK_ABOVE LSFT(ALGR(BP_QUESTION)) // dead ̉
305 #define BP_DHKA BP_DEAD_HOOK_ABOVE
306 #define BP_DEAD_UNDERDOT LSFT(BP_DEAD_RING) // dead ̣
307 #define BP_DUDT BP_DEAD_UNDERDOT
308 #define BP_DOUBLE_DAGGER LSFT(BP_DAGGER) // ‡
309 #define BP_DDGR BP_DOUBLE_DAGGER
310 #define BP_ORDINAL_INDICATOR_A LSFT(ALGR(BP_F)) // ª
311 #define BP_ORDA BP_ORDINAL_INDICATOR_A
314 #define BP_NARROW_NON_BREAKING_SPACE ALGR(BP_NON_BREAKING_SPACE)
315 #define BP_NNBS BP_NARROW_NON_BREAKING_SPACE