diff --git a/experimental/n/ntcham_azerty/HISTORY.md b/experimental/n/ntcham_azerty/HISTORY.md new file mode 100644 index 0000000000..7f10955f9e --- /dev/null +++ b/experimental/n/ntcham_azerty/HISTORY.md @@ -0,0 +1,6 @@ +Ntcham (AZERTY) Change History +==================== + +0.6.0 (2026-08-06) +---------------------- +* Initial design by Lorna Evans diff --git a/experimental/n/ntcham_azerty/LICENSE.md b/experimental/n/ntcham_azerty/LICENSE.md new file mode 100644 index 0000000000..a9f11ed709 --- /dev/null +++ b/experimental/n/ntcham_azerty/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright © 2026 Wycliffe Togo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/experimental/n/ntcham_azerty/README.md b/experimental/n/ntcham_azerty/README.md new file mode 100644 index 0000000000..f01c100220 --- /dev/null +++ b/experimental/n/ntcham_azerty/README.md @@ -0,0 +1,30 @@ +Ntcham (AZERTY) keyboard +============== + +(c) Wycliffe Togo + +Description +----------- + +Ce clavier prend en charge la langue ntcham du Togo sur un clavier AZERTY (français). + +This keyboard supports the Ntcham language of Togo for an AZERTY (French) Keyboard. + +Links +----- +https://keyman.com/keyboards/ntcham_azerty + +Supported Platforms +------------------- + * Windows + * macOS + * Linux + * Web + * iPhone + * iPad + * Android phone + * Android tablet + * Mobile devices + * Desktop devices + * Tablet devices + diff --git a/experimental/n/ntcham_azerty/ntcham_azerty.kpj b/experimental/n/ntcham_azerty/ntcham_azerty.kpj new file mode 100644 index 0000000000..a94b8065db --- /dev/null +++ b/experimental/n/ntcham_azerty/ntcham_azerty.kpj @@ -0,0 +1,9 @@ + + + + 2.0 + True + True + True + + diff --git a/experimental/n/ntcham_azerty/source/help/mobile_longpress.png b/experimental/n/ntcham_azerty/source/help/mobile_longpress.png new file mode 100644 index 0000000000..afa3ff9acb Binary files /dev/null and b/experimental/n/ntcham_azerty/source/help/mobile_longpress.png differ diff --git a/experimental/n/ntcham_azerty/source/help/ntcham_azerty.php b/experimental/n/ntcham_azerty/source/help/ntcham_azerty.php new file mode 100644 index 0000000000..23730f5f62 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/help/ntcham_azerty.php @@ -0,0 +1,56 @@ + + +

Ce clavier prend en charge la langue ntcham du Togo sur un clavier AZERTY (français).

+

This keyboard supports the Ntcham language of Togo for an AZERTY (French) Keyboard.

+ + +

Disposition du clavier pour ordinateur / Desktop Keyboard layout

+ +

Ce clavier utilise des touches mortes (combinaisons de touches) pour produire les caractères accentués et les lettres spécifiques à la langue ntcham. Par exemple :

+ + + +

This keyboard makes use of multi-key input. For example:

+ + +

Les différentes dispositions disponibles sont les suivantes :

+ +
+
+ +

Disposition du clavier pour téléphone mobile / Mobile/Phone Keyboard layout

+ +
+
+ +

Appui long (pour accéder aux caractères supplémentaires) / Longpress

+

On mobile phone, keys with a little dot on the top right can be pressed and held for more keys.

+

longpress

diff --git a/experimental/n/ntcham_azerty/source/ntcham_azerty.ico b/experimental/n/ntcham_azerty/source/ntcham_azerty.ico new file mode 100644 index 0000000000..4837f0195f Binary files /dev/null and b/experimental/n/ntcham_azerty/source/ntcham_azerty.ico differ diff --git a/experimental/n/ntcham_azerty/source/ntcham_azerty.keyman-touch-layout b/experimental/n/ntcham_azerty/source/ntcham_azerty.keyman-touch-layout new file mode 100644 index 0000000000..94f53a2372 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/ntcham_azerty.keyman-touch-layout @@ -0,0 +1,1323 @@ +{ + "phone": { + "font": "Charis", + "layer": [ + { + "id": "default", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "a", + "hint": "á", + "sk": [ + { + "id": "U_00E1" + }, + { + "id": "U_0101" + }, + { + "id": "U_00E0" + }, + { + "id": "U_00E3" + }, + { + "id": "U_00E3_0301" + }, + { + "id": "U_00E3_0304" + }, + { + "id": "U_00E3_0300" + } + ] + }, + { + "id": "U_0251", + "hint": "ɑ́", + "sk": [ + { + "id": "U_0251_0301" + }, + { + "id": "U_0251_0304" + }, + { + "id": "U_0251_0300" + }, + { + "id": "U_0251_0303" + }, + { + "id": "U_0251_0303_0301" + }, + { + "id": "U_0251_0303_0304" + }, + { + "id": "U_0251_0303_0300" + } + ] + }, + { + "id": "K_B", + "text": "b", + "hint": "b́", + "sk": [ + { + "id": "U_0062_0301" + }, + { + "id": "U_0062_0304" + }, + { + "id": "U_0062_0300" + } + ] + }, + { + "id": "K_C", + "text": "c", + "hint": "ç ©", + "sk": [ + { + "id": "U_00E7" + }, + { + "id": "U_00A9" + } + ] + }, + { + "id": "K_D", + "text": "d" + }, + { + "id": "K_E", + "text": "e", + "hint": "é", + "sk": [ + { + "id": "U_00E9" + }, + { + "id": "U_0113" + }, + { + "id": "U_00E8" + }, + { + "id": "U_1EBD" + }, + { + "id": "U_1EBD_0301" + }, + { + "id": "U_1EBD_0304" + }, + { + "id": "U_1EBD_0300" + } + ] + }, + { + "id": "K_F", + "text": "f" + }, + { + "id": "K_G", + "text": "g" + }, + { + "id": "U_0067_0062" + }, + { + "id": "K_I", + "text": "i", + "hint": "í", + "sk": [ + { + "id": "U_00ED" + }, + { + "id": "U_012B" + }, + { + "id": "U_00EC" + }, + { + "id": "U_0129" + }, + { + "id": "U_0129_0301" + }, + { + "id": "U_0129_0304" + }, + { + "id": "U_0129_0300" + } + ] + }, + { + "id": "U_0269", + "hint": "ɩ́", + "sk": [ + { + "id": "U_0269_0301" + }, + { + "id": "U_0269_0304" + }, + { + "id": "U_0269_0300" + }, + { + "id": "U_0269_0303" + }, + { + "id": "U_0269_0303_0301" + }, + { + "id": "U_0269_0303_0304" + }, + { + "id": "U_0269_0303_0300" + } + ] + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_J", + "text": "j" + }, + { + "id": "K_K", + "text": "k" + }, + { + "id": "U_006B_0070" + }, + { + "id": "K_L", + "text": "l", + "hint": "ĺ", + "sk": [ + { + "id": "U_013A" + }, + { + "id": "U_006C_0304" + }, + { + "id": "U_006C_0300" + } + ] + }, + { + "id": "U_006D", + "text": "m", + "hint": "ḿ", + "sk": [ + { + "id": "U_1E3F" + }, + { + "id": "U_006D_0304" + }, + { + "id": "U_006D_0300" + } + ] + }, + { + "id": "K_N", + "text": "n", + "hint": "ń", + "sk": [ + { + "id": "U_0144" + }, + { + "id": "U_006E_0304" + }, + { + "id": "U_01F9" + } + ] + }, + { + "id": "U_006E_0079" + }, + { + "id": "U_014B" + }, + { + "id": "U_014B_006D" + }, + { + "id": "K_O", + "text": "o", + "hint": "ó", + "sk": [ + { + "id": "U_00F3" + }, + { + "id": "U_014D" + }, + { + "id": "U_00F2" + }, + { + "id": "U_00F5" + }, + { + "id": "U_1E4D" + }, + { + "id": "U_022D" + }, + { + "id": "U_00F5_0300" + } + ] + }, + { + "id": "U_0254", + "hint": "ɔ́", + "sk": [ + { + "id": "U_0254_0301" + }, + { + "id": "U_0254_0304" + }, + { + "id": "U_0254_0300" + }, + { + "id": "U_0254_0303" + }, + { + "id": "U_0254_0303_0301" + }, + { + "id": "U_0254_0303_0304" + }, + { + "id": "U_0254_0303_0300" + } + ] + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": 1, + "nextlayer": "shift" + }, + { + "id": "K_P", + "text": "p" + }, + { + "id": "K_R", + "text": "r", + "hint": "ŕ ®", + "sk": [ + { + "id": "U_0155" + }, + { + "id": "U_0072_0304" + }, + { + "id": "U_0072_0300" + }, + { + "id": "U_00AE" + } + ] + }, + { + "id": "K_S", + "text": "s", + "hint": "§", + "sk": [ + { + "id": "U_00A7" + } + ] + }, + { + "id": "K_T", + "text": "t" + }, + { + "id": "K_U", + "text": "u", + "hint": "ú µ", + "sk": [ + { + "id": "U_00FA" + }, + { + "id": "U_016B" + }, + { + "id": "U_00F9" + }, + { + "id": "U_0169" + }, + { + "id": "U_1E79" + }, + { + "id": "U_0169_0304" + }, + { + "id": "U_0169_0300" + }, + { + "id": "U_00B5" + } + ] + }, + { + "id": "U_028B", + "hint": "ʋ́", + "sk": [ + { + "id": "U_028B_0301" + }, + { + "id": "U_028B_0304" + }, + { + "id": "U_028B_0300" + }, + { + "id": "U_028B_0303" + }, + { + "id": "U_028B_0303_0301" + }, + { + "id": "U_028B_0303_0304" + }, + { + "id": "U_028B_0303_0300" + } + ] + }, + { + "id": "K_Z", + "text": "w" + }, + { + "id": "K_Y", + "text": "y" + }, + { + "id": "K_W", + "text": "z", + "hint": "hqvx", + "sk": [ + { + "id": "U_0068" + }, + { + "id": "U_0071" + }, + { + "id": "U_0076" + }, + { + "id": "U_0078" + } + ] + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "width": 100, + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_NUMLOCK", + "text": "*123*", + "width": 150, + "sp": 1, + "nextlayer": "numeric" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "U_002E", + "text": ".", + "sk": [ + { + "text": ",", + "id": "U_002C" + }, + { + "text": "!", + "id": "U_0021" + }, + { + "text": "?", + "id": "U_003F" + }, + { + "text": "'", + "id": "U_0027" + }, + { + "text": "\"", + "id": "U_0022" + }, + { + "text": "\\", + "id": "U_005C" + }, + { + "text": ":", + "id": "U_003A" + }, + { + "text": ";", + "id": "U_003B" + } + ] + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + }, + { + "id": "shift", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "A", + "hint": "Á", + "sk": [ + { + "id": "U_00C1" + }, + { + "id": "U_0100" + }, + { + "id": "U_00C0" + }, + { + "id": "U_00C3" + }, + { + "id": "U_00C3_0301" + }, + { + "id": "U_00C3_0304" + }, + { + "id": "U_00C3_0300" + } + ] + }, + { + "id": "U_2C6D", + "hint": "Ɑ́", + "sk": [ + { + "id": "U_2C6D_0303" + }, + { + "id": "U_2C6D_0303_0301" + }, + { + "id": "U_2C6D_0303_0304" + }, + { + "id": "U_2C6D_0303_0300" + } + ] + }, + { + "id": "K_B", + "text": "B", + "hint": "B́", + "sk": [ + { + "id": "U_0042_0301" + }, + { + "id": "U_0042_0304" + }, + { + "id": "U_0042_0300" + } + ] + }, + { + "id": "K_C", + "text": "C" + }, + { + "id": "K_D", + "text": "D" + }, + { + "id": "K_E", + "text": "E", + "hint": "É", + "sk": [ + { + "id": "U_00C9" + }, + { + "id": "U_0112" + }, + { + "id": "U_00C8" + }, + { + "id": "U_1EBC" + }, + { + "id": "U_1EBC_0301" + }, + { + "id": "U_1EBC_0304" + }, + { + "id": "U_1EBC_0300" + } + ] + }, + { + "id": "K_F", + "text": "F" + }, + { + "id": "K_G", + "text": "G" + }, + { + "id": "U_0047_0062", + "hint": "GB", + "sk": [ + { + "id": "U_0047_0042" + } + ] + }, + { + "id": "K_I", + "text": "I", + "hint": "Í", + "sk": [ + { + "id": "U_00CD" + }, + { + "id": "U_012A" + }, + { + "id": "U_00CC" + }, + { + "id": "U_0128" + }, + { + "id": "U_0128_0301" + }, + { + "id": "U_0128_0304" + }, + { + "id": "U_0128_0300" + } + ] + }, + { + "id": "U_0196", + "hint": "Ɩ́", + "sk": [ + { + "id": "U_0196_0301" + }, + { + "id": "U_0196_0304" + }, + { + "id": "U_0196_0300" + }, + { + "id": "U_0196_0303" + }, + { + "id": "U_0196_0303_0301" + }, + { + "id": "U_0196_0303_0304" + }, + { + "id": "U_0196_0303_0300" + } + ] + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_J", + "text": "J" + }, + { + "id": "K_K", + "text": "K" + }, + { + "id": "U_004B_0070", + "hint": "KP", + "sk": [ + { + "id": "U_004B_0050" + } + ] + }, + { + "id": "K_L", + "text": "L", + "hint": "Ĺ", + "sk": [ + { + "id": "U_0139" + }, + { + "id": "U_004C_0304" + }, + { + "id": "U_004C_0300" + } + ] + }, + { + "id": "U_004D", + "text": "M", + "hint": "Ḿ", + "sk": [ + { + "id": "U_1E3E" + }, + { + "id": "U_004D_0304" + }, + { + "id": "U_004D_0300" + } + ] + }, + { + "id": "K_N", + "text": "N", + "hint": "Ń", + "sk": [ + { + "id": "U_0143" + }, + { + "id": "U_004E_0304" + }, + { + "id": "U_01F8" + } + ] + }, + { + "id": "U_004E_0079" + }, + { + "id": "U_014A" + }, + { + "id": "U_014A_006D", + "hint": "ŊM", + "sk": [ + { + "id": "U_014A_004D" + } + ] + }, + { + "id": "K_O", + "text": "O", + "hint": "Ó", + "sk": [ + { + "id": "U_00D3" + }, + { + "id": "U_014C" + }, + { + "id": "U_00D2" + }, + { + "id": "U_00D5" + }, + { + "id": "U_1E4C" + }, + { + "id": "U_022C" + }, + { + "id": "U_00D5_0300" + } + ] + }, + { + "id": "U_0186", + "hint": "Ɔ́", + "sk": [ + { + "id": "U_0186_0301" + }, + { + "id": "U_0186_0304" + }, + { + "id": "U_0186_0300" + }, + { + "id": "U_0186_0303" + }, + { + "id": "U_0186_0303_0301" + }, + { + "id": "U_0186_0303_0304" + }, + { + "id": "U_0186_0303_0300" + } + ] + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": 2, + "nextlayer": "default" + }, + { + "id": "K_P", + "text": "P" + }, + { + "id": "K_R", + "text": "R", + "hint": "Ŕ", + "sk": [ + { + "id": "U_0154" + }, + { + "id": "U_0052_0304" + }, + { + "id": "U_0052_0300" + } + ] + }, + { + "id": "K_S", + "text": "S" + }, + { + "id": "K_T", + "text": "T" + }, + { + "id": "K_U", + "text": "U", + "hint": "Ú", + "sk": [ + { + "id": "U_00DA" + }, + { + "id": "U_016A" + }, + { + "id": "U_00D9" + }, + { + "id": "U_0168" + }, + { + "id": "U_1E78" + }, + { + "id": "U_0168_0304" + }, + { + "id": "U_0168_0300" + } + ] + }, + { + "id": "U_01B2", + "hint": "Ʋ́", + "sk": [ + { + "id": "U_01B2_0301" + }, + { + "id": "U_01B2_0304" + }, + { + "id": "U_01B2_0300" + }, + { + "id": "U_01B2_0303" + }, + { + "id": "U_01B2_0303_0301" + }, + { + "id": "U_01B2_0303_0304" + }, + { + "id": "U_01B2_0303_0300" + } + ] + }, + { + "id": "K_Z", + "text": "W" + }, + { + "id": "K_Y", + "text": "Y" + }, + { + "id": "K_W", + "text": "Z", + "hint": "HQVX", + "sk": [ + { + "id": "U_0048" + }, + { + "text": "Q", + "id": "U_0051" + }, + { + "text": "V", + "id": "U_0056" + }, + { + "text": "X", + "id": "U_0058" + } + ] + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_NUMLOCK", + "text": "*123*", + "width": 150, + "sp": 1, + "nextlayer": "numeric" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "U_002E", + "text": ".", + "sk": [ + { + "text": ",", + "id": "U_002C" + }, + { + "text": "!", + "id": "U_0021" + }, + { + "text": "?", + "id": "U_003F" + }, + { + "text": "'", + "id": "U_0027" + }, + { + "text": "\"", + "id": "U_0022" + }, + { + "text": "\\", + "id": "U_005C" + }, + { + "text": ":", + "id": "U_003A" + }, + { + "text": ";", + "id": "U_003B" + } + ] + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + }, + { + "id": "numeric", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_1", + "text": "1", + "sk": [ + { + "id": "U_00B9" + } + ] + }, + { + "id": "K_2", + "text": "2", + "sk": [ + { + "id": "U_00B2" + } + ] + }, + { + "id": "K_3", + "text": "3", + "sk": [ + { + "id": "U_00B3" + } + ] + }, + { + "id": "K_4", + "text": "4" + }, + { + "id": "K_5", + "text": "5" + }, + { + "id": "K_6", + "text": "6", + "sk": [ + { + "text": "^", + "id": "U_005E" + } + ] + }, + { + "id": "K_7", + "text": "7" + }, + { + "id": "K_8", + "text": "8" + }, + { + "id": "K_9", + "text": "9" + }, + { + "id": "K_0", + "text": "0", + "sk": [ + { + "id": "U_00B0" + } + ] + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_0024", + "text": "$", + "pad": 50, + "sk": [ + { + "text": "€", + "id": "U_20AC" + }, + { + "id": "U_00A3" + }, + { + "id": "U_00A4" + } + ] + }, + { + "id": "U_0040", + "text": "@" + }, + { + "id": "U_0023", + "text": "#" + }, + { + "id": "U_0025", + "text": "%" + }, + { + "id": "U_0026", + "text": "&" + }, + { + "id": "U_005F", + "text": "_", + "sk": [ + { + "id": "U_2026" + } + ] + }, + { + "id": "U_003D", + "text": "=" + }, + { + "id": "U_007C", + "text": "|" + }, + { + "id": "U_005C", + "text": "\\" + }, + { + "id": "T_new_177", + "text": "", + "width": 10, + "sp": 10 + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "U_005B", + "text": "[", + "pad": 110, + "sk": [ + { + "text": "«", + "id": "U_00AB" + }, + { + "id": "U_2039" + }, + { + "text": "<", + "id": "U_003C" + }, + { + "text": "{", + "id": "U_007B" + }, + { + "id": "U_201C" + }, + { + "id": "U_2018" + } + ] + }, + { + "id": "U_0028", + "text": "(" + }, + { + "id": "U_0029", + "text": ")" + }, + { + "id": "U_005D", + "text": "]", + "sk": [ + { + "text": "»", + "id": "U_00BB" + }, + { + "id": "U_203A" + }, + { + "text": ">", + "id": "U_003E" + }, + { + "text": "}", + "id": "U_007D" + }, + { + "id": "U_201D" + }, + { + "id": "U_2019" + } + ] + }, + { + "id": "U_002B", + "text": "+" + }, + { + "id": "U_002D", + "text": "-", + "sk": [ + { + "id": "U_2014" + } + ] + }, + { + "id": "U_002A", + "text": "*", + "sk": [ + { + "id": "U_2020" + } + ] + }, + { + "id": "U_002F", + "text": "/" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "width": 100, + "sp": 1 + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "width": 150, + "sp": 1, + "nextlayer": "default" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "width": 120, + "sp": 1 + }, + { + "id": "K_SPACE", + "text": "", + "width": 610, + "sp": 0 + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "width": 150, + "sp": 1 + } + ] + } + ] + } + ], + "fontsize": "" + } +} \ No newline at end of file diff --git a/experimental/n/ntcham_azerty/source/ntcham_azerty.kmn b/experimental/n/ntcham_azerty/source/ntcham_azerty.kmn new file mode 100644 index 0000000000..4c60c22777 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/ntcham_azerty.kmn @@ -0,0 +1,274 @@ +store(&VERSION) '17.0' +store(&NAME) 'Ntcham (AZERTY)' +store(©RIGHT) '© Wycliffe Togo' +store(&BITMAP) 'ntcham_azerty.ico' +store(&LAYOUTFILE) 'ntcham_azerty.keyman-touch-layout' +store(&KEYBOARDVERSION) '0.6.0' +store(&TARGETS) 'any' +store(&VISUALKEYBOARD) 'ntcham_azerty.kvks' +store(&CasedKeys) [K_A]..[K_Z] [K_0]..[K_9] [K_HYPHEN] [K_EQUAL] [K_LBRKT] [K_RBRKT] [K_BKSLASH] [K_QUOTE] [K_COMMA] [K_PERIOD] [K_COLON] +c Technically, [K_SLASH] should be in the above list, but I'm choosing not to add it to avoid confusion. + +begin Unicode > use(main) + +store(base-mark) "abeiouABEIOUlLmMnNrR" U+0251 U+0269 U+014B U+0254 U+028B U+2C6D U+0196 U+0186 U+01B2 U+014A +store(base-vowel-mark) "aeiouAEIOU" U+0251 U+0269 U+0254 U+028B U+2C6D U+0196 U+0186 U+01B2 + + + + +store(blmnrOuMacron) "blmnrBLMNR" U+0254 U+0186 +store(blmrOuGrave) "blmrBLMR" U+0254 U+0186 + + +c Special characters +store(specialKBase) [K_Q] [K_I] [K_N] [K_O] [K_U] [SHIFT K_Q] [SHIFT K_I] [SHIFT K_O] [SHIFT K_U] [SHIFT K_N] +store(specialK) [RALT K_Q] [RALT K_I] [RALT K_N] [RALT K_O] [RALT K_U] [SHIFT RALT K_Q] [SHIFT RALT K_I] [SHIFT RALT K_O] [SHIFT RALT K_U] [SHIFT RALT K_N] +store(specialU) U+0251 U+0269 U+014B U+0254 U+028B U+2C6D U+0196 U+0186 U+01B2 U+014A + + +group(main) using keys + +c ɑɩŋɔʋ ++ any(specialK) > index(specialU,1) +U+003B + any(specialKBase) > index(specialU,2) + +c acute aeiou b l m n ɑɩŋɔʋ +any(base-mark) + [K_LBRKT] > context U+0301 use(nfc) +any(base-mark) + [SHIFT K_LBRKT] > context U+0301 use(nfc) + + +c macrons aeiou blmn ɑɩŋɔʋ +any(base-mark) + [K_RBRKT] > context U+0304 use(nfc) +any(base-mark) + [SHIFT K_RBRKT] > context U+0304 use(nfc) + +c grave +any(base-mark) + [K_BKSLASH] > context U+0300 use(nfc) +any(base-mark) + [SHIFT K_BKSLASH] > context U+0300 use(nfc) + +c tilde aeiou ɔ +any(base-vowel-mark) + [K_BKQUOTE] > context U+0303 use(nfc) +any(base-vowel-mark) + [SHIFT K_BKQUOTE] > context U+0303 use(nfc) + +any(base-vowel-mark) U+0303 + [K_BKSLASH] > context U+0300 use(nfc) +any(base-vowel-mark) U+0303 + [SHIFT K_BKSLASH] > context U+0300 use(nfc) +any(base-vowel-mark) U+0303 + [K_LBRKT] > context U+0301 use(nfc) +any(base-vowel-mark) U+0303 + [SHIFT K_LBRKT] > context U+0301 use(nfc) +any(base-vowel-mark) U+0303 + [K_RBRKT] > context U+0304 use(nfc) +any(base-vowel-mark) U+0303 + [SHIFT K_RBRKT] > context U+0304 use(nfc) + +any(baseTildeU) + [K_BKSLASH] > context U+0300 use(nfc) +any(baseTildeU) + [SHIFT K_BKSLASH] > context U+0300 use(nfc) +any(baseTildeU) + [K_LBRKT] > context U+0301 use(nfc) +any(baseTildeU) + [SHIFT K_LBRKT] > context U+0301 use(nfc) +any(baseTildeU) + [K_RBRKT] > context U+0304 use(nfc) +any(baseTildeU) + [SHIFT K_RBRKT] > context U+0304 use(nfc) + ++ [K_0] > U+00E0 ++ [SHIFT K_0] > U+0030 ++ [RALT K_0] > U+0040 + ++ [K_1] > U+0026 ++ [SHIFT K_1] > U+0031 ++ [RALT K_1] > U+00B9 ++ [SHIFT RALT K_1] > U+2018 + ++ [K_2] > U+00E9 ++ [SHIFT K_2] > U+0032 ++ [RALT K_2] > U+007E ++ [SHIFT RALT K_2] > U+2019 + ++ [K_3] > U+0022 ++ [SHIFT K_3] > U+0033 ++ [RALT K_3] > U+0023 ++ [SHIFT RALT K_3] > U+00AB + ++ [K_4] > U+0027 ++ [SHIFT K_4] > U+0034 ++ [RALT K_4] > U+007B ++ [SHIFT RALT K_4] > U+00BB + ++ [K_5] > U+0028 ++ [SHIFT K_5] > U+0035 ++ [RALT K_5] > U+005B + ++ [K_6] > U+002D ++ [SHIFT K_6] > U+0036 ++ [RALT K_6] > U+007C + ++ [K_7] > U+00E8 ++ [SHIFT K_7] > U+0037 ++ [RALT K_7] > U+0060 + ++ [K_8] > U+005F ++ [SHIFT K_8] > U+0038 ++ [RALT K_8] > U+005C + ++ [K_9] > U+00E7 ++ [SHIFT K_9] > U+0039 ++ [RALT K_9] > U+005E + ++ [K_Q] > U+0061 ++ [SHIFT K_Q] > U+0041 + ++ [K_B] > U+0062 ++ [SHIFT K_B] > U+0042 + ++ [K_C] > U+0063 ++ [SHIFT K_C] > U+0043 ++ [RALT K_C] > U+00A9 + ++ [K_D] > U+0064 ++ [SHIFT K_D] > U+0044 + ++ [K_E] > U+0065 ++ [SHIFT K_E] > U+0045 ++ [RALT K_E] > U+20AC + ++ [K_F] > U+0066 ++ [SHIFT K_F] > U+0046 + ++ [K_G] > U+0067 ++ [SHIFT K_G] > U+0047 + ++ [K_H] > U+0068 ++ [SHIFT K_H] > U+0048 + ++ [K_I] > U+0069 ++ [SHIFT K_I] > U+0049 + ++ [K_J] > U+006a ++ [SHIFT K_J] > U+004a + ++ [K_K] > U+006b ++ [SHIFT K_K] > U+004b + ++ [K_L] > U+006c ++ [SHIFT K_L] > U+004c + ++ [SHIFT K_COLON] > U+004d ++ [K_COLON] > U+006d + + ++ [K_N] > U+006e ++ [SHIFT K_N] > U+004e + ++ [K_O] > U+006f ++ [SHIFT K_O] > U+004f + ++ [K_P] > U+0070 ++ [SHIFT K_P] > U+0050 + ++ [K_A] > U+0071 ++ [SHIFT K_A] > U+0051 ++ [RALT K_A] > U+2014 ++ [SHIFT RALT K_A] > U+2013 + ++ [K_R] > U+0072 ++ [SHIFT K_R] > U+0052 ++ [RALT K_R] > U+00ae + ++ [K_S] > U+0073 ++ [SHIFT K_S] > U+0053 ++ [RALT K_S] > U+201C ++ [SHIFT RALT K_S] > U+201D + ++ [K_T] > U+0074 ++ [SHIFT K_T] > U+0054 + ++ [K_U] > U+0075 ++ [SHIFT K_U] > U+0055 + ++ [K_V] > U+0076 ++ [SHIFT K_V] > U+0056 + ++ [K_Z] > U+0077 ++ [SHIFT K_Z] > U+0057 + ++ [K_X] > U+0078 ++ [SHIFT K_X] > U+0058 ++ [SHIFT RALT K_X] > U+203A ++ [RALT K_X] > U+2039 + ++ [K_Y] > U+0079 ++ [SHIFT K_Y] > U+0059 + ++ [K_W] > U+007a ++ [SHIFT K_W] > U+005a ++ [RALT K_W] > U+2026 ++ [SHIFT RALT K_W] > U+2020 + ++ [K_M] > U+002c ++ [SHIFT K_M] > U+003F + ++ [K_EQUAL] > U+003D ++ [SHIFT K_EQUAL] > U+002B ++ [RALT K_EQUAL] > U+007D + ++ [K_COMMA] > U+003b ++ [SHIFT K_COMMA] > U+002E + ++ [K_HYPHEN] > U+0029 ++ [SHIFT K_HYPHEN] > U+00B0 ++ [RALT K_HYPHEN] > U+005D + ++ [K_PERIOD] > U+003A ++ [SHIFT K_PERIOD] > U+002F + ++ [CAPS SHIFT K_SLASH] > U+00A7 ++ [NCAPS SHIFT K_SLASH] > U+00A7 ++ [NCAPS K_SLASH] > U+0021 ++ [CAPS K_SLASH] > U+0021 + ++ [SHIFT K_BKQUOTE] > U+0024 ++ [K_BKQUOTE] > U+00B2 ++ [RALT K_BKQUOTE] > U+00B2 ++ [SHIFT RALT K_BKQUOTE] > U+00B3 + ++ [K_LBRKT] > U+005E c U+0301 ++ [SHIFT K_LBRKT] > U+00A8 c U+0301 + ++ [K_RBRKT] > U+0024 c U+0304 ++ [SHIFT K_RBRKT] > U+00A3 c U+0304 ++ [RALT K_RBRKT] > U+00A3 + ++ [K_BKSLASH] > U+002A c U+0300 ++ [SHIFT K_BKSLASH] > U+00B5 c U+0300 ++ [RALT K_BKSLASH] > U+00A4 + ++ [K_QUOTE] > U+00F9 ++ [SHIFT K_QUOTE] > U+0025 ++ [RALT K_QUOTE] > U+002A ++ [RALT SHIFT K_QUOTE] > U+00B5 + ++ [K_OE2] > U+003C ++ [SHIFT K_OE2] > U+003E ++ [RALT K_OE2] > U+00AB ++ [SHIFT RALT K_OE2] > U+00BB + + +group(nfc) + +store(baseAcuteK) "aeiouAEIOUlLmMnNrR" +store(baseAcuteU) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA U+013A U+0139 U+1E3F U+1E3E U+0144 U+0143 U+0155 U+0154 +any(baseAcuteK) U+0301 > index(baseAcuteU,1) + +store(baseGraveK) "aeiouAEIOUnN" +store(baseGraveU) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9 U+01F9 U+01F8 +any(baseGraveK) U+0300 > index(baseGraveU,1) + +store(baseMacronK) "aeiouAEIOU" +store(baseMacronU) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A +any(baseMacronK) U+0304 > index(baseMacronU,1) + +store(baseTildeK) "aeiouAEIOU" +store(baseTildeU) U+00E3 U+1EBD U+0129 U+00F5 U+0169 U+00C3 U+1EBC U+0128 U+00D5 U+0168 +any(baseTildeK) U+0303 > index(baseTildeU,1) + +store(baseTildeMacronK) "Õõ" +store(baseTildeMacronU) U+022C U+022D +any(baseTildeMacronK) U+0304 > index(baseTildeMacronU,1) + +store(baseTildeAcuteK) "ÕõŨũ" +store(baseTildeAcuteU) U+1E4C U+1E4D U+1E78 U+1E79 +any(baseTildeAcuteK) U+0301 > index(baseTildeAcuteU,1) diff --git a/experimental/n/ntcham_azerty/source/ntcham_azerty.kps b/experimental/n/ntcham_azerty/source/ntcham_azerty.kps new file mode 100644 index 0000000000..427923d905 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/ntcham_azerty.kps @@ -0,0 +1,181 @@ + + + + 19.0.261.0 + 7.0 + + + + readme.htm + ..\LICENSE.md + welcome\welcome.htm + + + + + + + + + + + Ntcham (AZERTY) + © Wycliffe Togo + + + Ce clavier prend en charge la langue ntcham du Togo sur un clavier AZERTY (français). + +This keyboard supports the Ntcham language of Togo for an AZERTY (French) Keyboard. + + + + welcome\welcome.htm + File welcome.htm + 0 + .htm + + + readme.htm + File readme.htm + 0 + .htm + + + ..\build\ntcham_azerty.js + File ntcham_azerty.js + 0 + .js + + + ..\build\ntcham_azerty.kvk + File ntcham_azerty.kvk + 0 + .kvk + + + ..\build\ntcham_azerty.kmx + Keyboard Ntcham (AZERTY) + 0 + .kmx + + + ..\LICENSE.md + + 0 + .md + + + welcome\LayoutU_.png + File LayoutU_.png + 0 + .png + + + welcome\LayoutU_RA.png + File LayoutU_RA.png + 0 + .png + + + welcome\LayoutU_S.png + File LayoutU_S.png + 0 + .png + + + welcome\LayoutU_SRA.png + File LayoutU_SRA.png + 0 + .png + + + welcome\mobile_default.png + File mobile_default.png + 0 + .png + + + welcome\mobile_longpress.png + File mobile_longpress.png + 0 + .png + + + welcome\mobile_numeric.png + File mobile_numeric.png + 0 + .png + + + welcome\mobile_shift.png + File mobile_shift.png + 0 + .png + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-BoldItalic.ttf + Font Charis Bold Italic + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Italic.ttf + Font Charis Italic + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Medium.ttf + Font Charis Medium + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-MediumItalic.ttf + Font Charis Medium Italic + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Regular.ttf + Font Charis + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-SemiBold.ttf + Font Charis SemiBold + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-SemiBoldItalic.ttf + Font Charis SemiBold Italic + 0 + .ttf + + + ..\..\..\..\release\shared\fonts\sil\charis\OFL.txt + File OFL.txt + 0 + .txt + + + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Bold.ttf + Font Charis Bold + 0 + .ttf + + + + + ntcham_azerty + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Regular.ttf + ..\..\..\..\release\shared\fonts\sil\charis\Charis-Regular.ttf + + Ntcham + + + + + diff --git a/experimental/n/ntcham_azerty/source/ntcham_azerty.kvks b/experimental/n/ntcham_azerty/source/ntcham_azerty.kvks new file mode 100644 index 0000000000..7d14a7c602 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/ntcham_azerty.kvks @@ -0,0 +1,163 @@ + + +
+ 10.0 + ntcham_azerty + + + + + +
+ + + ɩ + ŋ + ɔ + ɑ + ʋ + @ + ¹ + ~ + # + { + [ + | + ` + \ + ^ + © + + + ® + + + + } + ] + ² + £ + ¤ + * + « + + + Ɩ + Ŋ + Ɔ + + Ʋ + + + « + » + + + + + ³ + µ + » + + + < + ù + ; + ) + : + ! + à + & + é + " + ' + ( + - + è + _ + ç + m + = + q + b + c + d + e + f + g + h + i + j + k + l + , + n + o + p + a + r + s + t + u + v + z + x + y + w + ^ + * + $ + ² + + + > + 1 + % + 3 + 4 + 5 + 7 + 9 + 0 + 8 + + + M + . + / + § + 2 + Q + B + C + D + E + F + G + H + I + J + K + L + ? + N + O + P + A + R + S + T + U + V + Z + X + Y + W + 6 + ° + ¨ + µ + £ + $ + + +
diff --git a/experimental/n/ntcham_azerty/source/readme.htm b/experimental/n/ntcham_azerty/source/readme.htm new file mode 100644 index 0000000000..6b64613773 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/readme.htm @@ -0,0 +1,24 @@ + + + + + Ntcham (AZERTY) + + + + +

