• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// ========== Cameroon Keyboards ==========
2
3
4// ----------------------------------------------------------------------------
5// This comment was added by <fotang at mmuock dot org>, on 18-Jun-2016:
6//
7// All comments below this one, were in the original cm file;they do not
8// apply to the Mmuock keyboard which is defined towards the end of this file.
9// ----------------------------------------------------------------------------
10
11// ****** For Instructions, see "Use of Cameroon Keyboards" section	below ******
12
13
14// The XKB versions of these keyboards were developed by Matthew Lee, Jenni Beadle, and Bruce Cox of SIL Cameroon in association with Going Komputya, Uwe Yung of the Goethe Institute, Yaoundé, and Centre ANACLAC.
15
16// Cameroon is officially a bilingual country, using French and English, but there are over 270 minority languages.
17
18// * Cameroon Français is an exact copy of the French France keyboard intended for AZERTY users.
19// * Cameroon is an exact copy of the Basic US Keyboard. I can not currently name this "Cameroon English" due to a limitation of XKB.
20// * Cameroon QWERTY and Cameroon AZERTY are based largely on SIL Cameroon's Keyman and Microsoft keyboards of the same style already in wide use.  These keyboards are designed to allow the user to type any of Cameroon's 270+ languages and dialects that use the approved orthography.  This Approved Orthography was adopted in 1979 by the National Committee for the Unification and Harmonisation of Alphabets of Camerooninan Languages.
21// * Cameroon Dvorak is described below.
22
23// ===== Use of Cameroon Keyboards =====
24
25// == Fonts ==
26// These keyboards are fully Unicode (5.1), so we recommend using a good unicode font for diacritics to position correctly. Recommended fonts are: ttf-sil-charis, ttf-sil-doulos, ttf-sil-gentium and ttf-sil-andika (All of which are free for Linux, Mac, and Windows).
27
28
29// == Cameroon AZERTY ==
30// Cameroon AZERTY uses the French France (AZERTY) layout, as french keyboards are widely used here. While this keyboard is designed for Cameroonian orthography, it still is possible but not recommended, to type French with minimal discomfort using this keyboard.
31// Cameroon AZERTY uses the "!" (exclamation) key as the "Cameroon" key. Pressing this key before another key allows you to access the special letters and diacritics needed in Cameroonian orthography.
32// For example, press "!" then "a" and get "ɛ" (small epsilon). "!" then "Shift" + "a" (A) will get an "Ɛ" (capital epsilon). Press the "!" key twice to get a "!".
33// If you prefer, you can hold the AltGr (and/or Shift) key to access the same letters, but we have found this to be much more awkward in practice. If you really don't like our Cameroon key, simply comment out "include "cm(exclamation_switch)"" and the exclamation key will return to normal.
34// All Diacritics (with the exception of French Trema and Circumflex) must be typed (in order of stacking) after the letter.
35
36
37// == Cameroon QWERTY ==
38// Cameroon QWERTY uses the US QWERTY layout, as US keyboards are also widely used here. While this keyboard is designed for Cameroonian orthography, it is possible, but not recommended, to type English with minimal discomfort using this keyboard.
39// Cameroon QWERTY uses the ";" (semicolon) key as the "Cameroon" key.	Pressing this key before another key allows you to access the special letters and diacritics needed in Cameroonian orthography.
40// For example, press ";" then "a" and get "ɛ" (small epsilon). ";" then "Shift" + "a" (A) will get an "Ɛ" (capital epsilon). Press ";" twice to get a ";", or press Shift + ; (:) twice to get a ":" (colon).
41// If you prefer, you can hold the AltGr (and/or Shift) key to access the same letters, but we have found this to be much more awkward in practice. If you really don't like our Cameroon key, simply comment out "include "cm(semicolon_switch)"" and the semicolon key will return to normal.
42// All Diacritics must be typed (in order of stacking) after the letter.
43
44
45// == Cameroon Dvorak ==
46// Cameroon Dvorak is uses a similar system to Cameroon QWERTY.
47
48default partial alphanumeric_keys
49xkb_symbols "basic" {
50
51	name[Group1]="English (Cameroon)";
52
53	key <TLDE> { [ grave, asciitilde ] };
54	key <AE01> { [ 1, exclam ] };
55	key <AE02> { [ 2, at ] };
56	key <AE03> { [ 3, numbersign ] };
57	key <AE04> { [ 4, dollar ] };
58	key <AE05> { [ 5, percent ] };
59	key <AE06> { [ 6, asciicircum ] };
60	key <AE07> { [ 7, ampersand ] };
61	key <AE08> { [ 8, asterisk ] };
62	key <AE09> { [ 9, parenleft ] };
63	key <AE10> { [ 0, parenright ] };
64	key <AE11> { [ minus, underscore ] };
65	key <AE12> { [ equal, plus ] };
66
67	key <AD01> { [ q, Q ] };
68	key <AD02> { [ w, W ] };
69	key <AD03> { [ e, E ] };
70	key <AD04> { [ r, R ] };
71	key <AD05> { [ t, T ] };
72	key <AD06> { [ y, Y ] };
73	key <AD07> { [ u, U ] };
74	key <AD08> { [ i, I ] };
75	key <AD09> { [ o, O ] };
76	key <AD10> { [ p, P ] };
77	key <AD11> { [ bracketleft, braceleft ] };
78	key <AD12> { [ bracketright, braceright ] };
79	key <AC01> { [ a, A ] };
80	key <AC02> { [ s, S ] };
81	key <AC03> { [ d, D ] };
82	key <AC04> { [ f, F ] };
83	key <AC05> { [ g, G ] };
84	key <AC06> { [ h, H ] };
85	key <AC07> { [ j, J ] };
86	key <AC08> { [ k, K ] };
87	key <AC09> { [ l, L ] };
88	key <AC10> { [ semicolon, colon ] };
89	key <AC11> { [ apostrophe, quotedbl ] };
90
91	key <AB01> { [ z, Z ] };
92	key <AB02> { [ x, X ] };
93	key <AB03> { [ c, C ] };
94	key <AB04> { [ v, V ] };
95	key <AB05> { [ b, B ] };
96	key <AB06> { [ n, N ] };
97	key <AB07> { [ m, M ] };
98	key <AB08> { [ comma, less ] };
99	key <AB09> { [ period, greater ] };
100	key <AB10> { [ slash, U003F ] };
101
102	key <BKSL> { [ backslash, bar ] };
103};
104
105partial alphanumeric_keys
106xkb_symbols "french"
107{
108	include "latin"
109	name[Group1]="French (Cameroon)";
110
111	key <AE01> { [ ampersand, 1, onesuperior, exclamdown ] };
112	key <AE02> { [ eacute, 2, asciitilde, oneeighth ] };
113	key <AE03> { [ quotedbl, 3, numbersign, sterling ] };
114	key <AE04> { [apostrophe, 4, braceleft, dollar ] };
115	key <AE05> { [ parenleft, 5, bracketleft, threeeighths ] };
116	key <AE06> { [ minus, 6, bar, fiveeighths ] };
117	key <AE07> { [ egrave, 7, grave, seveneighths ] };
118	key <AE08> { [underscore, 8, backslash, trademark ] };
119	key <AE09> { [ ccedilla, 9, asciicircum, plusminus ] };
120	key <AE10> { [ agrave, 0, at, degree ] };
121	key <AE11> { [parenright, degree, bracketright, questiondown ] };
122	key <AE12> { [ equal, plus, braceright, dead_ogonek ] };
123
124	key <AD01> { [ a, A, ae, AE ] };
125	key <AD02> { [ z, Z, guillemotleft, less ] };
126	key <AD03> { [ e, E, EuroSign, cent ] };
127	key <AD11> { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };
128	key <AD12> { [ dollar, sterling, currency, dead_macron ] };
129
130	key <AC01> { [ q, Q, at, Greek_OMEGA ] };
131	key <AC10> { [ m, M, mu, masculine ] };
132	key <AC11> { [ ugrave, percent, dead_circumflex, dead_caron] };
133	key <TLDE> { [twosuperior, asciitilde, notsign, notsign ] };
134
135	key <BKSL> { [ asterisk, mu, dead_grave, dead_breve ] };
136	key <AB01> { [ w, W, lstroke, Lstroke ] };
137	key <AB07> { [ comma, U003F, dead_acute, dead_doubleacute ] };
138	key <AB08> { [ semicolon, period, horizconnector, multiply ] };
139	key <AB09> { [ colon, slash, periodcentered, division ] };
140	key <AB10> { [ exclam, section, dead_belowdot, dead_abovedot ] };
141
142	include "level3(ralt_switch)"
143};
144
145partial alphanumeric_keys
146xkb_symbols "azerty"
147{
148	include "cm(basic)"
149	name[Group1] = "Cameroon (AZERTY, intl.)";
150	key <AB01> { [ w, W, U1E85, U1E84 ] };	//  SMALL LETTER W,  CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS
151	key <AB02> { [ x, X, U2039, U203A ] };	// SMALL LETTER X, CAPITAL LETTER X, SINGLE LEFT-POINTING ANGLE QUOTATION MARK, SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
152	key <AB03> { [ c, C, U0327, copyright ] };	// SMALL LETTER C, CAPITAL LETTER C, COMBINING CEDILLA, COPYRIGHT SIGN
153	key <AB04> { [ v, V, UA78C, UA78B ] };	// SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO)
154	key <AB05> { [ b, B, U0253, U0181 ] };	// SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK
155	key <AB06> { [ n, N, U014B, U014A ] };	// SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG
156	key <AB07> { [ U002C, U003F, NoSymbol, U00D7 ] };	// COMMA, QUESTION MARK, , MULTIPLY
157	key <AB08> { [ semicolon, period, dead_acute, dead_grave ] };	// SEMICOLON, PERIOD
158	key <AB09> { [ colon, slash, U0323 ] };	// COLON, SLASH, COMBINING DOT BELOW
159	key <AB10> { [ exclam, U00A7 ] };	// EXCLAMATION MARK, SECTION SIGN
160	key <AC01> { [ q, Q, U2014, U2013 ] };	// SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH
161	key <AC02> { [ s, S, U201C, U201D ] };	// SMALL LETTER S, CAPITAL LETTER S, LEFT DOUBLE QUOTES, RIGHT DOUBLE QUOTES
162	key <AC03> { [ d, D, U0257, U018A ] };	// SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK
163	key <AC04> { [ f, F, U00E6, U00C6 ] };	// SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE
164	key <AC05> { [ g, G, U02BC, UA78B ] };	// SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO)
165	key <AC06> { [ h, H, U0251, U2C6D ] };	// SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA
166	key <AC07> { [ j, J, leftarrow, U2122 ] };	//SMALL LETTER J, CAPITAL LETTER J, LEFT ARROW, TRADE MARK SIGN
167	key <AC08> { [ k, K, downarrow, uparrow ] };	// SMALL LETTER K, CAPITAL LETTER K, DOWN ARROW, UP ARROW
168	key <AC09> { [ l, L, rightarrow, U00A3 ] };	// SMALL LETTER L, CAPITAL LETTER L, RIGHT ARROW, POUND STERLING
169	key <AC10> { [ m, M, U00F9, U00B5 ] };	// SMALL LETTER M, CAPITAL LETTER M, SMALL LETTER U WITH GRAVE, MICRO SYMBOL
170	key <AC11> { [ U0300, U0302, U1DC5, U1DC4 ] };	// COMBINING LOW TONE, COMBINING FALLING TONE, COMBINING LOW-MID TONE, COMBINING MID-HIGH TONE
171	key <AD01> { [ a, A, U025B, U0190 ] };	// SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E
172	key <AD02> { [ z, Z, U2026, U2020 ] };	// SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER
173	key <AD03> { [ e, E, U0259, U018F ] };	// SMALL LETTER E, CAPITAL LETTER E, SMALL LETTER SCHWA, CAPITAL LETTER SCHWA
174	key <AD04> { [ r, R, U25CC, U00AE ] };	// SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN
175	key <AD05> { [ t, T, U0153, U0152 ] };	// SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE
176	key <AD06> { [ y, Y, U01B4, U01B3 ] };	// SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK
177	key <AD07> { [ u, U, U0289, U0244 ] };	// SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR
178	key <AD08> { [ i, I, U0268, U0197 ] };	// SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR
179	key <AD09> { [ o, O, U0254, U0186 ] };	// SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O
180	key <AD10> { [ p, P, U00F8, U00D8 ] };	// SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR
181	key <AD11> { [ U0301, U030C, dead_circumflex, dead_diaeresis ] };	// COMBINING HIGH TONE, COMBINING RISING TONE, DEAD CIRCUMFLEX, DEAD DIAERESIS
182	key <AD12> { [ U0330, U0303, U0304, U030D ] };	// COMBINING TILDE (NASAL) BELOW, COMBINING TILDE (NASAL), COMBINING MID TONE, COMBINING VERTICAL LINE ABOVE
183	key <AE01> { [ U0026, KP_1, U00B9, U2018 ] };	// AMPERSAND, 1, SUPERSCRIPT 1, LEFT SINGLE QUOTE
184	key <AE02> { [ eacute, KP_2, asciitilde, U2019 ] };	// SMALL LETTER E WITH ACUTE, 2, TILDE, RIGHT SINGLE QUOTE
185	key <AE03> { [ U0022, KP_3, U0025 ] };	// QUOTATION MARK, 3, PERCENT SIGN
186	key <AE04> { [ U0027, KP_4, U007B ] };	// APOSTROPHE, 4, LEFT CURLY BRACKET
187	key <AE05> { [ U0028, KP_5, U005B, numbersign ] };	// LEFT PARENTHESIS, 5, LEFT SQUARE BRACKET, NUMBER SIGN
188	key <AE06> { [ U002D, KP_6, U007C ] };	// HYPHEN/MINUS, 6, BAR
189	key <AE07> { [ U00E8, KP_7, U0300 ] };	// SMALL LETTER E WITH GRAVE, 7, COMBINING GRAVE
190	key <AE08> { [ underscore, KP_8, backslash, U20D6 ] };	// UNDERSCORE, 8, BACKSLASH, COMBINING LEFT ARROW ABOVE
191	key <AE09> { [ ccedilla, KP_9, U005E] };	// SMALL LETTER C WITH CEDILLA, 9, CIRCUMFLEX
192	key <AE10> { [ U00E0, KP_0, at, U20D7 ] };	// SMALL LETTER A WITH GRAVE
193	key <AE11> { [ U0029, U00B0, U005D ] };	// RIGHT PARENTHESIS, DEGREE, RIGHT SQUARE BRACKET
194	key <AE12> { [ U003D, U002B, U007D, U00B1 ] };	// EQUAL SIGN, PLUS SIGN, RIGHT CURLY BRACKET, PLUS-MINUS SIGN
195	key <BKSL> { [ U1DC6, U1DC7, KP_Multiply, U00A4 ] };	//  COMBINING MID-LOW, COMBINING HIGH-MID, MULTIPLY, CURRENCY SIGN
196	key <LSGT> { [ U003C, U003E, U00AB, U00BB ] };	// LESS THAN, GREATER THAN, LEFT GUILLEMET, RIGHT GUILLEMET
197	key <TLDE> { [ U0024, U20AC, U00B2, U00B3 ] };	// DOLLAR, EURO, SUPERSCRIPT 2, SUPERSCRIPT 3
198	include "cm(exclamation_switch)"
199	include "level3(ralt_switch)"
200};
201
202partial alphanumeric_keys
203xkb_symbols "qwerty"
204{
205	include "cm(basic)"
206	name[Group1] = "Cameroon Multilingual (QWERTY, intl.)";
207	key <AB01> { [ z, Z, U2026, U2020 ] };	// SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER
208	key <AB02> { [ x, X ] };	// SMALL LETTER X, CAPITAL LETTER X
209	key <AB03> { [ c, C, U0327, U00A9 ] };	// SMALL LETTER C, CAPITAL LETTER C, CEDILLA, COPYRIGHT
210	key <AB04> { [ v, V, UA78C, UA78B ] };	// SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO)
211	key <AB05> { [ b, B, U0253, U0181 ] };	// SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK
212	key <AB06> { [ n, N, U014B, U014A ] };	// SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG
213	key <AB07> { [ m, M, NoSymbol, U2122 ] };	// SMALL LETTER M, CAPITAL LETTER M, , TRADEMARK SIGN
214	key <AB08> { [ U002C, U003C, U2039, U00AB ] };	// COMMA, LESS THAN SIGN, LEFT SINGLE GUILLEMET, LEFT DOUBLE GUILLEMET
215	key <AB09> { [ U002E, U003E, U203A, U00BB ] };    // PERIOD, GREATER THAN SIGN, RIGHT SINGLE GUILLEMET, RIGHT DOUBLE GUILLEMET
216	key <AB10> { [ U002F, U003F, U00F7 ] };    // SLASH, QUESTION MARK, DIVISION SIGN
217	key <AC01> { [ a, A, U025B, U0190 ] };	// SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E
218	key <AC02> { [ s, S ] };	// SMALL LETTER S, CAPITAL LETTER S
219	key <AC03> { [ d, D, U0257, U018A ] };	// SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK
220	key <AC04> { [ f, F, U00E6, U00C6 ] };	// SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE
221	key <AC05> { [ g, G, U02BC, UA78B ] };	// SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO)
222	key <AC06> { [ h, H, U0251, U2C6D ] };	// SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA
223	key <AC07> { [ j, J, U0330, U0323 ] };	// SMALL LETTER J, CAPITAL LETTER J, COMBINING TILDE (NASAL) BELOW, COMBINING DOT BELOW
224	key <AC08> { [ k, K, U1DC5, U1DC7 ] };	// SMALL LETTER K, CAPITAL LETTER K, COMBINING LOW-MID TONE, COMBINING HIGH-MID
225	key <AC09> { [ l, L, U1DC6, U1DC4 ] };	// SMALL LETTER L, CAPITAL LETTER L, COMBINING MID-LOW, COMBINING MID-HIGH TONE
226	key <AC10> { [ U003B, U003A ] };	// SEMICOLON, COLON
227	key <AC11> { [ U0300, U0302, U0027, U0022 ] };	// COMBINING LOW TONE, COMBINING FALLING TONE, APOSTROPHE, QUOTATION MARK
228	key <AD01> { [ q, Q, U2014, U2013 ] };	// SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH
229	key <AD02> { [ w, W, U1E85, U1E84 ] };	// SMALL LETTER W, CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS
230	key <AD03> { [ e, E, U0259, U018F ] };	// SMALL LETTER E, CAPITAL LETTER E, SMALL LETTER SCHWA, CAPITAL LETTER SCHWA
231	key <AD04> { [ r, R, U25CC, U00AE ] };	// SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN
232	key <AD05> { [ t, T, U0153, U0152 ] };	// SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE
233	key <AD06> { [ y, Y, U01B4, U01B3 ] };	// SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK
234	key <AD07> { [ u, U, U0289, U0244 ] };	// SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR
235	key <AD08> { [ i, I, U0268, U0197 ] };	// SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR
236	key <AD09> { [ o, O, U0254, U0186 ] };	// SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O
237	key <AD10> { [ p, P, U00F8, U00D8 ] };	// SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR
238	key <AD11> { [ U0301, U030C, U005B, U007B ] };	// COMBINING HIGH TONE, COMBINING RISING TONE, LEFT SQUARE BRACKET, LEFT CURLY BRACKET
239	key <AD12> { [ U0327, U0308, U005D, U007D ] };	// COMBINING CEDILLA, COMBINING DIAERESIS, RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET
240	key <AE01> { [ U0031, U0021, U00BC ] };	// 1, EXCLAMATION POINT, ONE QUARTER
241	key <AE02> { [ U0032, U0040, U00BD ] };	//2, AT SYMBOL, ONE HALF
242	key <AE03> { [ U0033, U0023, U00BE ] };	// 3, NUMBER SIGN, THREE QUARTERS
243	key <AE04> { [ U0034, U0024, NoSymbol, U20AC ] };	// 4, DOLLAR, , EURO SIGN
244	key <AE08> { [ U0038, U002A, NoSymbol, U00D7 ] };	// 8, ASTERISK, , MATH MULTIPLY
245	key <AE09> { [ U0039, U0028, U2018, U201C ] };	// 9, LEFT PARENTHESIS, LEFT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK
246	key <AE10> { [ U0030, U0029, U2019, U201D ] };	// 0, RIGHT PARENTHESIS, RIGHT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK
247	key <AE11> { [ U002D, U005F, U0304 ] };	// MINUS, UNDERSCORE, COMBINING MID TONE, COMBINING MID TONE
248	key <AE12> { [ U003D, U002B, NoSymbol, U00B1 ] };	// EQUAL, PLUS, , PLUS-MINUS
249	key <BKSL> { [ U005C, U007C ] };	// BACKSLASH, BAR
250	key <TLDE> { [ U030D, U0303, U0060, U007E ] };	// COMBINING VERTICAL LINE ABOVE, COMBINING TILDE ABOVE, GRAVE ACCENT, TILDE
251	include "cm(semicolon_switch)"
252	include "level3(ralt_switch)"
253};
254
255partial alphanumeric_keys
256xkb_symbols "dvorak"
257{
258	include "us(dvorak)"
259	name[Group1] = "Cameroon (Dvorak, intl.)";
260	key <AB01> { [ semicolon, colon ] };	// SEMICOLON, COLON
261	key <AB02> { [ q, Q, U2014, U2013 ] };	// SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH
262	key <AB03> { [ j, J, U0330, U0323 ] };	// SMALL LETTER J, CAPITAL LETTER J, COMBINING TILDE (NASAL) BELOW, COMBINING DOT BELOW
263	key <AB04> { [ k, K, U1DC5, U1DC7 ] };	// SMALL LETTER K, CAPITAL LETTER K, COMBINING LOW-MID TONE, COMBINING HIGH-MID
264	key <AB05> { [ x, X ] };	// SMALL LETTER X, CAPITAL LETTER X
265	key <AB06> { [ b, B, U0253, U0181 ] };	// SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK
266	key <AB07> { [ m, M, NoSymbol, U2122 ] };	// SMALL LETTER M, CAPITAL LETTER M, , TRADEMARK SIGN
267	key <AB08> { [ w, W, U1E85, U1E84 ] };	// SMALL LETTER W, CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS
268	key <AB09> { [ v, V, UA78C, UA78B ] };	// SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO)
269	key <AB10> { [ z, Z, U2026, U2020 ] };	// SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER
270	key <AC01> { [ a, A, U025B, U0190 ] };	// SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E
271	key <AC02> { [ o, O, U0254, U0186 ] };	// SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O
272	key <AC03> { [ e, E, U0259, U018F ] };	// SMALL LETTER E, CAPITAL LETTER E, SMALL LETTER SCHWA, CAPITAL LETTER SCHWA
273	key <AC04> { [ u, U, U0289, U0244 ] };	// SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR
274	key <AC05> { [ i, I, U0268, U0197 ] };	// SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR
275	key <AC06> { [ d, D, U0257, U018A ] };	// SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK
276	key <AC07> { [ h, H, U0251, U2C6D ] };	// SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA
277	key <AC08> { [ t, T, U0153, U0152 ] };	// SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE
278	key <AC09> { [ n, N, U014B, U014A ] };	// SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG
279	key <AC10> { [ s, S ] };	// SMALL LETTER S, CAPITAL LETTER S
280	key <AC11> { [ minus, underscore, U0304 ] };	// MINUS, UNDERSCORE, COMBINING MID TONE
281	key <AD01> { [ U0300, U0302, U0027, U0022 ] };	// COMBINING LOW TONE, COMBINING FALLING TONE, APOSTROPHE, QUOTATION MARK
282	key <AD02> { [ comma, less, U2039, U00AB ] };	// COMMA, LESS THAN SIGN, LEFT SINGLE GUILLEMET, LEFT DOUBLE GUILLEMET
283	key <AD03> { [ period, greater, U203A, U00BB ] };	// PERIOD, GREATER THAN SIGN, RIGHT SINGLE GUILLEMET, RIGHT DOUBLE GUILLEMET
284	key <AD04> { [ p, P, U00F8, U00D8 ] };	// SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR
285	key <AD05> { [ y, Y, U01B4, U01B3 ] };	// SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK
286	key <AD06> { [ f, F, U00E6, U00C6 ] };	// SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE
287	key <AD07> { [ g, G, U02BC, UA78B ] };	// SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO)
288	key <AD08> { [ c, C, U0327, U00A9 ] };	// SMALL LETTER C, CAPITAL LETTER C, CEDILLA, COPYRIGHT
289	key <AD09> { [ r, R, U25CC, U00AE ] };	// SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN
290	key <AD10> { [ l, L, U1DC6, U1DC4 ] };	// SMALL LETTER L, CAPITAL LETTER L, COMBINING MID-LOW, COMBINING MID-HIGH TONE
291	key <AD11> { [ slash, U003F, U00F7, U0294 ] };	// SLASH, QUESTION MARK, DIVISION SIGN, GLOTTAL STOP
292	key <AD12> { [ equal, plus, NoSymbol, plusminus ] };	// EQUAL, PLUS, , PLUS-MINUS
293	key <AE01> { [ KP_1, exclam, U00BC ] };	// 1, EXCLAMATION POINT, ONE QUARTER
294	key <AE02> { [ KP_2, at, U00BD ] };	// 2, AT SYMBOL, ONE HALF
295	key <AE03> { [ KP_3, numbersign, U00BE ] };	// 3, NUMBER SIGN, THREE QUARTERS
296	key <AE04> { [ KP_4, dollar, NoSymbol, U20AC ] };	// 4, DOLLAR, , EURO SIGN
297	key <AE05> { [ KP_5, percent ] };	// 5, PERCENT
298	key <AE06> { [ KP_6, asciicircum ] };	// 6, CARET
299	key <AE07> { [ KP_7, ampersand ] };	// 7, AMPERSAND
300	key <AE08> { [ KP_8, asterisk, NoSymbol, multiply ] };	// 8, ASTERISK, , MULTIPLY
301	key <AE09> { [ KP_9, parenleft, leftsinglequotemark, leftdoublequotemark ] };	// 9, LEFT PARENTHESIS, LEFT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK
302	key <AE10> { [ KP_0, parenright, rightsinglequotemark, rightdoublequotemark ] };	// 0, RIGHT PARENTHESIS, RIGHT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK
303	key <AE11> { [ U0301, U030C, U005B, U007B ] };	// COMBINING HIGH TONE, COMBINING RISING TONE, LEFT SQUARE BRACKET, LEFT CURLY BRACKET
304	key <AE12> { [ U0327, dead_diaeresis, U005D, braceright ] };	// COMBINING CEDILLA, DEAD DIAERESIS, RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET
305	key <BKSL> { [ backslash, bar ] };	// BACKSLASH, BAR
306	key <TLDE> { [ U030D, U0303, U0060, U007E ] };	// COMBINING VERTICAL LINE ABOVE, COMBINING TILDE ABOVE, GRAVE ACCENT, TILDE
307	include "cm(semicolon_switch_dvorak)"
308	include "level3(ralt_switch)"
309};
310
311// The following code creates the "Cameroon key" phenomenon.
312
313partial modifier_keys
314xkb_symbols "semicolon_switch" {
315	key <AC10> {
316	symbols[Group1] = [ ISO_Level3_Latch,	colon,	semicolon,	colon ]};
317	modifier_map Mod5	{ ISO_Level3_Latch };
318};
319
320partial modifier_keys
321xkb_symbols "exclamation_switch" {
322	key <AB10> {
323	symbols[Group1] = [ ISO_Level3_Latch,	U00A7,	exclam,	U00A7 ]
324	};
325	modifier_map Mod5	{ ISO_Level3_Latch };
326};
327
328partial modifier_keys
329xkb_symbols "semicolon_switch_dvorak" {
330	key <AB01> {
331	symbols[Group1] = [ ISO_Level3_Latch,	colon,	semicolon,	colon ]
332	};
333modifier_map Mod5	{ ISO_Level3_Latch };
334};
335
336
337// ------- begin Mmuock alphabet layout ------------------------------------------
338//   This layout is used for the Mmuock alphabet as described in the book
339//   _The Sound of Mmuock: Orthography (2. ed.)_ [isbn: 978-9956-645-28-1].
340//   Mmuock is the language of the Mmuock (local: Muòk) people of Western
341//   Cameroon.
342//
343//      Author: Tano Fotang <fotang at mmuock dot org>
344//     Created: 2014-06-24
345//     Version: 1.2
346//
347// CHANGES v 1.0:
348//	2014-07-06 corrected shifted level3 of <AC11> to quotedbl
349// CHANGES v 1.1:
350//  2015-05-23 1- added dead_tilde to key <TILDE>; this is needed to produce
351//               the letter <ñ> which was totally missing from the keyboard
352//             2- added letter <dz> to <AB01>; the letter had been missing.
353//             3- if we're not re-defining particular symbols from the included
354//               latin layout, then maintain the original latin mappings.
355//               Previously, we had set them to NoSymbol. Now, we want to
356//               keep the original latin mappings except for those few that we
357//               want to overwrite for our own keyboard.
358//
359// CHANGES v 1.2:
360// 2016-06-17  1- added dead keys dead_macron, dead_acute, and dead_grave for
361//                tones 1, 3, and 4, for compatibility with the Keyman version.
362//             2- rearranged combining diacritics for tones 0 to 5 such that
363//                the diacritics are on consequetive keys (AC01 to AC05).
364//             3- moved tone 8 to level 3 of AE12.
365//             4- moved layout definition out of the EXTRAS section.
366//             5- for a cleaner keyboard,
367//                replaced ṭhe included latin layout with us(basic).
368//
369//
370// NOTES:
371// 0. This map is based on the Latin alphabet layout for the US keyboard.
372//
373// 1. We use combining diacritical marks to create tone markings. There are 13
374//    tones that need to be indicated, although the first 5 are usually enough
375//    to represent the rest in simplified orthography.
376//
377// 2. When composing Mmuock text, about every fourth symbol is for tone. To
378//    facilitate easy and fast input, the combining diacritics are placed on
379//    the home row (AC). To reduce the number of key strokes required, the
380//    unshifted third level is used. Only 5 of the combining diacritics are not
381//    on the AC row; they are in the top number row, AE.
382//
383// 3. Symbols that are used infrequently (`r', `h', `ɛ', `ǝ', etc.) are placed
384//    in level3. Additionally, the letter eng (`ŋ'), although commonly used,
385//    is found in level3 because it can alternatively be represented by <ng>.
386//    (Indeed, the keyman version of keyboard actually replaces <ng> with `ŋ'.)
387//
388// 4. The unshifted AB10 key (normally assigned to the slash `/') is used as
389//    level 3 switch since the slash is not used in the ordinary course of
390//    typing Mmuock text.
391//
392// 5. The 'Cameroon Multilingual' keyboards that are defined elsewhere, do not
393//    fit our needs because: (a) they are based on a different alphabet, (b) the
394//    vast majority of their symbols are not used in Mmuock, and (c) for the few
395//    symbols that are used in Mmuock, their placings are not egonomic for
396//    typing Mmuock as the _PRIMARY_ language. The aim of this keyboard, is
397//    to give priority to symbols that are actually used in the Mmuock alphabet.
398//
399// 6. The following fonts have been found to produce the best results with this
400//    keyboard:
401//         Family                    Accuracy
402//      DejaVu (except Sans Mono)        9/10
403//      Linux Libertine                  8/10
404//      Ubuntu (except light)            8/10
405//      Droid (except sans mono)         7/10
406//      Gentium, Gentium Alt           6.5/10
407//    In the terminal emulator, the following font variants have been tested:
408//      Ubuntu Mono                      9/10
409//      Unifont (Medium)                 9/10
410//      DejaVu Sans Mono               7.5/10
411//      Droid Sans Mono                6.5/10
412//   These fonts are all freely available.
413//
414// ------the layout-----------
415//
416//   ┌─────┐
417//   │ 2 4 │   2 = Shift,  4 = Level3 + Shift
418//   │ 1 3 │   1 = Normal, 3 = Level3
419//   └─────┘
420//
421//   ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
422//   │ ~ ~ │ !   │ @   │ #   │ $   │ %   │ ^   │ &   | *   │ (   │ )   │ _ – │ +   ̣┃ ⌫ Back- ┃
423// AE│ ` ` │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   ̂│ 7   ̑│ 8   ̍│ 9   ̓│ 0   ̊│ ¯ - │ =   ̋┃  space  ┃
424//   ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
425//   ┃       ┃ Q   │ W   │ E Ǝ │ Š R │ T   │ Y   │ U Ω │ I Ɛ │ O Φ │ P ∏ │ Ø { │ Σ } ┃ Enter ┃
426// AD┃Tab ↹  ┃ q   │ w   │ e ǝ │ š r │ t   │ y   │ u ω │ i ɛ │ o φ │ p π │ ø [ │ σ ] ┃   ⏎   ┃
427//   ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
428//   ┃        ┃ A   │ S   │ D   │ F   │ G   │  ̇ H │ J   │ K   │ L   │ Œ : │ " ” │ Æ | ┃      ┃
429// AC┃Caps ⇬  ┃ a   ̃│ s   ̄| d   ́| f   ̀| g   ̌|  ̣ h │ j   ̆│ k   ̏│ l   ̈│ œ ; │ ' ’ │ æ \ ┃      ┃
430//   ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
431//   ┃             │ Z Dz │ X   │ C   │ V   │ B   │ N ŋ │ M   │ < « │ > » │ ?   ┃             ┃
432// AB┃Shift ⇧      │ z dz │ x   │ c   │ v   │ b   │ n Ŋ │ m   │ , ‹ │ . › │   / ┃Shift ⇧      ┃
433//   ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
434//   ┃       ┃       ┃       ┃                                   ┃       ┃       ┃       ┃
435// AA┃Ctrl   ┃Meta   ┃Alt    ┃             Space                 ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
436//   ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
437//
438
439partial alphanumeric_keys
440xkb_symbols "mmuock" {
441
442   include "us(basic)"
443   include "level3(ralt_switch)"
444
445   name[Group1]= "Mmuock";
446   key <AE06> { [          6, asciicircum,          U0302                ] }; // tone 10
447   key <AE07> { [          7,   ampersand,          U0311                ] }; // tone 12
448   key <AE08> { [          8,    asterisk,          U030D                ] }; // tone 13
449   key <AE09> { [          9,   parenleft,          U0307                ] }; // tone 7
450   key <AE10> { [          0,  parenright,          U030A                ] }; // tone 6
451   key <AE11> { [dead_macron,  underscore,          minus,        endash ] };
452   key <AE12> { [      equal,        plus,          U030B, dead_belowdot ] }; // U030B = tone 8
453   key <AD03> { [          e,           E,          U01DD,         U018E ] }; // U01DD = reversed E
454   key <AD04> { [     scaron,      Scaron,              r,             R ] };
455   key <AD07> { [          u,           U,    Greek_omega,   Greek_OMEGA ] };
456   key <AD08> { [          i,           I,          U025B,         U0190 ] }; // U025B = open E
457   key <AD09> { [          o,           O,      Greek_phi,     Greek_PHI ] };
458   key <AD10> { [          p,           P,       Greek_pi,      Greek_PI ] };
459   key <AD11> { [     oslash,    Ooblique,    bracketleft,     braceleft ] };
460   key <AD12> { [Greek_sigma, Greek_SIGMA,   bracketright,    braceright ] };
461   key <AC01> { [          a,           A,          U0303                ] }; // tone 0
462   key <AC02> { [          s,           S,          U0304                ] }; // tone 1
463   key <AC03> { [          d,           D,          U0301                ] }; // tone 3
464   key <AC04> { [          f,           F,          U0300                ] }; // tone 4
465   key <AC05> { [          g,           G,          U030C                ] }; // tone 5
466   key <AC06> { [      U0323,       U0307,              h,             H ] }; // COMBINING DOT BELOW, ABOVE
467   key <AC07> { [          j,           J,          U0306                ] }; // tone 9
468   key <AC08> { [          k,           K,          U030F                ] }; // tone 11
469   key <AC09> { [          l,           L,          U0308                ] }; // tone 14
470   key <AC10> { [         oe,          OE,      semicolon,         colon ] };
471   key <AC11> { [ dead_acute,    quotedbl,     apostrophe                ] };
472   key <TLDE> { [ dead_grave,  dead_tilde,          grave,    asciitilde ] };
473   key <AB01> { [          z,           Z,          U01F3,         U01F2 ] }; // U01F3 = letter dz
474   key <AB06> { [          n,           N,            eng,           ENG ] };
475   key <AB08> { [      comma,        less,  guillemotleft,         U2039 ] };
476   key <AB09> { [     period,     greater, guillemotright,         U203A ] };
477   key <BKSL> { [         ae,          AE,      backslash,           bar ] };
478
479   include "cm(solidus_switch)"
480};
481// use slash as special key for switching to level3
482partial modifier_keys
483xkb_symbols "solidus_switch" {
484   key <AB10> {
485     symbols[Group1] = [ ISO_Level3_Latch, question, slash, dead_abovedot ]
486   };
487   modifier_map Mod5	{ ISO_Level3_Latch };
488};
489// ------- end of Mmuock keyboard map --------------------------------------------
490
491