Skip to content

Instantly share code, notes, and snippets.

@Saqoosha
Created January 27, 2026 05:38
Show Gist options
  • Select an option

  • Save Saqoosha/62443e7d3efb525d8e8f91695788d5f4 to your computer and use it in GitHub Desktop.

Select an option

Save Saqoosha/62443e7d3efb525d8e8f91695788d5f4 to your computer and use it in GitHub Desktop.
azooKey Desktop DvorakJP Custom Input Table
cno きょ
cnu きゅ
cna きゃ
ce
ci
a
xa
la
i
xi
li
u
wu
vu
xu
lu
e
xe
le
o
xo
lo
ka
ca
ga
xka
lka
ki
gi
ku
cu
gu
ke
ge
xke
lke
ko
co
go
sa
za
si
shi
zi
ji
su
zu
se
ze
so
zo
ta
da
ti
chi
di
tu
tsu
xtu
ltu
xtsu
ltsu
du
te
de
to
do
na
ni
nu
ne
no
ha
ba
pa
hi
bi
pi
hu
fu
bu
pu
he
be
pe
ho
bo
po
ma
mi
mu
me
mo
ya
xya
lya
yu
xyu
lyu
yo
xyo
lyo
ra
ri
ru
re
ro
wa
xwa
lwa
wyi
wye
wo
nn
ye いぇ
va ゔぁ
vi ゔぃ
ve ゔぇ
vo ゔぉ
kya きゃ
kyu きゅ
kye きぇ
kyo きょ
gya ぎゃ
gyu ぎゅ
gye ぎぇ
gyo ぎょ
qa くぁ
kwa くぁ
qwa くぁ
qi くぃ
kwi くぃ
qwi くぃ
qu くぅ
kwu くぅ
qwu くぅ
qe くぇ
kwe くぇ
qwe くぇ
qo くぉ
kwo くぉ
qwo くぉ
gwa ぐぁ
gwi ぐぃ
gwu ぐぅ
gwe ぐぇ
gwo ぐぉ
sha しゃ
sya しゃ
shu しゅ
syu しゅ
she しぇ
sye しぇ
sho しょ
syo しょ
ja じゃ
zya じゃ
jya じゃ
jyi じぃ
ju じゅ
zyu じゅ
jyu じゅ
je じぇ
zye じぇ
jye じぇ
jo じょ
zyo じょ
jyo じょ
swa すぁ
swi すぃ
swu すぅ
swe すぇ
swo すぉ
cha ちゃ
cya ちゃ
tya ちゃ
tyi ちぃ
cyi ちぃ
chu ちゅ
cyu ちゅ
tyu ちゅ
che ちぇ
cye ちぇ
tye ちぇ
cho ちょ
cyo ちょ
tyo ちょ
tsa つぁ
tsi つぃ
tse つぇ
tso つぉ
tha てゃ
thi てぃ
thu てゅ
the てぇ
tho てょ
twa とぁ
twi とぃ
twu とぅ
twe とぇ
two とぉ
dya ぢゃ
dyi ぢぃ
dyu ぢゅ
dye ぢぇ
dyo ぢょ
dha でゃ
dhi でぃ
dhu でゅ
dhe でぇ
dho でょ
dwa どぁ
dwi どぃ
dwu どぅ
dwe どぇ
dwo どぉ
nya にゃ
nyi にぃ
nyu にゅ
nye にぇ
nyo にょ
hya ひゃ
hyi ひぃ
hyu ひゅ
hye ひぇ
hyo ひょ
bya びゃ
byi びぃ
byu びゅ
bye びぇ
byo びょ
pya ぴゃ
pyi ぴぃ
pyu ぴゅ
pye ぴぇ
pyo ぴょ
fa ふぁ
hwa ふぁ
fwa ふぁ
fi ふぃ
hwi ふぃ
fwi ふぃ
fwu ふぅ
fe ふぇ
hwe ふぇ
fwe ふぇ
fo ふぉ
hwo ふぉ
fwo ふぉ
fya ふゃ
fyu ふゅ
fyo ふょ
mya みゃ
myi みぃ
myu みゅ
mye みぇ
myo みょ
rya りゃ
ryi りぃ
ryu りゅ
rye りぇ
ryo りょ
wi うぃ
we うぇ
wha うぁ
whi うぃ
whu
whe うぇ
who うぉ
bb っb
cc っc
dd っd
ff っf
gg っg
hh っh
jj っj
kk っk
ll っl
mm っm
pp っp
qq っq
rr っr
ss っs
tt っt
vv っv
ww っw
xx っx
yy っy
zz っz
ny ny
xn
zl
b' ばい
b, ぼう
b. べい
b; ばん
bj べん
bk ぶん
bn' びゃい
bn, びょう
bn. びぇい
bn; びゃん
bna びゃ
bne びぇ
bni びぃ
bnj びぇん
bnk びゅん
bno びょ
bnq びょん
bnu びゅ
bnx びぃん
bq ぼん
bx びん
c' かい
c, こう
c. けい
c; かん
cj けん
ck くん
cn' きゃい
cn, きょう
cn. きぇい
cn; きゃん
cne きぇ
cni きぃ
cnj きぇん
cnk きゅん
cnq きょん
cnx きぃん
cq こん
cx きん
d' だい
d, どう
d. でい
d; だん
dj でん
dk づん
dn' ぢゃい
dn, ぢょう
dn. ぢぇい
dn; ぢゃん
dna ぢゃ
dne ぢぇ
dni ぢぃ
dnj ぢぇん
dnk ぢゅん
dno ぢょ
dnq ぢょん
dnu ぢゅ
dnx ぢぃん
dq どん
dx ぢん
f' ふぁい
f, ふぉう
f. ふぇい
f; ふぁん
fj ふぇん
fk ふん
fna ふゃ
fne ふぇ
fni ふぃ
fno ふょ
fnu ふゅ
fq ふぉん
fx ふぃん
fye ふぇ
fyi ふぃ
g' がい
g, ごう
g. げい
g; がん
gj げん
gk ぐん
gn' ぎゃい
gn, ぎょう
gn. ぎぇい
gn; ぎゃん
gna ぎゃ
gne ぎぇ
gni ぎぃ
gnj ぎぇん
gnk ぎゅん
gno ぎょ
gnq ぎょん
gnu ぎゅ
gnx ぎぃん
gq ごん
gx ぎん
gyi ぎぃ
h' はい
h, ほう
h. へい
h; はん
hj へん
hk ふん
hn' ひゃい
hn, ひょう
hn. ひぇい
hn; ひゃん
hna ひゃ
hne ひぇ
hni ひぃ
hnj ひぇん
hnk ひゅん
hno ひょ
hnq ひょん
hnu ひゅ
hnx ひぃん
hq ほん
hx ひん
j' じゃい
j, じょう
j. じぇい
j; じゃん
jk じゅん
jq じょん
jx じん
kha きゃ
khe きぇ
khi きぃ
kho きょ
khu きゅ
ky' きゃい
ky, きょう
ky. きぇい
ky; きゃん
kyi きぃ
kyj きぇん
kyk きゅん
kyq きょん
kyx きぃん
lha
lho
lhu
lye
lyi
m' まい
m, もう
m. めい
m; まん
mj めん
mk むん
mn' みゃい
mn, みょう
mn. みぇい
mn; みゃん
mna みゃ
mne みぇ
mni みぃ
mnj みぇん
mnk みゅん
mno みょ
mnq みょん
mnu みゅ
mnx みぃん
mq もん
mx みん
n' ない
n, のう
n. ねい
n; なん
nh' にゃい
nh, にょう
nh. にぇい
nh; にゃん
nha にゃ
nhe にぇ
nhi にぃ
nhj にぇん
nhk にゅん
nho にょ
nhq にょん
nhu にゅ
nhx にぃん
nj ねん
nk ぬん
nq のん
nx にん
p' ぱい
p, ぽう
p. ぺい
p; ぱん
ph' ぴゃい
ph, ぴょう
ph. ぴぇい
ph; ぴゃん
pha ぴゃ
phe ぴぇ
phi ぴぃ
phj ぴぇん
phk ぴゅん
pho ぴょ
phq ぴょん
phu ぴゅ
phx ぴぃん
pj ぺん
pk ぷん
pna ぴゃ
pne ぴぇ
pni ぴぃ
pno ぴょ
pnu ぴゅ
pq ぽん
px ぴん
py, ぴょう
r' らい
r, ろう
r. れい
r; らん
rh' りゃい
rh, りょう
rh. りぇい
rh; りゃん
rha りゃ
rhe りぇ
rhi りぃ
rhj りぇん
rhk りゅん
rho りょ
rhq りょん
rhu りゅ
rhx りぃん
rj れん
rk るん
rq ろん
rx りん
s' さい
s, そう
s. せい
s; さん
sh' しゃい
sh, しょう
sh. しぇい
sh; しゃん
shj しぇん
shk しゅん
shq しょん
shx しぃん
sj せん
sk すん
sq そん
sx しん
syi しぃ
t' たい
t, とう
t. てい
t; たん
tch っch
tj てん
tk つん
tn' てゃい
tn, ちょう
tn. てぇい
tn; てゃん
tna ちゃ
tne ちぇ
tni ちぃ
tnj てぇん
tnk てゅん
tno ちょ
tnq てょん
tnu ちゅ
tnx てぃん
tq とん
tx ちん
w' わい
w; わん
xye
xyi
y' やい
y, よう
y. いぇい
y; やん
yi
yk ゆん
yq よん
z' ざい
z, ぞう
z. ぜい
z; ざん
zh' じゃい
zh, じょう
zh. じぇい
zh; じゃん
zha じゃ
zhe じぇ
zhi じぃ
zhj じぇん
zhk じゅん
zho じょ
zhq じょん
zhu じゅ
zhx じぃん
zj ぜん
zk ずん
zq ぞん
zx じん
n{composition-separator}
n{any character} ん{any character}