Ntcham (AZERTY)

+ +

Ce clavier prend en charge la langue ntcham du Togo sur un clavier AZERTY (français).

+

+This keyboard supports the Ntcham language of Togo for +an AZERTY (French) Keyboard. +

+ + + + diff --git a/experimental/n/ntcham_azerty/source/welcome/LayoutU_.png b/experimental/n/ntcham_azerty/source/welcome/LayoutU_.png new file mode 100644 index 0000000000..2aa505bc70 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/LayoutU_.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/LayoutU_RA.png b/experimental/n/ntcham_azerty/source/welcome/LayoutU_RA.png new file mode 100644 index 0000000000..14b30561b7 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/LayoutU_RA.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/LayoutU_S.png b/experimental/n/ntcham_azerty/source/welcome/LayoutU_S.png new file mode 100644 index 0000000000..04d19d5611 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/LayoutU_S.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/LayoutU_SRA.png b/experimental/n/ntcham_azerty/source/welcome/LayoutU_SRA.png new file mode 100644 index 0000000000..9518aa9b88 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/LayoutU_SRA.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/mobile_default.png b/experimental/n/ntcham_azerty/source/welcome/mobile_default.png new file mode 100644 index 0000000000..93a98f2745 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/mobile_default.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/mobile_longpress.png b/experimental/n/ntcham_azerty/source/welcome/mobile_longpress.png new file mode 100644 index 0000000000..afa3ff9acb Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/mobile_longpress.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/mobile_numeric.png b/experimental/n/ntcham_azerty/source/welcome/mobile_numeric.png new file mode 100644 index 0000000000..a27b5eaba4 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/mobile_numeric.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/mobile_shift.png b/experimental/n/ntcham_azerty/source/welcome/mobile_shift.png new file mode 100644 index 0000000000..04584d02f1 Binary files /dev/null and b/experimental/n/ntcham_azerty/source/welcome/mobile_shift.png differ diff --git a/experimental/n/ntcham_azerty/source/welcome/welcome.htm b/experimental/n/ntcham_azerty/source/welcome/welcome.htm new file mode 100644 index 0000000000..79794d78e5 --- /dev/null +++ b/experimental/n/ntcham_azerty/source/welcome/welcome.htm @@ -0,0 +1,88 @@ + + + + + Commencez à utiliser Ntcham (AZERTY) / Start Using Ntcham (AZERTY) + + + + +

