Keyman keyboard source for the Ugaritic Transliteration Keyboard package for iOS/Android/Web touch keyboards.
The installable iOS keyboard package is:
build/ugaritic_translit.kmp
The optional predictive-text dictionary package is:
build/dulat.uga.wordlist.model.kmp
Build with Keyman's compiler (requires Node.js). build.sh uses a global kmc if available and falls back to npx -y @keymanapp/kmc.
./build.shTo install kmc globally instead:
npm install -g @keymanapp/kmcInstall it on iPhone or Android by opening the .kmp file with the Keyman app, or from Keyman: Settings → Install From File.
Install both .kmp files to use the keyboard together with the DULAT autocomplete dictionary.
The keyboard sources (source/ugaritic_translit.kmn, .keyman-touch-layout, .kps, and the package readme/welcome pages) are generated by tools/generate_keyboard.py, and the lexical-model source (source/dulat.uga.wordlist.model.ts) by tools/generate_model.py. Edit the generators, not the generated files; CI fails if the committed files drift from the generator output. The cuneiform ↔ transliteration mapping shared by all generators lives in tools/ugaritic_map.py.
The dictionary is a Keyman wordlist lexical model for Ugaritic (uga). Its source TSV is generated from DULAT lemmas and forms, with UDB concordance counts used as frequencies. The DULAT and UDB databases are not part of this repository, so the committed source/dulat_wordlist.tsv is the canonical artifact; regenerating it requires local copies of the data:
python3 tools/generate_dictionary.py \
--dulat-db path/to/dulat_cache.sqlite \
--udb-db path/to/udb_cache.sqlitePass --concordance-json path/to/concordance.json instead of --udb-db to read UDB concordance counts from JSON.
The generated source/dulat_wordlist.tsv includes parallel suggestions for DULAT transliteration, UDB-style transliteration, and cuneiform spellings. This preserves the convention the user is typing: ảb, ab, and 𐎀𐎁 are separate suggestion rows rather than one normalized output. UDB concordance matching still normalizes DULAT ả ỉ ủ to a i u, and DULAT ʔ ʕ to UDB ʾ ʿ, when assigning frequencies.
UDB concordance words are included even when they are absent from DULAT. The generator adds DULAT-style forms for them and generates cuneiform counterparts from the transliteration map. Generic ʔ/ʾ falls back to 𐎀; explicit aleph vowels still map as ả/ỉ/ủ → 𐎀/𐎛/𐎜.
Dictionary lookup normalizes DULAT transliteration, UDB-style transliteration, and cuneiform to the same search key, so typing transliteration can surface both transliteration and cuneiform suggestions. If a DULAT form is absent from UDB concordance, its frequency is taken from the number of DULAT attestations for its entry.
Root articles such as /ʔ-b-d/ are not suggested as words, but their DULAT verbal forms are included from the forms table.
The keyboard is touch-only: it defines phone and tablet touch layouts and adds no rules for physical desktop keyboards.
- Language: Ugaritic (
uga). - Spacebar label:
Ugaritic - Transliteration. - Main layer: normal ASCII letters, plus visible
Tab,ʔ,ʕ, andø. - Shift layer: capital ASCII letters; shifted
.outputs>, shiftedʔoutputsʾ, and shiftedʕoutputsʿ. - Long-press: transliteration characters, including vowel variants, capital variants from shifted base letters,
v/Vplaceholder-vowel variants,ᵥ,Ŧ/ŧ,Ž/ž,S̀/s̀, bracket variants⟨/⟩, andḇ ḡ ḵ p̄plusḆ Ḡ Ḵ P̄. 123: ASCII numbers, punctuation,√, and editorial brackets⸢/⸣.diac: combining marks, with anABCkey to return to the main layer.
The layout requests Calibri first and falls back to the iOS system font stack. Combining-mark keys display a dotted circle, but output only the combining mark. The bracket keys are labeled ⌜ and ⌝ for font compatibility, but output ⸢ and ⸣.
The dictionary wordlist is derived from:
- DULAT — A Dictionary of the Ugaritic Language in the Alphabetic Tradition. DULAT © 2015 by Koninklijke Brill nv, Leiden, The Netherlands.
- UDB — Ugaritic Data Bank. UDB © Jesús-Luis Cunchillos, Juan-Pablo Vita, José-Ángel Zamora y Raquel Cervigón.
The code in this repository is MIT-licensed (see LICENSE); the lexical data remains under the rights of the holders above.
These iOS screenshots show the installed keyboard in Keyman and the main long-press surfaces.