azooKey Desktop — DvorakJP Custom Input Table Setup

Background

azooKey Desktop for macOS has two independent keyboard settings:

  1. Keyboard Layout (Config.KeyboardLayout) — Controls physical key → character mapping via overrideKeyboard(withKeyboardNamed:). Setting this to "Dvorak" tells the OS to interpret key positions as Dvorak.
  2. Input Style (Config.InputStyle) — Controls romaji → kana conversion table. The default table is QWERTY-based.

These two settings are not linked. Setting Keyboard Layout to Dvorak does NOT change the romaji table. This means ci still maps to (sa-row) instead of (ka-row), which is the expected behavior for Dvorak users.

The Problem

In standard QWERTY romaji, C is an alias for some rows:

Input QWERTY Default Dvorak Expected
ca か (same)
ci
ce
cu く (same)
co こ (same)

On a Dvorak layout, K is in an awkward left-hand lower-row position, making C (right-hand upper row) the natural choice for the entire ka-row. The QWERTY convention of ci → し and ce → せ doesn't make sense for Dvorak users.

Solution: Custom Input Table with DvorakJP

azooKey supports custom input tables stored as TSV files at:

~/Library/Containers/dev.ensan.inputmethod.azooKeyMac/Data/Library/Application Support/azooKeyMac/CustomInputTable/custom_input_table.tsv

