Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

semitic-keyman

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

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.sh

To install kmc globally instead:

npm install -g @keymanapp/kmc

Install 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.

Generated sources

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.

Dictionary

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.sqlite

Pass --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.

Layout

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/V placeholder-vowel variants, , Ŧ/ŧ, Ž/ž, S̀/s̀, bracket variants / , and ḇ ḡ ḵ p̄ plus Ḇ Ḡ Ḵ P̄.
  • 123: ASCII numbers, punctuation, , and editorial brackets / .
  • diac: combining marks, with an ABC key 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 .

Data sources and attribution

The dictionary wordlist is derived from:

  • DULATA Dictionary of the Ugaritic Language in the Alphabetic Tradition. DULAT © 2015 by Koninklijke Brill nv, Leiden, The Netherlands.
  • UDBUgaritic 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.

Screenshots

These iOS screenshots show the installed keyboard in Keyman and the main long-press surfaces.

View Screenshot
Autocomplete can surface transliteration and cuneiform suggestions. Autocomplete suggestions with Ugaritic cuneiform
Main ABC layer with cuneiform and transliteration variants under h. ABC layer h long-press variants
v long-press variants, including vowel-placeholder diacritics and subscript . ABC layer v long-press variants
ʕ long-press variants on the main ABC layer. ABC layer ayin long-press variants
u long-press variants with the cuneiform sign and vowel diacritics. ABC layer u long-press variants
e long-press variants with schwa and vowel diacritics. ABC layer e long-press variants
123 layer long-press for angle bracket variants. Numeric layer angle bracket long-press
Full 123 layer with punctuation, , editorial brackets, and the diac key. Numeric layer layout
Diacritics layer with combining mark keys and ABC / 123 navigation. Diacritics layer layout
iOS Settings entry showing Keyman as the installed keyboard container. iOS Keyman keyboard entry

About

Keyman mobile keyboard for the transliteration of Semitic languages, especially Ugaritic. Writing messages to Baʿal has never been easier.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages