Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 17.0 staging branch #2423

Merged
merged 247 commits into from
Jun 3, 2024
Merged

feat: 17.0 staging branch #2423

merged 247 commits into from
Jun 3, 2024

Conversation

mcdurdin
Copy link
Member

@mcdurdin mcdurdin commented Oct 24, 2023

Refreshes all keyboards to match Keyman Developer 17.0 file layout:

  • removes .keyboard_info and puts relevant information from there into .kps
    • LicenseFile - a .md file, usually named LICENSE.md
    • Info/Description - a short Markdown description of the content of the package, e.g. shown in search results on keyman.com
    • RelatedPackages - a list of other packages which relate to this one, or are deprecated by it
    • Keyboards/Keyboard/Examples - a list of typing examples for the keyboard
    • Keyboards/Keyboard/WebOSKFonts - a list of font filenames (not necessarily in package) suitable for rendering the on screen keyboard
    • Keyboards/Keyboard/WebDisplayFonts - a list of font filenames (not necessarily in package) suitable for use with the keyboard
  • adds LICENSE.md to every .kps, and enforces the format and text
  • moves to @keymanapp/kmc compiler and removes kmcomp and related infrastructure (adds node 18+ requirement)

This resolves issues around spaces in paths.
Note: two gff legacy keyboards have license change from CC to MIT. Need
to verify if this is acceptable with @dyacob.
Converts keyboard_info description from HTML to Markdown and adds into
the corresponding package.
Updates the font metadata in the following packages:

  basic_kbdtiprd: 			{"fonts":["DDC_Uchen.ttf"]}, // ✅
  ekwtamil99uni: 			{"fonts":["aava1.ttf"]}, // ✅
  gff_amharic: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_amharic_classic: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_amh_7: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_awngi_xamtanga: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_blin: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_geez: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_gurage: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_gurage_legacy: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_harari: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_tigre: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_tigrinya_eritrea: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  gff_tigrinya_ethiopia: 			{"fonts":["NotoSerifEthiopic-Regular.woff2","NotoSerifEthiopic-Regular.ttf"],"oskFonts":["NotoSansEthiopic-Regular.woff2","NotoSansEthiopic-Regular.ttf"]}, // ✅
  mro_phonetic: 			{"fonts":["MroUnicode-Regular.ttf"]}, // ✅
  old_hungarian: 			{"fonts":["Kende.woff2"]}, // ✅
  sil_senegal_krx_qwerty: 			{"fonts":["AndikaAfr-R.ttf"]}, // ✅
  old_english: 			{"fonts":["Catrinity.otf"]}, // ✅
  runeboard: 			{"fonts":["Catrinity.otf"]}, // ✅
  tangsa_lakhum: 			{"fonts":["TangsaLakhumUnicode.ttf"]}, // ✅

Makes no changes to the following packages; some may need future update:

  afghan_turkmen: 			{"fonts":["Lateef-Regular.ttf"]}, // already using Lateef-Bold.ttf
  bj_naskapi_common: 			{"fonts":["bjcrus2.ttf"]}, // already using bjcrus.ttf
  colchis_latin: 			{"fonts":["CharisSILColchis-Regular.ttf"]},   // already using CharisSILColchis-Bold.ttf
  english_shavian_qwerty: 			{"fonts":["HenryHigginsSans-Regular.ttf"]}, // already using InterAlia-Regular.ttf
  himyarit_musnad: 			{"fonts":["SultanMusnad-Normal.ttf"]}, // already using AF_Najed.ttf
  gff_gurage_and_amharic: 			{"fonts":["GurageZebidar-Regular.ttf","Abyssinica-Regular.ttf"]}, // already using AbyssinicaSIL-Regular.ttf; GurageZebidar-Regular.ttf is not in package
  sil_hebrew: 			{"fonts":["SBL_Hbrw.ttf"]}, // already using SILEOT.ttf
  sil_hebrew_legacy: 			{"fonts":["SBL_Hbrw.ttf"]}, // already using SILEOT.ttf
  sil_limbu_phonetic: 			{"fonts":["Namdhinggo-Regular.ttf"]}, // already using Namdhinggo-Bold.ttf
  sil_limbu_typewriter: 			{"fonts":["Namdhinggo-Regular.ttf"]}, // already using Namdhinggo-Bold.ttf
  sil_ywq_plrd: 			{"fonts":["Salaowu-Regular.ttf"]}, // already using SalaowuLight-Regular.ttf
  tuareg_tifinagh: 			{"fonts":["Akatab-Regular.ttf"]}, // already using Akatab-Bold.ttf
  txo_toto: 			{"fonts":["NotoSerifToto-Regular.ttf"]}, // already using NotoSerifToto-Bold.ttf

  el_dinka: 			{"fonts":["DejaVuSans.ttf"]}, //!! font is not in package
  el_naija: 			{"fonts":["DejaVuSans.ttf"]}, //!! font is not in package
  el_pan_sahelian: 			{"fonts":["DejaVuSans.ttf"]}, //!! font is not in package
  galaxie_greek_positional: 			{"fonts":["GentiumPlus-Regular.ttf"]}, //!! font is not in package
  sil_greek_polytonic: 			{"fonts":["GentiumPlus-Regular.ttf"]}, //!! font is not in package
  thamizha_anjal_paangu: 			{"fonts":["aava1.ttf"]}, //!! font is not in package
  thamizha_bamini: 			{"fonts":["aava1.ttf"]}, //!! font is not in package
  thamizha_new_typewriter: 			{"fonts":["aava1.ttf"]}, //!! font is not in package
  thamizha_tamil99_ext: 			{"fonts":["aava1.ttf"]}, //!! font is not in package
  tibetan_direct_input: 			{"fonts":["DDC_Uchen.ttf"],"oskFonts":["DDC_Uchen.ttf"]}, //!! font is not in package
  tibetan_ewts: 			{"fonts":["DDC_Uchen.ttf"],"oskFonts":["DDC_Uchen.ttf"]}, //!! font is not in package
  vm_tamil_modular: 			{"fonts":["aava1.ttf"]}, //!! font is not in package
  vm_tamil_typewriter: 			{"fonts":["aava1.ttf"]}, //!! font is not in package

  sil_jarai: 			{"fonts":["khmer_busra_kbd.ttf"]}, // !! WRONG in keyboard_info
These packages had a web display font set for the keyboard_info, so even
though the font is not in the package, it is set in the kps now in case
the font is available on the system or via other means.

  el_dinka: 			{"fonts":["DejaVuSans.ttf"]}, // ✅
  el_naija: 			{"fonts":["DejaVuSans.ttf"]}, // ✅
  el_pan_sahelian: 			{"fonts":["DejaVuSans.ttf"]}, // ✅
  galaxie_greek_positional: 			{"fonts":["GentiumPlus-Regular.ttf"]},  // ✅
  sil_greek_polytonic: 			{"fonts":["GentiumPlus-Regular.ttf"]},  // ✅
  thamizha_anjal_paangu: 			{"fonts":["aava1.ttf"]},  // ✅
  thamizha_bamini: 			{"fonts":["aava1.ttf"]},  // ✅
  thamizha_new_typewriter: 			{"fonts":["aava1.ttf"]},  // ✅
  thamizha_tamil99_ext: 			{"fonts":["aava1.ttf"]},  // ✅
  tibetan_direct_input: 			{"fonts":["DDC_Uchen.ttf"],"oskFonts":["DDC_Uchen.ttf"]},  // ✅
  tibetan_ewts: 			{"fonts":["DDC_Uchen.ttf"],"oskFonts":["DDC_Uchen.ttf"]},  // ✅
  vm_tamil_modular: 			{"fonts":["aava1.ttf"]},  // ✅
  vm_tamil_typewriter: 			{"fonts":["aava1.ttf"]},  // ✅
Adds all the examples from .keyboard_info files to the .kps files,
reformatting the keys attributes as required.

Note, the following two examples appear to be invalid and may need
manual addition:
* release/q/qwerty_farang/qwerty_farang.keyboard_info: This example
  seems to be malformed
* release/rac/rac_saraiki/rac_saraiki.keyboard_info: This example seems
  to be malformed