We merged the DvorakJP romaji table into the default azooKey romaji table.

Settings Required

  • Input Style: Custom (カスタム)
  • Keyboard Layout: Dvorak (or Dvorak - QWERTY ⌘)

What Was Changed

Base: azooKey Default Romaji Table (295 entries)

The default defaultRoman2Kana table from AzooKeyKanaKanjiConverter.

Added: DvorakJP Extensions (306 entries)

1. Ka-row C-key Override

ci → き  (was し)
ce → け  (was せ)

2. Youon N-substitute (拗音 N/H 代替)

Dvorak places Y on the left hand, so DvorakJP uses N or H as alternatives for palatalized sounds:

Row N-substitute Standard (also kept)
ka (C) cna→きゃ cnu→きゅ cno→きょ kya kyu kyo
ka (K) kha→きゃ khu→きゅ kho→きょ kya kyu kyo
sa sh* (standard) sha shu sho
ta tna→ちゃ tnu→ちゅ tno→ちょ tya tyu tyo
na nha→にゃ nhu→にゅ nho→にょ nya nyu nyo
ha hna→ひゃ hnu→ひゅ hno→ひょ hya hyu hyo
ma mna→みゃ mnu→みゅ mno→みょ mya myu myo
ra rha→りゃ rhu→りゅ rho→りょ rya ryu ryo
ga gna→ぎゃ gnu→ぎゅ gno→ぎょ gya gyu gyo
za zha→じゃ zhu→じゅ zho→じょ ja ju jo
da dna→ぢゃ dnu→ぢゅ dno→ぢょ dya dyu dyo
ba bna→びゃ bnu→びゅ bno→びょ bya byu byo
pa pna/pha→ぴゃ pnu/phu→ぴゅ pno/pho→ぴょ pya pyu pyo

3. Hatsuon Extensions (撥音拡張 〜ん)

Suffix keys for adding ん to a syllable:

Suffix Vowel Example
; あ段 c; → かん
j え段 cj → けん
k う段 ck → くん
x い段 cx → きん
q お段 cq → こん

Applies to all consonant rows (b, c, d, f, g, h, j, m, n, p, r, s, t, y, z).

4. Double Vowel Extensions (二重母音拡張)

Suffix Vowel pair Example
' 〜い c' → かい
. 〜えい c. → けい
, 〜おう c, → こう

Applies to all consonant rows.

Removed (3 entries)

Arrow key shortcuts that conflicted with DvorakJP z-row extensions:

Removed Reason
zh → ← Conflicts with zha→じゃ etc.
zj → ↓ Conflicts with zj→ぜん
zk → ↑ Conflicts with zk→ずん

zl → → was kept (no conflict in DvorakJP).

Removed After Testing (1 entry)

Removed Reason
n → ん azooKey uses greedy matching — n would immediately convert to , preventing ni→に, na→な, etc. The existing n{any character}→ん{any character} rule handles ん correctly.

Conflicts (kept azooKey defaults)

Key azooKey DvorakJP Reason kept
shi しぃ Standard し is correct
va ゔぁ ヴァ Hiragana preference
vi ゔぃ ヴィ Hiragana preference
ve ゔぇ ヴェ Hiragana preference
vo ゔぉ ヴォ Hiragana preference
vu Hiragana preference
tsa つぁ つゃ Standard つぁ
tso つぉ つょ Standard つぉ
lka Small kana preference
xka Small kana preference
lke Small kana preference
xke Small kana preference

File Locations

File Path
Custom table ~/Library/Containers/dev.ensan.inputmethod.azooKeyMac/Data/Library/Application Support/azooKeyMac/CustomInputTable/custom_input_table.tsv
Backup Same directory, custom_input_table.tsv.bak

References

Final Table Stats

  • Total entries: ~600
  • Base (azooKey default): 292
  • DvorakJP additions: ~306
  • Format: TSV (tab-separated, 2 columns) + 3 special rules
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment