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