aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_bepo.h
blob: 013559e96deec003938ad0a7f456f3140f23a4c3 (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
318
319
320
321
322
323
324
325
326
/* 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"

// Alt gr
#ifndef ALTGR
#define ALTGR(kc)   RALT(kc)
#endif
#ifndef ALGR
#define ALGR(kc)    ALTGR(kc)
#endif
#define BP_ALGR KC_RALT

// 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          ALTGR(BP_DOLLAR)    // –
#define BP_NDSH             BP_EN_DASH
#define BP_EM_DASH          ALTGR(KC_1)         // —
#define BP_MDSH             BP_EM_DASH
#define BP_LESS             ALTGR(KC_2)         // <
#define BP_GREATER          ALTGR(KC_3)         // >
#define BP_GRTR             BP_GREATER
#define BP_LBRACKET         ALTGR(KC_4)         // [
#define BP_LBRC             BP_LBRACKET
#define BP_RBRACKET         ALTGR(KC_5)         // ]
#define BP_RBRC             BP_RBRACKET
#define BP_CIRCUMFLEX       ALTGR(KC_6)         // ^
#define BP_CIRC             BP_CIRCUMFLEX
#define BP_PLUS_MINUS       ALTGR(KC_7)         // ±
#define BP_PSMS             BP_PLUS_MINUS
#define BP_MATH_MINUS       ALTGR(KC_8)         // −
#define BP_MMNS             BP_MATH_MINUS
#define BP_OBELUS           ALTGR(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            ALTGR(KC_0)         // ×
#define BP_TIMS             BP_TIMES
#define BP_DIFFERENT        ALTGR(BP_EQUAL)     // ≠
#define BP_DIFF             BP_DIFFERENT
#define BP_PERMILLE         ALTGR(BP_PERCENT)   // ‰
#define BP_PMIL             BP_PERMILLE

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

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

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

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

// AltGr-Shifted characters (different from capitalised AltGr-ed characters)
// First row
#define BP_PARAGRAPH            ALTGR(BP_HASH)      // ¶
#define BP_PARG                 BP_PARAGRAPH
#define BP_LOW_DOUBLE_QUOTE     ALTGR(BP_1)         // „
#define BP_LWQT                 BP_LOW_DOUBLE_QUOTE
#define BP_LEFT_DOUBLE_QUOTE    ALTGR(BP_2)         // “
#define BP_LDQT                 BP_LEFT_DOUBLE_QUOTE
#define BP_RIGHT_DOUBLE_QUOTE   ALTGR(BP_3)         // ”
#define BP_RDQT                 BP_RIGHT_DOUBLE_QUOTE
#define BP_LESS_OR_EQUAL        ALTGR(BP_4)         // ≤
#define BP_LEQL                 BP_LESS_OR_EQUAL
#define BP_GREATER_OR_EQUAL     ALTGR(BP_5)         // ≥
#define BP_GEQL                 BP_GREATER_OR_EQUAL
// nothing on ALTGR(BP_6)
#define BP_NEGATION             ALTGR(BP_7)         // ¬
#define BP_NEGT                 BP_NEGATION
#define BP_ONE_QUARTER          ALTGR(BP_8)         // ¼
#define BP_1QRT                 BP_ONE_QUARTER
#define BP_ONE_HALF             ALTGR(BP_9)         // ½
#define BP_1HLF                 BP_ONE_HALF
#define BP_THREE_QUARTERS       ALTGR(BP_0)         // ¾
#define BP_3QRT                 BP_THREE_QUARTERS
#define BP_MINUTES              ALTGR(BP_DEGREE)    // ′
#define BP_MNUT                 BP_MINUTES
#define BP_SECONDS              ALTGR(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              ALTGR(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(ALTGR(BP_COMMA))   // dead ̛
#define BP_DHRN                 BP_DEAD_HORN
#define BP_LONG_S               LSFT(ALTGR(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(ALTGR(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(ALTGR(BP_Y))       // ‘
#define BP_LQOT                 BP_LEFT_QUOTE
#define BP_RIGHT_QUOTE          LSFT(ALTGR(BP_X))       // ’
#define BP_RQOT                 BP_RIGHT_QUOTE
#define BP_INTERPUNCT           LSFT(ALTGR(BP_DOT))     // ·
#define BP_IPCT                 BP_INTERPUNCT
#define BP_DEAD_HOOK_ABOVE      LSFT(ALTGR(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(ALTGR(BP_F))       // ª
#define BP_ORDA                 BP_ORDINAL_INDICATOR_A

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

#endif