aboutsummaryrefslogtreecommitdiff
path: root/quantum/keymap_extras
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/keymap_extras')
-rw-r--r--quantum/keymap_extras/keymap_bepo.h311
-rw-r--r--quantum/keymap_extras/keymap_canadian_multilingual.h255
-rw-r--r--quantum/keymap_extras/keymap_colemak.h2
-rw-r--r--quantum/keymap_extras/keymap_dvorak.h21
-rw-r--r--quantum/keymap_extras/keymap_dvp.h82
-rw-r--r--quantum/keymap_extras/keymap_fr_ch.h98
-rw-r--r--quantum/keymap_extras/keymap_french.h8
-rw-r--r--quantum/keymap_extras/keymap_french_osx.h2
-rw-r--r--quantum/keymap_extras/keymap_german.h4
-rw-r--r--quantum/keymap_extras/keymap_german_ch.h102
-rw-r--r--quantum/keymap_extras/keymap_german_osx.h161
-rw-r--r--quantum/keymap_extras/keymap_neo2.h23
-rw-r--r--quantum/keymap_extras/keymap_nordic.h6
-rw-r--r--quantum/keymap_extras/keymap_norwegian.h41
-rw-r--r--quantum/keymap_extras/keymap_plover.h32
-rw-r--r--quantum/keymap_extras/keymap_russian.h77
-rw-r--r--quantum/keymap_extras/keymap_spanish.h8
-rw-r--r--quantum/keymap_extras/keymap_uk.h6
-rw-r--r--quantum/keymap_extras/keymap_unicode_cyrillic.h163
19 files changed, 1296 insertions, 106 deletions
diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h
new file mode 100644
index 000000000..e5ef39552
--- /dev/null
+++ b/quantum/keymap_extras/keymap_bepo.h
@@ -0,0 +1,311 @@
1/* Keymap macros for the French BÉPO layout - http://bepo.fr */
2#ifndef KEYMAP_BEPO_H
3#define KEYMAP_BEPO_H
4
5#include "keymap.h"
6
7// Alt gr
8#ifndef ALTGR
9#define ALTGR(kc) RALT(kc)
10#endif
11#ifndef ALGR
12#define ALGR(kc) ALTGR(kc)
13#endif
14#define BP_ALGR KC_RALT
15
16// Normal characters
17// First row (on usual keyboards)
18#define BP_DOLLAR KC_GRAVE // $
19#define BP_DLR BP_DOLLAR
20#define BP_DOUBLE_QUOTE KC_1 // "
21#define BP_DQOT BP_DOUBLE_QUOTE
22#define BP_LEFT_GUILLEMET KC_2 // «
23#define BP_LGIL BP_LEFT_GUILLEMET
24#define BP_RIGHT_GUILLEMET KC_3 // »
25#define BP_RGIL BP_RIGHT_GUILLEMET
26#define BP_LEFT_PAREN KC_4 // (
27#define BP_LPRN BP_LEFT_PAREN
28#define BP_RIGHT_PAREN KC_5 // )
29#define BP_RPRN BP_RIGHT_PAREN
30#define BP_AT KC_6 // @
31#define BP_PLUS KC_7 // +
32#define BP_MINUS KC_8 // -
33#define BP_MINS BP_MINUS
34#define BP_SLASH KC_9 // /
35#define BP_SLSH BP_SLASH
36#define BP_ASTERISK KC_0 // *
37#define BP_ASTR BP_ASTERISK
38#define BP_EQUAL KC_MINUS // =
39#define BP_EQL BP_EQUAL
40#define BP_PERCENT KC_EQUAL // %
41#define BP_PERC BP_PERCENT
42
43// Second row
44#define BP_B KC_Q
45#define BP_E_ACUTE KC_W // é
46#define BP_ECUT BP_E_ACUTE
47#define BP_P KC_E
48#define BP_O KC_R
49#define BP_E_GRAVE KC_T // è
50#define BP_EGRV BP_E_GRAVE
51#define BP_DEAD_CIRCUMFLEX KC_Y // dead ^
52#define BP_DCRC BP_DEAD_CIRCUMFLEX
53#define BP_V KC_U
54#define BP_D KC_I
55#define BP_L KC_O
56#define BP_J KC_P
57#define BP_Z KC_LBRACKET
58#define BP_W KC_RBRACKET
59
60// Third row
61#define BP_A KC_A
62#define BP_U KC_S
63#define BP_I KC_D
64#define BP_E KC_F
65#define BP_COMMA KC_G // ,
66#define BP_COMM BP_COMMA
67#define BP_C KC_H
68#define BP_T KC_J
69#define BP_S KC_K
70#define BP_R KC_L
71#define BP_N KC_SCOLON
72#define BP_M KC_QUOTE
73#define BP_C_CEDILLA KC_BSLASH // ç
74#define BP_CCED BP_C_CEDILLA
75
76// Fourth row
77#define BP_E_CIRCUMFLEX KC_NONUS_BSLASH // ê
78#define BP_ECRC BP_E_CIRCUMFLEX
79#define BP_A_GRAVE KC_Z // à
80#define BP_AGRV BP_A_GRAVE
81#define BP_Y KC_X
82#define BP_X KC_C
83#define BP_DOT KC_V // .
84#define BP_K KC_B
85#define BP_APOSTROPHE KC_N
86#define BP_APOS BP_APOSTROPHE // '
87#define BP_Q KC_M
88#define BP_G KC_COMMA
89#define BP_H KC_DOT
90#define BP_F KC_SLASH
91
92// Shifted characters
93// First row
94#define BP_HASH LSFT(BP_DOLLAR) // #
95#define BP_1 LSFT(KC_1)
96#define BP_2 LSFT(KC_2)
97#define BP_3 LSFT(KC_3)
98#define BP_4 LSFT(KC_4)
99#define BP_5 LSFT(KC_5)
100#define BP_6 LSFT(KC_6)
101#define BP_7 LSFT(KC_7)
102#define BP_8 LSFT(KC_8)
103#define BP_9 LSFT(KC_9)
104#define BP_0 LSFT(KC_0)
105#define BP_DEGREE LSFT(BP_EQUAL) // °
106#define BP_DEGR BP_DEGREE
107#define BP_GRAVE LSFT(BP_PERCENT) // `
108#define BP_GRV BP_GRAVE
109
110// Second row
111#define BP_EXCLAIM LSFT(BP_DEAD_CIRCUMFLEX) // !
112#define BP_EXLM BP_EXCLAIM
113
114// Third row
115#define BP_SCOLON LSFT(BP_COMMA) // ;
116#define BP_SCLN BP_SCOLON
117
118// Fourth row
119#define BP_COLON LSFT(BP_DOT) // :
120#define BP_COLN BP_COLON
121#define BP_QUESTION LSFT(BP_APOS) // ?
122#define BP_QEST BP_QUESTION
123
124// Space bar
125#define BP_NON_BREAKING_SPACE LSFT(KC_SPACE)
126#define BP_NBSP BP_NON_BREAKING_SPACE
127
128// AltGr-ed characters
129// First row
130#define BP_EN_DASH ALTGR(BP_DOLLAR) // –
131#define BP_NDSH BP_EN_DASH
132#define BP_EM_DASH ALTGR(KC_1) // —
133#define BP_MDSH BP_EM_DASH
134#define BP_LESS ALTGR(KC_2) // <
135#define BP_GREATER ALTGR(KC_3) // >
136#define BP_GRTR BP_GREATER
137#define BP_LBRACKET ALTGR(KC_4) // [
138#define BP_LBRC BP_LBRACKET
139#define BP_RBRACKET ALTGR(KC_5) // ]
140#define BP_RBRC BP_RBRACKET
141#define BP_CIRCUMFLEX ALTGR(KC_6) // ^
142#define BP_CIRC BP_CIRCUMFLEX
143#define BP_PLUS_MINUS ALTGR(KC_7) // ±
144#define BP_PSMS BP_PLUS_MINUS
145#define BP_MATH_MINUS ALTGR(KC_8) // −
146#define BP_MMNS BP_MATH_MINUS
147#define BP_OBELUS ALTGR(KC_9) // ÷
148#define BP_OBEL BP_OBELUS
149// more conventional name of the symbol
150#define BP_DIVISION_SIGN BP_OBELUS
151#define BP_DVSN BP_DIVISION_SIGN
152#define BP_TIMES ALTGR(KC_0) // ×
153#define BP_TIMS BP_TIMES
154#define BP_DIFFERENT ALTGR(BP_EQUAL) // ≠
155#define BP_DIFF BP_DIFFERENT
156#define BP_PERMILLE ALTGR(BP_PERCENT) // ‰
157#define BP_PMIL BP_PERMILLE
158
159// Second row
160#define BP_PIPE ALTGR(BP_B) // |
161#define BP_DEAD_ACUTE ALTGR(BP_E_ACUTE) // dead ´
162#define BP_DACT BP_DEAD_ACUTE
163#define BP_AMPERSAND ALTGR(BP_P) // &
164#define BP_AMPR BP_AMPERSAND
165#define BP_OE_LIGATURE ALTGR(BP_O) // œ
166#define BP_OE BP_OE_LIGATURE
167#define BP_DEAD_GRAVE ALTGR(BP_E_GRAVE) // `
168#define BP_DGRV BP_DEAD_GRAVE
169#define BP_INVERTED_EXCLAIM ALTGR(BP_DEAD_CIRCUMFLEX) // ¡
170#define BP_IXLM BP_INVERTED_EXCLAIM
171#define BP_DEAD_CARON ALTGR(BP_V) // dead ˇ
172#define BP_DCAR BP_DEAD_CARON
173#define BP_ETH ALTGR(BP_D) // ð
174#define BP_DEAD_SLASH ALTGR(BP_L) // dead /
175#define BP_DSLH BP_DEAD_SLASH
176#define BP_IJ_LIGATURE ALTGR(BP_J) // ij
177#define BP_IJ BP_IJ_LIGATURE
178#define BP_SCHWA ALTGR(BP_Z) // ə
179#define BP_SCWA BP_SCHWA
180#define BP_DEAD_BREVE ALTGR(BP_W) // dead ˘
181#define BP_DBRV BP_DEAD_BREVE
182
183// Third row
184#define BP_AE_LIGATURE ALTGR(BP_A) // æ
185#define BP_AE BP_AE_LIGATURE
186#define BP_U_GRAVE ALTGR(BP_U) // ù
187#define BP_UGRV BP_U_GRAVE
188#define BP_DEAD_TREMA ALTGR(BP_I) // dead ¨ (trema/umlaut/diaresis)
189#define BP_DTRM BP_DEAD_TREMA
190#define BP_EURO ALTGR(BP_E) // €
191#define BP_TYPOGRAPHICAL_APOSTROPHE ALTGR(BP_COMMMA) // ’
192#define BP_TAPO BP_TYPOGRAPHICAL_APOSTROPHE
193#define BP_COPYRIGHT ALTGR(BP_C) // ©
194#define BP_CPRT BP_COPYRIGHT
195#define BP_THORN ALTGR(BP_T) // þ
196#define BP_THRN BP_THORN
197#define BP_SHARP_S ALTGR(BP_S) // ß
198#define BP_SRPS BP_SHARP_S
199#define BP_REGISTERED_TRADEMARK ALTGR(BP_R) // ®
200#define BP_RTM BP_REGISTERED_TRADEMARK
201#define BP_DEAD_TILDE ALTGR(BP_N) // dead ~
202#define BP_DTLD BP_DEAD_TILDE
203#define BP_DEAD_MACRON ALTGR(BP_M) // dead ¯
204#define BP_DMCR BP_DEAD_MACRON
205#define BP_DEAD_CEDILLA ALTGR(BP_C_CEDILLA) // dead ¸
206#define BP_DCED BP_DEAD_CEDILLA
207
208// Fourth row
209#define BP_NONUS_SLASH ALTGR(BP_E_CIRCUMFLEX) // / on non-us backslash key (102nd key, ê in bépo)
210#define BP_NUSL BP_NONUS_SLASH
211#define BP_BACKSLASH ALTGR(BP_A_GRAVE) /* \ */
212#define BP_BSLS BP_BACKSLASH
213#define BP_LEFT_CURLY_BRACE ALTGR(BP_Y) // {
214#define BP_LCBR BP_LEFT_CURLY_BRACE
215#define BP_RIGHT_CURLY_BRACE ALTGR(BP_X) // }
216#define BP_RCBR BP_RIGHT_CURLY_BRACE
217#define BP_ELLIPSIS ALTGR(BP_DOT) // …
218#define BP_ELPS BP_ELLIPSIS
219#define BP_TILDE ALTGR(BP_K) // ~
220#define BP_TILD BP_TILDE
221#define BP_INVERTED_QUESTION ALTGR(BP_QUESTION) // ¿
222#define BP_IQST BP_INVERTED_QUESTION
223#define BP_DEAD_RING ALTGR(BP_Q) // dead °
224#define BP_DRNG BP_DEAD_RING
225#define BP_DEAD_GREEK ALTGR(BP_G) // dead Greek key (following key will make a Greek letter)
226#define BP_DGRK BP_DEAD_GREEK
227#define BP_DAGGER ALTGR(BP_H) // †
228#define BP_DAGR BP_DAGGER
229#define BP_DEAD_OGONEK ALTGR(BP_F) // dead ˛
230#define BP_DOGO BP_DEAD_OGONEK
231
232// Space bar
233#define BP_UNDERSCORE ALTGR(KC_SPACE) // _
234#define BP_UNDS BP_UNDERSCORE
235
236// AltGr-Shifted characters (different from capitalised AltGr-ed characters)
237// First row
238#define BP_PARAGRAPH ALTGR(BP_HASH) // ¶
239#define BP_PARG BP_PARAGRAPH
240#define BP_LOW_DOUBLE_QUOTE ALTGR(BP_1) // „
241#define BP_LWQT BP_LOW_DOUBLE_QUOTE
242#define BP_LEFT_DOUBLE_QUOTE ALTGR(BP_2) // “
243#define BP_LDQT BP_LEFT_DOUBLE_QUOTE
244#define BP_RIGHT_DOUBLE_QUOTE ALTGR(BP_3) // ”
245#define BP_RDQT BP_RIGHT_DOUBLE_QUOTE
246#define BP_LESS_OR_EQUAL ALTGR(BP_4) // ≤
247#define BP_LEQL BP_LESS_OR_EQUAL
248#define BP_GREATER_OR_EQUAL ALTGR(BP_5) // ≥
249#define BP_GEQL BP_GREATER_OR_EQUAL
250// nothing on ALTGR(BP_6)
251#define BP_NEGATION ALTGR(BP_7) // ¬
252#define BP_NEGT BP_NEGATION
253#define BP_ONE_QUARTER ALTGR(BP_8) // ¼
254#define BP_1QRT BP_ONE_QUARTER
255#define BP_ONE_HALF ALTGR(BP_9) // ½
256#define BP_1HLF BP_ONE_HALF
257#define BP_THREE_QUARTERS ALTGR(BP_0) // ¾
258#define BP_3QRT BP_THREE_QUARTERS
259#define BP_MINUTES ALTGR(BP_DEGREE) // ′
260#define BP_MNUT BP_MINUTES
261#define BP_SECONDS ALTGR(BP_GRAVE) // ″
262#define BP_SCND BP_SECONDS
263
264// Second row
265#define BP_BROKEN_PIPE LSFT(BP_PIPE) // ¦
266#define BP_BPIP BP_BROKEN_PIPE
267#define BP_DEAD_DOUBLE_ACUTE LSFT(BP_DEAD_ACUTE) // ˝
268#define BP_DDCT BP_DEAD_DOUBLE_ACUTE
269#define BP_SECTION ALTGR(LSFT(BP_P)) // §
270#define BP_SECT BP_SECTION
271// LSFT(BP_DEAD_GRAVE) is actually the same character as LSFT(BP_PERCENT)
272#define BP_GRAVE_BIS LSFT(BP_DEAD_GRAVE) // `
273#define BP_GRVB BP_GRAVE_BIS
274
275// Third row
276#define BP_DEAD_DOT_ABOVE LSFT(BP_DEAD_TREMA) // dead ˙
277#define BP_DDTA BP_DEAD_DOT_ABOVE
278#define BP_DEAD_CURRENCY LSFT(BP_EURO) // dead ¤ (next key will generate a currency code like ¥ or £)
279#define BP_DCUR BP_DEAD_CURRENCY
280#define BP_DEAD_HORN LSFT(ALTGR(BP_COMMA)) // dead ̛
281#define BP_DHRN BP_DEAD_HORN
282#define BP_LONG_S LSFT(ALTGR(BP_C)) // ſ
283#define BP_LNGS BP_LONG_S
284#define BP_TRADEMARK LSFT(BP_REGISTERED_TRADEMARK) // ™
285#define BP_TM BP_TRADEMARK
286#define BP_ORDINAL_INDICATOR_O LSFT(ALTGR(BP_M)) // º
287#define BP_ORDO BP_ORDINAL_INDICATOR_O
288#define BP_DEAD_COMMA LSFT(BP_DEAD_CEDILLA) // dead ˛
289#define BP_DCOM BP_DEAD_COMMA
290
291// Fourth row
292#define BP_LEFT_QUOTE LSFT(ALTGR(BP_Y)) // ‘
293#define BP_LQOT BP_LEFT_QUOTE
294#define BP_RIGHT_QUOTE LSFT(ALTGR(BP_X)) // ’
295#define BP_RQOT BP_RIGHT_QUOTE
296#define BP_INTERPUNCT LSFT(ALTGR(BP_DOT)) // ·
297#define BP_IPCT BP_INTERPUNCT
298#define BP_DEAD_HOOK_ABOVE LSFT(ALTGR(BP_QUESTION)) // dead ̉
299#define BP_DHKA BP_DEAD_HOOK_ABOVE
300#define BP_DEAD_UNDERDOT LSFT(BP_DEAD_RING) // dead ̣
301#define BP_DUDT BP_DEAD_UNDERDOT
302#define BP_DOUBLE_DAGGER LSFT(BP_DAGGER) // ‡
303#define BP_DDGR BP_DOUBLE_DAGGER
304#define BP_ORDINAL_INDICATOR_A LSFT(ALTGR(BP_F)) // ª
305#define BP_ORDA BP_ORDINAL_INDICATOR_A
306
307// Space bar
308#define BP_NARROW_NON_BREAKING_SPACE ALTGR(BP_NON_BREAKING_SPACE)
309#define BP_NNBS BP_NARROW_NON_BREAKING_SPACE
310
311#endif
diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h
new file mode 100644
index 000000000..0bc20c7b9
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_multilingual.h
@@ -0,0 +1,255 @@
1#ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
2#define KEYMAP_CANADIAN_MULTILINGUAG_H
3
4#include "keymap.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 CSA_ALTGR KC_RALT
15#define CSA_ALGR CSA_ALTGR
16
17#ifndef GR2A
18#define GR2A(kc) RCTL(kc)
19#endif
20
21// Normal characters
22// First row
23#define CSA_SLASH KC_GRV // /
24#define CSA_SLSH CSA_SLASH
25
26// Second row
27#define CSA_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^
28#define CSA_DCRC CSA_DEAD_CIRCUMFLEX
29#define CSA_C_CEDILLA KC_RBRACKET // Ç
30#define CSA_CCED CSA_C_CEDILLA
31
32// Third row
33#define CSA_E_GRAVE KC_QUOT // è
34#define CSA_EGRV CSA_E_GRAVE
35#define CSA_A_GRAVE KC_BSLASH // à
36#define CSA_AGRV CSA_A_GRAVE
37
38// Fourth row
39#define CSA_U_GRAVE KC_NONUS_BSLASH // ù
40#define CSA_UGRV CSA_U_GRAVE
41#define CSA_E_ACUTE KC_SLSH // é
42#define CSA_ECUT CSA_E_ACUTE
43
44// Shifted characters
45// First row
46#define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
47#define CSA_BSLS CSA_BACKSLASH
48#define CSA_QUESTION LSFT(KC_6) // ?
49#define CSA_QEST CSA_QUESTION
50
51// Second row
52#define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü
53#define CSA_DTRM CSA_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 CSA_APOSTROPHE LSFT(KC_COMMA) // '
60#define CSA_APOS CSA_APOSTROPHE
61#define CSA_DOUBLE_QUOTE LSFT(KC_DOT) // "
62#define CSA_DQOT CSA_DOUBLE_QUOTE
63
64// Alt Gr-ed characters
65// First row
66#define CSA_PIPE ALTGR(CSA_SLASH) // |
67#define CSA_CURRENCY ALTGR(KC_4) // ¤
68#define CSA_CURR CSA_CURRENCY
69#define CSA_LEFT_CURLY_BRACE ALTGR(KC_7) // {
70#define CSA_LCBR CSA_LEFT_CURLY_BRACE
71#define CSA_RIGHT_CURLY_BRACE ALTGR(KC_8) // }
72#define CSA_RCBR CSA_RIGHT_CURLY_BRACE
73#define CSA_LBRACKET ALTGR(KC_9) // [
74#define CSA_LBRC CSA_LBRACKET
75#define CSA_RBRACKET ALTGR(KC_0) // ]
76#define CSA_RBRC CSA_RBRACKET
77#define CSA_NEGATION ALTGR(KC_EQUAL) // ¬
78#define CSA_NEGT CSA_NEGATION
79
80// Second row
81// euro symbol not available on Linux? (X.org)
82#define CSA_EURO ALTGR(KC_E) // €
83#define CSA_DEAD_GRAVE ALTGR(CSA_DEAD_CIRCUMFLEX)
84#define CSA_DGRV CSA_DEAD_GRAVE // dead `
85#define CSA_DEAD_TILDE ALTGR(CSA_C_CEDILLA) // ~
86#define CSA_DTLD CSA_DEAD_TILDE
87
88// Third row
89#define CSA_DEGREE ALTGR(KC_SCOLON) // °
90#define CSA_DEGR CSA_DEGREE
91
92// Fourth row
93#define CSA_LEFT_GUILLEMET ALTGR(KC_Z) // «
94#define CSA_LGIL CSA_LEFT_GUILLEMET
95#define CSA_RIGHT_GUILLEMET ALTGR(KC_X) // »
96#define CSA_RGIL CSA_RIGHT_GUILLEMET
97#define CSA_LESS ALTGR(KC_COMMA) // <
98#define CSA_GREATER ALTGR(KC_DOT) // >
99#define CSA_GRTR CSA_GREATER
100
101// Space bar
102#define CSA_NON_BREAKING_SPACE ALTGR(KC_SPACE)
103#define CSA_NBSP CSA_NON_BREAKING_SPACE
104
105// GR2A-ed characters
106// First row
107#define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹
108#define CSA_SUP1 CSA_SUPERSCRIPT_ONE
109#define CSA_SUPERSCRIPT_TWO GR2A(KC_2) // ²
110#define CSA_SUP2 CSA_SUPERSCRIPT_TWO
111#define CSA_SUPERSCRIPT_THREE GR2A(KC_3) // ³
112#define CSA_SUP3 CSA_SUPERSCRIPT_THREE
113#define CSA_ONE_QUARTER GR2A(KC_4) // ¼
114#define CSA_1QRT CSA_ONE_QUARTER
115#define CSA_ONE_HALF GR2A(KC_5) // ½
116#define CSA_1HLF CSA_ONE_HALF
117#define CSA_THREE_QUARTERS GR2A(KC_6) // ¾
118#define CSA_3QRT CSA_THREE_QUARTERS
119// nothing on 7-0 and -
120#define CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
121#define CSA_DCED CSA_DEAD_CEDILLA
122
123// Second row
124#define CSA_OMEGA GR2A(KC_Q) // ω
125#define CSA_OMEG CSA_OMEGA
126#define CSA_L_STROKE GR2A(KC_W) // ł
127#define CSA_LSTK CSA_L_STROKE
128#define CSA_OE_LIGATURE GR2A(KC_E) // œ
129#define CSA_OE CSA_OE_LIGATURE
130#define CSA_PARAGRAPH GR2A(KC_R) // ¶
131#define CSA_PARG CSA_PARAGRAPH
132#define CSA_T_STROKE GR2A(KC_T) // ŧ
133#define CSA_LEFT_ARROW GR2A(KC_Y) // ←
134#define CSA_LARW CSA_LEFT_ARROW
135#define CSA_DOWN_ARROW GR2A(KC_U) // ↓
136#define CSA_DARW CSA_DOWN_ARROW
137#define CSA_RIGHT_ARROW GR2A(KC_I) // →
138#define CSA_RARW CSA_RIGHT_ARROW
139#define CSA_O_STROKE GR2A(KC_O) // ø
140#define CSA_OSTK CSA_O_STROKE
141#define CSA_THORN GR2A(KC_P) // þ
142#define CSA_THRN CSA_THORN
143// nothing on ^
144#define CSA_TILDE GR2A(CSA_C_CEDILLA) // dead ~
145#define CSA_TILD CSA_TILDE
146
147// Third row
148#define CSA_AE_LIGATURE GR2A(KC_A) // æ
149#define CSA_AE CSA_AE_LIGATURE
150#define CSA_SHARP_S GR2A(KC_S) // ß
151#define CSA_SRPS CSA_SHARP_S
152#define CSA_ETH GR2A(KC_D) // ð
153// nothing on F
154#define CSA_ENG GR2A(KC_G) // ŋ
155#define CSA_H_SRTOKE GR2A(KC_H) // ħ
156#define CSA_HSTK CSA_H_SRTOKE
157#define CSA_IJ_LIGATURE GR2A(KC_J) // ij
158#define CSA_IJ CSA_IJ_LIGATURE
159#define CSA_KRA GR2A(KC_K) // ĸ
160#define CSA_L_FLOWN_DOT GR2A(KC_L) // ŀ
161#define CSA_LFLD CSA_L_FLOWN_DOT
162#define CSA_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent
163#define CSA_DACT CSA_DEAD_ACUTE
164// nothing on È & À
165
166// Fourth row
167#define CSA_CENT GR2A(KC_C) // ¢
168#define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “
169#define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE
170#define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ”
171#define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE
172#define CSA_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint)
173#define CSA_NAPO CSA_N_APOSTROPHE
174#define CSA_MU GR2A(KC_M) // μ
175#define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ―
176#define CSA_HZBR CSA_HORIZONTAL_BAR
177#define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙
178#define CSA_DDTA CSA_DEAD_DOT_ABOVE
179
180// GR2A-shifted characters (different from capitalised GR2A-ed characters)
181// First row
182#define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH)) // soft-hyphen, appears as a hyphen in wrapped word
183#define CSA_SHYP CSA_SOFT_HYPHEN
184#define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM) // ¡
185#define CSA_IXLM CSA_INVERTED_EXCLAIM
186// nothing on 2
187#define CSA_POUND GR2A(LSFT(KC_3)) // £
188#define CSA_GBP CSA_POUND_SIGN
189// already on ALTGR(KC_E)
190#define CSA_EURO_BIS GR2A(LSFT(KC_4)) // €
191#define CSA_EURB CSA_EURO_BIS
192#define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5)) // ⅜
193#define CSA_3ON8 CSA_THREE_EIGHTHS
194#define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6)) // ⅝
195#define CSA_5ON8 CSA_FIVE_EIGHTHS
196#define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7)) // ⅞
197#define CSA_7ON8 CSA_SEVEN_EIGHTHS
198#define CSA_TRADEMARK GR2A(LSFT(KC_8)) // ™
199#define CSA_TM CSA_TRADEMARK
200#define CSA_PLUS_MINUS GR2A(LSFT(KC_9)) // ±
201#define CSA_PSMS CSA_PLUS_MINUS
202// nothing on 0
203#define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS)) // ¿
204#define CSA_IQST CSA_INVERTED_QUESTION
205#define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL)) // dead ˛
206#define CSA_DOGO CSA_DEAD_OGONEK
207
208// Second row
209#define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R)) // ®
210#define CSA_RTM CSA_REGISTERED_TRADEMARK
211#define CSA_YEN GR2A(LSFT(KC_Y)) // ¥
212#define CSA_YUAN CSA_YEN
213#define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW) // ↑
214#define CSA_DOTLESS_I GR2A(LSFT(KC_I)) // ı
215#define CSA_DLSI CSA_DOTLESS_I
216#define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC)) // dead °
217#define CSA_DRNG CSA_DEAD_RING
218#define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA)) // dead ¯
219#define CSA_DMCR CSA_DEAD_MACRON
220
221// Third row
222#define CSA_SECTION GR2A(LSFT(KC_S)) // §
223#define CSA_SECT CSA_SECTION
224#define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F)) // ª
225#define CSA_ORDA CSA_ORDINAL_INDICATOR_A
226#define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE) // ˝
227#define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE
228#define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
229#define CSA_DCAR CSA_DEAD_CARON
230#define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
231#define CSA_DBRV CSA_DEAD_BREVE
232
233// Fourth row
234#define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE)) // ¦
235#define CSA_BPIP CSA_BROKEN_PIPE
236#define CSA_COPYRIGHT GR2A(LSFT(KC_C)) // ©
237#define CSA_CPRT CSA_COPYRIGHT
238#define CSA_LEFT_QUOTE GR2A(LSFT(KC_V)) // ‘
239#define CSA_LQOT CSA_LEFT_QUOTE
240#define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B)) // ’
241#define CSA_RQOT CSA_RIGHT_QUOTE
242#define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N)) // ♪
243#define CSA_8NOT CSA_EIGHTH_NOTE
244#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M)) // º
245#define CSA_ORDO CSA_ORDINAL_INDICATOR_O
246#define CSA_TIMES GR2A(LSFT(KC_COMMA)) // ×
247#define CSA_TIMS CSA_TIMES
248#define CSA_OBELUS GR2A(LSFT(KC_DOT)) // ÷
249#define CSA_OBEL CSA_OBELUS
250// more conventional name of the symbol
251#define CSA_DIVISION_SIGN CSA_OBELUS
252#define CSA_DVSN CSA_DIVISION_SIGN
253// TODO GR2A(LSFT(CSA_E_ACUTE))
254
255#endif
diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h
index 8a418c615..b8d615748 100644
--- a/quantum/keymap_extras/keymap_colemak.h
+++ b/quantum/keymap_extras/keymap_colemak.h
@@ -1,7 +1,7 @@
1#ifndef KEYMAP_COLEMAK_H 1#ifndef KEYMAP_COLEMAK_H
2#define KEYMAP_COLEMAK_H 2#define KEYMAP_COLEMAK_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5// For software implementation of colemak 5// For software implementation of colemak
6#define CM_Q KC_Q 6#define CM_Q KC_Q
7#define CM_W KC_W 7#define CM_W KC_W
diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h
index d172e0019..a0feed850 100644
--- a/quantum/keymap_extras/keymap_dvorak.h
+++ b/quantum/keymap_extras/keymap_dvorak.h
@@ -1,7 +1,7 @@
1#ifndef KEYMAP_DVORAK_H 1#ifndef KEYMAP_DVORAK_H
2#define KEYMAP_DVORAK_H 2#define KEYMAP_DVORAK_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Normal characters 6// Normal characters
7#define DV_GRV KC_GRV 7#define DV_GRV KC_GRV
@@ -18,18 +18,19 @@
18#define DV_LBRC KC_MINS 18#define DV_LBRC KC_MINS
19#define DV_RBRC KC_EQL 19#define DV_RBRC KC_EQL
20 20
21#define DV_QUOT KC_Q 21#define DV_QUOT KC_Q
22#define DV_COMM KC_W 22#define DV_COMM KC_W
23#define DV_DOT KC_E 23#define DV_DOT KC_E
24#define DV_P KC_R 24#define DV_P KC_R
25#define DV_Y KC_T 25#define DV_Y KC_T
26#define DV_F KC_Y 26#define DV_F KC_Y
27#define DV_G KC_U 27#define DV_G KC_U
28#define DV_C KC_I 28#define DV_C KC_I
29#define DV_R KC_O 29#define DV_R KC_O
30#define DV_L KC_P 30#define DV_L KC_P
31#define DV_SLSH KC_LBRC 31#define DV_SLSH KC_LBRC
32#define DV_EQL KC_RBRC 32#define DV_EQL KC_RBRC
33#define DV_BSLS KC_BSLS
33 34
34#define DV_A KC_A 35#define DV_A KC_A
35#define DV_O KC_S 36#define DV_O KC_S
@@ -69,4 +70,16 @@
69#define DV_LCBR LSFT(DV_LBRC) 70#define DV_LCBR LSFT(DV_LBRC)
70#define DV_RCBR LSFT(DV_RBRC) 71#define DV_RCBR LSFT(DV_RBRC)
71 72
72#endif \ No newline at end of file 73#define DV_DQUO LSFT(DV_QUOT)
74#define DV_LABK LSFT(DV_COMM)
75#define DV_RABK LSFT(DV_DOT)
76
77#define DV_QUES LSFT(DV_SLSH)
78#define DV_PLUS LSFT(DV_EQL)
79#define DV_PIPE LSFT(DV_BSLS)
80
81#define DV_UNDS LSFT(DV_MINS)
82
83#define DV_COLN LSFT(DV_SCLN)
84
85#endif
diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h
new file mode 100644
index 000000000..83f49a52b
--- /dev/null
+++ b/quantum/keymap_extras/keymap_dvp.h
@@ -0,0 +1,82 @@
1#ifndef KEYMAP_DVP_H
2#define KEYMAP_DVP_H
3
4#include "keymap.h"
5
6// Normal characters
7#define DP_DLR KC_GRV
8#define DP_AMPR KC_1
9#define DP_LBRC KC_2
10#define DP_LCBR KC_3
11#define DP_RCBR KC_4
12#define DP_LPRN KC_5
13#define DP_EQL KC_6
14#define DP_ASTR KC_7
15#define DP_RPRN KC_8
16#define DP_PLUS KC_9
17#define DP_RBRC KC_0
18#define DP_EXLM KC_MINS
19#define DP_HASH KC_EQL
20
21#define DP_SCLN KC_Q
22#define DP_COMM KC_W
23#define DP_DOT KC_E
24#define DP_P KC_R
25#define DP_Y KC_T
26#define DP_F KC_Y
27#define DP_G KC_U
28#define DP_C KC_I
29#define DP_R KC_O
30#define DP_L KC_P
31#define DP_SLSH KC_LBRC
32#define DP_AT KC_RBRC
33#define DP_BSLS KC_BSLS
34
35#define DP_A KC_A
36#define DP_O KC_S
37#define DP_E KC_D
38#define DP_U KC_F
39#define DP_I KC_G
40#define DP_D KC_H
41#define DP_H KC_J
42#define DP_T KC_K
43#define DP_N KC_L
44#define DP_S KC_SCLN
45#define DP_MINS KC_QUOT
46
47#define DP_QUOT KC_Z
48#define DP_Q KC_X
49#define DP_J KC_C
50#define DP_K KC_V
51#define DP_X KC_B
52#define DP_B KC_N
53#define DP_M KC_M
54#define DP_W KC_COMM
55#define DP_V KC_DOT
56#define DP_Z KC_SLSH
57
58// Shifted characters
59#define DP_TILD LSFT(DP_DLR)
60#define DP_PERC LSFT(DP_AMPR)
61#define DP_7 LSFT(DP_LBRC)
62#define DP_5 LSFT(DP_LCBR)
63#define DP_3 LSFT(DP_RCBR)
64#define DP_1 LSFT(DP_LPRN)
65#define DP_9 LSFT(DP_EQL)
66#define DP_0 LSFT(DP_ASTR)
67#define DP_2 LSFT(DP_RPRN)
68#define DP_4 LSFT(DP_PLUS)
69#define DP_6 LSFT(DP_RBRC)
70#define DP_8 LSFT(DP_EXLM)
71#define DP_GRV LSFT(DP_HASH)
72
73#define DP_COLN LSFT(DP_SCLN)
74#define DP_LABK LSFT(DP_COMM)
75#define DP_RABK LSFT(DP_DOT)
76#define DP_QUES LSFT(DP_SLSH)
77#define DP_CIRC LSFT(DP_AT)
78#define DP_PIPE LSFT(DP_BSLS)
79#define DP_UNDS LSFT(DP_MINS)
80#define DP_DQUO LSFT(DP_QUOT)
81
82#endif
diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h
new file mode 100644
index 000000000..87d4bb24c
--- /dev/null
+++ b/quantum/keymap_extras/keymap_fr_ch.h
@@ -0,0 +1,98 @@
1#ifndef KEYMAP_FR_CH
2#define KEYMAP_FR_CH
3
4#include "keymap.h"
5
6// Alt gr
7#define ALGR(kc) RALT(kc)
8#define FR_CH_ALGR KC_RALT
9
10// normal characters
11#define FR_CH_Z KC_Y
12#define FR_CH_Y KC_Z
13
14#define FR_CH_A KC_A
15#define FR_CH_B KC_B
16#define FR_CH_C KC_C
17#define FR_CH_D KC_D
18#define FR_CH_E KC_E
19#define FR_CH_F KC_F
20#define FR_CH_G KC_G
21#define FR_CH_H KC_H
22#define FR_CH_I KC_I
23#define FR_CH_J KC_J
24#define FR_CH_K KC_K
25#define FR_CH_L KC_L
26#define FR_CH_M KC_M
27#define FR_CH_N KC_N
28#define FR_CH_O KC_O
29#define FR_CH_P KC_P
30#define FR_CH_Q KC_Q
31#define FR_CH_R KC_R
32#define FR_CH_S KC_S
33#define FR_CH_T KC_T
34#define FR_CH_U KC_U
35#define FR_CH_V KC_V
36#define FR_CH_W KC_W
37#define FR_CH_X KC_X
38
39#define FR_CH_0 KC_0
40#define FR_CH_1 KC_1
41#define FR_CH_2 KC_2
42#define FR_CH_3 KC_3
43#define FR_CH_4 KC_4
44#define FR_CH_5 KC_5
45#define FR_CH_6 KC_6
46#define FR_CH_7 KC_7
47#define FR_CH_8 KC_8
48#define FR_CH_9 KC_9
49
50#define FR_CH_DOT KC_DOT
51#define FR_CH_COMM KC_COMM
52
53#define FR_CH_QUOT KC_MINS
54#define FR_CH_AE KC_QUOT
55#define FR_CH_UE KC_LBRC
56#define FR_CH_OE KC_SCLN
57
58#define FR_CH_CIRC KC_EQL // accent circumflex ^ and grave ` and ~
59#define FR_CH_LESS KC_NUBS // < and > and backslash
60#define FR_CH_MINS KC_SLSH // - and _
61#define FR_CH_DLR KC_BSLS // $, £ and }
62#define FR_CH_PARA KC_GRV // § and ring °
63#define FR_CH_DIAE KC_RBRC // accent ¨
64
65// shifted characters
66#define FR_CH_RING LSFT(KC_GRV) // °
67#define FR_CH_EXLM LSFT(KC_RBRC) // !
68#define FR_CH_PLUS LSFT(KC_1) // +
69#define FR_CH_DQOT LSFT(KC_2) // "
70#define FR_CH_ASTR LSFT(KC_3) // *
71#define FR_CH_PERC LSFT(KC_5) // %
72#define FR_CH_AMPR LSFT(KC_6) // &
73#define FR_CH_SLSH LSFT(KC_7) // /
74#define FR_CH_LPRN LSFT(KC_8) // (
75#define FR_CH_RPRN LSFT(KC_9) // )
76#define FR_CH_EQL LSFT(KC_0) // =
77#define FR_CH_QST LSFT(FR_CH_QUOT) // ?
78#define FR_CH_MORE LSFT(FR_CH_LESS) // >
79#define FR_CH_COLN LSFT(KC_DOT) // :
80#define FR_CH_SCLN LSFT(KC_COMM) // ;
81#define FR_CH_UNDS LSFT(FR_CH_MINS) // _
82#define FR_CH_CCED LSFT(KC_4) // ç
83#define FR_CH_GRV LSFT(FR_CH_CIRC) // accent grave `
84
85// Alt Gr-ed characters
86#define FR_CH_LCBR ALGR(KC_QUOT) // {
87#define FR_CH_LBRC ALGR(KC_LBRC) // [
88#define FR_CH_RBRC ALGR(KC_9) // ]
89#define FR_CH_RCBR ALGR(KC_0) // }
90#define FR_CH_BSLS ALGR(FR_CH_LESS) // backslash
91#define FR_CH_AT ALGR(KC_2) // @
92#define FR_CH_EURO ALGR(KC_E) // €
93#define FR_CH_TILD ALGR(FR_CH_CIRC) // ~
94#define FR_CH_PIPE ALGR(KC_1) // |
95#define FR_CH_HASH ALGR(KC_3) // #
96#define FR_CH_ACUT ALGR(FR_CH_QUOT) // accent acute ´
97
98#endif
diff --git a/quantum/keymap_extras/keymap_french.h b/quantum/keymap_extras/keymap_french.h
index ccfaed8f0..834c69650 100644
--- a/quantum/keymap_extras/keymap_french.h
+++ b/quantum/keymap_extras/keymap_french.h
@@ -1,10 +1,10 @@
1#ifndef KEYMAP_FRENCH_H 1#ifndef KEYMAP_FRENCH_H
2#define KEYMAP_FRENCH_H 2#define KEYMAP_FRENCH_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Alt gr 6// Alt gr
7#define ALGR(kc) kc | 0x1400 7#define ALGR(kc) RALT(kc)
8#define NO_ALGR KC_RALT 8#define NO_ALGR KC_RALT
9 9
10// Normal characters 10// Normal characters
@@ -75,9 +75,9 @@
75#define FR_CIRC ALGR(KC_9) 75#define FR_CIRC ALGR(KC_9)
76#define FR_AT ALGR(KC_0) 76#define FR_AT ALGR(KC_0)
77#define FR_RBRC ALGR(FR_RPRN) 77#define FR_RBRC ALGR(FR_RPRN)
78#define FR_LCBR ALGR(FR_EQL) 78#define FR_RCBR ALGR(FR_EQL)
79 79
80#define FR_EURO ALGR(KC_E) 80#define FR_EURO ALGR(KC_E)
81#define FR_BULT ALGR(FR_DLR) 81#define FR_BULT ALGR(FR_DLR)
82 82
83#endif \ No newline at end of file 83#endif
diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h
index eb31bfb4d..004d73ee2 100644
--- a/quantum/keymap_extras/keymap_french_osx.h
+++ b/quantum/keymap_extras/keymap_french_osx.h
@@ -1,7 +1,7 @@
1#ifndef KEYMAP_FRENCH_OSX_H 1#ifndef KEYMAP_FRENCH_OSX_H
2#define KEYMAP_FRENCH_OSX_H 2#define KEYMAP_FRENCH_OSX_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Normal characters 6// Normal characters
7#define FR_AT KC_GRV 7#define FR_AT KC_GRV
diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h
index dbad26f8a..7e2e0ed44 100644
--- a/quantum/keymap_extras/keymap_german.h
+++ b/quantum/keymap_extras/keymap_german.h
@@ -1,10 +1,10 @@
1#ifndef KEYMAP_GERMAN 1#ifndef KEYMAP_GERMAN
2#define KEYMAP_GERMAN 2#define KEYMAP_GERMAN
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Alt gr 6// Alt gr
7#define ALGR(kc) kc | 0x1400 7#define ALGR(kc) RALT(kc)
8#define DE_ALGR KC_RALT 8#define DE_ALGR KC_RALT
9 9
10// normal characters 10// normal characters
diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h
new file mode 100644
index 000000000..b66d582a4
--- /dev/null
+++ b/quantum/keymap_extras/keymap_german_ch.h
@@ -0,0 +1,102 @@
1#ifndef KEYMAP_SWISS_GERMAN
2#define KEYMAP_SWISS_GERMAN
3
4#include "keymap.h"
5
6// Alt gr
7#define ALGR(kc) RALT(kc)
8#define CH_ALGR KC_RALT
9
10// normal characters
11#define CH_Z KC_Y
12#define CH_Y KC_Z
13
14#define CH_A KC_A
15#define CH_B KC_B
16#define CH_C KC_C
17#define CH_D KC_D
18#define CH_E KC_E
19#define CH_F KC_F
20#define CH_G KC_G
21#define CH_H KC_H
22#define CH_I KC_I
23#define CH_J KC_J
24#define CH_K KC_K
25#define CH_L KC_L
26#define CH_M KC_M
27#define CH_N KC_N
28#define CH_O KC_O
29#define CH_P KC_P
30#define CH_Q KC_Q
31#define CH_R KC_R
32#define CH_S KC_S
33#define CH_T KC_T
34#define CH_U KC_U
35#define CH_V KC_V
36#define CH_W KC_W
37#define CH_X KC_X
38
39#define CH_0 KC_0
40#define CH_1 KC_1
41#define CH_2 KC_2
42#define CH_3 KC_3
43#define CH_4 KC_4
44#define CH_5 KC_5
45#define CH_6 KC_6
46#define CH_7 KC_7
47#define CH_8 KC_8
48#define CH_9 KC_9
49
50#define CH_DOT KC_DOT
51#define CH_COMM KC_COMM
52
53#define CH_QUOT KC_MINS // ' ? ´
54#define CH_AE KC_QUOT
55#define CH_UE KC_LBRC
56#define CH_OE KC_SCLN
57
58#define CH_PARA KC_GRAVE // secction sign § and °
59#define CH_CARR KC_EQL // carret ^ ` ~
60#define CH_DIER KC_RBRC // dieresis ¨ ! ]
61#define CH_DLR KC_BSLS // $ £ }
62#define CH_LESS KC_NUBS // < and > and backslash
63#define CH_MINS KC_SLSH // - and _
64
65// shifted characters
66#define CH_RING LSFT(CH_PARA) // °
67#define CH_PLUS LSFT(KC_1) // +
68#define CH_DQOT LSFT(KC_2) // "
69#define CH_PAST LSFT(KC_3) // *
70#define CH_CELA LSFT(KC_4) // ç
71#define CH_PERC LSFT(KC_5) // %
72#define CH_AMPR LSFT(KC_6) // &
73#define CH_SLSH LSFT(KC_7) // /
74#define CH_LPRN LSFT(KC_8) // (
75#define CH_RPRN LSFT(KC_9) // )
76#define CH_EQL LSFT(KC_0) // =
77#define CH_QST LSFT(CH_QUOT) // ?
78#define CH_GRV LSFT(CH_CARR) // `
79#define CH_EXLM LSFT(CH_DIER) // !
80#define CH_POND LSFT(CH_DLR) // £
81#define CH_MORE LSFT(CH_LESS) // >
82#define CH_COLN LSFT(KC_DOT) // :
83#define CH_SCLN LSFT(KC_COMM) // ;
84#define CH_UNDS LSFT(CH_MINS) // _
85
86// Alt Gr-ed characters
87#define CH_BRBR ALGR(KC_1) // ¦ brocken bar
88#define CH_AT ALGR(KC_2) // @
89#define CH_HASH ALGR(KC_3) // #
90#define CH_NOTL ALGR(KC_6) // ¬ negative logic
91#define CH_PIPE ALGR(KC_7) // |
92#define CH_CENT ALGR(KC_8) // ¢ cent
93#define CH_ACUT ALGR(CH_QUOT) // ´
94#define CH_TILD ALGR(CH_CARR) // ~
95#define CH_EURO ALGR(KC_E) // €
96#define CH_LBRC ALGR(CH_UE) // [
97#define CH_RBRC ALGR(CH_DIER) // ]
98#define CH_LCBR ALGR(CH_AE) // {
99#define CH_RCBR ALGR(CH_DLR) // }
100#define CH_BSLS ALGR(CH_LESS) // backslash
101
102#endif
diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h
index b011561e2..f63f06618 100644
--- a/quantum/keymap_extras/keymap_german_osx.h
+++ b/quantum/keymap_extras/keymap_german_osx.h
@@ -1,100 +1,97 @@
1#ifndef KEYMAP_GERMAN_OSX 1#ifndef KEYMAP_GERMAN_OSX
2#define KEYMAP_GERMAN_OSX 2#define KEYMAP_GERMAN_OSX
3 3
4#ifdef KEYMAP_GERMAN 4#include "keymap.h"
5 #warning redefining german keys
6#endif
7#include "keymap_common.h"
8 5
9// Alt gr 6// Alt gr
10 7
11// normal characters 8// normal characters
12#define DE_Z KC_Y 9#define DE_OSX_Z KC_Y
13#define DE_Y KC_Z 10#define DE_OSX_Y KC_Z
14 11
15#define DE_A KC_A 12#define DE_OSX_A KC_A
16#define DE_B KC_B 13#define DE_OSX_B KC_B
17#define DE_C KC_C 14#define DE_OSX_C KC_C
18#define DE_D KC_D 15#define DE_OSX_D KC_D
19#define DE_E KC_E 16#define DE_OSX_E KC_E
20#define DE_F KC_F 17#define DE_OSX_F KC_F
21#define DE_G KC_G 18#define DE_OSX_G KC_G
22#define DE_H KC_H 19#define DE_OSX_H KC_H
23#define DE_I KC_I 20#define DE_OSX_I KC_I
24#define DE_J KC_J 21#define DE_OSX_J KC_J
25#define DE_K KC_K 22#define DE_OSX_K KC_K
26#define DE_L KC_L 23#define DE_OSX_L KC_L
27#define DE_M KC_M 24#define DE_OSX_M KC_M
28#define DE_N KC_N 25#define DE_OSX_N KC_N
29#define DE_O KC_O 26#define DE_OSX_O KC_O
30#define DE_P KC_P 27#define DE_OSX_P KC_P
31#define DE_Q KC_Q 28#define DE_OSX_Q KC_Q
32#define DE_R KC_R 29#define DE_OSX_R KC_R
33#define DE_S KC_S 30#define DE_OSX_S KC_S
34#define DE_T KC_T 31#define DE_OSX_T KC_T
35#define DE_U KC_U 32#define DE_OSX_U KC_U
36#define DE_V KC_V 33#define DE_OSX_V KC_V
37#define DE_W KC_W 34#define DE_OSX_W KC_W
38#define DE_X KC_X 35#define DE_OSX_X KC_X
39 36
40#define DE_0 KC_0 37#define DE_OSX_0 KC_0
41#define DE_1 KC_1 38#define DE_OSX_1 KC_1
42#define DE_2 KC_2 39#define DE_OSX_2 KC_2
43#define DE_3 KC_3 40#define DE_OSX_3 KC_3
44#define DE_4 KC_4 41#define DE_OSX_4 KC_4
45#define DE_5 KC_5 42#define DE_OSX_5 KC_5
46#define DE_6 KC_6 43#define DE_OSX_6 KC_6
47#define DE_7 KC_7 44#define DE_OSX_7 KC_7
48#define DE_8 KC_8 45#define DE_OSX_8 KC_8
49#define DE_9 KC_9 46#define DE_OSX_9 KC_9
50 47
51#define DE_DOT KC_DOT 48#define DE_OSX_DOT KC_DOT
52#define DE_COMM KC_COMM 49#define DE_OSX_COMM KC_COMM
53 50
54#define DE_SS KC_MINS 51#define DE_OSX_SS KC_MINS
55#define DE_AE KC_QUOT 52#define DE_OSX_AE KC_QUOT
56#define DE_UE KC_LBRC 53#define DE_OSX_UE KC_LBRC
57#define DE_OE KC_SCLN 54#define DE_OSX_OE KC_SCLN
58 55
59#define DE_CIRC KC_NUBS // accent circumflex ^ and ring ° 56#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
60#define DE_ACUT KC_EQL // accent acute ´ and grave ` 57#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
61#define DE_PLUS KC_RBRC // + and * and ~ 58#define DE_OSX_PLUS KC_RBRC // + and * and ~
62#define DE_HASH KC_BSLS // # and ' 59#define DE_OSX_HASH KC_BSLS // # and '
63#define DE_LESS KC_GRV // < and > and | 60#define DE_OSX_LESS KC_GRV // < and > and |
64#define DE_MINS KC_SLSH // - and _ 61#define DE_OSX_MINS KC_SLSH // - and _
65 62
66// shifted characters 63// shifted characters
67#define DE_RING LSFT(DE_CIRC) // ° 64#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
68#define DE_EXLM LSFT(KC_1) // ! 65#define DE_OSX_EXLM LSFT(KC_1) // !
69#define DE_DQOT LSFT(KC_2) // " 66#define DE_OSX_DQOT LSFT(KC_2) // "
70#define DE_PARA LSFT(KC_3) // § 67#define DE_OSX_PARA LSFT(KC_3) // §
71#define DE_DLR LSFT(KC_4) // $ 68#define DE_OSX_DLR LSFT(KC_4) // $
72#define DE_PERC LSFT(KC_5) // % 69#define DE_OSX_PERC LSFT(KC_5) // %
73#define DE_AMPR LSFT(KC_6) // & 70#define DE_OSX_AMPR LSFT(KC_6) // &
74#define DE_SLSH LSFT(KC_7) // / 71#define DE_OSX_SLSH LSFT(KC_7) // /
75#define DE_LPRN LSFT(KC_8) // ( 72#define DE_OSX_LPRN LSFT(KC_8) // (
76#define DE_RPRN LSFT(KC_9) // ) 73#define DE_OSX_RPRN LSFT(KC_9) // )
77#define DE_EQL LSFT(KC_0) // = 74#define DE_OSX_EQL LSFT(KC_0) // =
78#define DE_QST LSFT(DE_SS) // ? 75#define DE_OSX_QST LSFT(DE_OSX_SS) // ?
79#define DE_GRV LSFT(DE_ACUT) // ` 76#define DE_OSX_GRV LSFT(DE_OSX_ACUT) // `
80#define DE_ASTR LSFT(DE_PLUS) // * 77#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
81#define DE_QUOT LSFT(DE_HASH) // ' 78#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
82#define DE_MORE LSFT(DE_LESS) // > 79#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
83#define DE_COLN LSFT(KC_DOT) // : 80#define DE_OSX_COLN LSFT(KC_DOT) // :
84#define DE_SCLN LSFT(KC_COMM) // ; 81#define DE_OSX_SCLN LSFT(KC_COMM) // ;
85#define DE_UNDS LSFT(DE_MINS) // _ 82#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
86 83
87// Alt-ed characters 84// Alt-ed characters
88#define DE_SQ2 LALT(KC_2) // ² 85//#define DE_OSX_SQ2 LALT(KC_2) // ²
89#define DE_SQ3 LALT(KC_3) // ³ 86//#define DE_OSX_SQ3 LALT(KC_3) // ³
90#define DE_LCBR LALT(KC_7) // { 87#define DE_OSX_LCBR LALT(KC_8) // {
91#define DE_LBRC LALT(KC_5) // [ 88#define DE_OSX_LBRC LALT(KC_5) // [
92#define DE_RBRC LALT(KC_6) // ] 89#define DE_OSX_RBRC LALT(KC_6) // ]
93#define DE_RCBR LALT(KC_9) // } 90#define DE_OSX_RCBR LALT(KC_9) // }
94#define DE_BSLS LALT(LSFT(KC_7)) // backslash 91#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
95#define DE_AT LALT(DE_L) // @ 92#define DE_OSX_AT LALT(DE_OSX_L) // @
96#define DE_EURO LALT(KC_E) // € 93#define DE_OSX_EURO LALT(KC_E) // €
97#define DE_TILD LALT(DE_N) // ~ 94#define DE_OSX_TILD LALT(DE_OSX_N) // ~
98#define DE_PIPE LALT(DE_7) // | 95#define DE_OSX_PIPE LALT(DE_OSX_7) // |
99 96
100#endif 97#endif
diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h
index 055d7d0d1..80439af34 100644
--- a/quantum/keymap_extras/keymap_neo2.h
+++ b/quantum/keymap_extras/keymap_neo2.h
@@ -1,8 +1,8 @@
1#ifndef KEYMAP_NEO2 1#ifndef KEYMAP_NEO2
2#define KEYMAP_NEO2 2#define KEYMAP_NEO2
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5#include "keymap_extras/keymap_german.h" 5#include "keymap_german.h"
6 6
7#define NEO_A KC_D 7#define NEO_A KC_D
8#define NEO_B KC_N 8#define NEO_B KC_N
@@ -35,6 +35,25 @@
35#define NEO_UE DE_Y 35#define NEO_UE DE_Y
36#define NEO_SS DE_UE 36#define NEO_SS DE_UE
37 37
38#define NEO_DOT DE_DOT
39#define NEO_COMM DE_COMM
40
41#define NEO_1 DE_1
42#define NEO_2 DE_2
43#define NEO_3 DE_3
44#define NEO_4 DE_4
45#define NEO_5 DE_5
46#define NEO_6 DE_6
47#define NEO_7 DE_7
48#define NEO_8 DE_8
49#define NEO_9 DE_9
50#define NEO_0 DE_0
51#define NEO_MINS DE_SS
52
53#define NEO_ACUT DE_PLUS
54#define NEO_GRV DE_ACUT
55#define NEO_CIRC DE_CIRC
56
38#define NEO_L1_L KC_CAPS 57#define NEO_L1_L KC_CAPS
39#define NEO_L1_R DE_HASH 58#define NEO_L1_R DE_HASH
40 59
diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h
index 7ef41fb79..da5c82975 100644
--- a/quantum/keymap_extras/keymap_nordic.h
+++ b/quantum/keymap_extras/keymap_nordic.h
@@ -1,10 +1,10 @@
1#ifndef KEYMAP_NORDIC_H 1#ifndef KEYMAP_NORDIC_H
2#define KEYMAP_NORDIC_H 2#define KEYMAP_NORDIC_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Alt gr 6// Alt gr
7#define ALGR(kc) kc | 0x1400 7#define ALGR(kc) RALT(kc)
8#define NO_ALGR KC_RALT 8#define NO_ALGR KC_RALT
9 9
10// Normal characters 10// Normal characters
@@ -25,7 +25,7 @@
25#define NO_SECT LSFT(NO_HALF) 25#define NO_SECT LSFT(NO_HALF)
26#define NO_QUO2 LSFT(KC_2) 26#define NO_QUO2 LSFT(KC_2)
27#define NO_BULT LSFT(KC_4) 27#define NO_BULT LSFT(KC_4)
28#define NO_AMP LSFT(KC_6) 28#define NO_AMPR LSFT(KC_6)
29#define NO_SLSH LSFT(KC_7) 29#define NO_SLSH LSFT(KC_7)
30#define NO_LPRN LSFT(KC_8) 30#define NO_LPRN LSFT(KC_8)
31#define NO_RPRN LSFT(KC_9) 31#define NO_RPRN LSFT(KC_9)
diff --git a/quantum/keymap_extras/keymap_norwegian.h b/quantum/keymap_extras/keymap_norwegian.h
new file mode 100644
index 000000000..5c4e8c495
--- /dev/null
+++ b/quantum/keymap_extras/keymap_norwegian.h
@@ -0,0 +1,41 @@
1#ifndef KEYMAP_NORWEGIAN_H
2#define KEYMAP_NORWEGIAN_H
3
4#include "keymap_nordic.h"
5
6// There are slight differrences in the keyboards in the nordic contries
7
8// Norwegian redifinitions from the nordic keyset
9#undef NO_ACUT
10#define NO_ACUT ALGR(NO_BSLS) // ´
11#undef NO_AE
12#define NO_AE KC_QUOT // æ
13#undef NO_BSLS
14#define NO_BSLS KC_EQL // '\'
15#undef NO_CIRC
16#define NO_CIRC LSFT(KC_RBRC) // ^
17#undef NO_GRV
18#define NO_GRV LSFT(NO_BSLS) //
19#undef NO_OSLH
20#define NO_OSLH KC_SCLN // ø
21#undef NO_PIPE
22#define NO_PIPE KC_GRV // |
23
24// Additional norwegian keys not defined in the nordic keyset
25#define NO_AA KC_LBRC // å
26#define NO_ASTR LSFT(KC_BSLS) // *
27
28// Norwegian unique MAC characters
29#define NO_ACUT_MAC KC_EQL // =
30#define NO_APOS_MAC KC_NUBS // '
31#define NO_AT_MAC KC_BSLS // @
32#define NO_BSLS_MAC ALGR(LSFT(KC_7)) // '\'
33#define NO_DLR_MAC LSFT(KC_4) // $
34#define NO_GRV_MAC ALGR(NO_BSLS) // `
35#define NO_GRTR_MAC LSFT(KC_GRV) // >
36#define NO_LCBR_MAC ALGR(LSFT(KC_8)) // }
37#define NO_LESS_MAC KC_GRV // >
38#define NO_PIPE_MAC ALGR(KC_7) // |
39#define NO_RCBR_MAC ALGR(LSFT(KC_9)) // }
40
41#endif
diff --git a/quantum/keymap_extras/keymap_plover.h b/quantum/keymap_extras/keymap_plover.h
new file mode 100644
index 000000000..9b88f7d84
--- /dev/null
+++ b/quantum/keymap_extras/keymap_plover.h
@@ -0,0 +1,32 @@
1#ifndef KEYMAP_PLOVER_H
2#define KEYMAP_PLOVER_H
3
4#include "keymap.h"
5
6#define PV_NUM KC_1
7#define PV_LS KC_Q
8#define PV_LT KC_W
9#define PV_LP KC_E
10#define PV_LH KC_R
11#define PV_LK KC_S
12#define PV_LW KC_D
13#define PV_LR KC_F
14
15#define PV_STAR KC_Y
16#define PV_RF KC_U
17#define PV_RP KC_I
18#define PV_RL KC_O
19#define PV_RT KC_P
20#define PV_RD KC_LBRC
21#define PV_RR KC_J
22#define PV_RB KC_K
23#define PV_RG KC_L
24#define PV_RS KC_SCLN
25#define PV_RZ KC_QUOT
26
27#define PV_A KC_C
28#define PV_O KC_V
29#define PV_E KC_N
30#define PV_U KC_M
31
32#endif
diff --git a/quantum/keymap_extras/keymap_russian.h b/quantum/keymap_extras/keymap_russian.h
new file mode 100644
index 000000000..237e9abde
--- /dev/null
+++ b/quantum/keymap_extras/keymap_russian.h
@@ -0,0 +1,77 @@
1#ifndef KEYMAP_RUSSIAN_H
2#define KEYMAP_RUSSIAN_H
3
4#include "keymap.h"
5
6// Normal Chracters // reg SHIFT
7#define RU_A KC_F // а and А
8#define RU_BE KC_COMM // б and Б
9#define RU_VE KC_D // в and В
10#define RU_GHE KC_U // г and Г
11#define RU_DE KC_L // д and Д
12#define RU_IE KC_T // е and Е
13#define RU_IO KC_GRV // ё and Ё
14#define RU_ZHE KC_SCLN // ж and Ж
15#define RU_ZE KC_P // з and З
16#define RU_I KC_B // и and И
17#define RU_SRT_I KC_Q // й and Й
18#define RU_KA KC_R // к and К
19#define RU_EL KC_K // л and Л
20#define RU_EM KC_V // м and М
21#define RU_EN KC_Y // н and Н
22#define RU_O KC_J // о and О
23#define RU_PE KC_G // п and П
24#define RU_ER KC_H // р and Р
25#define RU_ES KC_C // с and С
26#define RU_TE KC_N // т and Т
27#define RU_U KC_E // у and У
28#define RU_EF KC_A // ф and Ф
29#define RU_HA KC_LBRC // х and Х
30#define RU_TSE KC_W // ц and Ц
31#define RU_CHE KC_X // ч and Ч
32#define RU_SHA KC_I // ш and Ш
33#define RU_SHCHA KC_O // щ and Щ
34#define RU_HSIGN KC_RBRC // ъ and Ъ
35#define RU_YERU KC_S // ы and Ы
36#define RU_SSIGN KC_M // ь and Ь
37#define RU_E KC_QUOT // э and Э
38#define RU_YU KC_DOT // ю and Ю
39#define RU_YA KC_Z // я and Я
40
41#define RU_1 KC_1 // 1 and !
42#define RU_2 KC_2 // 2 and "
43#define RU_3 KC_3 // 3 and №
44#define RU_4 KC_4 // 4 and ;
45#define RU_5 KC_5 // 5 and %
46#define RU_6 KC_6 // 6 and :
47#define RU_7 KC_7 // 7 and ?
48#define RU_8 KC_8 // 8 and *
49#define RU_9 KC_9 // 9 and (
50#define RU_0 KC_0 // 0 and )
51
52#define RU_MINS KC_MINS // - and _
53#define RU_EQL KC_EQL // = and +
54#define RU_BSLS KC_BSLS // \ and /
55#define RU_DOT KC_SLSH // . and ,
56
57// Shifted Chracters
58#define RU_EXLM LSFT(RU_1) // !
59#define RU_DQUT LSFT(RU_2) // "
60#define RU_NMRO LSFT(RU_3) // №
61#define RU_SCLN LSFT(RU_4) // ;
62#define RU_PERC LSFT(RU_5) // %
63#define RU_COLN LSFT(RU_6) // :
64#define RU_QUES LSFT(RU_7) // ?
65#define RU_ASTR LSFT(RU_8) // *
66#define RU_LPRN LSFT(RU_9) // (
67#define RU_RPRN LSFT(RU_0) // )
68
69#define RU_UNDR LSFT(RU_MINS) // _
70#define RU_PLUS LSFT(RU_EQL) // +
71#define RU_SLSH LSFT(RU_BSLS) // /
72#define RU_COMM LSFT(RU_DOT) // ,
73
74// Alt Gr-ed characters
75#define RU_RUBL RALT(RU_8) // ₽
76
77#endif
diff --git a/quantum/keymap_extras/keymap_spanish.h b/quantum/keymap_extras/keymap_spanish.h
index 7f980afbc..4ba568af2 100644
--- a/quantum/keymap_extras/keymap_spanish.h
+++ b/quantum/keymap_extras/keymap_spanish.h
@@ -1,10 +1,10 @@
1#ifndef KEYMAP_SPANISH_H 1#ifndef KEYMAP_SPANISH_H
2#define KEYMAP_SPANISH_H 2#define KEYMAP_SPANISH_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Alt gr 6// Alt gr
7#define ALGR(kc) kc | 0x1400 7#define ALGR(kc) RALT(kc)
8#define NO_ALGR KC_RALT 8#define NO_ALGR KC_RALT
9 9
10// Normal characters 10// Normal characters
@@ -49,7 +49,7 @@
49#define ES_PIPE ALGR(KC_1) 49#define ES_PIPE ALGR(KC_1)
50#define ES_AT ALGR(KC_2) 50#define ES_AT ALGR(KC_2)
51#define ES_HASH ALGR(KC_3) 51#define ES_HASH ALGR(KC_3)
52#define ES_TILD ALGR(KC_4) 52#define ES_TILD ALGR(ES_NTIL)
53#define ES_EURO ALGR(KC_5) 53#define ES_EURO ALGR(KC_5)
54#define ES_NOT ALGR(KC_6) 54#define ES_NOT ALGR(KC_6)
55 55
@@ -59,4 +59,4 @@
59#define ES_LCBR ALGR(ES_ACUT) 59#define ES_LCBR ALGR(ES_ACUT)
60#define ES_RCRB ALGR(ES_CCED) 60#define ES_RCRB ALGR(ES_CCED)
61 61
62#endif \ No newline at end of file 62#endif
diff --git a/quantum/keymap_extras/keymap_uk.h b/quantum/keymap_extras/keymap_uk.h
index 5b4bd3c0d..00c87afc3 100644
--- a/quantum/keymap_extras/keymap_uk.h
+++ b/quantum/keymap_extras/keymap_uk.h
@@ -1,10 +1,10 @@
1#ifndef KEYMAP_UK_H 1#ifndef KEYMAP_UK_H
2#define KEYMAP_UK_H 2#define KEYMAP_UK_H
3 3
4#include "keymap_common.h" 4#include "keymap.h"
5 5
6// Alt gr 6// Alt gr
7#define ALGR(kc) kc | 0x1400 7#define ALGR(kc) RALT(kc)
8#define NO_ALGR KC_RALT 8#define NO_ALGR KC_RALT
9 9
10// Normal characters 10// Normal characters
@@ -33,4 +33,4 @@
33 33
34#define UK_AACT ALGR(KC_A) 34#define UK_AACT ALGR(KC_A)
35 35
36#endif \ No newline at end of file 36#endif
diff --git a/quantum/keymap_extras/keymap_unicode_cyrillic.h b/quantum/keymap_extras/keymap_unicode_cyrillic.h
new file mode 100644
index 000000000..a40626d91
--- /dev/null
+++ b/quantum/keymap_extras/keymap_unicode_cyrillic.h
@@ -0,0 +1,163 @@
1#ifndef KEYMAP_CYRILLIC_H
2#define KEYMAP_CYRILLIC_H
3
4#include "keymap.h"
5
6/*
7 * This is based off of
8 * https://en.wikipedia.org/wiki/Cyrillic_script
9 *
10 * Unicode is iffy, a software implementation is preferred
11 */
12
13// Capital Char russian/ukrainian/bulgarian
14#define CY_A UC(0x0410) // А rus ukr bul
15#define CY_BE UC(0x0411) // Б rus ukr bul
16#define CY_VE UC(0x0412) // В rus ukr bul
17#define CY_GHE UC(0x0413) // Г rus ukr bul
18#define CY_GHEUP UC(0x0490) // Ґ ukr
19#define CY_DE UC(0x0414) // Д rus ukr bul
20#define CY_DJE UC(0x0402) // Ђ
21#define CY_GJE UC(0x0403) // Ѓ
22#define CY_IE UC(0x0415) // Е rus ukr bul
23#define CY_IO UC(0x0401) // Ё rus
24#define CY_UIE UC(0x0404) // Є ukr
25#define CY_ZHE UC(0x0416) // Ж rus ukr bul
26#define CY_ZE UC(0x0417) // З rus ukr bul
27#define CY_DZE UC(0x0405) // Ѕ
28#define CY_I UC(0x0418) // И rus ukr bul
29#define CY_B_U_I UC(0x0406) // І ukr
30#define CY_YI UC(0x0407) // Ї ukr
31#define CY_SRT_I UC(0x0419) // Й rus ukr bul
32#define CY_JE UC(0x0408) // Ј
33#define CY_KA UC(0x041a) // К rus ukr bul
34#define CY_EL UC(0x041b) // Л rus ukr bul
35#define CY_LJE UC(0x0409) // Љ
36#define CY_EM UC(0x041c) // М rus ukr bul
37#define CY_EN UC(0x041d) // Н rus ukr bul
38#define CY_NJE UC(0x040a) // Њ
39#define CY_O UC(0x041e) // О rus ukr bul
40#define CY_PE UC(0x041f) // П rus ukr bul
41#define CY_ER UC(0x0420) // Р rus ukr bul
42#define CY_ES UC(0x0421) // С rus ukr bul
43#define CY_TE UC(0x0422) // Т rus ukr bul
44#define CY_TSHE UC(0x040b) // Ћ
45#define CY_KJE UC(0x040c) // Ќ
46#define CY_U UC(0x0423) // У rus ukr bul
47#define CY_SRT_U UC(0x040e) // Ў
48#define CY_EF UC(0x0424) // Ф rus ukr bul
49#define CY_HA UC(0x0425) // Х rus bul
50#define CY_TSE UC(0x0426) // Ц rus ukr bul
51#define CY_CHE UC(0x0427) // Ч rus ukr bul
52#define CY_DZHE UC(0x040f) // Џ
53#define CY_SHA UC(0x0428) // Ш rus ukr bul
54#define CY_SHCHA UC(0x0429) // Щ rus ukr bul
55#define CY_HSIGN UC(0x042a) // Ъ rus bul
56#define CY_YERU UC(0x042b) // Ы rus
57#define CY_SSIGN UC(0x042c) // Ь rus ukr bul
58#define CY_E UC(0x042d) // Э rus
59#define CY_YU UC(0x042e) // Ю rus ukr bul
60#define CY_YA UC(0x042f) // Я rus ukr bul
61// Important Cyrillic non-Slavic letters
62#define CY_PALOCHKA UC(0x04c0) // Ӏ
63#define CY_SCHWA UC(0x04d8) // Ә
64#define CY_GHE_S UC(0x0492) // Ғ
65#define CY_ZE_D UC(0x0498) // Ҙ
66#define CY_ES_D UC(0x04aa) // Ҫ
67#define CY_BR_KA UC(0x04a0) // Ҡ
68#define CY_ZHE_D UC(0x0496) // Җ
69#define CY_KA_D UC(0x049a) // Қ
70#define CY_EN_D UC(0x04a2) // Ң
71#define CY_ENGHE UC(0x04a4) // Ҥ
72#define CY_BRD_O UC(0x04e8) // Ө
73#define CY_STR_U UC(0x04ae) // Ү
74#define CY_S_U_S UC(0x04b0) // Ұ
75#define CY_SHHA UC(0x04ba) // Һ
76#define CY_HA_D UC(0x04b2) // Ҳ
77
78
79// Small
80#define CY_a UC(0x0430) // a rus ukr bul
81#define CY_be UC(0x0431) // б rus ukr bul
82#define CY_ve UC(0x0432) // в rus ukr bul
83#define CY_ghe UC(0x0433) // г rus ukr bul
84#define CY_gheup UC(0x0491) // ґ ukr
85#define CY_de UC(0x0434) // д rus ukr bul
86#define CY_dje UC(0x0452) // ђ
87#define CY_gje UC(0x0453) // ѓ
88#define CY_ie UC(0x0435) // е rus ukr bul
89#define CY_io UC(0x0451) // ё rus
90#define CY_uie UC(0x0454) // є ukr
91#define CY_zhe UC(0x0436) // ж rus ukr bul
92#define CY_ze UC(0x0437) // з rus ukr bul
93#define CY_dze UC(0x0455) // ѕ
94#define CY_i UC(0x0438) // и rus ukr bul
95#define CY_b_u_i UC(0x0456) // і ukr
96#define CY_yi UC(0x0457) // ї ukr
97#define CY_srt_i UC(0x0439) // й rus ukr bul
98#define CY_je UC(0x0458) // ј
99#define CY_ka UC(0x043a) // к rus ukr bul
100#define CY_el UC(0x043b) // л rus ukr bul
101#define CY_lje UC(0x0459) // љ
102#define CY_em UC(0x043c) // м rus ukr bul
103#define CY_en UC(0x043d) // н rus ukr bul
104#define CY_nje UC(0x045a) // њ
105#define CY_o UC(0x043e) // о rus ukr bul
106#define CY_pe UC(0x043f) // п rus ukr bul
107#define CY_er UC(0x0440) // р rus ukr bul
108#define CY_es UC(0x0441) // с rus ukr bul
109#define CY_te UC(0x0442) // т rus ukr bul
110#define CY_tshe UC(0x045b) // ћ
111#define CY_kje UC(0x045c) // ќ
112#define CY_u UC(0x0443) // у rus ukr bul
113#define CY_srt_u UC(0x045e) // ў
114#define CY_ef UC(0x0444) // ф rus ukr bul
115#define CY_ha UC(0x0445) // х rus ukr bul
116#define CY_tse UC(0x0446) // ц rus ukr bul
117#define CY_che UC(0x0447) // ч rus ukr bul
118#define CY_dzhe UC(0x045f) // џ
119#define CY_sha UC(0x0448) // ш rus ukr bul
120#define CY_shcha UC(0x0449) // щ rus ukr bul
121#define CY_hsign UC(0x044a) // ъ rus bul
122#define CY_yeru UC(0x044b) // ы rus
123#define CY_ssign UC(0x044c) // ь rus ukr bul
124#define CY_e UC(0x044d) // э rus
125#define CY_yu UC(0x044e) // ю rus ukr bul
126#define CY_ya UC(0x044f) // я rus ukr bul
127// Important Cyrillic non-Slavic letters
128#define CY_palochka UC(0x04cf) // ӏ
129#define CY_schwa UC(0x04d9) // ә
130#define CY_ghe_s UC(0x0493) // ғ
131#define CY_ze_d UC(0x0499) // ҙ
132#define CY_es_d UC(0x04ab) // ҫ
133#define CY_br_ka UC(0x04a1) // ҡ
134#define CY_zhe_d UC(0x0497) // җ
135#define CY_ka_d UC(0x049b) // қ
136#define CY_en_d UC(0x04a3) // ң
137#define CY_enghe UC(0x04a5) // ҥ
138#define CY_brd_o UC(0x04e9) // ө
139#define CY_str_u UC(0x04af) // ү
140#define CY_s_u_s UC(0x04b1) // ұ
141#define CY_shha UC(0x04bb) // һ
142#define CY_ha_d UC(0x04b3) // ҳ
143
144
145// Extra
146#define CY_slr_ve UC(0x1c80) // ᲀ CYRILLIC SMALL LETTER ROUNDED VE
147#define CY_ll_de UC(0x1c81) // ᲁ CYRILLIC SMALL LETTER LONG-LEGGED DE
148#define CY_ZEMLYA UC(0xa640) // Ꙁ CYRILLIC CAPITAL LETTER ZEMLYA
149#define CY_zemlya UC(0xa641) // ꙁ CYRILLIC SMALL LETTER ZEMLYA
150#define CY_RV_DZE UC(0xa644) // Ꙅ CYRILLIC CAPITAL LETTER REVERSED DZE
151#define CY_rv_DZE UC(0xa645) // ꙅ CYRILLIC SMALL LETTER REVERSED DZE
152#define CY_slw_es UC(0x1c83) // ᲃ CYRILLIC SMALL LETTER WIDE ES
153#define CY_st_te UC(0x1c84) // ᲄ CYRILLIC SMALL LETTER TALL TE
154#define CY_3l_te UC(0x1c85) // ᲅ CYRILLIC SMALL LETTER THREE-LEGGED TE
155#define CY_thsign UC(0x1c86) // ᲆ CYRILLIC SMALL LETTER TALL HARD SIGN
156#define CY_YERUBY UC(0xa650) // Ꙑ CYRILLIC CAPITAL LETTER YERU WITH BACK YER
157#define CY_yeruby UC(0xa651) // ꙑ CYRILLIC SMALL LETTER YERU WITH BACK YER
158#define CY_RUBL UC(0x20bd) // ₽
159#define CY_NMRO UC(0x2116) // №
160
161// The letters Zje and Sje are made for other letters and accent marks
162
163#endif