aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_canadian_multilingual.h
blob: b1d7b4e77913d9954c930f0b04818e18af359435 (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
#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 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_TILDE       ALTGR(CSA_C_CEDILLA)        // ~
#define CSA_TILD        CSA_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 (non-exhaustive list)
// 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_DEAD_TILDE      GR2A(CSA_C_CEDILLA)  // dead ~
#define CSA_DTLD            CSA_DEAD_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_DOTA                CSA_DEAD_DOT_ABOVE

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

// Fourth row
#define CSA_LEFT_QUOTE          LSFT(GR2A(KC_V))    // ‘
#define CSA_LQOT                CSA_LEFT_QUOTE
#define CSA_RIGHT_QUOTE         LSFT(GR2A(KC_B))    // ’
#define CSA_RQOT                CSA_RIGHT_QUOTE

#endif