]> git.donarmstrong.com Git - qmk_firmware.git/blob - quantum/keymap_extras/keymap_canadian_multilingual.h
BÉPO over CSA: GR2A characters in AltGr layer
[qmk_firmware.git] / quantum / keymap_extras / keymap_canadian_multilingual.h
1 #ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
2 #define KEYMAP_CANADIAN_MULTILINGUAG_H
3
4 #include "keymap_common.h"
5
6 // Alt gr
7 #ifndef ALTGR
8 #define ALTGR(kc)   RALT(kc)
9 #endif
10 #ifndef ALGR
11 #define ALGR(kc)    ALTGR(kc)
12 #endif
13
14 #define CM_ALTGR    KC_RALT
15 #define CM_ALGR     CM_ALTGR
16
17 #ifndef GR2A
18 #define GR2A(kc)    RCTL(kc)
19 #endif
20
21 // Normal characters
22 // First row
23 #define CM_SLASH    KC_GRV      // /
24 #define CM_SLSH     CM_SLASH
25
26 // Second row
27 #define CM_DEAD_CIRCUMFLEX  KC_LBRACKET         // dead ^
28 #define CM_DCRC             CM_DEAD_CIRCUMFLEX
29 #define CM_C_CEDILLA        KC_RBRACKET         // Ç
30 #define CM_CCED             CM_C_CEDILLA
31
32 // Third row
33 #define CM_E_GRAVE  KC_QUOT     // è
34 #define CM_EGRV     CM_E_GRAVE
35 #define CM_A_GRAVE  KC_BSLASH   // à
36 #define CM_AGRV     CM_A_GRAVE
37
38 // Fourth row
39 #define CM_U_GRAVE  KC_NONUS_BSLASH     // ù
40 #define CM_UGRV     CM_U_GRAVE
41 #define CM_E_ACUTE  KC_SLSH             // é
42 #define CM_ECUT     CM_E_ACUTE
43
44 // Shifted characters
45 // First row
46 #define CM_BACKSLASH    LSFT(CM_SLASH)  /* \ */
47 #define CM_BSLS         CM_BACKSLASH
48 #define CM_QUESTION     LSFT(KC_6)      // ?
49 #define CM_QEST         CM_QUESTION
50
51 // Second row
52 #define CM_DEAD_TREMA   LSFT(CM_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
53 #define CM_DTRM         CM_DEAD_TREMA
54
55 // Third row
56 // all same as US-QWERTY, or capitalised character of the non-shifted key
57
58 // Fourth row
59 #define CM_APOSTROPHE   LSFT(KC_COMMA)  // '
60 #define CM_APOS         CM_APOSTROPHE
61 #define CM_DOUBLE_QUOTE LSFT(KC_DOT)    // "
62 #define CM_DQOT         CM_DOUBLE_QUOTE
63
64 // Alt Gr-ed characters
65 // First row
66 #define CM_PIPE                 ALTGR(CM_SLASH)         // |
67 #define CM_CURRENCY             ALTGR(KC_4)             // ¤
68 #define CM_CURR                 CM_CURRENCY
69 #define CM_LEFT_CURLY_BRACE     ALTGR(KC_7)             // {
70 #define CM_LCBR                 CM_LEFT_CURLY_BRACE
71 #define CM_RIGHT_CURLY_BRACE    ALTGR(KC_8)             // }
72 #define CM_RCBR                 CM_RIGHT_CURLY_BRACE
73 #define CM_LBRACKET             ALTGR(KC_9)             // [
74 #define CM_LBRC                 CM_LBRACKET
75 #define CM_RBRACKET             ALTGR(KC_0)             // ]
76 #define CM_RBRC                 CM_RBRACKET
77 #define CM_NEGATION             ALTGR(KC_EQUAL)         // ¬
78 #define CM_NEGT                 CM_NEGATION
79
80 // Second row
81 // euro symbol not available on Linux? (X.org)
82 #define CM_EURO         ALTGR(KC_E)                 // €
83 #define CM_DEAD_GRAVE   ALTGR(CM_DEAD_CIRCUMFLEX)
84 #define CM_DGRV         CM_DEAD_GRAVE               // dead `
85 #define CM_TILDE        ALTGR(CM_C_CEDILLA)         // ~
86 #define CM_TILD         CM_TILDE
87
88 // Third row
89 #define CM_DEGREE   ALTGR(KC_SCOLON)    // °
90 #define CM_DEGR     CM_DEGREE
91
92 // Fourth row
93 #define CM_LEFT_GUILLEMET   ALTGR(KC_Z)         // «
94 #define CM_LGIL             CM_LEFT_GUILLEMET
95 #define CM_RIGHT_GUILLEMET  ALTGR(KC_X)         // »
96 #define CM_RGIL             CM_RIGHT_GUILLEMET
97 #define CM_LESS             ALTGR(KC_COMMA)     // <
98 #define CM_GREATER          ALTGR(KC_DOT)       // >
99 #define CM_GRTR             CM_GREATER
100
101 // Space bar
102 #define CM_NON_BREAKING_SPACE   ALTGR(KC_SPACE)
103 #define CM_NBSP                 CM_NON_BREAKING_SPACE
104
105 // GR2A-ed characters (non-exhaustive list)
106 // First row
107 #define CM_SUPERSCRIPT_ONE      GR2A(KC_1)  // ¹
108 #define CM_SUP1                 CM_SUPERSCRIPT_ONE
109 #define CM_SUPERSCRIPT_TWO      GR2A(KC_2)  // ²
110 #define CM_SUP2                 CM_SUPERSCRIPT_TWO
111 #define CM_SUPERSCRIPT_THREE    GR2A(KC_3)  // ³
112 #define CM_SUP3                 CM_SUPERSCRIPT_THREE
113 #define CM_ONE_QUARTER          GR2A(KC_4)  // ¼
114 #define CM_1QRT                 CM_ONE_QUARTER
115 #define CM_ONE_HALF             GR2A(KC_5)  // ½
116 #define CM_1HLF                 CM_ONE_HALF
117 #define CM_THREE_QUARTERS       GR2A(KC_6)  // ¾
118 #define CM_3QRT                 CM_THREE_QUARTERS
119 // nothing on 7-0 and -
120 #define CM_DEAD_CEDILLA         GR2A(KC_EQUAL)  // dead ¸
121 #define CM_DCED                 CM_DEAD_CEDILLA
122
123 // Second row
124 #define CM_OMEGA            GR2A(KC_Q)  // ω
125 #define CM_OMEG             CM_OMEGA
126 #define CM_L_STROKE         GR2A(KC_W)  // ł
127 #define CM_LSTK             CM_L_STROKE
128 #define CM_OE_LIGATURE      GR2A(KC_E)  // œ
129 #define CM_OE               CM_OE_LIGATURE
130 #define CM_PARAGRAPH        GR2A(KC_R)  // ¶
131 #define CM_PARG             CM_PARAGRAPH
132 #define CM_T_STROKE         GR2A(KC_T)  // ŧ
133 #define CM_LEFT_ARROW       GR2A(KC_Y)  // ←
134 #define CM_LARW             CM_LEFT_ARROW
135 #define CM_DOWN_ARROW       GR2A(KC_U)  // ↓
136 #define CM_DARW             CM_DOWN_ARROW
137 #define CM_RIGHT_ARROW      GR2A(KC_I)  // →
138 #define CM_RARW             CM_RIGHT_ARROW
139 #define CM_O_STROKE         GR2A(KC_O)  // ø
140 #define CM_OSTK             CM_O_STROKE
141 #define CM_THORN            GR2A(KC_P)  // þ
142 #define CM_THRN             CM_THORN
143 // nothing on ^
144 #define CM_DEAD_TILDE       GR2A(CM_C_CEDILLA)  // dead ~
145 #define CM_DTLD             CM_DEAD_TILDE
146
147 // Third row
148 #define CM_AE_LIGATURE  GR2A(KC_A)      // æ
149 #define CM_AE           CM_AE_LIGATURE
150 #define CM_SHARP_S      GR2A(KC_S)      // ß
151 #define CM_SRPS         CM_SHARP_S
152 #define CM_ETH          GR2A(KC_D)      // ð
153 // nothing on F
154 #define CM_ENG          GR2A(KC_G)      // ŋ
155 #define CM_H_SRTOKE     GR2A(KC_H)      // ħ
156 #define CM_HSTK         CM_H_SRTOKE
157 #define CM_IJ_LIGATURE  GR2A(KC_J)      // ij
158 #define CM_IJ           CM_IJ_LIGATURE
159 #define CM_KRA          GR2A(KC_K)      // ĸ
160 #define CM_L_FLOWN_DOT  GR2A(KC_L)      // ŀ
161 #define CM_LFLD         CM_L_FLOWN_DOT
162 #define CM_DEAD_ACUTE   GR2A(KC_SCLN)   // dead acute accent
163 #define CM_DACT         CM_DEAD_ACUTE
164 // nothing on È & À
165
166 // Fourth row
167 #define CM_CENT                 GR2A(KC_C)  // ¢
168 #define CM_LEFT_DOUBLE_QUOTE    GR2A(KC_V)  // “
169 #define CM_LDQT                 CM_LEFT_DOUBLE_QUOTE
170 #define CM_RIGHT_DOUBLE_QUOTE   GR2A(KC_B)  // ”
171 #define CM_RDQT                 CM_RIGHT_DOUBLE_QUOTE
172 #define CM_N_APOSTROPHE         GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
173 #define CM_NAPO                 CM_N_APOSTROPHE
174 #define CM_MU   GR2A(KC_M)      // μ
175 // ─ TODO box drawing character?
176 #define CM_HYPHENATION_POINT    GR2A(CM_DOT)    // ‧  TODO not an interpunct ?
177
178 // GR2A-shifted characters (non-exhaustive list)
179 // First row
180 #define CM_PLUS_MINUS   LSFT(GR2A(KC_9))    // ±
181 #define CM_PSMS         CM_PLUS_MINUS
182
183 // Fourth row
184 #define CM_LEFT_QUOTE           LSFT(GR2A(KC_V))    // ‘
185 #define CM_LQOT                 CM_LEFT_QUOTE
186 #define CM_RIGHT_QUOTE          LSFT(GR2A(KC_B))    // ’
187 #define CM_RQOT                 CM_RIGHT_QUOTE
188
189 #endif