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 #ifndef KEYMAP_CANADIAN_MULTILINGUAL_H
17 #define KEYMAP_CANADIAN_MULTILINGUAL_H
22 #define GR2A(kc) RCTL(kc)
27 #define CSA_SLASH KC_GRV // /
28 #define CSA_SLSH CSA_SLASH
31 #define CSA_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^
32 #define CSA_DCRC CSA_DEAD_CIRCUMFLEX
33 #define CSA_C_CEDILLA KC_RBRACKET // Ç
34 #define CSA_CCED CSA_C_CEDILLA
37 #define CSA_E_GRAVE KC_QUOT // è
38 #define CSA_EGRV CSA_E_GRAVE
39 #define CSA_A_GRAVE KC_BSLASH // à
40 #define CSA_AGRV CSA_A_GRAVE
43 #define CSA_U_GRAVE KC_NONUS_BSLASH // ù
44 #define CSA_UGRV CSA_U_GRAVE
45 #define CSA_E_ACUTE KC_SLSH // é
46 #define CSA_ECUT CSA_E_ACUTE
50 #define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
51 #define CSA_BSLS CSA_BACKSLASH
52 #define CSA_QUESTION LSFT(KC_6) // ?
53 #define CSA_QEST CSA_QUESTION
56 #define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü
57 #define CSA_DTRM CSA_DEAD_TREMA
60 // all same as US-QWERTY, or capitalised character of the non-shifted key
63 #define CSA_APOSTROPHE LSFT(KC_COMMA) // '
64 #define CSA_APOS CSA_APOSTROPHE
65 #define CSA_DOUBLE_QUOTE LSFT(KC_DOT) // "
66 #define CSA_DQOT CSA_DOUBLE_QUOTE
68 // Alt Gr-ed characters
70 #define CSA_PIPE ALGR(CSA_SLASH) // |
71 #define CSA_CURRENCY ALGR(KC_4) // ¤
72 #define CSA_CURR CSA_CURRENCY
73 #define CSA_LEFT_CURLY_BRACE ALGR(KC_7) // {
74 #define CSA_LCBR CSA_LEFT_CURLY_BRACE
75 #define CSA_RIGHT_CURLY_BRACE ALGR(KC_8) // }
76 #define CSA_RCBR CSA_RIGHT_CURLY_BRACE
77 #define CSA_LBRACKET ALGR(KC_9) // [
78 #define CSA_LBRC CSA_LBRACKET
79 #define CSA_RBRACKET ALGR(KC_0) // ]
80 #define CSA_RBRC CSA_RBRACKET
81 #define CSA_NEGATION ALGR(KC_EQUAL) // ¬
82 #define CSA_NEGT CSA_NEGATION
85 // euro symbol not available on Linux? (X.org)
86 #define CSA_EURO ALGR(KC_E) // €
87 #define CSA_DEAD_GRAVE ALGR(CSA_DEAD_CIRCUMFLEX)
88 #define CSA_DGRV CSA_DEAD_GRAVE // dead `
89 #define CSA_DEAD_TILDE ALGR(CSA_C_CEDILLA) // ~
90 #define CSA_DTLD CSA_DEAD_TILDE
93 #define CSA_DEGREE ALGR(KC_SCOLON) // °
94 #define CSA_DEGR CSA_DEGREE
97 #define CSA_LEFT_GUILLEMET ALGR(KC_Z) // «
98 #define CSA_LGIL CSA_LEFT_GUILLEMET
99 #define CSA_RIGHT_GUILLEMET ALGR(KC_X) // »
100 #define CSA_RGIL CSA_RIGHT_GUILLEMET
101 #define CSA_LESS ALGR(KC_COMMA) // <
102 #define CSA_GREATER ALGR(KC_DOT) // >
103 #define CSA_GRTR CSA_GREATER
106 #define CSA_NON_BREAKING_SPACE ALGR(KC_SPACE)
107 #define CSA_NBSP CSA_NON_BREAKING_SPACE
109 // GR2A-ed characters
111 #define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹
112 #define CSA_SUP1 CSA_SUPERSCRIPT_ONE
113 #define CSA_SUPERSCRIPT_TWO GR2A(KC_2) // ²
114 #define CSA_SUP2 CSA_SUPERSCRIPT_TWO
115 #define CSA_SUPERSCRIPT_THREE GR2A(KC_3) // ³
116 #define CSA_SUP3 CSA_SUPERSCRIPT_THREE
117 #define CSA_ONE_QUARTER GR2A(KC_4) // ¼
118 #define CSA_1QRT CSA_ONE_QUARTER
119 #define CSA_ONE_HALF GR2A(KC_5) // ½
120 #define CSA_1HLF CSA_ONE_HALF
121 #define CSA_THREE_QUARTERS GR2A(KC_6) // ¾
122 #define CSA_3QRT CSA_THREE_QUARTERS
123 // nothing on 7-0 and -
124 #define CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
125 #define CSA_DCED CSA_DEAD_CEDILLA
128 #define CSA_OMEGA GR2A(KC_Q) // ω
129 #define CSA_OMEG CSA_OMEGA
130 #define CSA_L_STROKE GR2A(KC_W) // ł
131 #define CSA_LSTK CSA_L_STROKE
132 #define CSA_OE_LIGATURE GR2A(KC_E) // œ
133 #define CSA_OE CSA_OE_LIGATURE
134 #define CSA_PARAGRAPH GR2A(KC_R) // ¶
135 #define CSA_PARG CSA_PARAGRAPH
136 #define CSA_T_STROKE GR2A(KC_T) // ŧ
137 #define CSA_LEFT_ARROW GR2A(KC_Y) // ←
138 #define CSA_LARW CSA_LEFT_ARROW
139 #define CSA_DOWN_ARROW GR2A(KC_U) // ↓
140 #define CSA_DARW CSA_DOWN_ARROW
141 #define CSA_RIGHT_ARROW GR2A(KC_I) // →
142 #define CSA_RARW CSA_RIGHT_ARROW
143 #define CSA_O_STROKE GR2A(KC_O) // ø
144 #define CSA_OSTK CSA_O_STROKE
145 #define CSA_THORN GR2A(KC_P) // þ
146 #define CSA_THRN CSA_THORN
148 #define CSA_TILDE GR2A(CSA_C_CEDILLA) // dead ~
149 #define CSA_TILD CSA_TILDE
152 #define CSA_AE_LIGATURE GR2A(KC_A) // æ
153 #define CSA_AE CSA_AE_LIGATURE
154 #define CSA_SHARP_S GR2A(KC_S) // ß
155 #define CSA_SRPS CSA_SHARP_S
156 #define CSA_ETH GR2A(KC_D) // ð
158 #define CSA_ENG GR2A(KC_G) // ŋ
159 #define CSA_H_SRTOKE GR2A(KC_H) // ħ
160 #define CSA_HSTK CSA_H_SRTOKE
161 #define CSA_IJ_LIGATURE GR2A(KC_J) // ij
162 #define CSA_IJ CSA_IJ_LIGATURE
163 #define CSA_KRA GR2A(KC_K) // ĸ
164 #define CSA_L_FLOWN_DOT GR2A(KC_L) // ŀ
165 #define CSA_LFLD CSA_L_FLOWN_DOT
166 #define CSA_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent
167 #define CSA_DACT CSA_DEAD_ACUTE
171 #define CSA_CENT GR2A(KC_C) // ¢
172 #define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “
173 #define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE
174 #define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ”
175 #define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE
176 #define CSA_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint)
177 #define CSA_NAPO CSA_N_APOSTROPHE
178 #define CSA_MU GR2A(KC_M) // μ
179 #define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ―
180 #define CSA_HZBR CSA_HORIZONTAL_BAR
181 #define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙
182 #define CSA_DDTA CSA_DEAD_DOT_ABOVE
184 // GR2A-shifted characters (different from capitalised GR2A-ed characters)
186 #define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH)) // soft-hyphen, appears as a hyphen in wrapped word
187 #define CSA_SHYP CSA_SOFT_HYPHEN
188 #define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM) // ¡
189 #define CSA_IXLM CSA_INVERTED_EXCLAIM
191 #define CSA_POUND GR2A(LSFT(KC_3)) // £
192 #define CSA_GBP CSA_POUND_SIGN
193 // already on ALGR(KC_E)
194 #define CSA_EURO_BIS GR2A(LSFT(KC_4)) // €
195 #define CSA_EURB CSA_EURO_BIS
196 #define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5)) // ⅜
197 #define CSA_3ON8 CSA_THREE_EIGHTHS
198 #define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6)) // ⅝
199 #define CSA_5ON8 CSA_FIVE_EIGHTHS
200 #define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7)) // ⅞
201 #define CSA_7ON8 CSA_SEVEN_EIGHTHS
202 #define CSA_TRADEMARK GR2A(LSFT(KC_8)) // ™
203 #define CSA_TM CSA_TRADEMARK
204 #define CSA_PLUS_MINUS GR2A(LSFT(KC_9)) // ±
205 #define CSA_PSMS CSA_PLUS_MINUS
207 #define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS)) // ¿
208 #define CSA_IQST CSA_INVERTED_QUESTION
209 #define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL)) // dead ˛
210 #define CSA_DOGO CSA_DEAD_OGONEK
213 #define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R)) // ®
214 #define CSA_RTM CSA_REGISTERED_TRADEMARK
215 #define CSA_YEN GR2A(LSFT(KC_Y)) // ¥
216 #define CSA_YUAN CSA_YEN
217 #define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW) // ↑
218 #define CSA_DOTLESS_I GR2A(LSFT(KC_I)) // ı
219 #define CSA_DLSI CSA_DOTLESS_I
220 #define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC)) // dead °
221 #define CSA_DRNG CSA_DEAD_RING
222 #define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA)) // dead ¯
223 #define CSA_DMCR CSA_DEAD_MACRON
226 #define CSA_SECTION GR2A(LSFT(KC_S)) // §
227 #define CSA_SECT CSA_SECTION
228 #define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F)) // ª
229 #define CSA_ORDA CSA_ORDINAL_INDICATOR_A
230 #define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE) // ˝
231 #define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE
232 #define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
233 #define CSA_DCAR CSA_DEAD_CARON
234 #define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
235 #define CSA_DBRV CSA_DEAD_BREVE
238 #define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE)) // ¦
239 #define CSA_BPIP CSA_BROKEN_PIPE
240 #define CSA_COPYRIGHT GR2A(LSFT(KC_C)) // ©
241 #define CSA_CPRT CSA_COPYRIGHT
242 #define CSA_LEFT_QUOTE GR2A(LSFT(KC_V)) // ‘
243 #define CSA_LQOT CSA_LEFT_QUOTE
244 #define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B)) // ’
245 #define CSA_RQOT CSA_RIGHT_QUOTE
246 #define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N)) // ♪
247 #define CSA_8NOT CSA_EIGHTH_NOTE
248 #define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M)) // º
249 #define CSA_ORDO CSA_ORDINAL_INDICATOR_O
250 #define CSA_TIMES GR2A(LSFT(KC_COMMA)) // ×
251 #define CSA_TIMS CSA_TIMES
252 #define CSA_OBELUS GR2A(LSFT(KC_DOT)) // ÷
253 #define CSA_OBEL CSA_OBELUS
254 // more conventional name of the symbol
255 #define CSA_DIVISION_SIGN CSA_OBELUS
256 #define CSA_DVSN CSA_DIVISION_SIGN
257 // TODO GR2A(LSFT(CSA_E_ACUTE))