diff --git a/.gitignore b/.gitignore
index bd32d15..7c5442f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
confs
-raw_tables
+generated_tables
table
diff --git a/combine.py b/combine.py
index 7b51031..a21fd54 100644
--- a/combine.py
+++ b/combine.py
@@ -1,36 +1,45 @@
+#!/usr/bin/python3
+
import subprocess
import os
-from collections import defaultdict
+import csv
+import re
+import shutil
-
-
-headers = defaultdict(lambda: """KeyCode=mnptkswljiueoaAR
-Length=16
-Prompt=
-ConstructPhrase=
-[Data]
-""")
-
-headers["UCSUR"] = """KeyCode=mnptkswljiueoa()[]{}^*.:"
+KANSI_TABLE_HEADER = """KeyCode=mnptkswljiueoaAR
Length=16
Prompt=
ConstructPhrase=
[Data]
+. 。
+[ 「
+] 」
"""
-headers["nasin pi sitelen jelo"] = """KeyCode=mnptkswljiueoa[]"
+SITELEN_SELI_KIWEN_TABLE_HEADER = """KeyCode=mnptkswljiueoa()[]{}^*.:-_"
Length=16
Prompt=
ConstructPhrase=
[Data]
+_
+(
+)
+[
+]
+{
+}
+^
+*
+.
+:
+-
"""
-
def make_conf(name, filepath):
a = f"""[InputMethod]
-Name=toki pona - {name}
+Name=toki pona - sitelen Kansi({name})
LangCode=toki pona
Addon=table
Configurable=True
@@ -39,7 +48,7 @@ Configurable=True
File=table/{filepath}.dict
OrderPolicy=Fast
PageSize=10
-ExactMatch={"True" if name != "UCSUR" else "False"}
+ExactMatch=True
[Table/PrevPage]
0=Page_Up
@@ -62,28 +71,98 @@ ExactMatch={"True" if name != "UCSUR" else "False"}
with open(f"confs/{filepath}.conf", "w") as f:
f.write(a)
+
+# make the table dirs
+for i in ["generated_tables", "confs", "table"]:
+ try:
+ os.mkdir(i)
+ except FileExistsError as e:
+ pass
+
+
+print("Generating sitelen seli kiwen table...")
+
+data = open("sitelen_seli_kiwen_glyph_data.txt").read().split("
diff --git a/static_confs.a/toki_pona_nasin_pi_sitelen_jelo.conf b/static_confs.a/toki_pona_nasin_pi_sitelen_jelo.conf
new file mode 100644
index 0000000..194c342
--- /dev/null
+++ b/static_confs.a/toki_pona_nasin_pi_sitelen_jelo.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - nasin pi sitelen jelo
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_nasin_pi_sitelen_jelo.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=True
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs.a/toki_pona_sitelen_seli_kiwen.conf b/static_confs.a/toki_pona_sitelen_seli_kiwen.conf
new file mode 100644
index 0000000..004fdf2
--- /dev/null
+++ b/static_confs.a/toki_pona_sitelen_seli_kiwen.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - sitelen seli kiwen
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_ucsur.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=False
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs.a/toki_pona_toki_pona_script_dingbats.conf b/static_confs.a/toki_pona_toki_pona_script_dingbats.conf
new file mode 100644
index 0000000..e9cc177
--- /dev/null
+++ b/static_confs.a/toki_pona_toki_pona_script_dingbats.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - Toki Pona Script (dingbats)
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_toki_pona_script_dingbats.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=True
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs.a/toki_pona_ucsur.conf b/static_confs.a/toki_pona_ucsur.conf
new file mode 100644
index 0000000..c49bb5a
--- /dev/null
+++ b/static_confs.a/toki_pona_ucsur.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - UCSUR
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_ucsur.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=False
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs/toki_pona_nasin_pi_sitelen_jelo.conf b/static_confs/toki_pona_nasin_pi_sitelen_jelo.conf
new file mode 100644
index 0000000..194c342
--- /dev/null
+++ b/static_confs/toki_pona_nasin_pi_sitelen_jelo.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - nasin pi sitelen jelo
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_nasin_pi_sitelen_jelo.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=True
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs/toki_pona_sitelen_seli_kiwen.conf b/static_confs/toki_pona_sitelen_seli_kiwen.conf
new file mode 100644
index 0000000..86bf748
--- /dev/null
+++ b/static_confs/toki_pona_sitelen_seli_kiwen.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - UCSUR (sitelen seli kiwen font)
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_sitelen_seli_kiwen.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=False
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs/toki_pona_toki_pona_script_dingbats.conf b/static_confs/toki_pona_toki_pona_script_dingbats.conf
new file mode 100644
index 0000000..e9cc177
--- /dev/null
+++ b/static_confs/toki_pona_toki_pona_script_dingbats.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - Toki Pona Script (dingbats)
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_toki_pona_script_dingbats.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=True
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_confs/toki_pona_ucsur.conf b/static_confs/toki_pona_ucsur.conf
new file mode 100644
index 0000000..c49bb5a
--- /dev/null
+++ b/static_confs/toki_pona_ucsur.conf
@@ -0,0 +1,29 @@
+[InputMethod]
+Name=toki pona - UCSUR
+LangCode=toki pona
+Addon=table
+Configurable=True
+
+[Table]
+File=table/toki_pona_ucsur.dict
+OrderPolicy=Fast
+PageSize=10
+ExactMatch=False
+
+[Table/PrevPage]
+0=Page_Up
+
+[Table/NextPage]
+0=Page_Down
+
+[Table/Selection]
+0=F1
+1=F2
+2=F3
+3=F4
+4=F5
+5=F6
+6=F7
+7=F8
+8=F9
+9=F10
diff --git a/static_tables/toki_pona_nasin_pi_sitelen_jelo.txt b/static_tables/toki_pona_nasin_pi_sitelen_jelo.txt
new file mode 100644
index 0000000..f991c58
--- /dev/null
+++ b/static_tables/toki_pona_nasin_pi_sitelen_jelo.txt
@@ -0,0 +1,170 @@
+KeyCode=mnptkswljiueoa[]"
+Length=16
+Prompt=
+ConstructPhrase=
+[Data]
+a 🅰️
+akesi 🦎
+akesi 🐸
+ala ❌
+alasa 🏹
+ale 🌌
+anpa 🧎
+anpa 🙇
+ante 🔀
+anu 🤷
+awen ⚓
+e ⏩
+en 🤝
+esun 🛒
+ijo 🐚
+ike 😔
+ike 👎
+ilo 🔦
+insa 🗳️
+jaki 💩
+jan 🧑
+jelo 🍋
+jo 👜
+kala 🐟
+kala 🐙
+kalama 👏
+kama 🛬
+kasi 🌱
+ken 💪
+kepeken ✍️
+kili 🍎
+kiwen 💎
+ko 🍦
+kon 💨
+kule 🌈
+kulupu 👥
+kute 👂
+la ℹ️
+la 💁
+lape 😴
+laso ☘️
+lawa 👑
+len 🧣
+lete ❄️
+li ▶️
+lili 🐁
+linja 🧶
+lipu 🍁
+loje 👅
+lon ⏺️
+lon ✅
+lon 🫴
+luka 🖐️
+lukin 👀
+lupa 🚪
+ma 🏝️
+mama 🍼
+mani 🐮
+meli 👩
+meli 🚺
+mi 👇
+mi 🅿️
+mije 👨
+mije 🚹
+moku 🍜
+moli 😵
+monsi 🍑
+mu 🐽
+mun 🌙
+musi 🎭
+mute 👐
+nanpa #️⃣
+nasa 🌀
+nasin 🛤️
+nena 🗻
+ni ⬇️
+ni ⬆️
+ni ⬅️
+ni ➡️
+nimi 📛
+noka 🦵
+o 🅾️
+olin 💕
+ona 👈
+ona ♋️
+open 🎬
+pakala 💥
+pali 🏗️
+palisa 📏
+pan 🍞
+pana 🙌
+pi 📎
+pilin ❤️
+pimeja 🎱
+pini 🏁
+pini 🛑
+pipi 🐛
+poka 👯
+poki 📦
+pona 😌
+pona 👍
+pu 🧘
+sama ⚖️
+seli 🔥
+selo 🍌
+seme ❓
+sewi ☁️
+sijelo 🧍
+sike ⭕
+sin ✨
+sina 👆
+sina 6️⃣
+sinpin 🗿
+sitelen 🎨
+sitelen 🖼
+sona 🧠
+soweli 🦔
+suli 🐘
+suno ☀️
+supa 🛏️
+suwi 🍬
+tan ↩️
+taso 🚦
+taso 🚥
+tawa 🛫
+telo 💧
+tenpo 🕒
+toki 💬
+tomo 🏠
+tu ⏸️
+unpa 🍆
+uta 👄
+utala ⚔️
+utala 🆚
+walo 🐑
+wan 1️⃣
+waso 🐦
+wawa ⚡
+weka 🆑
+wile 🙏 🧲
+epiku 😁
+jasima 🪞 🪩
+kijetesantakalu 🦡
+kijetesantakalu 🦝
+kin *️⃣
+kipisi ✂️
+kokosila 🐊
+ku 🔬
+lanpan 🤳
+leko 🧱
+meso 😑
+misikeke 💊
+monsuta 👻
+n 🆖
+namako 🌶️
+oko 👁️
+soko 🍄
+tonsi ⚧️
+majuna 🪷
+majuna 💾
+majuna 🧓
+su 🧙
+su 🧵
+[ 🖌️
+] 🖌️
\ No newline at end of file
diff --git a/static_tables/toki_pona_toki_pona_script_dingbats.txt b/static_tables/toki_pona_toki_pona_script_dingbats.txt
new file mode 100644
index 0000000..821ad3e
--- /dev/null
+++ b/static_tables/toki_pona_toki_pona_script_dingbats.txt
@@ -0,0 +1,127 @@
+KeyCode=mnptkswljiueoaAR
+Length=16
+Prompt=
+ConstructPhrase=
+[Data]
+a ⍤︎
+akesi ⍡︎
+ala ∅︎
+ale ◉︎
+ali ◉︎
+anpa ↓︎
+ante ⎌︎
+anu ∨︎
+awen ⚓︎
+e ↱︎
+en &︎
+ijo ⚛︎
+ike ☹︎
+ilo ✄︎
+insa ⎆︎
+jaki ☣︎
+jan ⵅ︎
+jelo ▥︎
+jelo ■︎
+jo ⧈︎
+kala ᘙ︎
+kalama ♪︎
+kama ⧉︎
+kasi ⚘︎
+ken ✓︎
+kepeken ⚒︎
+kili ᴥ︎
+kin ◅︎
+kiwen ●︎
+ko ◍︎
+kon ⚐︎
+kule ▧︎
+kulupu ፨︎
+kute ✆︎
+la ⊏︎
+lape ⌤︎
+laso ▦︎
+laso ■︎
+lawa ♕︎
+len ♟︎
+lete ☃︎
+li ↴︎
+lili ▵︎
+linja ☡︎
+lipu ‿︎
+loje ▤︎
+loje ■︎
+lon ⍾︎
+luka ⌈︎
+lukin ∢︎
+lupa ◘︎
+ma ⏚︎
+mama ☝︎
+mani ¤︎
+meli ♀︎
+mi ⇊︎
+mije ♂︎
+moku ☕︎
+moli ☠︎
+monsi ↫︎
+mu ⍣︎
+mun ☾︎
+musi ☊︎
+mute ⚃︎
+nanpa ⋕︎
+nasa ⦼︎
+nasin ᔔ︎
+nena ♎︎
+ni ⇲︎
+nimi ⊟︎
+noka ⌊︎
+o ⚠︎
+oko ⚇︎
+olin ♡︎
+ona ⇆︎
+open ⍽︎
+pakala ☁︎
+pali ♠︎
+palisa ∕︎
+pana ✉︎
+pi ⟄︎
+pilin ❦︎
+pimeja ■︎
+pini ⟟︎
+pipi ⩷︎
+poka ⫖︎
+poki ⚱︎
+pona ☺︎
+sama ⊜︎
+seli ♨︎
+selo ⎋︎
+seme ⍰︎
+sewi ↑︎
+sijelo ♙︎
+sike ○︎
+sin ♲︎
+sina ⇈︎
+sinpin ⌸︎
+sitelen ✎︎
+sona ◬︎
+soweli ዥ︎
+suli ▽︎
+suno ☼︎
+supa –︎
+suwi ⍨︎
+tan ↤︎
+taso ◦︎
+tawa ⇥︎
+telo ☔︎
+tenpo ⌛︎
+toki ᑈ︎
+tomo ⌂︎
+tu ⚁︎
+unpa ♋︎
+uta ⍥︎
+utala ⚔︎
+walo ☐︎
+wan ⚀︎
+waso ⍢︎
+wawa ↯︎
+weka ⤣︎
+wile ❣︎
\ No newline at end of file
diff --git a/static_tables/toki_pona_ucsur.txt b/static_tables/toki_pona_ucsur.txt
new file mode 100644
index 0000000..1bacd3a
--- /dev/null
+++ b/static_tables/toki_pona_ucsur.txt
@@ -0,0 +1,158 @@
+KeyCode=mnptkswljiueoa()[]{}^*.:"-_
+Length=16
+Prompt=
+ConstructPhrase=
+[Data]
+_
+(
+)
+[
+]
+{
+}
+^
+*
+.
+:
+-
+a
+akesi
+ala
+alasa
+ale
+anpa
+ante
+anu
+awen
+e
+en
+esun
+ijo
+ike
+ilo
+insa
+jaki
+jan
+jelo
+jo
+kala
+kalama
+kama
+kasi
+ken
+kepeken
+kili
+kiwen
+ko
+kon
+kule
+kulupu
+kute
+la
+lape
+laso
+lawa
+len
+lete
+li
+lili
+linja
+lipu
+loje
+lon
+luka
+lukin
+lupa
+ma
+mama
+mani
+meli
+mi
+mije
+moku
+moli
+monsi
+mu
+mun
+musi
+mute
+nanpa
+nasa
+nasin
+nena
+ni
+nimi
+noka
+o
+olin
+ona
+open
+pakala
+pali
+palisa
+pan
+pana
+pi
+pilin
+pimeja
+pini
+pipi
+poka
+poki
+pona
+pu
+sama
+seli
+selo
+seme
+sewi
+sijelo
+sike
+sin
+sina
+sinpin
+sitelen
+sona
+soweli
+suli
+suno
+supa
+suwi
+tan
+taso
+tawa
+telo
+tenpo
+toki
+tomo
+tu
+unpa
+uta
+utala
+walo
+wan
+waso
+wawa
+weka
+wile
+namako
+kin
+oko
+kipisi
+leko
+monsuta
+tonsi
+jasima
+kijetesantakalu
+soko
+meso
+epiku
+kokosila
+lanpan
+n
+misikeke
+ku
+pake
+apeja
+majuna
+powe