summaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_canadian_multilingual.h
blob: 9b13b1e4e60f730777711abeac33fe9e926bb9dd (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
#ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
#define KEYMAP_CANADIAN_MULTILINGUAG_H

#include "keymap_common.h"

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

#define CM_ALTGR    KC_RALT
#define CM_ALGR     CM_ALTGR

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

// Normal characters
// First row
#define CM_SLASH    KC_GRV      // /
#define CM_SLSH     CM_SLASH

// Second row
#define CM_DEAD_CIRCUMFLEX  KC_LBRACKET         // dead ^
#define CM_DCRC             CM_DEAD_CIRCUMFLEX
#define CM_C_CEDILLA        KC_RBRACKET         // Ç
#define CM_CCED             CM_C_CEDILLA

// Third row
#define CM_E_GRAVE  KC_QUOT     // è
#define CM_EGRV     CM_E_GRAVE
#define CM_A_GRAVE  KC_BSLASH   // à
#define CM_AGRV     CM_A_GRAVE

// Fourth row
#define CM_U_GRAVE  KC_NONUS_BSLASH     // ù
#define CM_UGRV     CM_U_GRAVE
#define CM_E_ACUTE  KC_SLSH             // é
#define CM_ECUT     CM_E_ACUTE

// Shifted characters
// First row
#define CM_BACKSLASH    LSFT(CM_SLASH)  /* \ */
#define CM_BSLS         CM_BACKSLASH
#define CM_QUESTION     LSFT(KC_6)      // ?
#define CM_QEST         CM_QUESTION

// Second row
#define CM_DEAD_TREMA   LSFT(CM_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
#define CM_DTRM         CM_DEAD_TREMA

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

// Fourth row
#define CM_APOSTROPHE   LSFT(KC_COMMA)  // '
#define CM_APOS         CM_APOSTROPHE
#define CM_DOUBLE_QUOTE LSFT(KC_DOT)    // "
#define CM_DQOT         CM_DOUBLE_QUOTE

// Alt Gr-ed characters
// First row
#define CM_PIPE                 ALTGR(CM_SLASH)         // |
#define CM_CURRENCY             ALTGR(KC_4)             // ¤
#define CM_CURR                 CM_CURRENCY
#define CM_LEFT_CURLY_BRACE     ALTGR(KC_7)             // {
#define CM_LCBR                 CM_LEFT_CURLY_BRACE
#define CM_RIGHT_CURLY_BRACE    ALTGR(KC_8)             // }
#define CM_RCBR                 CM_RIGHT_CURLY_BRACE
#define CM_LBRACKET             ALTGR(KC_9)             // [
#define CM_LBRC                 CM_LBRACKET
#define CM_RBRACKET             ALTGR(KC_0)             // ]
#define CM_RBRC                 CM_RBRACKET
#define CM_NEGATION             ALTGR(KC_EQUAL)         // ¬
#define CM_NEGT                 CM_NEGATION

// Second row
// euro symbol not available on Linux? (X.org)
#define CM_EURO         ALTGR(KC_E)                 // €
#define CM_DEAD_GRAVE   ALTGR(CM_DEAD_CIRCUMFLEX)
#define CM_DGRV         CM_DEAD_GRAVE               // dead `
#define CM_TILDE        ALTGR(CM_C_CEDILLA)         // ~
#define CM_TILD         CM_TILDE

// Third row
#define CM_DEGREE   ALTGR(KC_SCOLON)    // °
#define CM_DEGR     CM_DEGREE

// Fourth row
#define CM_LEFT_GUILLEMET   ALTGR(KC_Z)         // «
#define CM_LGIL             CM_LEFT_GUILLEMET
#define CM_RIGHT_GUILLEMET  ALTGR(KC_X)         // »
#define CM_RGIL             CM_RIGHT_GUILLEMET
#define CM_LESS             ALTGR(KC_COMMA)     // <
#define CM_GREATER          ALTGR(KC_DOT)       // >
#define CM_GRTR             CM_GREATER

// Space bar
#define CM_NON_BREAKING_SPACE   ALTGR(KC_SPACE)
#define CM_NBSP                 CM_NON_BREAKING_SPACE

// GR2A-ed characters (non-exhaustive list)
// First row
#define CM_SUPERSCRIPT_ONE      GR2A(KC_1)  // ¹
#define CM_SUP1                 CM_SUPERSCRIPT_ONE
#define CM_SUPERSCRIPT_TWO      GR2A(KC_2)  // ²
#define CM_SUP2                 CM_SUPERSCRIPT_TWO
#define CM_SUPERSCRIPT_THREE    GR2A(KC_3)  // ³
#define CM_SUP3                 CM_SUPERSCRIPT_THREE
#define CM_ONE_QUARTER          GR2A(KC_4)  // ¼
#define CM_1QRT                 CM_ONE_QUARTER
#define CM_ONE_HALF             GR2A(KC_5)  // ½
#define CM_1HLF                 CM_ONE_HALF
#define CM_THREE_QUARTERS       GR2A(KC_6)  // ¾
#define CM_3QRT                 CM_THREE_QUARTERS
// nothing on 7-0 and -
#define CM_DEAD_CEDILLA         GR2A(KC_EQUAL)  // dead ¸
#define CM_DCED                 CM_DEAD_CEDILLA

// Second row
#define CM_OMEGA            GR2A(KC_Q)  // ω
#define CM_OMEG             CM_OMEGA
#define CM_L_STROKE         GR2A(KC_W)  // ł
#define CM_LSTK             CM_L_STROKE
#define CM_OE_LIGATURE      GR2A(KC_E)  // œ
#define CM_OE               CM_OE_LIGATURE
#define CM_PARAGRAPH        GR2A(KC_R)  // ¶
#define CM_PARG             CM_PARAGRAPH
#define CM_T_STROKE         GR2A(KC_T)  // ŧ
#define CM_LEFT_ARROW       GR2A(KC_Y)  // ←
#define CM_LARW             CM_LEFT_ARROW
#define CM_DOWN_ARROW       GR2A(KC_U)  // ↓
#define CM_DARW             CM_DOWN_ARROW
#define CM_RIGHT_ARROW      GR2A(KC_I)  // →
#define CM_RARW             CM_RIGHT_ARROW
#define CM_O_STROKE         GR2A(KC_O)  // ø
#define CM_OSTK             CM_O_STROKE
#define CM_THORN            GR2A(KC_P)  // þ
#define CM_THRN             CM_THORN
// nothing on ^
#define CM_DEAD_TILDE       GR2A(CM_C_CEDILLA)  // dead ~
#define CM_DTLD             CM_DEAD_TILDE

// Third row
#define CM_AE_LIGATURE  GR2A(KC_A)      // æ
#define CM_AE           CM_AE_LIGATURE
#define CM_SHARP_S      GR2A(KC_S)      // ß
#define CM_SRPS         CM_SHARP_S
#define CM_ETH          GR2A(KC_D)      // ð
// nothing on F
#define CM_ENG          GR2A(KC_G)      // ŋ
#define CM_H_SRTOKE     GR2A(KC_H)      // ħ
#define CM_HSTK         CM_H_SRTOKE
#define CM_IJ_LIGATURE  GR2A(KC_J)      // ij
#define CM_IJ           CM_IJ_LIGATURE
#define CM_KRA          GR2A(KC_K)      // ĸ
#define CM_L_FLOWN_DOT  GR2A(KC_L)      // ŀ
#define CM_LFLD         CM_L_FLOWN_DOT
#define CM_DEAD_ACUTE   GR2A(KC_SCLN)   // dead acute accent
#define CM_DACT         CM_DEAD_ACUTE
// nothing on È & À

// Fourth row
#define CM_CENT                 GR2A(KC_C)  // ¢
#define CM_LEFT_DOUBLE_QUOTE    GR2A(KC_V)  // “
#define CM_LDQT                 CM_LEFT_DOUBLE_QUOTE
#define CM_RIGHT_DOUBLE_QUOTE   GR2A(KC_B)  // ”
#define CM_RDQT                 CM_RIGHT_DOUBLE_QUOTE
#define CM_N_APOSTROPHE         GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
#define CM_NAPO                 CM_N_APOSTROPHE
#define CM_MU   GR2A(KC_M)      // μ
// ─ TODO box drawing character?
#define CM_HYPHENATION_POINT    GR2A(CM_DOT)    // ‧  TODO not an interpunct ?

// GR2A-shifted characters (non-exhaustive list)
// First row
#define CM_PLUS_MINUS   LSFT(GR2A(KC_9))    // ±
#define CM_PSMS         CM_PLUS_MINUS

// Fourth row
#define CM_LEFT_QUOTE           LSFT(GR2A(KC_V))    // ‘
#define CM_LQOT                 CM_LEFT_QUOTE
#define CM_RIGHT_QUOTE          LSFT(GR2A(KC_B))    // ’
#define CM_RQOT                 CM_RIGHT_QUOTE

#endif