Report from the script:
```
armenian_mnemonic
{"hy":{"keys":"Hayuc  lezuw","text":"Հայոց լեզու","note":"Name of language"}}

      <Examples>
        <Example ID="hy" Keys="H a y u c space space l e z u w" Text="Հայոց լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
armenian_mnemonic_r
{"hy":{"keys":"Hayuc  lezuw","text":"Հայոց լեզու","note":"Name of language"}}

      <Examples>
        <Example ID="hy" Keys="H a y u c space space l e z u w" Text="Հայոց լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdal
{"als-Latn":{"keys":"Kor[[;","text":"Korçë","note":"A city in southeastern Albania"}}

      <Examples>
        <Example ID="als-Latn" Keys="K o r [ ;" Text="Korçë" Note="A city in southeastern Albania" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdarme
{"hy":{"keys":"ha3yryn lyzow","text":"հայերեն լեզու","note":"Name of language"}}

      <Examples>
        <Example ID="hy" Keys="h a 3 y r y n space l y z o w" Text="հայերեն լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdarmw
{"hy":{"keys":"ha3yryn lyzov","text":"հայերեն լեզու","note":"Name of language"}}

      <Examples>
        <Example ID="hy" Keys="h a 3 y r y n space l y z o v" Text="հայերեն լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbe
{"fr":{"keys":"C[[ote d4Or","text":"Côte d'Or","note":"Brand of Belgian chocolate"}}

      <Examples>
        <Example ID="fr" Keys="C [ o t e space d 4 O r" Text="Côte d'Or" Note="Brand of Belgian chocolate" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbene
{"fr":{"keys":"C[[ote d4Or","text":"Côte d'Or","note":"Brand of Belgian chocolate"}}

      <Examples>
        <Example ID="fr" Keys="C [ o t e space d 4 O r" Text="Côte d'Or" Note="Brand of Belgian chocolate" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdblr
{"be":{"keys":",tkfhecrfz vjdf","text":"беларуская мова","note":"Name of language"}}

      <Examples>
        <Example ID="be" Keys=", t k f h e c r f z space v j d f" Text="беларуская мова" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbulg
{"bg":{"keys":"/c.hd,iur epru","text":"български език","note":"Name of language"}}

      <Examples>
        <Example ID="bg" Keys="/ c . h d , i u r space e p r u" Text="български език" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdca
{"fr-CA":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"}}

      <Examples>
        <Example ID="fr-CA" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcan
{"fr":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"},"fr-ca":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"}}

      <Examples>
        <Example ID="fr" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
        <Example ID="fr-ca" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcr
{"hr":{"keys":"O;e na[[","text":"Oče naš","note":"\"Our Father\""}}

      <Examples>
        <Example ID="hr" Keys="O ; e space n a [" Text="Oče naš" Note="\"Our Father\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcz
{"cs":{"keys":"4e3tina","text":"čeština","note":"Name of language"}}

      <Examples>
        <Example ID="cs" Keys="4 e 3 t i n a" Text="čeština" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcz1
{"cs":{"keys":"4e3tina","text":"čeština","note":"Name of language"}}

      <Examples>
        <Example ID="cs" Keys="4 e 3 t i n a" Text="čeština" Note="Name of language" />

mcdurdin@THARK MINGW64 /c/Projects/keyman/keyboards (chore/webfont-in-kps)
$ ^C

mcdurdin@THARK MINGW64 /c/Projects/keyman/keyboards (chore/webfont-in-kps)
$ ./add-example-to-kps.sh
armenian_mnemonic
{"hy":{"keys":"Hayuc  lezuw","text":"Հայոց լեզու","note":"Name of language"}}

    <Examples>
        <Example ID="hy" Keys="H a y u c space space l e z u w" Text="Հայոց լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
armenian_mnemonic_r
{"hy":{"keys":"Hayuc  lezuw","text":"Հայոց լեզու","note":"Name of language"}}

    <Examples>
        <Example ID="hy" Keys="H a y u c space space l e z u w" Text="Հայոց լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdal
{"als-Latn":{"keys":"Kor[[;","text":"Korçë","note":"A city in southeastern Albania"}}

    <Examples>
        <Example ID="als-Latn" Keys="K o r [ ;" Text="Korçë" Note="A city in southeastern Albania" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdarme
{"hy":{"keys":"ha3yryn lyzow","text":"հայերեն լեզու","note":"Name of language"}}

    <Examples>
        <Example ID="hy" Keys="h a 3 y r y n space l y z o w" Text="հայերեն լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdarmw
{"hy":{"keys":"ha3yryn lyzov","text":"հայերեն լեզու","note":"Name of language"}}

    <Examples>
        <Example ID="hy" Keys="h a 3 y r y n space l y z o v" Text="հայերեն լեզու" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbe
{"fr":{"keys":"C[[ote d4Or","text":"Côte d'Or","note":"Brand of Belgian chocolate"}}

    <Examples>
        <Example ID="fr" Keys="C [ o t e space d 4 O r" Text="Côte d'Or" Note="Brand of Belgian chocolate" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbene
{"fr":{"keys":"C[[ote d4Or","text":"Côte d'Or","note":"Brand of Belgian chocolate"}}

    <Examples>
        <Example ID="fr" Keys="C [ o t e space d 4 O r" Text="Côte d'Or" Note="Brand of Belgian chocolate" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdblr
{"be":{"keys":",tkfhecrfz vjdf","text":"беларуская мова","note":"Name of language"}}

    <Examples>
        <Example ID="be" Keys=", t k f h e c r f z space v j d f" Text="беларуская мова" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdbulg
{"bg":{"keys":"/c.hd,iur epru","text":"български език","note":"Name of language"}}

    <Examples>
        <Example ID="bg" Keys="/ c . h d , i u r space e p r u" Text="български език" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdca
{"fr-CA":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"}}

    <Examples>
        <Example ID="fr-CA" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcan
{"fr":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"},"fr-ca":{"keys":"Qu/bec","text":"Québec","note":"Province of Canada"}}

    <Examples>
        <Example ID="fr" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
        <Example ID="fr-ca" Keys="Q u / b e c" Text="Québec" Note="Province of Canada" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcr
{"hr":{"keys":"O;e na[[","text":"Oče naš","note":"\"Our Father\""}}

    <Examples>
        <Example ID="hr" Keys="O ; e space n a [" Text="Oče naš" Note="\"Our Father\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcz
{"cs":{"keys":"4e3tina","text":"čeština","note":"Name of language"}}

    <Examples>
        <Example ID="cs" Keys="4 e 3 t i n a" Text="čeština" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcz1
{"cs":{"keys":"4e3tina","text":"čeština","note":"Name of language"}}

    <Examples>
        <Example ID="cs" Keys="4 e 3 t i n a" Text="čeština" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdcz2
{"cs":{"keys":"[CA4]e[CA3]tina","text":"čeština","note":"Name of language"}}

    <Examples>
        <Example ID="cs" Keys="ctrl+alt+4 e ctrl+alt+3 t i n a" Text="čeština" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdda
{"da":{"keys":"Sk[[nske Lov","text":"Skånske Lov","note":"\"Scanian Law\""}}

    <Examples>
        <Example ID="da" Keys="S k [ n s k e space L o v" Text="Skånske Lov" Note="\"Scanian Law\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbddv
{"en":{"keys":"Kjd xfgiv nos,l ysb","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="K j d space x f g i v space n o s , l space y s b" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdes
{"es":{"keys":"Espa;ol","text":"Español","note":"Name of language"}}

    <Examples>
        <Example ID="es" Keys="E s p a ; o l" Text="Español" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdest
{"et":{"keys":"Taevani t]ustes [[les","text":"Taevani tõustes üles","note":"\"Rising up to the heavens\", a line from Estonian poetry"}}

    <Examples>
        <Example ID="et" Keys="T a e v a n i space t ] u s t e s space [ l e s" Text="Taevani tõustes üles" Note="\"Rising up to the heavens\", a line from Estonian poetry" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdfi
{"fi":{"keys":"Hyv'' y;t'","text":"Hyvää yötä","note":"\"Good night\""}}

    <Examples>
        <Example ID="fi" Keys="H y v ' ' space y ; t '" Text="Hyvää yötä" Note="\"Good night\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdfi1
{"fi":{"keys":"Hyv'' y;t'","text":"Hyvää yötä","note":"\"Good night\""}}

    <Examples>
        <Example ID="fi" Keys="H y v ' ' space y ; t '" Text="Hyvää yötä" Note="\"Good night\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdfo
{"fo":{"keys":"F'royskt","text":"Føroyskt","note":"Name of Language"}}

    <Examples>
        <Example ID="fo" Keys="F ' r o y s k t" Text="Føroyskt" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdfr
{"fr":{"keys":"Frqn9qis","text":"Français","note":"Name of Language"}}

    <Examples>
        <Example ID="fr" Keys="F r q n 9 q i s" Text="Français" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdgae
{"gd-Latn":{"keys":"G`aidhlig","text":"Gàidhlig","note":"Name of Language"}}

    <Examples>
        <Example ID="gd-Latn" Keys="G ` a i d h l i g" Text="Gàidhlig" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdgr
{"de":{"keys":"Schuhgr;-e","text":"Schuhgröße","note":"\"Shoe size\""}}

    <Examples>
        <Example ID="de" Keys="S c h u h g r ; - e" Text="Schuhgröße" Note="\"Shoe size\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdgr1
{"de":{"keys":"Schuhgr;-e","text":"Schuhgröße","note":"\"Shoe size\""}}

    <Examples>
        <Example ID="de" Keys="S c h u h g r ; - e" Text="Schuhgröße" Note="\"Shoe size\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdhe
{"el":{"keys":"kal;h m;era, ti k;aneiwq","text":"καλή μέρα, τι κάνεις;","note":"\"Good morning, how are you?\""}}

    <Examples>
        <Example ID="el" Keys="k a l ; h space m ; e r a , space t i space k ; a n e i w q" Text="καλή μέρα, τι κάνεις;" Note="\"Good morning, how are you?\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdhe220
{"el":{"keys":"kal;h m;era, ti k;aneiwq","text":"καλή μέρα, τι κάνεις;","note":"\"Good morning, how are you?\""}}

    <Examples>
        <Example ID="el" Keys="k a l ; h space m ; e r a , space t i space k ; a n e i w q" Text="καλή μέρα, τι κάνεις;" Note="\"Good morning, how are you?\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdhe319
{"el":{"keys":"kal;h m;era, ti k;aneiw<","text":"καλή μέρα, τι κάνεις;","note":"\"Good morning, how are you?\""}}

    <Examples>
        <Example ID="el" Keys="k a l ; h space m ; e r a , space t i space k ; a n e i w <" Text="καλή μέρα, τι κάνεις;" Note="\"Good morning, how are you?\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdhu
{"hu":{"keys":"Pet[[fi S'ndor","text":"Petőfi Sándor","note":"\"Petofi Sandor\", Hungarian national poet"}}

    <Examples>
        <Example ID="hu" Keys="P e t [ f i space S ' n d o r" Text="Petőfi Sándor" Note="\"Petofi Sandor\", Hungarian national poet" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdhu1
{"hu":{"keys":"Pet[[fi S'ndor","text":"Petőfi Sándor","note":"\"Petofi Sandor\", Hungarian national poet"}}

    <Examples>
        <Example ID="hu" Keys="P e t [ f i space S ' n d o r" Text="Petőfi Sándor" Note="\"Petofi Sandor\", Hungarian national poet" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdic
{"is":{"keys":"'Eg veit /a[[ ekki","text":"Ég veit það ekki","note":"\"I don't know that\""}}

    <Examples>
        <Example ID="is" Keys="' E g space v e i t space / a [ space e k k i" Text="Ég veit það ekki" Note="\"I don't know that\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinbe2
{"bn":{"keys":"bexne nfhf","text":"বাংলা লিপি","note":"Name of language"}}

    <Examples>
        <Example ID="bn" Keys="b e x n e space n f h f" Text="বাংলা লিপি" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinben
{"bn":{"keys":"bexne nfhf","text":"বাংলা লিপি","note":"Name of language"}}

    <Examples>
        <Example ID="bn" Keys="b e x n e space n f h f" Text="বাংলা লিপি" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdindev
{"hi":{"keys":"ufvdor","text":"हिन्दी","note":"Name of language"}}

    <Examples>
        <Example ID="hi" Keys="u f v d o r" Text="हिन्दी" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinguj
{"gu":{"keys":"igpjelr","text":"ગુજરાતી","note":"Name of language"}}

    <Examples>
        <Example ID="gu" Keys="i g p j e l r" Text="ગુજરાતી" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinhin
{"hi":{"keys":"ufvdor","text":"हिन्दी","note":"Name of language"}}

    <Examples>
        <Example ID="hi" Keys="u f v d o r" Text="हिन्दी" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinkan
{"kn":{"keys":"kvdv[[","text":"ಕನ್ನಡ","note":"Name of language"}}

    <Examples>
        <Example ID="kn" Keys="k v d v [" Text="ಕನ್ನಡ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinmal
{"ml":{"keys":"cn/eNx","text":"മലയാളം","note":"Name of language"}}

    <Examples>
        <Example ID="ml" Keys="c n / e N x" Text="മലയാളം" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinmar
{"mr":{"keys":"cje\"r","text":"मराठी","note":"Name of language"}}

    <Examples>
        <Example ID="mr" Keys="c j e \" r" Text="मराठी" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdinpun
{"pa":{"keys":"hxpeyr","text":"ਪੰਜਾਬੀ","note":"Name of language"}}

    <Examples>
        <Example ID="pa" Keys="h x p e y r" Text="ਪੰਜਾਬੀ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdintam
{"ta":{"keys":"lcfBd","text":"தமிழ்","note":"Name of language"}}

    <Examples>
        <Example ID="ta" Keys="l c f B d" Text="தமிழ்" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdintel
{"te":{"keys":"lzngig","text":"తెలుగు","note":"Name of language"}}

    <Examples>
        <Example ID="te" Keys="l z n g i g" Text="తెలుగు" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdir
{"en":{"keys":"The quick brown fox","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="T h e space q u i c k space b r o w n space f o x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdit
{"it":{"keys":"perch{","text":"perché","note":"\"Why\""}}

    <Examples>
        <Example ID="it" Keys="p e r c h {" Text="perché" Note="\"Why\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdit142
{"it":{"keys":"perch{","text":"perché","note":"\"Why\""}}

    <Examples>
        <Example ID="it" Keys="p e r c h {" Text="perché" Note="\"Why\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdla
{"es":{"keys":"Espa;ol","text":"Español","note":"Name of language"}}

    <Examples>
        <Example ID="es" Keys="E s p a ; o l" Text="Español" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdlt
{"lt":{"keys":"lietuvi; kalba","text":"lietuvių kalba","note":"Name of Language"}}

    <Examples>
        <Example ID="lt" Keys="l i e t u v i ; space k a l b a" Text="lietuvių kalba" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdlt1
{"lt":{"keys":"lietuvi7 kalba","text":"lietuvių kalba","note":"Name of Language"}}

    <Examples>
        <Example ID="lt" Keys="l i e t u v i 7 space k a l b a" Text="lietuvių kalba" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdlv
{"lv":{"keys":"gjkyflas yjgnhj","text":"latviešu valoda","note":"Name of Language"}}

    <Examples>
        <Example ID="lv" Keys="g j k y f l a s space y j g n h j" Text="latviešu valoda" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdlv1
{"lv":{"keys":"latvie[CAs]u valoda","text":"latviešu valoda","note":"Name of Language"}}

    <Examples>
        <Example ID="lv" Keys="l a t v i e ctrl+alt+s u space v a l o d a" Text="latviešu valoda" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdmacst
{"mk":{"keys":"makedonski jazik","text":"македонски јазик","note":"Name of Language"}}

    <Examples>
        <Example ID="mk" Keys="m a k e d o n s k i space j a z i k" Text="македонски јазик" Note="Name of Language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdmlt47
{"mt":{"keys":"i\\-|ieda mat-Tag]rif","text":"iż-Żieda mat-Tagħrif","note":"\"Writing in Maltese\" guidebook"}}

    <Examples>
        <Example ID="mt" Keys="i \\ - | i e d a space m a t - T a g ] r i f" Text="iż-Żieda mat-Tagħrif" Note="\"Writing in Maltese\" guidebook" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdne
{"nl":{"keys":"'e'en","text":"één","note":"\"One\""}}

    <Examples>
        <Example ID="nl" Keys="' e ' e n" Text="één" Note="\"One\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdpl
{"pl":{"keys":"ko]ci\\;","text":"kościół","note":"\"Church\""}}

    <Examples>
        <Example ID="pl" Keys="k o ] c i \\ ;" Text="kościół" Note="\"Church\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdpl1
{"pl":{"keys":"ko[CAs]ci[CAo][CAl]","text":"kościół","note":"\"Church\""}}

    <Examples>
        <Example ID="pl" Keys="k o ctrl+alt+s c i ctrl+alt+o ctrl+alt+l" Text="kościół" Note="\"Church\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdru
{"ru":{"keys":"heccrbq zpsr","text":"русский язык","note":"Name of language"}}

    <Examples>
        <Example ID="ru" Keys="h e c c r b q space z p s r" Text="русский язык" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdru1
{"ru":{"keys":"heccrbq zpsr","text":"русский язык","note":"Name of language"}}

    <Examples>
        <Example ID="ru" Keys="h e c c r b q space z p s r" Text="русский язык" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdrum
{"ru":{"keys":"russkij  qzyk","text":"русский язык","note":"Name of language"}}

    <Examples>
        <Example ID="ru" Keys="r u s s k i j space space q z y k" Text="русский язык" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdsf
{"fr":{"keys":"d;jeuner et d=iner","text":"déjeuner et dîner","note":"\"Breakfast and lunch\""},"fr-CH":{"keys":"d;jeuner et d=iner","text":"déjeuner et dîner","note":"\"Breakfast and lunch\""}}

    <Examples>
        <Example ID="fr" Keys="d ; j e u n e r space e t space d = i n e r" Text="déjeuner et dîner" Note="\"Breakfast and lunch\"" />
        <Example ID="fr-CH" Keys="d ; j e u n e r space e t space d = i n e r" Text="déjeuner et dîner" Note="\"Breakfast and lunch\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdsg
{"de":{"keys":"Schuhgr;sse","text":"Schuhgrösse","note":"\"Shoe size\""}}

    <Examples>
        <Example ID="de" Keys="S c h u h g r ; s s e" Text="Schuhgrösse" Note="\"Shoe size\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdsp
{"es":{"keys":"Espa;ol","text":"Español","note":"Name of language"}}

    <Examples>
        <Example ID="es" Keys="E s p a ; o l" Text="Español" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdsyr1
{"syc-Syrc":{"keys":"gakh s,vddh","text":"ܠܫܢܐ ܣܘܪܝܝܐ","note":"Name of language"}}

    <Examples>
        <Example ID="syc-Syrc" Keys="g a k h space s , v d d h" Text="ܠܫܢܐ ܣܘܪܝܝܐ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdsyr2
{"syc-Syrc":{"keys":"lvna swryya","text":"ܠܫܢܐ ܣܘܪܝܝܐ","note":"Name of language"}}

    <Examples>
        <Example ID="syc-Syrc" Keys="l v n a space s w r y y a" Text="ܠܫܢܐ ܣܘܪܝܝܐ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdth0
{"th":{"keys":"4kKkwmp","text":"ภาษาไทย","note":"Name of language"}}

    <Examples>
        <Example ID="th" Keys="4 k K k w m p" Text="ภาษาไทย" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdth1
{"th":{"keys":"VjTj;se","text":"ภาษาไทย","note":"Name of language"}}

    <Examples>
        <Example ID="th" Keys="V j T j ; s e" Text="ภาษาไทย" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdth2
{"th":{"keys":"4kKkwmp","text":"ภาษาไทย","note":"Name of language"}}

    <Examples>
        <Example ID="th" Keys="4 k K k w m p" Text="ภาษาไทย" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdth3
{"th":{"keys":"VjTj;se","text":"ภาษาไทย","note":"Name of language"}}

    <Examples>
        <Example ID="th" Keys="V j T j ; s e" Text="ภาษาไทย" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbduk
{"en":{"keys":"The quick brown fox","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="T h e space q u i c k space b r o w n space f o x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdukx
{"cy":{"keys":"The quick brown fox","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="cy" Keys="T h e space q u i c k space b r o w n space f o x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdus
{"en":{"keys":"The quick brown fox","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="T h e space q u i c k space b r o w n space f o x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdusl
{"en":{"keys":"Ghj wtmds eyibn 5ix","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="G h j space w t m d s space e y i b n space 5 i x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdusr
{"en":{"keys":"Jhg eibl; pytmn 8tc","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="J h g space e i b l ; space p y t m n space 8 t c" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
basic_kbdusx
{"en":{"keys":"The quick brown fox","text":"The quick brown fox","note":"\"The quick brown fox\""}}

    <Examples>
        <Example ID="en" Keys="T h e space q u i c k space b r o w n space f o x" Text="The quick brown fox" Note="\"The quick brown fox\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
dega
{"rad-Latn":{"keys":"EEddee","text":"Êđê","note":"Rade"},"kpm-Latn":{"keys":"KowHo","text":"KơHo","note":"Koho"},"cmo-Latn":{"keys":"Mownoong","text":"Mơnông","note":"Mnong"},"jra-Latn":{"keys":"Jowrai","tex
t":"Jơrai","note":"Jorai"},"bdq-Latn":{"keys":"Bahnar","text":"Bahnar","note":"Bahnar"}}

    <Examples>
        <Example ID="rad-Latn" Keys="E E d d e e" Text="Êđê" Note="Rade" />
        <Example ID="kpm-Latn" Keys="K o w H o" Text="KơHo" Note="Koho" />
        <Example ID="cmo-Latn" Keys="M o w n o o n g" Text="Mơnông" Note="Mnong" />
        <Example ID="jra-Latn" Keys="J o w r a i" Text="Jơrai" Note="Jorai" />
        <Example ID="bdq-Latn" Keys="B a h n a r" Text="Bahnar" Note="Bahnar" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
ekwtamil99uni
{"ta":{"keys":"lks/f ams[[f[[dvos","text":"தமிழ் அரிச்சுவடி","note":"\"Tamil alphabet\""}}

    <Examples>
        <Example ID="ta" Keys="l k s / f space a m s [ f [ d v o s" Text="தமிழ் அரிச்சுவடி" Note="\"Tamil alphabet\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
el_dari_clra
{"prs":{"keys":"thvsd nvd","text":"فارسی دری","note":"\"Dari Persian\""},"pes":{"keys":"thvsd nvd","text":"فارسی دری","note":"\"Dari Persian\""},"fa":{"keys":"thvsd nvd","text":"فارسی دری","note":"\"Dari Persian\""}}

    <Examples>
        <Example ID="prs" Keys="t h v s d space n v d" Text="فارسی دری" Note="\"Dari Persian\"" />
        <Example ID="pes" Keys="t h v s d space n v d" Text="فارسی دری" Note="\"Dari Persian\"" />
        <Example ID="fa" Keys="t h v s d space n v d" Text="فارسی دری" Note="\"Dari Persian\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
el_dinka
{"din-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"},"dip-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"},"diw-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"},"dib-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"},"dks-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"},"dik-Latn":{"keys":"Thuxqja;q","text":"Thuɔŋjäŋ","note":"Name of language"}}

    <Examples>
        <Example ID="din-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
        <Example ID="dip-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
        <Example ID="diw-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
        <Example ID="dib-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
        <Example ID="dks-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
        <Example ID="dik-Latn" Keys="T h u x q j a ; q" Text="Thuɔŋjäŋ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
galaxie_greek_positional
{"grc-Grek":{"keys":"e]davkrusen o[[ I]hsou~s ","text":"ἐδάκρυσεν ὁ Ἰησοῦς ","note":"\"Jesus wept\", John 11:35; note final sigma entered using s then spacebar"},"el":{"keys":"edakrusen o Ihsous ","text":"εδακρυσεν ο Ιησους ","note":"\"Jesus wept\", John 11:35; note final sigma entered using s then spacebar"}}

    <Examples>
        <Example ID="grc-Grek" Keys="e ] d a v k r u s e n space o [ space I ] h s o u ~ s space" Text="ἐδάκρυσεν ὁ Ἰησοῦς " Note="\"Jesus wept\", John 11:35; note final sigma entered using s then spacebar" />
        <Example ID="el" Keys="e d a k r u s e n space o space I h s o u s space" Text="εδακρυσεν ο Ιησους " Note="\"Jesus wept\", John 11:35; note final sigma entered using s then spacebar" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
galaxie_hebrew_positional
{"hbo-Hebr":{"keys":"b\\=r@av!yt","text":"בְּרֵאשִׁית","note":"\"In the beginning\" or \"Genesis\""}}

    <Examples>
        <Example ID="hbo-Hebr" Keys="b \\ = r @ a v ! y t" Text="בְּרֵאשִׁית" Note="\"In the beginning\" or \"Genesis\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_amharic
{"am":{"keys":"Tiena ysTlN","text":"ጤና ይስጥልኝ","note":"\"Hello\""}}

    <Examples>
        <Example ID="am" Keys="T i e n a space y s T l N" Text="ጤና ይስጥልኝ" Note="\"Hello\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_amharic_classic
{"am":{"keys":"Tiena ysTlN","text":"ጤና ይስጥልኝ","note":"\"Hello\""}}

    <Examples>
        <Example ID="am" Keys="T i e n a space y s T l N" Text="ጤና ይስጥልኝ" Note="\"Hello\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_amh_7
{"am":{"keys":"Tiena ysTlN","text":"ጤና ይስጥልኝ","note":"\"Hello\""}}

    <Examples>
        <Example ID="am" Keys="T i e n a space y s T l N" Text="ጤና ይስጥልኝ" Note="\"Hello\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_awngi_xamtanga
{"ahg":{"keys":"aKGue","text":"አኽⶓ","note":"A very frequent Awngi word"},"awn":{"keys":"aKGue","text":"አኽⶓ"},"xan":{"keys":"KmTaGe","text":"ኽምጣጘ","note":"Name of language"}}

    <Examples>
        <Example ID="ahg" Keys="a K G u e" Text="አኽⶓ" Note="A very frequent Awngi word" />
        <Example ID="awn" Keys="a K G u e" Text="አኽⶓ" Note="" />
        <Example ID="xan" Keys="K m T a G e" Text="ኽምጣጘ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_blin
{"byn-Ethi":{"keys":"blina","text":"ብሊና","note":"Name of language"}}

    <Examples>
        <Example ID="byn-Ethi" Keys="b l i n a" Text="ብሊና" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_harari
{"har":{"keys":"bereKu","text":"በረኹ","note":"\"Hello\""}}

    <Examples>
        <Example ID="har" Keys="b e r e K u" Text="በረኹ" Note="\"Hello\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_tigre
{"tig":{"keys":"tgrie","text":"ትግሬ","note":"Name of language"}}

    <Examples>
        <Example ID="tig" Keys="t g r i e" Text="ትግሬ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_tigrinya_eritrea
{"ti-ER":{"keys":"tgrNa","text":"ትግርኛ","note":"Name of language"}}

    <Examples>
        <Example ID="ti-ER" Keys="t g r N a" Text="ትግርኛ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_tigrinya_ethiopia
{"ti-ET":{"keys":"tgrNa","text":"ትግርኛ","note":"Name of language"}}

    <Examples>
        <Example ID="ti-ET" Keys="t g r N a" Text="ትግርኛ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
indonesia
{"id":{"keys":"Ini ibu Budi","text":"Ini ibu Budi","note":"\"Ini ibu Budi\""}}

    <Examples>
        <Example ID="id" Keys="I n i space i b u space B u d i" Text="Ini ibu Budi" Note="\"Ini ibu Budi\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
indonesian_suku
{"id":{"keys":"Ini ibu Budi","text":"Ini ibu Budi","note":"\"Ini ibu Budi\""}}

    <Examples>
        <Example ID="id" Keys="I n i space i b u space B u d i" Text="Ini ibu Budi" Note="\"Ini ibu Budi\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
jawa
{"id-Java":{"keys":"bahasaIndonesia","text":"ꦧꦲꦱ‌ꦆꦤ꧀ꦢꦺꦴꦤꦺꦱꦶꦪꦴ","note":"Name of the language"},"jv-Java":{"keys":"aksarajawa","text":"ꦲꦏ꧀ꦱꦫꦗꦮ","note":"Name of writing script"},"kaw-Java":{"keys":"kawi","text":
"ꦏꦮꦶ","note":"Name of the language"},"mad-Java":{"keys":"madura","text":"ꦩꦢꦸꦫ","note":"Name of the language"},"sas-Java":{"keys":"sasak","text":"ꦱꦱꦏ꧀","note":"Name of the language"},"su-Java":{"keys":"sunda",
"text":"ꦱꦸꦤ꧀ꦢ","note":"Name of the language"},"osi-Java":{"keys":"osing","text":"ꦲꦺꦴꦱꦶꦁ","note":"Name of the language"},"tes-Java":{"keys":"tengger","text":"ꦠꦺꦁꦒꦺꦂ","note":"Name of the language"}}

    <Examples>
        <Example ID="id-Java" Keys="b a h a s a I n d o n e s i a" Text="ꦧꦲꦱ‌ꦆꦤ꧀ꦢꦺꦴꦤꦺꦱꦶꦪꦴ" Note="Name of the language" />
        <Example ID="jv-Java" Keys="a k s a r a j a w a" Text="ꦲꦏ꧀ꦱꦫꦗꦮ" Note="Name of writing script" />
        <Example ID="kaw-Java" Keys="k a w i" Text="ꦏꦮꦶ" Note="Name of the language" />
        <Example ID="mad-Java" Keys="m a d u r a" Text="ꦩꦢꦸꦫ" Note="Name of the language" />
        <Example ID="sas-Java" Keys="s a s a k" Text="ꦱꦱꦏ꧀" Note="Name of the language" />
        <Example ID="su-Java" Keys="s u n d a" Text="ꦱꦸꦤ꧀ꦢ" Note="Name of the language" />
        <Example ID="osi-Java" Keys="o s i n g" Text="ꦲꦺꦴꦱꦶꦁ" Note="Name of the language" />
        <Example ID="tes-Java" Keys="t e n g g e r" Text="ꦠꦺꦁꦒꦺꦂ" Note="Name of the language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
khmer_angkor
{"km":{"keys":"xjmEr","text":"ខ្មែរ","note":"Name of language"}}

    <Examples>
        <Example ID="km" Keys="x j m E r" Text="ខ្មែរ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
korean_rr
{"ko":{"keys":"han guk ","text":"한국","note":"Name of language"}}

    <Examples>
        <Example ID="ko" Keys="h a n space g u k space" Text="한국" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
lao_2008_basic
{"lo":{"keys":"rklk]k;d=wfh","text":"ພາສາລາວກໍໄດ້","note":"\"Lao Language Okay\""}}

    <Examples>
        <Example ID="lo" Keys="r k l k ] k ; d = w f h" Text="ພາສາລາວກໍໄດ້" Note="\"Lao Language Okay\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
malar_malayalam
{"ml":{"keys":"malayaaLaM","text":"മലയാളം","note":"Name of language"}}

    <Examples>
        <Example ID="ml" Keys="m a l a y a a L a M" Text="മലയാളം" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
malar_malayalam_inscript
{"ml":{"keys":"cn/eNx","text":"മലയാളം","note":"Name of language"}}

    <Examples>
        <Example ID="ml" Keys="c n / e N x" Text="മലയാളം" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
malar_tirhuta
{"mai-Tirh":{"keys":"thirahuthaa","text":"𑒞𑒱𑒩𑒯𑒳𑒞𑒰","note":"Tirhuta"},"sa-Tirh":{"keys":"thira       huthaa","text":"𑒞𑒱𑒩𑒯𑒳𑒞𑒰","note":"Tirhuta"}}

    <Examples>
        <Example ID="mai-Tirh" Keys="t h i r a h u t h a a" Text="𑒞𑒱𑒩𑒯𑒳𑒞𑒰" Note="Tirhuta" />
        <Example ID="sa-Tirh" Keys="t h i r a h u t h a a" Text="𑒞𑒱𑒩𑒯𑒳𑒞𑒰" Note="Tirhuta" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
mozhi_malayalam
{"ml":{"keys":"malayaaLam","text":"മലയാളം","note":"Name of language"}}

    <Examples>
        <Example ID="ml" Keys="m a l a y a a L a m" Text="മലയാളം" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
gff_gurage_and_amharic
{"am":{"keys":"Tiena ysTlN","text":"ጤና ይስጥልኝ","note":"\"Hello\""}}

    <Examples>
        <Example ID="am" Keys="T i e n a space y s T l N" Text="ጤና ይስጥልኝ" Note="\"Hello\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
qwerty_farang
{"th":{"keys":"[[[aassssaaOzy","text":"ภาษาไทย","note":"Thai language"}}

release/q/qwerty_farang/qwerty_farang.keyboard_info: This example seems to be malformed
------------------------------------------------------------------------------------------------------------------------------------
russian_mnemonic_r
{"ru":{"keys":"Russkij  qzyk","text":"Русский язык","note":"Name of language"}}

    <Examples>
        <Example ID="ru" Keys="R u s s k i j space space q z y k" Text="Русский язык" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_aer
{"aeq-Arab":{"keys":"aur","text":"آئر","note":"Name of language"}}

    <Examples>
        <Example ID="aeq-Arab" Keys="a u r" Text="آئر" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_arabic
{"arb-Arab":{"keys":"erbi","text":"عربی","note":"Name of language"}}

    <Examples>
        <Example ID="arb-Arab" Keys="e r b i" Text="عربی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_balti
{"bft-Arab-PK":{"keys":"blti","text":"بلتی","note":"Name of language"}}

    <Examples>
        <Example ID="bft-Arab-PK" Keys="b l t i" Text="بلتی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_brahui
{"brh-Arab":{"keys":"braowUi","text":"براہوئی","note":"Name of language"}}

    <Examples>
        <Example ID="brh-Arab" Keys="b r a o w U i" Text="براہوئی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_brahui_latin
{"brh-Latn":{"keys":"brahui","text":"brahui","note":"Name of language"}}

    <Examples>
        <Example ID="brh-Latn" Keys="b r a h u i" Text="brahui" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_burushaski
{"bsk-Arab":{"keys":"brwxski","text":"بروشسکی","note":"Name of language"}}

    <Examples>
        <Example ID="bsk-Arab" Keys="b r w x s k i" Text="بروشسکی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_dameli
{"dml-Arab":{"keys":" dmili ","text":"دمیلی","note":"Name of language"}}

    <Examples>
        <Example ID="dml-Arab" Keys="space d m i l i space" Text="دمیلی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_dhatki
{"mki-Arab":{"keys":"DaHTk>","text":"ڈاھٹکيِ","note":"Name of language"}}

    <Examples>
        <Example ID="mki-Arab" Keys="D a H T k >" Text="ڈاھٹکيِ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_dogri
{"dgo-Arab-PK":{"keys":"Dwgri","text":"ڈوگری","note":"Name of language"}}

    <Examples>
        <Example ID="dgo-Arab-PK" Keys="D w g r i" Text="ڈوگری" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_gawar_bati
{"gwt-Arab":{"keys":"gwarbti","text":"گواربتی","note":"Name of language"}}

    <Examples>
        <Example ID="gwt-Arab" Keys="g w a r b t i" Text="گواربتی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_gawri
{"gwc-Arab":{"keys":"gawWri","text":"گاؤری","note":"Name of language"}}

    <Examples>
        <Example ID="gwc-Arab" Keys="g a w W r i" Text="گاؤری" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_hazaragi
{"haz-Arab":{"keys":"hzargi","text":"ھزارگی","note":"Name of language"}}

    <Examples>
        <Example ID="haz-Arab" Keys="h z a r g i" Text="ھزارگی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_hindko
{"hnd-Arab":{"keys":"ondkw ","text":"ہندکو","note":"Name of language"}}

    <Examples>
        <Example ID="hnd-Arab" Keys="o n d k w space" Text="ہندکو" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_indus_kohistani
{"mvy-Arab":{"keys":"anDs kwostani","text":"انڈس کوہستانی","note":"Name of language"}}

    <Examples>
        <Example ID="mvy-Arab" Keys="a n D s space k w o s t a n i" Text="انڈس کوہستانی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_kalasha
{"kls-Arab":{"keys":"kalaxo","text":"کالاشہ","note":"Name of language"}}

    <Examples>
        <Example ID="kls-Arab" Keys="k a l a x o" Text="کالاشہ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_kashmiri
{"ks-Arab":{"keys":"kxmiri","text":"کشمیری","note":"Name of language"}}

    <Examples>
        <Example ID="ks-Arab" Keys="k x m i r i" Text="کشمیری" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_kashmir_shina
{"scl-Arab-IN":{"keys":"xina","text":"شینا","note":"Name of language"}}

    <Examples>
        <Example ID="scl-Arab-IN" Keys="x i n a" Text="شینا" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_khowar
{"khw-Arab":{"keys":"khwar","text":"کھوار","note":"Name of language"}}

    <Examples>
        <Example ID="khw-Arab" Keys="k h w a r" Text="کھوار" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_marwari
{"mve-Arab":{"keys":"marwaRi","text":"مارواڑی","note":"Name of language"}}

    <Examples>
        <Example ID="mve-Arab" Keys="m a r w a R i" Text="مارواڑی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_munji
{"mnj-Arab":{"keys":"mnji","text":"منجی","note":"Name of language"}}

    <Examples>
        <Example ID="mnj-Arab" Keys="m n j i" Text="منجی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_oadki
{"odk-Arab":{"keys":"aw`|IQ","text":"اوڏڪِي","note":"Name of language"}}

    <Examples>
        <Example ID="odk-Arab" Keys="a w ` | I Q" Text="اوڏڪِي" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_ormuri
{"oru-Arab":{"keys":"armRi ","text":"ارمڑی","note":"Name of language"}}

    <Examples>
        <Example ID="oru-Arab" Keys="a r m R i space" Text="ارمڑی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_pahari
{"phr-Arab":{"keys":"poaRi","text":"پہاڑی","note":"Name of language"}}

    <Examples>
        <Example ID="phr-Arab" Keys="p o a R i" Text="پہاڑی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_palula
{"phl-Arab":{"keys":"palwlo","text":"پالولہ","note":"Name of language"}}

    <Examples>
        <Example ID="phl-Arab" Keys="p a l w l o" Text="پالولہ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_parkari_koli
{"kvx-Arab":{"keys":"prkari kwli","text":"پرکاری کولی","note":"Name of language"}}

    <Examples>
        <Example ID="kvx-Arab" Keys="p r k a r i space k w l i" Text="پرکاری کولی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_pashai
{"psi-Arab":{"keys":"pxaUy","text":"پشائے","note":"Name of language"}}

    <Examples>
        <Example ID="psi-Arab" Keys="p x a U y" Text="پشائے" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_pashto
{"ps":{"keys":"pxtw","text":"پشتو","note":"Name of language"}}

    <Examples>
        <Example ID="ps" Keys="p x t w" Text="پشتو" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_saraiki
{"skr-Arab":{"keys":"sra[iki","text":"سرائیکی","note":"Name of language"}}

release/rac/rac_saraiki/rac_saraiki.keyboard_info: This example seems to be malformed
------------------------------------------------------------------------------------------------------------------------------------
rac_shina
{"scl-Arab-PK":{"keys":"xina","text":"شینا","note":"Name of language"}}

    <Examples>
        <Example ID="scl-Arab-PK" Keys="x i n a" Text="شینا" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_sindhi
{"sd-Arab":{"keys":"sndHi","text":"سندھی","note":"Name of language"}}

    <Examples>
        <Example ID="sd-Arab" Keys="s n d H i" Text="سندھی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_torwali
{"trw-Arab":{"keys":"twrwali","text":"توروالی","note":"Name of language"}}

    <Examples>
        <Example ID="trw-Arab" Keys="t w r w a l i" Text="توروالی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_urdu
{"ur":{"keys":"ardw ","text":"اردو","note":"Name of language"}}

    <Examples>
        <Example ID="ur" Keys="a r d w space" Text="اردو" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_ushojo
{"ush-Arab":{"keys":"awxwjw ","text":"اوشوجو","note":"Name of language"}}

    <Examples>
        <Example ID="ush-Arab" Keys="a w x w j w space" Text="اوشوجو" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_uyghur
{"ug-Arab":{"keys":"U~MG~rco","text":"ئۇيغۇرچە","note":"Name of language"}}

    <Examples>
        <Example ID="ug-Arab" Keys="U ~ M G ~ r c o" Text="ئۇيغۇرچە" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_wadiyara
{"kxp-Arab":{"keys":"wadiara","text":"وادیارا","note":"Name of language"}}

    <Examples>
        <Example ID="kxp-Arab" Keys="w a d i a r a" Text="وادیارا" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_wakhi
{"wbl-Arab":{"keys":"wKi ","text":"وخی","note":"Name of language"}}

    <Examples>
        <Example ID="wbl-Arab" Keys="w K i space" Text="وخی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_western_punjabi
{"pnb-Arab":{"keys":"pnjabi","text":"پنجابی","note":"Name of language"}}

    <Examples>
        <Example ID="pnb-Arab" Keys="p n j a b i" Text="پنجابی" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
rac_yidgha
{"ydg-Arab":{"keys":"idGa ","text":"یدغا","note":"Name of language"}}

    <Examples>
        <Example ID="ydg-Arab" Keys="i d G a space" Text="یدغا" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sabdalipi_assamese
{"as-IN":{"keys":"AsmExa","text":"অসমীয়া","note":"Name of language"}}

    <Examples>
        <Example ID="as-IN" Keys="A s m E x a" Text="অসমীয়া" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sylheti_nagri
{"syl-Sylo":{"keys":"Cilxi","text":"ꠍꠤꠟꠐꠤ","note":"Name of language"}}

    <Examples>
        <Example ID="syl-Sylo" Keys="C i l x i" Text="ꠍꠤꠟꠐꠤ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sil_brao
{"brb-Khmr":{"keys":"bRUv","text":"ប្រូវ","note":"Name of language"}}

    <Examples>
        <Example ID="brb-Khmr" Keys="b R U v" Text="ប្រូវ" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sil_bunong
{"cmo-Khmr":{"keys":"FUn,g","text":"ឞូន៝ង","note":"Name of language"}}

    <Examples>
        <Example ID="cmo-Khmr" Keys="F U n , g" Text="ឞូន៝ង" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sil_yoruba_bar
{"yo-Latn":{"keys":" Xjx] I[[zv]gun. Qx|qx|.","text":"O̩jó̩ Ìs̩é̩gun. GBō̩gbō̩","note":"\"Tuesday. All.\""}}

    <Examples>
        <Example ID="yo-Latn" Keys="space X j x ] space I [ z v ] g u n . space Q x | q x | ." Text="O̩jó̩ Ìs̩é̩gun. GBō̩gbō̩" Note="\"Tuesday. All.\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
sil_yoruba_dot
{"yo-Latn":{"keys":" Xjx] I[[zv]gun. Qx|qx|.","text":"Ọjọ́ Ìṣẹ́gun. GBọ̄gbọ̄.","note":"\"Tuesday. All.\""}}

    <Examples>
        <Example ID="yo-Latn" Keys="space X j x ] space I [ z v ] g u n . space Q x | q x | ." Text="Ọjọ́ Ìṣẹ́gun. GBọ̄gbọ̄." Note="\"Tuesday. All.\"" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
thamizha_anjal_paangu
{"ta":{"keys":"thamiz","text":"தமிழ்","note":"Name of language"}}

    <Examples>
        <Example ID="ta" Keys="t h a m i z" Text="தமிழ்" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
thamizha_bamini
{"ta":{"keys":"jkpo;","text":"தமிழ்","note":"Name of language"}}

    <Examples>
        <Example ID="ta" Keys="j k p o ;" Text="தமிழ்" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
tibetan_direct_input
{"dz":{"keys":"rJ*o, [[","text":"རྫོང་ཁ","note":"Name of language"},"bo-Tibt":{"keys":"bod sa  +k da ","text":"བོད་སྐད","note":"Name of language"}}

    <Examples>
        <Example ID="dz" Keys="r J * o , space [" Text="རྫོང་ཁ" Note="Name of language" />
        <Example ID="bo-Tibt" Keys="b o d space s a space space plus k space d a space" Text="བོད་སྐད" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
tibetan_ewts
{"bo-Tibt":{"keys":"bod sa  +k da ","text":"བོད་སྐད","note":"Name of language"}}

    <Examples>
        <Example ID="bo-Tibt" Keys="b o d space s a space space plus k space d a space" Text="བོད་སྐད" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
vm_tamil_modular
{"ta":{"keys":"yehxf","text":"தமிழ்","note":"Name of language"}}

    <Examples>
        <Example ID="ta" Keys="y e h x f" Text="தமிழ்" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
vm_tamil_typewriter
{"ta":{"keys":"jkpH;","text":"தமிழ்","note":"Name of language"}}

    <Examples>
        <Example ID="ta" Keys="j k p H ;" Text="தமிழ்" Note="Name of language" />
      </Examples>
------------------------------------------------------------------------------------------------------------------------------------
```
Converts keyboard_info description from HTML to Markdown and adds into
the corresponding package.
@mcdurdin mcdurdin marked this pull request as ready for review May 30, 2024 23:01
@mcdurdin
Copy link
Member Author

mcdurdin commented May 31, 2024

The following file shows potentially consequential differences between master and staging-17.0. It's 40,000 lines long, and I have identified one issue already:

Given this, I will not rush this merge, sorry...

Initial analysis

Unimportant changes:

  • ### list (kmp file list): 19 inconsequential differences
  • ### kvks: 1 difference, in Khmer Angkor, legitimate version change

Possibly significant changes, needing careful review:

@mcdurdin
Copy link
Member Author

mcdurdin commented Jun 1, 2024

  • ### kmn: 95 differences -- needs careful review
  • ### js: 91 differences, mostly correlating with kmn, as expected

Many of these are due to issues in kmcmpdll.dll/compiler.cpp:cmpkeys, fixed in keymanapp/keyman#8388, available in release 17.0.114-alpha. This fix was not back ported to 16.0 because it was not consequential in terms of the operation of keyboards, and only impacted comparison with sorts from other C++ compilers.

I am now rebuilding the master with kmcmpdll 17.0.114, will re-run the diff and review.

@mcdurdin
Copy link
Member Author

mcdurdin commented Jun 1, 2024

Some keyboards are listed with different platform support. Keyman Developer 16 did not always report this consistently, as it 'guessed' on mobile keyboards when a .js was being produced. Also, a few keyboards had inconsistent information in their .keyboard_info, e.g. kbdsn1. v17 is more consistent on matching the &TARGETS store. These 122 keyboards are impacted:

Keyboard Platform Add/Remove Level
aramaic_hebrew android remove full
aramaic_hebrew ios remove full
aramaic_hebrew mobileWeb remove full
athinkra_vai mobileWeb remove full
athinkra_vai_typewriter mobileWeb remove full
basic_kbdcherp android remove full
basic_kbdcherp ios remove full
basic_kbdcherp mobileWeb remove full
basic_kbdinuk2 mobileWeb remove full
basic_kbdiulat mobileWeb remove full
basic_kbdkhmr mobileWeb remove full
basic_kbdlt2 mobileWeb remove full
basic_kbdsors1 mobileWeb remove full
basic_kbdsw09 mobileWeb remove full
bj_cree_east_james_bay mobileWeb remove full
bj_cree_woods mobileWeb remove full
bj_mista_wasaha_cree mobileWeb remove full
bj_naskapi_classic mobileWeb remove full
coptic_greek android remove full
coptic_greek ios remove full
coptic_greek mobileWeb remove full
dene mobileWeb remove full
el_dari_clra mobileWeb remove full
el_harari_latin mobileWeb remove full
el_osmanya mobileWeb remove full
el_pan_sahelian mobileWeb remove full
engram mobileWeb remove full
esperuni mobileWeb remove full
fv_all desktopWeb add full
galaxie_greek_hebrew_mnemonic linux add full
galaxie_greek_hebrew_mnemonic macos add full
galaxie_greek_hebrew_positional desktopWeb add full
galaxie_greek_hebrew_positional mobileWeb add full
galaxie_hebrew_positional mobileWeb remove full
gandhari mobileWeb remove full
gff_amh_powerpack_7 linux add full
gff_geez mobileWeb remove full
gff_gurage_and_amharic android add full
gff_gurage_and_amharic desktopWeb add full
gff_gurage_and_amharic ios add full
gff_gurage_and_amharic mobileWeb add full
gff_harege_fidelat android remove basic
gff_harege_fidelat ios remove basic
gff_harege_fidelat mobileWeb remove basic
gff_harege_fidelat desktopWeb add full
gff_mesobe_fidelat android remove basic
gff_mesobe_fidelat ios remove basic
gff_mesobe_fidelat mobileWeb remove basic
gff_mesobe_fidelat desktopWeb add full
gondi_gunjala_inscript mobileWeb remove full
greekclassical mobileWeb remove full
hcesar mobileWeb remove full
idc_deseret mobileWeb remove full
ife_mn mobileWeb remove full
itrans_bengali android remove full
itrans_bengali ios remove full
itrans_bengali mobileWeb remove full
itrans_devanagari_hindi android remove full
itrans_devanagari_hindi ios remove full
itrans_devanagari_hindi mobileWeb remove full
itrans_devanagari_sanskrit_vedic android remove full
itrans_devanagari_sanskrit_vedic ios remove full
itrans_devanagari_sanskrit_vedic mobileWeb remove full
itrans_gujarati android remove full
itrans_gujarati ios remove full
itrans_gujarati mobileWeb remove full
itrans_gurmukhi android remove full
itrans_gurmukhi ios remove full
itrans_gurmukhi mobileWeb remove full
itrans_odia android remove full
itrans_odia ios remove full
itrans_odia mobileWeb remove full
kbdsn1 desktopWeb add full
kbdsn1 linux add full
kirat_rai_inscript mobileWeb remove full
lao_2008_basic android remove full
lao_2008_basic ios remove full
lao_2008_basic mobileWeb remove full
maltese mobileWeb remove full
manichaean mobileWeb remove full
meitei_legacy mobileWeb remove full
mozhi_malayalam android remove full
mozhi_malayalam ios remove full
mozhi_malayalam mobileWeb remove full
mro_phonetic mobileWeb remove full
multi_pak_phonetic android remove full
multi_pak_phonetic ios remove full
multi_pak_phonetic mobileWeb remove full
myancode_san android remove full
myancode_san ios remove full
myancode_san mobileWeb remove full
nlci_bengali_winscript android remove full
nlci_bengali_winscript ios remove full
nlci_bengali_winscript mobileWeb remove full
nlci_gujarati_winscript android remove full
nlci_gujarati_winscript ios remove full
nlci_gujarati_winscript mobileWeb remove full
nlci_gurmukhi_winscript android remove full
nlci_gurmukhi_winscript ios remove full
nlci_gurmukhi_winscript mobileWeb remove full
nlci_ipa mobileWeb remove full
nlci_kannada_winscript android remove full
nlci_kannada_winscript ios remove full
nlci_kannada_winscript mobileWeb remove full
nlci_malayalam_winscript android remove full
nlci_malayalam_winscript ios remove full
nlci_malayalam_winscript mobileWeb remove full
nlci_oriya_winscript android remove full
nlci_oriya_winscript ios remove full
nlci_oriya_winscript mobileWeb remove full
nlci_tamil_winscript android remove full
nlci_tamil_winscript ios remove full
nlci_tamil_winscript mobileWeb remove full
nlci_telugu_winscript android remove full
nlci_telugu_winscript ios remove full
nlci_telugu_winscript mobileWeb remove full
nobonob mobileWeb remove full
sabdalipi_assamese android remove full
sabdalipi_assamese ios remove full
sabdalipi_assamese mobileWeb remove full
santali_latin mobileWeb remove full
saraiki mobileWeb remove full
sil_busa android remove full
sil_busa ios remove full
sil_busa mobileWeb remove full
sil_cham_phonetic android remove full
sil_cham_phonetic ios remove full
sil_cham_phonetic mobileWeb remove full
sil_cipher_music mobileWeb remove full
sil_dzongkha mobileWeb remove full
sil_el_ethiopian_latin android remove full
sil_el_ethiopian_latin ios remove full
sil_el_ethiopian_latin mobileWeb remove full
sil_ethiopic android remove full
sil_ethiopic ios remove full
sil_ethiopic mobileWeb remove full
sil_ethiopic_power_g android remove full
sil_ethiopic_power_g ios remove full
sil_ethiopic_power_g mobileWeb remove full
sil_greek_polytonic android remove full
sil_greek_polytonic ios remove full
sil_greek_polytonic mobileWeb remove full
sil_hawaiian mobileWeb remove full
sil_hebr_grek_trans android remove full
sil_hebr_grek_trans ios remove full
sil_hebr_grek_trans mobileWeb remove full
sil_hmd_plrd android remove full
sil_hmd_plrd ios remove full
sil_hmd_plrd mobileWeb remove full
sil_indic_roman mobileWeb remove full
sil_kayah_kali android remove full
sil_kayah_kali ios remove full
sil_kayah_kali mobileWeb remove full
sil_kayah_latn mobileWeb remove full
sil_kayah_mymr mobileWeb remove full
sil_khmer android remove full
sil_khmer ios remove full
sil_khmer mobileWeb remove full
sil_khowar mobileWeb remove full
sil_lepcha mobileWeb remove full
sil_limbu_phonetic mobileWeb remove full
sil_limbu_typewriter mobileWeb remove full
sil_lisu_basic android remove full
sil_lisu_basic ios remove full
sil_lisu_basic mobileWeb remove full
sil_lisu_standard android remove full
sil_lisu_standard ios remove full
sil_lisu_standard mobileWeb remove full
sil_lpo_plrd mobileWeb remove full
sil_mali_azerty android remove full
sil_mali_azerty ios remove full
sil_mali_azerty mobileWeb remove full
sil_mali_qwertz android remove full
sil_mali_qwertz ios remove full
sil_mali_qwertz mobileWeb remove full
sil_moore mobileWeb remove full
sil_myanmar_mywinext mobileWeb remove full
sil_nigeria_dot android remove full
sil_nigeria_dot ios remove full
sil_nigeria_dot mobileWeb remove full
sil_nigeria_odd_vowels android remove full
sil_nigeria_odd_vowels ios remove full
sil_nigeria_odd_vowels mobileWeb remove full
sil_nigeria_underline android remove full
sil_nigeria_underline ios remove full
sil_nigeria_underline mobileWeb remove full
sil_pan_africa_mnemonic android remove full
sil_pan_africa_mnemonic ios remove full
sil_pan_africa_mnemonic mobileWeb remove full
sil_pan_africa_positional android remove full
sil_pan_africa_positional ios remove full
sil_pan_africa_positional mobileWeb remove full
sil_philippines android remove full
sil_philippines ios remove full
sil_philippines mobileWeb remove full
sil_tai_dam mobileWeb remove full
sil_tai_dam_lao mobileWeb remove full
sil_tai_dam_latin mobileWeb remove full
sil_tai_dam_typewriter android remove full
sil_tai_dam_typewriter ios remove full
sil_tai_dam_typewriter mobileWeb remove full
sil_tepehuan mobileWeb remove full
sil_tunisian android remove full
sil_tunisian ios remove full
sil_tunisian mobileWeb remove full
sil_ygp_plrd mobileWeb remove full
sil_yna_plrd mobileWeb remove full
sil_yupik_cyrillic mobileWeb remove full
sil_ywq_plrd mobileWeb remove full
sundanese_latin mobileWeb remove full
syriac_arabic android remove full
syriac_arabic ios remove full
syriac_arabic mobileWeb remove full
syriac_aramaic android remove full
syriac_aramaic ios remove full
syriac_aramaic desktopWeb add full
syriac_phonetic android remove full
syriac_phonetic ios remove full
syriac_phonetic mobileWeb remove full
tangsa_lakhum mobileWeb remove full
tem_kdh android remove basic
tem_kdh desktopWeb remove basic
tem_kdh ios remove basic
tem_kdh linux add full
tem_kdh mobileWeb add full
thamizha_anjal_paangu mobileWeb remove full
thamizha_bamini mobileWeb remove full
thamizha_new_typewriter mobileWeb remove full
thamizha_tamil99_ext mobileWeb remove full
vm_tamil desktopWeb add full
vm_tamil_modular mobileWeb remove full
vm_tamil_typewriter mobileWeb remove full

We may want to update the &TARGETS store in some of these keyboards to make them available on these removed platforms, as a separate project.

I wonder also about the bundle packages (e.g. galaxie_greek_hebrew_mnemonic) if there may be a separate issue to tackle here? It seems like we are adding support for web platforms but the bundled name will not be available in web.

@mcdurdin
Copy link
Member Author

mcdurdin commented Jun 2, 2024

Typo identified, minor:

# fv_nlekepmxcin.clean.diff
### keyboard_info
@ ["related","fv_nlha7kapmxtsin"]
- {"deprecates":false}
@ ["related","fv_nlha7kapxtsin"]
+ {"deprecates":false}

@mcdurdin
Copy link
Member Author

mcdurdin commented Jun 2, 2024

I have analyzed each of the file type changes. This is the final difference file with all the changes. The only relevant changes now are in the .keyboard_info files. This particular file includes many lines relating to font changes in the .keyboard_info, making the .keyboard_info consistent with the .kps. As far as I can tell, there are no issues with fonts, but am including this for reference in case of any future questions.

results.diff.txt

Here is a diff of just the relevant changes to .keyboard_info files, none of them very significant I think but could go for a tidy-up in a future PR:

# aramaic_hebrew.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# baybayin.clean.diff
@ ["authorName"]
- "Ilham Nurwansah"
------------------------------------------------------------------------------------------------------------------------
# bu_phonetic.clean.diff
@ ["encodings",["set"],{}]
- "ansi"
------------------------------------------------------------------------------------------------------------------------
# coptic_qwerty.clean.diff
@ ["authorName"]
- "Michael Everson"
------------------------------------------------------------------------------------------------------------------------
# deseret.clean.diff
@ ["authorName"]
- "Mr. Samuel Boylan"
------------------------------------------------------------------------------------------------------------------------
# el_dinka.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# el_naija.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# el_pan_sahelian.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# esperuni.clean.diff
@ ["authorName"]
- "Gyula Zsigri"
------------------------------------------------------------------------------------------------------------------------
# fv_all.clean.diff
@ ["helpLink"]
+ "https://help.keyman.com/keyboard/fv_all"
------------------------------------------------------------------------------------------------------------------------
# fv_diitiidatx.clean.diff
@ ["name"]
- "Diidiitidq"
+ "Diitiidatx"
------------------------------------------------------------------------------------------------------------------------
# fv_hlgaagilda_xaayda_kil.clean.diff
@ ["name"]
- "X̱aayda-X̱aad Kil"
+ "Xaayda-Xaad Kil"
------------------------------------------------------------------------------------------------------------------------
# fv_nlekepmxcin.clean.diff
@ ["related","fv_nlha7kapmxtsin"]
- {"deprecates":false}
@ ["related","fv_nlha7kapxtsin"]
+ {"deprecates":false}
------------------------------------------------------------------------------------------------------------------------
# fv_nlha7kapmxtsin.clean.diff
@ ["related","fv_nlha7kapmxtsin_kmw"]
+ {"deprecates":true}
------------------------------------------------------------------------------------------------------------------------
# fv_smalgyax.clean.diff
@ ["name"]
- "Sm'algya̱x"
+ "Sm’algya̱x"
------------------------------------------------------------------------------------------------------------------------
# fv_stlatlimxec.clean.diff
@ ["name"]
- "Sƛ̓aƛ̓imxəc"
+ "Sƛ̓áƛ̓imxec"
------------------------------------------------------------------------------------------------------------------------
# fv_taltan.clean.diff
@ ["name"]
- "Tāłtān"
+ "Tāłtān"
------------------------------------------------------------------------------------------------------------------------
# fv_tsekehne.clean.diff
@ ["name"]
- "Tsek'ehne"
+ "Tsek’ehne"
------------------------------------------------------------------------------------------------------------------------
# fv_tsilhqotin.clean.diff
@ ["name"]
- "Tŝilhqot'in"
+ "Tŝilhqot’in"
------------------------------------------------------------------------------------------------------------------------
# fv_xaislakala.clean.diff
@ ["name"]
- "X̄a'ʼislak̓ala"
+ "X̄a'’islak̓ala"
------------------------------------------------------------------------------------------------------------------------
# galaxie_greek_hebrew_positional.clean.diff
@ ["isRTL"]
+ true
+ "galaxie_hebrew_positional.js"
------------------------------------------------------------------------------------------------------------------------
# galaxie_greek_positional.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# geezbrhan.clean.diff
@ ["name"]
- "Ge'ez Berhan Keyboard"
+ "Ge'ez Berhan"
------------------------------------------------------------------------------------------------------------------------
# gff_amh_7.clean.diff
@ ["name"]
- "Amharic"
+ "GFF Amharic Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_amh_powerpack_7.clean.diff
@ ["license"]
- "freeware"
+ "mit"
@ ["name"]
- "GFF Amharic Language Keyboard + Font Power Pack"
+ "GFF Amharic Keyboard"
@ ["helpLink"]
+ "https://help.keyman.com/keyboard/gff_amh_powerpack_7"
------------------------------------------------------------------------------------------------------------------------
# gff_amharic.clean.diff
@ ["name"]
- "Amharic"
+ "GFF Amharic Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_amharic_classic.clean.diff
@ ["name"]
- "Amharic Classic"
+ "GFF Amharic Classic Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_awngi_xamtanga.clean.diff
@ ["name"]
- "Awngi \u0026 Xamtanga"
+ "GFF Awngi \u0026 Xamtanga Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_blin.clean.diff
@ ["name"]
- "GFF Blin (ብሊን)"
+ "GFF Blin Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_ethiopic.clean.diff
@ ["name"]
- "Ethiopic (Modern Geʾez)"
+ "GFF Ethiopic Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_ethiopic_7.clean.diff
@ ["helpLink"]
+ "https://help.keyman.com/keyboard/gff_ethiopic_7"
------------------------------------------------------------------------------------------------------------------------
# gff_gurage.clean.diff
@ ["name"]
- "Gurage"
+ "GFF Gurage Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_gurage_and_amharic.clean.diff
@ ["name"]
- "Gurage and Amharic Keyboards"
+ "Gurage and Amharic Keyboard Package"
------------------------------------------------------------------------------------------------------------------------
# gff_gurage_legacy.clean.diff
@ ["name"]
- "Gurage (Legacy)"
+ "GFF Legacy Gurage Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_harari.clean.diff
@ ["name"]
- "GFF ሐረሪ (Harari)"
+ "GFF Harari (ሐረሪ) Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_harege_fidelat.clean.diff
@ ["name"]
- "Harege Fidelat"
+ "GFF Harege Fidelat"
------------------------------------------------------------------------------------------------------------------------
# gff_mesobe_fidelat.clean.diff
@ ["name"]
- "Mesobe Fidelat"
+ "GFF Mesobe Fidelat"
------------------------------------------------------------------------------------------------------------------------
# gff_tigre.clean.diff
@ ["name"]
- "GFF Tigre (ትግሬ, ትግረ)"
+ "GFF Tigre Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_tigrinya_eritrea.clean.diff
@ ["name"]
- "Tigrinya (Er)"
+ "GFF Tigrinya-Eritrean Keyboard"
------------------------------------------------------------------------------------------------------------------------
# gff_tigrinya_ethiopia.clean.diff
@ ["name"]
- "Tigrinya (Et)"
+ "GFF Tigrinya-Ethiopia Keyboard"
------------------------------------------------------------------------------------------------------------------------
# idc_deseret.clean.diff
@ ["authorName"]
- "N. E. Davis"
+ "Illinois Deseret Consortium"
------------------------------------------------------------------------------------------------------------------------
# indigenous_nt.clean.diff
@ ["authorEmail"]
- "rajiv_rawat@gov.nt.ca"
@ ["authorName"]
- "Rajiv Rawat"
------------------------------------------------------------------------------------------------------------------------
# jawa.clean.diff
@ ["authorEmail"]
- "bennylin.idwiki@hotmail.com"
------------------------------------------------------------------------------------------------------------------------
# kayan.clean.diff
@ ["name"]
- "Kayǎn"
+ "kayan"
------------------------------------------------------------------------------------------------------------------------
# kbdsn1.clean.diff
@ ["authorName"]
- "Tavultesoft"
+ "Tavultesoft Pty Ltd"
@ ["name"]
- "Sinhala Basic"
+ "Sinhala"
@ ["packageIncludes",["set"],{}]
- "fonts"
------------------------------------------------------------------------------------------------------------------------
# khmer_angkor.clean.diff
@ ["version"]
- "1.3.1"
+ "1.4"
### kmn
store(&KEYBOARDVERSION) "1.3.1" 			      |	store(&KEYBOARDVERSION) "1.4" 
### kvks
@ ["phone","layer",["set"],{}]
- {"id":"numeric","row":[{"id":"1","key":[{"id":"K_1","sk":[{"id":"U_0031","text":"1"}],"text":"១"},{"id":"K_2","sk":[{"id":"U_0032","text":"2"}],"text":"២"},{"id":"K_3","sk":[{"id":"U_0033","text":"3"}],"text":"៣"},{"id":"K_4","sk":[{"id":"U_0034","text":"4"}],"text":"៤"},{"id":"K_5","sk":[{"id":"U_0035","text":"5"}],"text":"៥"},{"id":"K_6","sk":[{"id":"U_0036","text":"6"}],"text":"៦"},{"id":"K_7","sk":[{"id":"U_0037","text":"7"}],"text":"៧"},{"id":"K_8","sk":[{"id":"U_0038","text":"8"}],"text":"៨"},{"id":"K_9","sk":[{"id":"U_0039","text":"9"}],"text":"៩"},{"id":"K_0","sk":[{"id":"U_0030","text":"0"},{"id":"U_17D3","text":""}],"text":"០"}]},{"id":"2","key":[{"id":"U_0040","sk":[{"id":"U_00A9","text":"©"},{"id":"U_00AE","text":"®"}],"text":"@"},{"id":"U_0023","sk":[{"id":"U_2116","text":"№"},{"id":"U_007E","text":"~"}],"text":"#"},{"id":"U_17DB","sk":[{"id":"U_0024","text":"$"},{"id":"U_0E3F","text":"฿"},{"id":"U_00A2","text":"¢"},{"id":"U_00A3","text":"£"},{"id":"U_00A5","text":"¥"}],"text":"៛"},{"id":"U_0026","text":"\u0026"},{"id":"U_0025","sk":[{"id":"U_2030","text":"‰"},{"id":"U_2031","text":"‱"}],"text":"%"},{"id":"U_002B","sk":[{"id":"U_002D","text":"-"},{"id":"U_00D7","text":"×"},{"id":"U_00F7","text":"÷"},{"id":"U_00B1","text":"±"}],"text":"+"},{"id":"U_003D","sk":[{"id":"U_005F","text":"_"},{"id":"U_2260","text":"≠"}],"text":"="},{"id":"U_002A","sk":[{"id":"U_005E","text":"^"}],"text":"*"},{"id":"U_003F","sk":[{"id":"U_00BF","text":"¿"}],"text":"?"},{"id":"U_0021","sk":[{"id":"U_00A1","text":"¡"}],"text":"!"}]},{"id":"3","key":[{"id":"U_2018","sk":[{"id":"U_2019","text":"’"}],"text":"‘"},{"id":"U_201C","sk":[{"id":"U_201D","text":"”"}],"text":"“"},{"id":"U_00AB","sk":[{"id":"U_00BB","text":"»"}],"text":"«"},{"id":"U_002F","sk":[{"id":"U_005C","text":"\\"},{"id":"U_007C","text":"|"},{"id":"U_00A6","text":"¦"}],"text":"/"},{"id":"U_0028","sk":[{"id":"U_0029","text":")"},{"id":"U_005B","text":"["},{"id":"U_005D","text":"]"},{"id":"U_007B","text":"{"},{"id":"U_007D","text":"}"}],"text":"("},{"id":"U_17D9","sk":[{"id":"U_17DA","text":"៚"},{"id":"U_17DC","text":"ៜ"},{"id":"U_00A7","text":"§"},{"id":"U_00D8","text":"Ø"}],"text":"៙"},{"id":"U_17D7","text":"ៗ"},{"id":"U_003C","sk":[{"id":"U_2264","text":"≤"},{"id":"U_003E","text":"\u003e"},{"id":"U_2265","text":"≥"}],"text":"\u003c"},{"id":"U_17D6","sk":[{"id":"U_003A","text":":"},{"id":"U_003B","text":";"},{"id":"U_2026","text":"…"}],"text":"៖"},{"id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"4","key":[{"id":"K_LCONTROL","nextlayer":"default","sp":"2","text":"១២៣","width":"140"},{"id":"K_LOPT","sp":"1","text":"*Menu*","width":"120"},{"id":"K_SPACE","layer":"shift","text":"​","width":"555"},{"id":"K_PERIOD","sk":[{"id":"K_PERIOD","layer":"shift","text":"៕"},{"id":"U_0021","text":"!"},{"id":"U_003F","text":"?"}],"text":"។","width":"120"},{"id":"K_ENTER","sp":"1","text":"*Enter*","width":"140"}]}]}
- {"id":"default","row":[{"id":"1","key":[{"id":"K_Q","sk":[{"id":"K_Q","layer":"shift","text":"ឈ"},{"id":"T_17D2_1786","text":""},{"id":"T_17D2_1788","text":""}],"text":"ឆ"},{"id":"K_W","sk":[{"id":"K_W","layer":"shift","text":""}],"text":""},{"id":"K_E","sk":[{"id":"K_E","layer":"shift","text":""},{"id":"K_S","layer":"shift","text":""},{"id":"K_V","layer":"shift","text":""},{"id":"U_17AF","text":"ឯ"},{"id":"U_17B0","text":"ឰ"}],"text":""},{"id":"K_R","sk":[{"id":"T_17D2_179A","text":""},{"id":"U_17AB","text":"ឫ"},{"id":"U_17AC","text":"ឬ"}],"text":"រ"},{"id":"K_T","sk":[{"id":"K_T","layer":"shift","text":"ទ"},{"id":"T_17D2_178F","text":""},{"id":"T_17D2_1791","layer":"default","text":""}],"text":"ត"},{"id":"K_Y","sk":[{"id":"T_17D2_1799","text":""}],"text":"យ"},{"id":"K_U","sk":[{"id":"K_U","layer":"shift","text":""},{"id":"K_Y","layer":"shift","text":""},{"id":"U_17A7","text":"ឧ"},{"id":"U_17AA","layer":"shift","text":"ឪ"},{"id":"U_17A9","layer":"shift","text":"ឩ"},{"id":"U_17A8","text":"ឨ"}],"text":""},{"id":"K_I","sk":[{"id":"K_I","layer":"shift","text":""},{"id":"U_17A5","text":"ឥ"},{"id":"U_17A6","layer":"shift","text":"ឦ"}],"text":""},{"id":"K_O","sk":[{"id":"K_O","layer":"shift","text":""},{"id":"K_LBRKT","text":""},{"id":"K_LBRKT","layer":"shift","text":""},{"id":"K_COLON","layer":"shift","text":""},{"id":"U_17B1","text":"ឱ"},{"id":"U_17B2","text":"ឲ"},{"id":"U_17B3","layer":"shift","text":"ឳ"}],"text":""},{"id":"K_P","sk":[{"id":"K_P","layer":"shift","text":"ភ"},{"id":"T_17D2_1795","text":""},{"id":"T_17D2_1797","layer":"default","text":""}],"text":"ផ"}]},{"id":"2","key":[{"id":"K_A","sk":[{"id":"K_A","layer":"shift","text":""}],"text":"","width":"100"},{"id":"K_S","sk":[{"id":"T_17D2_179F","text":""},{"id":"U_179D","text":"ឝ"},{"id":"U_179E","text":"ឞ"}],"text":"ស"},{"id":"K_D","sk":[{"id":"K_D","layer":"shift","text":"ឌ"},{"id":"T_17D2_178A","text":""},{"id":"T_17D2_178C","layer":"default","text":""}],"text":"ដ"},{"id":"K_F","sk":[{"id":"K_F","layer":"shift","text":"ធ"},{"id":"T_17D2_1790","text":""},{"id":"T_17D2_1792","layer":"default","text":""}],"text":"ថ"},{"id":"K_G","sk":[{"id":"K_G","layer":"shift","text":"អ"},{"id":"T_17D2_1784","text":""},{"id":"T_17D2_17A2","layer":"default","text":""}],"text":"ង"},{"id":"K_H","sk":[{"id":"T_17D2_17A0","text":""},{"id":"K_H","layer":"shift","text":"ះ"},{"id":"U_17C8","text":"ៈ"}],"text":"ហ"},{"id":"K_J","layer":"shift","sk":[{"id":"T_17D2_1789","text":""}],"text":"ញ"},{"id":"K_K","sk":[{"id":"K_K","layer":"shift","text":"គ"},{"id":"T_17D2_1780","text":""},{"id":"T_17D2_1782","text":""}],"text":"ក"},{"id":"K_L","sk":[{"id":"K_L","layer":"shift","text":"ឡ"},{"id":"T_17D2_179B","text":""},{"id":"U_17AD","text":"ឭ"},{"id":"U_17AE","text":"ឮ"}],"text":"ល"},{"id":"K_COLON","text":""}]},{"id":"3","key":[{"id":"K_Z","sk":[{"id":"K_Z","layer":"shift","text":"ឍ"},{"id":"T_17D2_178B","text":""},{"id":"T_17D2_178D","layer":"default","text":""}],"text":"ឋ"},{"id":"K_X","sk":[{"id":"K_X","layer":"shift","text":"ឃ"},{"id":"T_17D2_1781","text":""},{"id":"T_17D2_1783","layer":"default","text":""}],"text":"ខ"},{"id":"K_C","sk":[{"id":"K_C","layer":"shift","text":"ជ"},{"id":"T_17D2_1785","text":""},{"id":"T_17D2_1787","layer":"default","text":""}],"text":"ច"},{"id":"K_V","sk":[{"id":"T_17D2_179C","text":""}],"text":"វ"},{"id":"K_B","sk":[{"id":"K_B","layer":"shift","text":"ព"},{"id":"T_17D2_1794","text":""},{"id":"T_17D2_1796","layer":"default","text":""}],"text":"ប"},{"id":"K_N","sk":[{"id":"K_N","layer":"shift","text":"ណ"},{"id":"T_17D2_1793","text":""},{"id":"T_17D2_178E","layer":"default","text":""}],"text":"ន"},{"id":"K_M","sk":[{"id":"T_17D2_1798","text":""},{"id":"K_M","layer":"shift","text":""}],"text":"ម"},{"id":"K_COMMA","sk":[{"id":"K_COMMA","layer":"shift","text":""},{"id":"K_6","layer":"shift","text":""},{"id":"K_7","layer":"shift","text":""},{"id":"K_8","layer":"shift","text":""},{"id":"K_HYPHEN","layer":"shift","text":""},{"id":"U_17D1","layer":"shift","text":""},{"id":"U_17DD","layer":"shift","text":""},{"id":"U_17CE","layer":"shift","text":""}],"text":""},{"id":"K_QUOTE","sk":[{"id":"K_QUOTE","layer":"shift","text":""},{"id":"K_SLASH","text":""}],"text":"","width":"100"},{"id":"K_BKSP","sp":"1","text":"*BkSp*","width":"100"}]},{"id":"4","key":[{"id":"K_NUMLOCK","nextlayer":"numeric","sp":"1","text":"១២៣","width":"140"},{"id":"K_LOPT","sp":"1","text":"*Menu*","width":"120"},{"id":"K_SPACE","sk":[{"id":"U_0020","layer":"default","text":" "}],"text":"​","width":"555"},{"id":"K_PERIOD","sk":[{"id":"K_PERIOD","layer":"shift","text":"៕"},{"id":"U_0021","text":"!"},{"id":"U_003F","text":"?"}],"text":"។","width":"120"},{"id":"K_ENTER","sp":"1","text":"*Enter*","width":"140"}]}]}
+ {"id":"numeric","row":[{"id":"1","key":[{"id":"K_1","sk":[{"id":"U_0031","text":"1"}],"text":"១"},{"id":"K_2","sk":[{"id":"U_0032","text":"2"}],"text":"២"},{"id":"K_3","sk":[{"id":"U_0033","text":"3"}],"text":"៣"},{"id":"K_4","sk":[{"id":"U_0034","text":"4"}],"text":"៤"},{"id":"K_5","sk":[{"id":"U_0035","text":"5"}],"text":"៥"},{"id":"K_6","sk":[{"id":"U_0036","text":"6"}],"text":"៦"},{"id":"K_7","sk":[{"id":"U_0037","text":"7"}],"text":"៧"},{"id":"K_8","sk":[{"id":"U_0038","text":"8"}],"text":"៨"},{"id":"K_9","sk":[{"id":"U_0039","text":"9"}],"text":"៩"},{"id":"K_0","sk":[{"id":"U_0030","text":"0"},{"id":"U_17D3","text":""}],"text":"០"}]},{"id":"2","key":[{"id":"U_0040","sk":[{"id":"U_00A9","text":"©"},{"id":"U_00AE","text":"®"}],"text":"@"},{"id":"U_0023","sk":[{"id":"U_2116","text":"№"},{"id":"U_007E","text":"~"}],"text":"#"},{"id":"U_17DB","sk":[{"id":"U_0024","text":"$"},{"id":"U_0E3F","text":"฿"},{"id":"U_00A2","text":"¢"},{"id":"U_00A3","text":"£"},{"id":"U_00A5","text":"¥"}],"text":"៛"},{"id":"U_0026","text":"\u0026"},{"id":"U_0025","sk":[{"id":"U_2030","text":"‰"},{"id":"U_2031","text":"‱"}],"text":"%"},{"id":"U_002B","sk":[{"id":"U_002D","text":"-"},{"id":"U_00D7","text":"×"},{"id":"U_00F7","text":"÷"},{"id":"U_00B1","text":"±"}],"text":"+"},{"id":"U_003D","sk":[{"id":"U_005F","text":"_"},{"id":"U_2260","text":"≠"}],"text":"="},{"id":"U_002A","sk":[{"id":"U_005E","text":"^"}],"text":"*"},{"id":"U_003F","sk":[{"id":"U_00BF","text":"¿"}],"text":"?"},{"id":"U_0021","sk":[{"id":"U_00A1","text":"¡"}],"text":"!"}]},{"id":"3","key":[{"id":"U_2018","sk":[{"id":"U_2019","text":"’"}],"text":"‘"},{"id":"U_201C","sk":[{"id":"U_201D","text":"”"}],"text":"“"},{"id":"U_00AB","sk":[{"id":"U_00BB","text":"»"}],"text":"«"},{"id":"U_002F","sk":[{"id":"U_005C","text":"\\"},{"id":"U_007C","text":"|"},{"id":"U_00A6","text":"¦"}],"text":"/"},{"id":"U_0028","sk":[{"id":"U_0029","text":")"},{"id":"U_005B","text":"["},{"id":"U_005D","text":"]"},{"id":"U_007B","text":"{"},{"id":"U_007D","text":"}"}],"text":"("},{"id":"U_17D9","sk":[{"id":"U_17DA","text":"៚"},{"id":"U_17DC","text":"ៜ"},{"id":"U_00A7","text":"§"},{"id":"U_00D8","text":"Ø"}],"text":"៙"},{"id":"U_17D7","text":"ៗ"},{"id":"U_003C","sk":[{"id":"U_2264","text":"≤"},{"id":"U_003E","text":"\u003e"},{"id":"U_2265","text":"≥"}],"text":"\u003c"},{"id":"U_17D6","sk":[{"id":"U_003A","text":":"},{"id":"U_003B","text":";"},{"id":"U_2026","text":"…"}],"text":"៖"},{"id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"4","key":[{"id":"K_LCONTROL","nextlayer":"default","sp":"2","text":"១២៣","width":"140"},{"id":"K_LOPT","sp":"1","text":"*Menu*","width":"120"},{"id":"K_SPACE","layer":"shift","text":"*Sp*","width":"555"},{"id":"K_PERIOD","sk":[{"id":"K_PERIOD","layer":"shift","text":"៕"},{"id":"U_0021","text":"!"},{"id":"U_003F","text":"?"}],"text":"។","width":"120"},{"id":"K_ENTER","sp":"1","text":"*Enter*","width":"140"}]}]}
+ {"id":"default","row":[{"id":"1","key":[{"id":"K_Q","sk":[{"id":"K_Q","layer":"shift","text":"ឈ"},{"id":"T_17D2_1786","text":""},{"id":"T_17D2_1788","text":""}],"text":"ឆ"},{"id":"K_W","sk":[{"id":"K_W","layer":"shift","text":""}],"text":""},{"id":"K_E","sk":[{"id":"K_E","layer":"shift","text":""},{"id":"K_S","layer":"shift","text":""},{"id":"K_V","layer":"shift","text":""},{"id":"U_17AF","text":"ឯ"},{"id":"U_17B0","text":"ឰ"}],"text":""},{"id":"K_R","sk":[{"id":"T_17D2_179A","text":""},{"id":"U_17AB","text":"ឫ"},{"id":"U_17AC","text":"ឬ"}],"text":"រ"},{"id":"K_T","sk":[{"id":"K_T","layer":"shift","text":"ទ"},{"id":"T_17D2_178F","text":""},{"id":"T_17D2_1791","layer":"default","text":""}],"text":"ត"},{"id":"K_Y","sk":[{"id":"T_17D2_1799","text":""}],"text":"យ"},{"id":"K_U","sk":[{"id":"K_U","layer":"shift","text":""},{"id":"K_Y","layer":"shift","text":""},{"id":"U_17A7","text":"ឧ"},{"id":"U_17AA","layer":"shift","text":"ឪ"},{"id":"U_17A9","layer":"shift","text":"ឩ"},{"id":"U_17A8","text":"ឨ"}],"text":""},{"id":"K_I","sk":[{"id":"K_I","layer":"shift","text":""},{"id":"U_17A5","text":"ឥ"},{"id":"U_17A6","layer":"shift","text":"ឦ"}],"text":""},{"id":"K_O","sk":[{"id":"K_O","layer":"shift","text":""},{"id":"K_LBRKT","text":""},{"id":"K_LBRKT","layer":"shift","text":""},{"id":"K_COLON","layer":"shift","text":""},{"id":"U_17B1","text":"ឱ"},{"id":"U_17B2","text":"ឲ"},{"id":"U_17B3","layer":"shift","text":"ឳ"}],"text":""},{"id":"K_P","sk":[{"id":"K_P","layer":"shift","text":"ភ"},{"id":"T_17D2_1795","text":""},{"id":"T_17D2_1797","layer":"default","text":""}],"text":"ផ"}]},{"id":"2","key":[{"id":"K_A","sk":[{"id":"K_A","layer":"shift","text":""}],"text":"","width":"100"},{"id":"K_S","sk":[{"id":"T_17D2_179F","text":""},{"id":"U_179D","text":"ឝ"},{"id":"U_179E","text":"ឞ"}],"text":"ស"},{"id":"K_D","sk":[{"id":"K_D","layer":"shift","text":"ឌ"},{"id":"T_17D2_178A","text":""},{"id":"T_17D2_178C","layer":"default","text":""}],"text":"ដ"},{"id":"K_F","sk":[{"id":"K_F","layer":"shift","text":"ធ"},{"id":"T_17D2_1790","text":""},{"id":"T_17D2_1792","layer":"default","text":""}],"text":"ថ"},{"id":"K_G","sk":[{"id":"K_G","layer":"shift","text":"អ"},{"id":"T_17D2_1784","text":""},{"id":"T_17D2_17A2","layer":"default","text":""}],"text":"ង"},{"id":"K_H","sk":[{"id":"T_17D2_17A0","text":""},{"id":"K_H","layer":"shift","text":"ះ"},{"id":"U_17C8","text":"ៈ"}],"text":"ហ"},{"id":"K_J","layer":"shift","sk":[{"id":"T_17D2_1789","text":""}],"text":"ញ"},{"id":"K_K","sk":[{"id":"K_K","layer":"shift","text":"គ"},{"id":"T_17D2_1780","text":""},{"id":"T_17D2_1782","text":""}],"text":"ក"},{"id":"K_L","sk":[{"id":"K_L","layer":"shift","text":"ឡ"},{"id":"T_17D2_179B","text":""},{"id":"U_17AD","text":"ឭ"},{"id":"U_17AE","text":"ឮ"}],"text":"ល"},{"id":"K_COLON","text":""}]},{"id":"3","key":[{"id":"K_Z","sk":[{"id":"K_Z","layer":"shift","text":"ឍ"},{"id":"T_17D2_178B","text":""},{"id":"T_17D2_178D","layer":"default","text":""}],"text":"ឋ"},{"id":"K_X","sk":[{"id":"K_X","layer":"shift","text":"ឃ"},{"id":"T_17D2_1781","text":""},{"id":"T_17D2_1783","layer":"default","text":""}],"text":"ខ"},{"id":"K_C","sk":[{"id":"K_C","layer":"shift","text":"ជ"},{"id":"T_17D2_1785","text":""},{"id":"T_17D2_1787","layer":"default","text":""}],"text":"ច"},{"id":"K_V","sk":[{"id":"T_17D2_179C","text":""}],"text":"វ"},{"id":"K_B","sk":[{"id":"K_B","layer":"shift","text":"ព"},{"id":"T_17D2_1794","text":""},{"id":"T_17D2_1796","layer":"default","text":""}],"text":"ប"},{"id":"K_N","sk":[{"id":"K_N","layer":"shift","text":"ណ"},{"id":"T_17D2_1793","text":""},{"id":"T_17D2_178E","layer":"default","text":""}],"text":"ន"},{"id":"K_M","sk":[{"id":"T_17D2_1798","text":""},{"id":"K_M","layer":"shift","text":""}],"text":"ម"},{"id":"K_COMMA","sk":[{"id":"K_COMMA","layer":"shift","text":""},{"id":"K_6","layer":"shift","text":""},{"id":"K_7","layer":"shift","text":""},{"id":"K_8","layer":"shift","text":""},{"id":"K_HYPHEN","layer":"shift","text":""},{"id":"U_17D1","layer":"shift","text":""},{"id":"U_17DD","layer":"shift","text":""},{"id":"U_17CE","layer":"shift","text":""}],"text":""},{"id":"K_QUOTE","sk":[{"id":"K_QUOTE","layer":"shift","text":""},{"id":"K_SLASH","text":""}],"text":"","width":"100"},{"id":"K_BKSP","sp":"1","text":"*BkSp*","width":"100"}]},{"id":"4","key":[{"id":"K_NUMLOCK","nextlayer":"numeric","sp":"1","text":"១២៣","width":"140"},{"id":"K_LOPT","sp":"1","text":"*Menu*","width":"120"},{"id":"K_SPACE","sk":[{"id":"U_0020","layer":"default","text":"*Sp*"}],"text":"*ZWSp*","width":"555"},{"id":"K_PERIOD","sk":[{"id":"K_PERIOD","layer":"shift","text":"៕"},{"id":"U_0021","text":"!"},{"id":"U_003F","text":"?"}],"text":"។","width":"120"},{"id":"K_ENTER","sp":"1","text":"*Enter*","width":"140"}]}]}
### js
    this.KBVER = "1.3.1";				      |	    this.KBVER = "1.4";
------------------------------------------------------------------------------------------------------------------------
# kmhmu_2008.clean.diff
@ ["packageIncludes",["set"],{}]
- "fonts"
------------------------------------------------------------------------------------------------------------------------
# lahu.clean.diff
@ ["authorName"]
- "Bob Prouty"
------------------------------------------------------------------------------------------------------------------------
# lazuri.clean.diff
@ ["authorName"]
+ ""
------------------------------------------------------------------------------------------------------------------------
# maltese.clean.diff
@ ["authorName"]
- "Gyula Zsigri"
------------------------------------------------------------------------------------------------------------------------
# multi_pak_phonetic.clean.diff
@ ["authorName"]
- "Zeeshan Hyder"
------------------------------------------------------------------------------------------------------------------------
# nko.clean.diff
@ ["authorName"]
- "Marc Durdin"
------------------------------------------------------------------------------------------------------------------------
# ntl_onekey.clean.diff
@ ["name"]
- "新傣文一键"
+ "NTL OneKey (新傣文一键)"
------------------------------------------------------------------------------------------------------------------------
# numanggang.clean.diff
@ ["helpLink"]
+ "https://help.keyman.com/keyboard/numanggang"
------------------------------------------------------------------------------------------------------------------------
# nw_iranian_latin.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# persian_phonetic.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# rac_dameli.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
+ "Rehmat Aziz Chitrali Linguist and Researcher at Khowar Academy Chitral  Pakistan"
------------------------------------------------------------------------------------------------------------------------
# rac_dogri.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
+ "Rehmat Aziz Chitrali Linguist and Researcher at Khowar Academy Chitral Pakistan"
@ ["name"]
- "Rachitrali-Dogri"
+ "Rachitrali-Dogri Keyman Keyboard"
------------------------------------------------------------------------------------------------------------------------
# rac_hindko.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
+ "Rehmat Aziz Chitrali Linguist and Researcher at Khowar Academy Chitral  Pakistan"
------------------------------------------------------------------------------------------------------------------------
# rac_indus_kohistani.clean.diff
@ ["name"]
- "Rachitrali-Indus-Kohistani"
+ "Rachitrali-Indus Kohistani"
------------------------------------------------------------------------------------------------------------------------
# rac_kalasha.clean.diff
@ ["authorEmail"]
- "rachitrali@yahoo.com and khowaracademy@yahoo.com"
+ "rachitrali@yahoo.com"
------------------------------------------------------------------------------------------------------------------------
# rac_kashmir_shina.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
------------------------------------------------------------------------------------------------------------------------
# rac_kashmiri.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
+ "Rehmat Aziz Chitrali Linguist and Researcher at Khowar Academy Pakistan"
------------------------------------------------------------------------------------------------------------------------
# rac_shina.clean.diff
@ ["name"]
- "Rachitrali-Shina"
+ "Rachitrali-Shina Keyman Keyboard"
------------------------------------------------------------------------------------------------------------------------
# rac_urdu.clean.diff
@ ["name"]
- "Rachitrali-Urdu"
+ "Rachitrali-Urdu Keyman Keyboard"
------------------------------------------------------------------------------------------------------------------------
# rac_wakhi.clean.diff
@ ["authorName"]
- "Rehmat Aziz Chitrali"
+ "Rehmat Aziz Chitrali Linguist and Researcher at Khowar Academy Chitral Pakistan"
------------------------------------------------------------------------------------------------------------------------
# sil_akebu.clean.diff
@ ["authorName"]
- "SIL Cameroon"
+ "Matthew Lee"
------------------------------------------------------------------------------------------------------------------------
# sil_greek_polytonic.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# sil_hebr_grek_trans.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_ipa.clean.diff
@ ["related","ipa93_km5","note"]
- "ipa93_km5 is a legacy non-Unicode keyboard. sil_ipa should be used in preference to ipa93_km5 in most cases."
@ ["related","ipa93_km5","deprecates"]
+ false
------------------------------------------------------------------------------------------------------------------------
# sil_nigeria_dot.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_nigeria_odd_vowels.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_nigeria_underline.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_nubian.clean.diff
@ ["authorName"]
- "SIL International"
+ "Lorna Priest Evans"
------------------------------------------------------------------------------------------------------------------------
# sil_philippines.clean.diff
@ ["authorName"]
- "Kåre J. Strømme, SIL Philippines"
+ "Kåre J. Strømme"
------------------------------------------------------------------------------------------------------------------------
# sil_senegal_krx_qwerty.clean.diff
@ ["authorName"]
+ ""
------------------------------------------------------------------------------------------------------------------------
# sil_tawallammat.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_tunisian.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sil_uganda_tanzania.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# sundanese_latin.clean.diff
@ ["helpLink"]
+ "https://help.keyman.com/keyboard/sundanese_latin"
------------------------------------------------------------------------------------------------------------------------
# syriac_arabic.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# syriac_aramaic.clean.diff
@ ["authorName"]
- "SIL International"
@ ["isRTL"]
+ true
+ "aramaic_hebrew.js"
------------------------------------------------------------------------------------------------------------------------
# syriac_phonetic.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# tainua.clean.diff
@ ["name"]
- "Tai Nua - 芒市傣文"
+ "Tai Nua"
------------------------------------------------------------------------------------------------------------------------
# tem_kdh.clean.diff
@ ["authorName"]
- "SIL International"
------------------------------------------------------------------------------------------------------------------------
# thamizha_anjal_paangu.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# thamizha_bamini.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# thamizha_new_typewriter.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# thamizha_tamil99_ext.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# tlahuica.clean.diff
@ ["authorName"]
+ ""
------------------------------------------------------------------------------------------------------------------------
# urdu_phonetic.clean.diff
@ ["authorName"]
- "Zeeshan Hyder"
------------------------------------------------------------------------------------------------------------------------
# vm_tamil_modular.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# vm_tamil_typewriter.clean.diff
@ ["packageIncludes",["set"],{}]
+ "fonts"
------------------------------------------------------------------------------------------------------------------------
# yezidi.clean.diff
@ ["authorEmail"]
- "hajisabri74@gmail.com, adilaezdeen1@gmail.com, ezidilangu@gmail.com"
+ "hajisabri74@gmail.com"
------------------------------------------------------------------------------------------------------------------------
# yiddish_pasekh.clean.diff
@ ["authorName"]
- "Zsigri Gyula"
------------------------------------------------------------------------------------------------------------------------
# yidgha.clean.diff
@ ["name"]
- "Yidgha"
+ "Yidgha Keyboard"
------------------------------------------------------------------------------------------------------------------------

LornaSIL
LornaSIL previously approved these changes Jun 2, 2024
Copy link
Contributor

@LornaSIL LornaSIL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RSLGTM

darcywong00
darcywong00 previously approved these changes Jun 2, 2024
Copy link
Contributor

@darcywong00 darcywong00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. Will want to update @keymanapp/kmc in package.json to get the 17.0.326 (from keymanapp/keyman#11634) when it becomes available

mcdurdin added 3 commits June 3, 2024 05:00
Also moves to npm ci instead of npm install for consistent versioning
@mcdurdin mcdurdin dismissed stale reviews from darcywong00 and LornaSIL via 91f6fdd June 3, 2024 01:01
Copy link
Contributor

@rc-swag rc-swag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RSLGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants