summaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_canadian_multilingual.h
blob: 1d45bee32e9a03187f66957c06e7379b119febfb (plain)
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
/* 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/>.
 */
#ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
#define KEYMAP_CANADIAN_MULTILINGUAG_H

#include "keymap.h"

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

#define CSA_ALTGR   KC_RALT
#define CSA_ALGR    CSA_ALTGR

#ifndef GR2A
#define GR2A(kc)    RCTL(kc)
#endif

// Normal characters
// First row
#define CSA_SLASH   KC_GRV      // /
#define CSA_SLSH    CSA_SLASH

// Second row
#define CSA_DEAD_CIRCUMFLEX     KC_LBRACKET         // dead ^
#define CSA_DCRC                CSA_DEAD_CIRCUMFLEX
#define CSA_C_CEDILLA           KC_RBRACKET         // Ç
#define CSA_CCED                CSA_C_CEDILLA

// Third row
#define CSA_E_GRAVE     KC_QUOT     // è
#define CSA_EGRV        CSA_E_GRAVE
#define CSA_A_GRAVE     KC_BSLASH   // à
#define CSA_AGRV        CSA_A_GRAVE

// Fourth row
#define CSA_U_GRAVE     KC_NONUS_BSLASH     // ù
#define CSA_UGRV        CSA_U_GRAVE
#define CSA_E_ACUTE     KC_SLSH             // é
#define CSA_ECUT        CSA_E_ACUTE

// Shifted characters
// First row
#define CSA_BACKSLASH   LSFT(CSA_SLASH) /* \ */
#define CSA_BSLS        CSA_BACKSLASH
#define CSA_QUESTION    LSFT(KC_6)      // ?
#define CSA_QEST        CSA_QUESTION

// Second row
#define CSA_DEAD_TREMA  LSFT(CSA_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
#define CSA_DTRM        CSA_DEAD_TREMA

// Third row
// all same as US-QWERTY, or capitalised character of the non-shifted key

// Fourth row
#define CSA_APOSTROPHE      LSFT(KC_COMMA)  // '
#define CSA_APOS            CSA_APOSTROPHE
#define CSA_DOUBLE_QUOTE    LSFT(KC_DOT)    // "
#define CSA_DQOT            CSA_DOUBLE_QUOTE

// Alt Gr-ed characters
// First row
#define CSA_PIPE                ALTGR(CSA_SLASH)        // |
#define CSA_CURRENCY            ALTGR(KC_4)             // ¤
#define CSA_CURR                CSA_CURRENCY
#define CSA_LEFT_CURLY_BRACE    ALTGR(KC_7)             // {
#define CSA_LCBR                CSA_LEFT_CURLY_BRACE
#define CSA_RIGHT_CURLY_BRACE   ALTGR(KC_8)             // }
#define CSA_RCBR                CSA_RIGHT_CURLY_BRACE
#define CSA_LBRACKET            ALTGR(KC_9)             // [
#define CSA_LBRC                CSA_LBRACKET
#define CSA_RBRACKET            ALTGR(KC_0)             // ]
#define CSA_RBRC                CSA_RBRACKET
#define CSA_NEGATION            ALTGR(KC_EQUAL)         // ¬
#define CSA_NEGT                CSA_NEGATION

// Second row
// euro symbol not available on Linux? (X.org)
#define CSA_EURO        ALTGR(KC_E)                 // €
#define CSA_DEAD_GRAVE  ALTGR(CSA_DEAD_CIRCUMFLEX)
#define CSA_DGRV        CSA_DEAD_GRAVE              // dead `
#define CSA_DEAD_TILDE  ALTGR(CSA_C_CEDILLA)        // ~
#define CSA_DTLD        CSA_DEAD_TILDE

// Third row
#define CSA_DEGREE  ALTGR(KC_SCOLON)    // °
#define CSA_DEGR    CSA_DEGREE

// Fourth row
#define CSA_LEFT_GUILLEMET      ALTGR(KC_Z)         // «
#define CSA_LGIL                CSA_LEFT_GUILLEMET
#define CSA_RIGHT_GUILLEMET     ALTGR(KC_X)         // »
#define CSA_RGIL                CSA_RIGHT_GUILLEMET
#define CSA_LESS                ALTGR(KC_COMMA)     // <
#define CSA_GREATER             ALTGR(KC_DOT)       // >
#define CSA_GRTR                CSA_GREATER

// Space bar
#define CSA_NON_BREAKING_SPACE  ALTGR(KC_SPACE)
#define CSA_NBSP                CSA_NON_BREAKING_SPACE

// GR2A-ed characters
// First row
#define CSA_SUPERSCRIPT_ONE     GR2A(KC_1)  // ¹
#define CSA_SUP1                CSA_SUPERSCRIPT_ONE
#define CSA_SUPERSCRIPT_TWO     GR2A(KC_2)  // ²
#define CSA_SUP2                CSA_SUPERSCRIPT_TWO
#define CSA_SUPERSCRIPT_THREE   GR2A(KC_3)  // ³
#define CSA_SUP3                CSA_SUPERSCRIPT_THREE
#define CSA_ONE_QUARTER         GR2A(KC_4)  // ¼
#define CSA_1QRT                CSA_ONE_QUARTER
#define CSA_ONE_HALF            GR2A(KC_5)  // ½
#define CSA_1HLF                CSA_ONE_HALF
#define CSA_THREE_QUARTERS      GR2A(KC_6)  // ¾
#define CSA_3QRT                CSA_THREE_QUARTERS
// nothing on 7-0 and -
#define CSA_DEAD_CEDILLA        GR2A(KC_EQUAL)  // dead ¸
#define CSA_DCED                CSA_DEAD_CEDILLA

// Second row
#define CSA_OMEGA           GR2A(KC_Q)  // ω
#define CSA_OMEG            CSA_OMEGA
#define CSA_L_STROKE        GR2A(KC_W)  // ł
#define CSA_LSTK            CSA_L_STROKE
#define CSA_OE_LIGATURE     GR2A(KC_E)  // œ
#define CSA_OE              CSA_OE_LIGATURE
#define CSA_PARAGRAPH       GR2A(KC_R)  // ¶
#define CSA_PARG            CSA_PARAGRAPH
#define CSA_T_STROKE        GR2A(KC_T)  // ŧ
#define CSA_LEFT_ARROW      GR2A(KC_Y)  // ←
#define CSA_LARW            CSA_LEFT_ARROW
#define CSA_DOWN_ARROW      GR2A(KC_U)  // ↓
#define CSA_DARW            CSA_DOWN_ARROW
#define CSA_RIGHT_ARROW     GR2A(KC_I)  // →
#define CSA_RARW            CSA_RIGHT_ARROW
#define CSA_O_STROKE        GR2A(KC_O)  // ø
#define CSA_OSTK            CSA_O_STROKE
#define CSA_THORN           GR2A(KC_P)  // þ
#define CSA_THRN            CSA_THORN
// nothing on ^
#define CSA_TILDE           GR2A(CSA_C_CEDILLA)  // dead ~
#define CSA_TILD            CSA_TILDE

// Third row
#define CSA_AE_LIGATURE     GR2A(KC_A)      // æ
#define CSA_AE              CSA_AE_LIGATURE
#define CSA_SHARP_S         GR2A(KC_S)      // ß
#define CSA_SRPS            CSA_SHARP_S
#define CSA_ETH             GR2A(KC_D)      // ð
// nothing on F
#define CSA_ENG             GR2A(KC_G)      // ŋ
#define CSA_H_SRTOKE        GR2A(KC_H)      // ħ
#define CSA_HSTK            CSA_H_SRTOKE
#define CSA_IJ_LIGATURE     GR2A(KC_J)      // ij
#define CSA_IJ              CSA_IJ_LIGATURE
#define CSA_KRA             GR2A(KC_K)      // ĸ
#define CSA_L_FLOWN_DOT     GR2A(KC_L)      // ŀ
#define CSA_LFLD            CSA_L_FLOWN_DOT
#define CSA_DEAD_ACUTE      GR2A(KC_SCLN)   // dead acute accent
#define CSA_DACT            CSA_DEAD_ACUTE
// nothing on È & À

// Fourth row
#define CSA_CENT                GR2A(KC_C)  // ¢
#define CSA_LEFT_DOUBLE_QUOTE   GR2A(KC_V)  // “
#define CSA_LDQT                CSA_LEFT_DOUBLE_QUOTE
#define CSA_RIGHT_DOUBLE_QUOTE  GR2A(KC_B)  // ”
#define CSA_RDQT                CSA_RIGHT_DOUBLE_QUOTE
#define CSA_N_APOSTROPHE        GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
#define CSA_NAPO                CSA_N_APOSTROPHE
#define CSA_MU                  GR2A(KC_M)  // μ
#define CSA_HORIZONTAL_BAR      GR2A(KC_COMMA)  // ―
#define CSA_HZBR                CSA_HORIZONTAL_BAR
#define CSA_DEAD_DOT_ABOVE      GR2A(KC_DOT)    // dead ˙
#define CSA_DDTA                CSA_DEAD_DOT_ABOVE

// GR2A-shifted characters (different from capitalised GR2A-ed characters)
// First row
#define CSA_SOFT_HYPHEN         GR2A(LSFT(CSA_SLASH))   // soft-hyphen, appears as a hyphen in wrapped word
#define CSA_SHYP                CSA_SOFT_HYPHEN
#define CSA_INVERTED_EXCLAIM    GR2A(KC_EXCLAIM)    // ¡
#define CSA_IXLM                CSA_INVERTED_EXCLAIM
// nothing on 2
#define CSA_POUND               GR2A(LSFT(KC_3))    // £
#define CSA_GBP                 CSA_POUND_SIGN
// already on ALTGR(KC_E)
#define CSA_EURO_BIS            GR2A(LSFT(KC_4))    // €
#define CSA_EURB                CSA_EURO_BIS
#define CSA_THREE_EIGHTHS       GR2A(LSFT(KC_5))    // ⅜
#define CSA_3ON8                CSA_THREE_EIGHTHS
#define CSA_FIVE_EIGHTHS        GR2A(LSFT(KC_6))    // ⅝
#define CSA_5ON8                CSA_FIVE_EIGHTHS
#define CSA_SEVEN_EIGHTHS       GR2A(LSFT(KC_7))    // ⅞
#define CSA_7ON8                CSA_SEVEN_EIGHTHS
#define CSA_TRADEMARK           GR2A(LSFT(KC_8))    // ™
#define CSA_TM                  CSA_TRADEMARK
#define CSA_PLUS_MINUS          GR2A(LSFT(KC_9))    // ±
#define CSA_PSMS                CSA_PLUS_MINUS
// nothing on 0
#define CSA_INVERTED_QUESTION   GR2A(LSFT(KC_MINUS))    // ¿
#define CSA_IQST                CSA_INVERTED_QUESTION
#define CSA_DEAD_OGONEK         GR2A(LSFT(KC_EQUAL))    // dead ˛
#define CSA_DOGO                CSA_DEAD_OGONEK

// Second row
#define CSA_REGISTERED_TRADEMARK    GR2A(LSFT(KC_R))        // ®
#define CSA_RTM                     CSA_REGISTERED_TRADEMARK
#define CSA_YEN                     GR2A(LSFT(KC_Y))        // ¥
#define CSA_YUAN                    CSA_YEN
#define CSA_UP_ARROW                LSFT(CSA_DOWN_ARROW)    // ↑
#define CSA_DOTLESS_I               GR2A(LSFT(KC_I))        // ı
#define CSA_DLSI                    CSA_DOTLESS_I
#define CSA_DEAD_RING               GR2A(LSFT(CSA_DCRC))    // dead °
#define CSA_DRNG                    CSA_DEAD_RING
#define CSA_DEAD_MACRON             GR2A(LSFT(CSA_C_CEDILLA))   // dead ¯
#define CSA_DMCR                    CSA_DEAD_MACRON

// Third row
#define CSA_SECTION                 GR2A(LSFT(KC_S))        // §
#define CSA_SECT                    CSA_SECTION
#define CSA_ORDINAL_INDICATOR_A     GR2A(LSFT(KC_F))        // ª
#define CSA_ORDA                    CSA_ORDINAL_INDICATOR_A
#define CSA_DEAD_DOUBLE_ACUTE       LSFT(CSA_DEAD_ACUTE)    // ˝
#define CSA_DDCT                    CSA_DEAD_DOUBLE_ACUTE
#define CSA_DEAD_CARON              GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
#define CSA_DCAR                    CSA_DEAD_CARON
#define CSA_DEAD_BREVE              GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
#define CSA_DBRV                    CSA_DEAD_BREVE

// Fourth row
#define CSA_BROKEN_PIPE         GR2A(LSFT(CSA_U_GRAVE)) // ¦
#define CSA_BPIP                CSA_BROKEN_PIPE
#define CSA_COPYRIGHT           GR2A(LSFT(KC_C))        // ©
#define CSA_CPRT                CSA_COPYRIGHT
#define CSA_LEFT_QUOTE          GR2A(LSFT(KC_V))        // ‘
#define CSA_LQOT                CSA_LEFT_QUOTE
#define CSA_RIGHT_QUOTE         GR2A(LSFT(KC_B))        // ’
#define CSA_RQOT                CSA_RIGHT_QUOTE
#define CSA_EIGHTH_NOTE         GR2A(LSFT(KC_N))        // ♪
#define CSA_8NOT                CSA_EIGHTH_NOTE
#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M))        // º
#define CSA_ORDO                CSA_ORDINAL_INDICATOR_O
#define CSA_TIMES               GR2A(LSFT(KC_COMMA))    // ×
#define CSA_TIMS                CSA_TIMES
#define CSA_OBELUS              GR2A(LSFT(KC_DOT))      // ÷
#define CSA_OBEL                CSA_OBELUS
// more conventional name of the symbol
#define CSA_DIVISION_SIGN       CSA_OBELUS
#define CSA_DVSN                CSA_DIVISION_SIGN
// TODO GR2A(LSFT(CSA_E_ACUTE))

#endif