Commencez à utiliser Ntcham (AZERTY) / Start Using Ntcham (AZERTY)

+ +

Ce clavier prend en charge la langue ntcham du Togo sur un clavier AZERTY (français).

+

This keyboard supports the Ntcham language of Togo for an AZERTY (French) Keyboard.

+ + +

Disposition du clavier pour ordinateur / Desktop Keyboard layout

+ +

Ce clavier utilise des touches mortes (combinaisons de touches) pour produire les caractères accentués et les lettres spécifiques à la langue ntcham. Par exemple :

+ + + +

This keyboard makes use of multi-key input. For example:

+ + +

Les différentes dispositions disponibles sont les suivantes :

+ +

Par défaut (sans la touche Maj) / Default (unshifted)

+

Default (unshifted) state

+

Maj (Shift) / Shift

+

Shift state

+

Alt droite (AltGr) / Right ALT (unshifted)

+

Right ALT (unshifted) state

+

Maj + Alt droite (Shift + AltGr) / Shift Right ALT

+

Shift Right ALT state

+ +

Disposition du clavier pour téléphone mobile / Mobile/Phone Keyboard layout

+

Par défaut (sans Maj) / Default (unshifted)

+

Default (unshifted) state

+

Maj (Shift) / Shift

+

Shift state

+

Clavier numérique / Numeric

+

Numeric state

+ +

Appui long (pour accéder aux caractères supplémentaires) / Longpress

+

On mobile phone, keys with a little dot on the top right can be pressed and held for more keys.

+

longpress

+ + + + \ No newline at end of file