aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_bepo.h
blob: 718baaa6838f8ac85b726ebb3a1b528657d980bc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
/* Copyright 2016 Didier Loiseau
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
/* Keymap macros for the French BÉPO layout - http://bepo.fr */
#ifndef KEYMAP_BEPO_H
#define KEYMAP_BEPO_H

#include "keymap.h"

// Normal characters
// First row (on usual keyboards)
#define BP_DOLLAR KC_GRAVE  // $
#define BP_DLR BP_DOLLAR
#define BP_DOUBLE_QUOTE KC_1  // "
#define BP_DQOT BP_DOUBLE_QUOTE
#define BP_LEFT_GUILLEMET KC_2  // «
#define BP_LGIL BP_LEFT_GUILLEMET
#define BP_RIGHT_GUILLEMET KC_3  // »
#define BP_RGIL BP_RIGHT_GUILLEMET
#define BP_LEFT_PAREN KC_4  // (
#define BP_LPRN BP_LEFT_PAREN
#define BP_RIGHT_PAREN KC_5  // )
#define BP_RPRN BP_RIGHT_PAREN
#define BP_AT KC_6     // @
#define BP_PLUS KC_7   // +
#define BP_MINUS KC_8  // -
#define BP_MINS BP_MINUS
#define BP_SLASH KC_9  // /
#define BP_SLSH BP_SLASH
#define BP_ASTERISK KC_0  // *
#define BP_ASTR BP_ASTERISK
#define BP_EQUAL KC_MINUS  // =
#define BP_EQL BP_EQUAL
#define BP_PERCENT KC_EQUAL  // %
#define BP_PERC BP_PERCENT

// Second row
#define BP_B KC_Q
#define BP_E_ACUTE KC_W  // é
#define BP_ECUT BP_E_ACUTE
#define BP_P KC_E
#define BP_O KC_R
#define BP_E_GRAVE KC_T  // è
#define BP_EGRV BP_E_GRAVE
#define BP_DEAD_CIRCUMFLEX KC_Y  // dead ^
#define BP_DCRC BP_DEAD_CIRCUMFLEX
#define BP_V KC_U
#define BP_D KC_I
#define BP_L KC_O
#define BP_J KC_P
#define BP_Z KC_LBRACKET
#define BP_W KC_RBRACKET

// Third row
#define BP_A KC_A
#define BP_U KC_S
#define BP_I KC_D
#define BP_E KC_F
#define BP_COMMA KC_G  // ,
#define BP_COMM BP_COMMA
#define BP_C KC_H
#define BP_T KC_J
#define BP_S KC_K
#define BP_R KC_L
#define BP_N KC_SCOLON
#define BP_M KC_QUOTE
#define BP_C_CEDILLA KC_BSLASH  // ç
#define BP_CCED BP_C_CEDILLA

// Fourth row
#define BP_E_CIRCUMFLEX KC_NONUS_BSLASH  // ê
#define BP_ECRC BP_E_CIRCUMFLEX
#define BP_A_GRAVE KC_Z  // à
#define BP_AGRV BP_A_GRAVE
#define BP_Y KC_X
#define BP_X KC_C
#define BP_DOT KC_V  // .
#define BP_K KC_B
#define BP_APOSTROPHE KC_N
#define BP_APOS BP_APOSTROPHE  // '
#define BP_Q KC_M
#define BP_G KC_COMMA
#define BP_H KC_DOT
#define BP_F KC_SLASH

// Shifted characters
// First row
#define BP_HASH LSFT(BP_DOLLAR)  // #
#define BP_1 LSFT(KC_1)
#define BP_2 LSFT(KC_2)
#define BP_3 LSFT(KC_3)
#define BP_4 LSFT(KC_4)
#define BP_5 LSFT(KC_5)
#define BP_6 LSFT(KC_6)
#define BP_7 LSFT(KC_7)
#define BP_8 LSFT(KC_8)
#define BP_9 LSFT(KC_9)
#define BP_0 LSFT(KC_0)
#define BP_DEGREE LSFT(BP_EQUAL)  // °
#define BP_DEGR BP_DEGREE
#define BP_GRAVE LSFT(BP_PERCENT)  // `
#define BP_GRV BP_GRAVE

// Second row
#define BP_EXCLAIM LSFT(BP_DEAD_CIRCUMFLEX)  // !
#define BP_EXLM BP_EXCLAIM

// Third row
#define BP_SCOLON LSFT(BP_COMMA)  // ;
#define BP_SCLN BP_SCOLON

// Fourth row
#define BP_COLON LSFT(BP_DOT)  // :
#define BP_COLN BP_COLON
#define BP_QUESTION LSFT(BP_APOS)  // ?
#define BP_QEST BP_QUESTION

// Space bar
#define BP_NON_BREAKING_SPACE LSFT(KC_SPACE)
#define BP_NBSP BP_NON_BREAKING_SPACE

// AltGr-ed characters
// First row
#define BP_EN_DASH ALGR(BP_DOLLAR)  // –
#define BP_NDSH BP_EN_DASH
#define BP_EM_DASH ALGR(KC_1)  // —
#define BP_MDSH BP_EM_DASH
#define BP_LESS ALGR(KC_2)     // <
#define BP_GREATER ALGR(KC_3)  // >
#define BP_GRTR BP_GREATER
#define BP_LBRACKET ALGR(KC_4)  // [
#define BP_LBRC BP_LBRACKET
#define BP_RBRACKET ALGR(KC_5)  // ]
#define BP_RBRC BP_RBRACKET
#define BP_CIRCUMFLEX ALGR(KC_6)  // ^
#define BP_CIRC BP_CIRCUMFLEX
#define BP_PLUS_MINUS ALGR(KC_7)  // ±
#define BP_PSMS BP_PLUS_MINUS
#define BP_MATH_MINUS ALGR(KC_8)  // −
#define BP_MMNS BP_MATH_MINUS
#define BP_OBELUS ALGR(KC_9)  // ÷
#define BP_OBEL BP_OBELUS
// more conventional name of the symbol
#define BP_DIVISION_SIGN BP_OBELUS
#define BP_DVSN BP_DIVISION_SIGN
#define BP_TIMES ALGR(KC_0)  // ×
#define BP_TIMS BP_TIMES
#define BP_DIFFERENT ALGR(BP_EQUAL)  // ≠
#define BP_DIFF BP_DIFFERENT
#define BP_PERMILLE ALGR(BP_PERCENT)  // ‰
#define BP_PMIL BP_PERMILLE

// Second row
#define BP_PIPE ALGR(BP_B)              // |
#define BP_DEAD_ACUTE ALGR(BP_E_ACUTE)  // dead ´
#define BP_DACT BP_DEAD_ACUTE
#define BP_AMPERSAND ALGR(BP_P)  // &
#define BP_AMPR BP_AMPERSAND
#define BP_OE_LIGATURE ALGR(BP_O)  // œ
#define BP_OE BP_OE_LIGATURE
#define BP_DEAD_GRAVE ALGR(BP_E_GRAVE)  // `
#define BP_DGRV BP_DEAD_GRAVE
#define BP_INVERTED_EXCLAIM ALGR(BP_DEAD_CIRCUMFLEX)  // ¡
#define BP_IXLM BP_INVERTED_EXCLAIM
#define BP_DEAD_CARON ALGR(BP_V)  // dead ˇ
#define BP_DCAR BP_DEAD_CARON
#define BP_ETH ALGR(BP_D)         // ð
#define BP_DEAD_SLASH ALGR(BP_L)  // dead /
#define BP_DSLH BP_DEAD_SLASH
#define BP_IJ_LIGATURE ALGR(BP_J)  // ij
#define BP_IJ BP_IJ_LIGATURE
#define BP_SCHWA ALGR(BP_Z)  // ə
#define BP_SCWA BP_SCHWA
#define BP_DEAD_BREVE ALGR(BP_W)  // dead ˘
#define BP_DBRV BP_DEAD_BREVE

// Third row
#define BP_AE_LIGATURE ALGR(BP_A)  // æ
#define BP_AE BP_AE_LIGATURE
#define BP_U_GRAVE ALGR(BP_U)  // ù
#define BP_UGRV BP_U_GRAVE
#define BP_DEAD_TREMA ALGR(BP_I)  // dead ¨ (trema/umlaut/diaresis)
#define BP_DTRM BP_DEAD_TREMA
#define BP_EURO ALGR(BP_E)                          // €
#define BP_TYPOGRAPHICAL_APOSTROPHE ALGR(BP_COMMA)  // ’
#define BP_TAPO BP_TYPOGRAPHICAL_APOSTROPHE
#define BP_COPYRIGHT ALGR(BP_C)  // ©
#define BP_CPRT BP_COPYRIGHT
#define BP_THORN ALGR(BP_T)  // þ
#define BP_THRN BP_THORN
#define BP_SHARP_S ALGR(BP_S)  // ß
#define BP_SRPS BP_SHARP_S
#define BP_REGISTERED_TRADEMARK ALGR(BP_R)  // ®
#define BP_RTM BP_REGISTERED_TRADEMARK
#define BP_DEAD_TILDE ALGR(BP_N)  // dead ~
#define BP_DTLD BP_DEAD_TILDE
#define BP_DEAD_MACRON ALGR(BP_M)  // dead ¯
#define BP_DMCR BP_DEAD_MACRON
#define BP_DEAD_CEDILLA ALGR(BP_C_CEDILLA)  // dead ¸
#define BP_DCED BP_DEAD_CEDILLA

// Fourth row
#define BP_NONUS_SLASH ALGR(BP_E_CIRCUMFLEX)  // / on non-us backslash key (102nd key, ê in bépo)
#define BP_NUSL BP_NONUS_SLASH
#define BP_BACKSLASH ALGR(BP_A_GRAVE) /* \ */
#define BP_BSLS BP_BACKSLASH
#define BP_LEFT_CURLY_BRACE ALGR(BP_Y)  // {
#define BP_LCBR BP_LEFT_CURLY_BRACE
#define BP_RIGHT_CURLY_BRACE ALGR(BP_X)  // }
#define BP_RCBR BP_RIGHT_CURLY_BRACE
#define BP_ELLIPSIS ALGR(BP_DOT)  // …
#define BP_ELPS BP_ELLIPSIS
#define BP_TILDE ALGR(BP_K)  // ~
#define BP_TILD BP_TILDE
#define BP_INVERTED_QUESTION ALGR(BP_QUESTION)  // ¿
#define BP_IQST BP_INVERTED_QUESTION
#define BP_DEAD_RING ALGR(BP_Q)  // dead °
#define BP_DRNG BP_DEAD_RING
#define BP_DEAD_GREEK ALGR(BP_G)  // dead Greek key (following key will make a Greek letter)
#define BP_DGRK BP_DEAD_GREEK
#define BP_DAGGER ALGR(BP_H)  // †
#define BP_DAGR BP_DAGGER
#define BP_DEAD_OGONEK ALGR(BP_F)  // dead ˛
#define BP_DOGO BP_DEAD_OGONEK

// Space bar
#define BP_UNDERSCORE ALGR(KC_SPACE)  // _
#define BP_UNDS BP_UNDERSCORE

// AltGr-Shifted characters (different from capitalised AltGr-ed characters)
// First row
#define BP_PARAGRAPH ALGR(BP_HASH)  // ¶
#define BP_PARG BP_PARAGRAPH
#define BP_LOW_DOUBLE_QUOTE ALGR(BP_1)  // „
#define BP_LWQT BP_LOW_DOUBLE_QUOTE
#define BP_LEFT_DOUBLE_QUOTE ALGR(BP_2)  // “
#define BP_LDQT BP_LEFT_DOUBLE_QUOTE
#define BP_RIGHT_DOUBLE_QUOTE ALGR(BP_3)  // ”
#define BP_RDQT BP_RIGHT_DOUBLE_QUOTE
#define BP_LESS_OR_EQUAL ALGR(BP_4)  // ≤
#define BP_LEQL BP_LESS_OR_EQUAL
#define BP_GREATER_OR_EQUAL ALGR(BP_5)  // ≥
#define BP_GEQL BP_GREATER_OR_EQUAL
// nothing on ALGR(BP_6)
#define BP_NEGATION ALGR(BP_7)  // ¬
#define BP_NEGT BP_NEGATION
#define BP_ONE_QUARTER ALGR(BP_8)  // ¼
#define BP_1QRT BP_ONE_QUARTER
#define BP_ONE_HALF ALGR(BP_9)  // ½
#define BP_1HLF BP_ONE_HALF
#define BP_THREE_QUARTERS ALGR(BP_0)  // ¾
#define BP_3QRT BP_THREE_QUARTERS
#define BP_MINUTES ALGR(BP_DEGREE)  // ′
#define BP_MNUT BP_MINUTES
#define BP_SECONDS ALGR(BP_GRAVE)  // ″
#define BP_SCND BP_SECONDS

// Second row
#define BP_BROKEN_PIPE LSFT(BP_PIPE)  // ¦
#define BP_BPIP BP_BROKEN_PIPE
#define BP_DEAD_DOUBLE_ACUTE LSFT(BP_DEAD_ACUTE)  // ˝
#define BP_DDCT BP_DEAD_DOUBLE_ACUTE
#define BP_SECTION ALGR(LSFT(BP_P))  // §
#define BP_SECT BP_SECTION
// LSFT(BP_DEAD_GRAVE) is actually the same character as LSFT(BP_PERCENT)
#define BP_GRAVE_BIS LSFT(BP_DEAD_GRAVE)  // `
#define BP_GRVB BP_GRAVE_BIS

// Third row
#define BP_DEAD_DOT_ABOVE LSFT(BP_DEAD_TREMA)  // dead ˙
#define BP_DDTA BP_DEAD_DOT_ABOVE
#define BP_DEAD_CURRENCY LSFT(BP_EURO)  // dead ¤ (next key will generate a currency code like ¥ or £)
#define BP_DCUR BP_DEAD_CURRENCY
#define BP_DEAD_HORN LSFT(ALGR(BP_COMMA))  // dead ̛
#define BP_DHRN BP_DEAD_HORN
#define BP_LONG_S LSFT(ALGR(BP_C))  // ſ
#define BP_LNGS BP_LONG_S
#define BP_TRADEMARK LSFT(BP_REGISTERED_TRADEMARK)  // ™
#define BP_TM BP_TRADEMARK
#define BP_ORDINAL_INDICATOR_O LSFT(ALGR(BP_M))  // º
#define BP_ORDO BP_ORDINAL_INDICATOR_O
#define BP_DEAD_COMMA LSFT(BP_DEAD_CEDILLA)  // dead ˛
#define BP_DCOM BP_DEAD_COMMA

// Fourth row
#define BP_LEFT_QUOTE LSFT(ALGR(BP_Y))  // ‘
#define BP_LQOT BP_LEFT_QUOTE
#define BP_RIGHT_QUOTE LSFT(ALGR(BP_X))  // ’
#define BP_RQOT BP_RIGHT_QUOTE
#define BP_INTERPUNCT LSFT(ALGR(BP_DOT))  // ·
#define BP_IPCT BP_INTERPUNCT
#define BP_DEAD_HOOK_ABOVE LSFT(ALGR(BP_QUESTION))  // dead ̉
#define BP_DHKA BP_DEAD_HOOK_ABOVE
#define BP_DEAD_UNDERDOT LSFT(BP_DEAD_RING)  // dead ̣
#define BP_DUDT BP_DEAD_UNDERDOT
#define BP_DOUBLE_DAGGER LSFT(BP_DAGGER)  // ‡
#define BP_DDGR BP_DOUBLE_DAGGER
#define BP_ORDINAL_INDICATOR_A LSFT(ALGR(BP_F))  // ª
#define BP_ORDA BP_ORDINAL_INDICATOR_A

// Space bar
#define BP_NARROW_NON_BREAKING_SPACE ALGR(BP_NON_BREAKING_SPACE)
#define BP_NNBS BP_NARROW_NON_BREAKING_SPACE

#endif