Input methods: Difference between revisions

From The Toaq Wiki
No edit summary
(Update links from kaıchuo to kaı)
 
(61 intermediate revisions by 8 users not shown)
Line 3: Line 3:
== Desktop computers ==
== Desktop computers ==
=== Compose key ===
=== Compose key ===
You can set up a [https://en.wikipedia.org/wiki/Compose_key compose key] on your computer, which will change the behavior of one of the keys on your keyboard to "compose" the next two keypresses into one character — for example {{Key|CapsLock}} {{Key|?}} {{Key|a}} becomes {{t|}}.
You can set up a [https://en.wikipedia.org/wiki/Compose_key compose key] on your computer, which will change the behavior of one of the keys on your keyboard to "compose" the next two keypresses into one character — for example {{Key|CapsLock}} {{Key|'}} {{Key|a}} becomes {{t|á}}. See [[Compose key]] for more information.


On Linux, this might not even involve installing anything! Look for "compose key" plus your distro name.
=== Kaı ===
This is a little tool originally by [[User:Lynn]] that runs in your browser [https://toaq.net/kai/ here]. You type something like {{Key|Kiai ji kato/ da}} (alternatively, {{Key|kato2}}) and it turns it into {{t|Kıaı jí káto da}}. (Wow! It knows {{t|jí}} is a pronoun and automatically adds {{Done|2}}.) The underdot ◌̣ is typed with a hyphen and {{t|Ꝡ}} with "V".


On Windows, [https://wincompose.info/ WinCompose] is pretty good.
=== vim ===
See [[Vim input]].
 
=== AutoHotkey (Windows) ===
Only the first paragraph of the following script is strictly necessary. The rest are just useful shortcuts.
 
To use, install [https://www.autohotkey.com/ AutoHotkey], copy the script to a text editor and save it as toaq.ahk, then double-click the file you saved.


Here's how to type Toaq-specific characters in the default ruleset:
{{collapsible|toaq.ahk|<pre style="height:300px">; Basic layout
:?*:vy::ꝡ
:?*:a2::á
:?*:a3::ä
:?*:a4::â
:?*:e2::é
:?*:e3::ë
:?*:e4::ê
:?*:ii::ı
:?*:i1::ı
:?*:i2::í
:?*:i3::ï
:?*:i4::î
:?*:o2::ó
:?*:o3::ö
:?*:o4::ô
:?*:u2::ú
:?*:u3::ü
:?*:u4::û
:?*:!!::̣
:?*:<<::«
:?*:>>::»
:?*:.<::‹
:?*:.>::›


{| class="wikitable"
; Pronouns
! Character || Combo
::ji::jí
|-
::suq::súq
| {{Tone|2}} || {{Key|'}} + vowel
::nhao::nháo
|-
::umo::úmo
| {{Tone|3}} || {{Key|"}} + vowel
::ime::íme
|-
::ama::áma
| {{Tone|4}} || {{Key|?}} + vowel
::suna::súna
|-
::suho::súho
| {{Tone|5}} || {{Key|^}} + vowel
::nhana::nhána
|-
::ho::hó
| {{Tone|6}} || {{Key|`}} + vowel
::maq::máq
|-
::hoq::hóq
| {{Tone|7}} || {{Key|~}} + vowel
::ta::tá
|-
::aq::áq
| dotless i ({{t|ı}}) || {{Key|.}} + {{Key|i}}
::cheq::chéq
|-
::hoa::hóa
| left quote ({{t|«}}) || {{Key|&lt;}} + {{Key|&lt;}}
::ha::há
|-
| right quote ({{t|»}}) || {{Key|&gt;}} + {{Key|&gt;}}
|}


=== Kảıchuo ===
; Determiners
This is a little tool by [[User:Lynn]] that runs in your browser, available [http://foldr.moe/kaichuo/ here]. You type something like {{Key|Kiai ji kato/ da}} and it turns it into {{t|Kỉaı jí káto da}}. (Wow! It knows {{t|jí}} is a pronoun and automatically adds {{Tone|2}}.)
::sa::sá
::tu::tú
::tuq::túq
::sia::sía
::ni::ní
::baq::báq
::hi::hí
::hu::hú
::ke::ké
::ja::já


Yell at her to add mobile support!
; Usually in T2
::moq::móq
::hoi::hóı


=== vim ===
; Always in T3
Copy the contents below into a file called <code>toaq.vim</code> inside a folder named <code>keymap</code> in your <code>.vim</code> directory (create it if it doesn’t exist). Then, in insert mode, you may use any of the two-keystroke “combinations” and have them replaced with accented letters on the fly. (See <code>:help mbyte-keymap</code> for more detailed information.)
::ju::jü
::la::lä
::na::nä
::kio::kïo


{{details|Toaq vim keymap|<pre>" toaq keymap
; vy-related shortcuts
" by uakci on 2022-06-23
::va::ꝡä
scriptencoding utf8
::ve::ꝡë
let b:keymap_name = "toaq"
::vo::ꝡo
loadkeymap
.i i
i ı
// /
'' '
\"\" \"
:: :
?? ?
^^ ^
`` `
\\\\ \\
~~ ~
.. .
.< «
.> »
.{ ‹
.} ›
./ ́
.' ́
." ̈
.: ̈
.? ̉
.^ ̂
.` ̀
.\ ̀
.~ ̃
/A Á
/U Ú
/I Í
/O Ó
/E É
/Y Ý
/a á
/u ú
/i í
/o ó
/e é
/y ý
'A Á
'U Ú
'I Í
'O Ó
'E É
'Y Ý
'a á
'u ú
'i í
'o ó
'e é
'y ý
\"A Ä
\"U Ü
\"I Ï
\"O Ö
\"E Ë
\"Y Ÿ
\"a ä
\"u ü
\"i ï
\"o ö
\"e ë
\"y ÿ
:A Ä
:U Ü
:I Ï
:O Ö
:E Ë
:Y Ÿ
:a ä
:u ü
:i ï
:o ö
:e ë
:y ÿ
?A Ả
?U Ủ
?I Ỉ
?O Ỏ
?E Ẻ
?Y Ỷ
?a ả
?u ủ
?i ỉ
?o ỏ
?e ẻ
?y ỷ
^A Â
^U Û
^I Î
^O Ô
^E Ê
^Y Ŷ
^a â
^u û
^i î
^o ô
^e ê
^y ŷ
`A À
`U Ù
`I Ì
`O Ò
`E È
`Y Ỳ
`a à
`u ù
`i ì
`o ò
`e è
`y ỳ
\\A À
\\U Ù
\\I Ì
\\O Ò
\\E È
\\Y Ỳ
\\a à
\\u ù
\\i ì
\\o ò
\\e è
\\y ỳ
~A Ã
~U Ũ
~I Ĩ
~O Õ
~E Ẽ
~Y Ỹ
~a ã
~u ũ
~i ĩ
~o õ
~e ẽ
~y ỹ
</pre>}}
</pre>}}


Alternatively, for sporadic usage, you can enter Toaq characters using Ctrl+K followed by two keys: (see <code>:help digraph</code>)
=== US, intl. with dead keys ===
If you are on Linux, there is a keyboard option called "US, intl. with dead keys". The way you enter diacritics is the same as the compose key one. Unfortunately, {{t|Ꝡ}} is not on the layout.
 
=== XKB ===
Note that this requires editing a few other files, so remember to ''make backups of files you change''. Follow the format in the files in /usr/share/X11/xkb/rules/: base.lst, base.xml, evdev.lst, evdev.xml.


This layout, for QWERTY keyboards, also has diacritics for Gamma and Beta.
{| class="wikitable"
{| class="wikitable"
! Character || Combo
! ||Without underdot|| colspan="2" |With underdot
|-
|-
| {{Tone|2}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|'}}
!{{done|1}}
| style="background:#ccc" |
| colspan="2" |{{key|v}} {{key|vowel}}
|-
|-
| {{Tone|3}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|:}}
!{{done|2}}
|{{key|'}} {{key|vowel}}|| colspan="2" |{{key|'}} {{key|v}} {{key|vowel}}
|-
|-
| {{Tone|4}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|2}}
!{{done|3}}
|{{key|"}} {{key|vowel}}|| colspan="2" |{{key|"}} {{key|v}} {{key|vowel}}
|-
|-
| {{Tone|5}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|>}}
!{{done|4}}
|{{key|;}} {{key|vowel}}|| colspan="2" |{{key|;}} {{key|v}} {{key|vowel}}
|-
|-
| {{Tone|6}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|`}}
!{{T|Ꝡ ꝡ}}
| colspan="3" |{{Key|W}}, {{Key|w}}
|-
|-
| {{Tone|7}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|?}}
! colspan="2" style="text-align:center" |Old diacritics
! colspan="2" |Other
|-
|-
| dotless i ({{t|ı}}) || {{Key|Ctrl+K}} {{Key|.}} {{Key|i}}
!{{tone|1}}
|{{key|Shift}} {{key|x}} {{key|vowel}}
!{{t|}}
|{{key|x}}
|-
|-
| left quote ({{t|«}}) || {{Key|Ctrl+K}} {{Key|&lt;}} {{Key|&lt;}}
!{{tone|3old}}
|{{key|AltGr}} {{key|\}} {{key|vowel}}
!{{t|«}}
|{{key|[}}
|-
|-
| right quote ({{t|»}}) || {{Key|Ctrl+K}} {{Key|&gt;}} {{Key|&gt;}}
!{{tone|4}}
|{{key|:}} {{key|vowel}}
!{{t|»}}
|{{key|]}}
|-
!{{tone|6}}
|{{key|Shift}} {{key|v}} {{key|vowel}}
!{{t|‹}}
|{{key|<nowiki>{</nowiki>}}
|-
!{{tone|7}}
|{{key|AltGr}} {{key|<nowiki>|</nowiki>}} {{key|vowel}}
!{{t|›}}
|{{key|<nowiki>}</nowiki>}}
|}
|}
{{collapsible|XKB symbols file - /usr/share/X11/xkb/symbols/qtq|<pre>
default  partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {


=== AutoHotkey ===
    name[Group1]= "Toaqzu (Hóegua)";
[https://github.com/toaq/toaq.org/blob/master/toaq.ahk This official AutoHotkey script] will convert {{Key|a/}} into á, etc. Oh, it's actually outdated (has the old {{tone|3old}} instead of the new {{tone|3}}).


=== Kanakey ===
    key <TLDE> { [    grave, asciitilde ] };
[[User:Hoaqgio]] uses a custom Python script that can be found at https://github.com/toaq/kanakey. The way it works is that the script always runs in the background (you start it on login) and when you want to type Toaq, you type alt+; followed by the Toaq you want in the format of "Mai4 ji2 suq2 da.", and finally you just type ; alone. Then the script erases what you typed and replaces it with pretty Toaq. Unfortunately it has two pretty inconvenient issues, one of which is that it currently can't show an icon in the system tray to indicate whether the script is in "listening mode" or not (which means you can accidentally put it in listening mode and leave it there for a while) and the other of which is that if you have non-text data on your system clipboard at the time you try to use the script, it will simply crash. [[User:Hoaqgio]] recommends not using this unless you really have no better alternative!
    key <AE01> { [   1, exclam ] };
    key <AE02> { [   2, at ] };
    key <AE03> { [   3, numbersign ] };
    key <AE04> { [   4, dollar ] };
    key <AE05> { [   5, percent ] };
    key <AE06> { [   6, asciicircum ] };
    key <AE07> { [   7, ampersand ] };
    key <AE08> { [   8, asterisk ] };
    key <AE09> { [   9, parenleft ] };
    key <AE10> { [   0, parenright ] };
    key <AE11> { [     minus, underscore, endash, emdash ] };
    key <AE12> { [    equal, plus ] };
 
    key <AD01> { [   q, Q ] };
    key <AD02> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
                    [   UA761, UA760, w, W ] };
    key <AD03> { [   e, E ] };
    key <AD04> { [   r, R ] };
    key <AD05> { [   t, T ] };
    key <AD06> { [   y, Y ] };
    key <AD07> { [   u, U ] };
    key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
                    [ idotless, I, i, Iabovedot ] };
    key <AD09> { [   o, O ] };
    key <AD10> { [   p, P ] };
    key <AD11> { [ guillemotleft, U2039, bracketleft, braceleft ] };
    key <AD12> { [ guillemotright, U203A, bracketright, braceright ] };
 
    key <AC01> { [   a, A ] };
    key <AC02> { [   s, S ] };
    key <AC03> { [   d, D ] };
    key <AC04> { [   f, F ] };
    key <AC05> { [   g, G ] };
    key <AC06> { [   h, H ] };
    key <AC07> { [   j, J ] };
    key <AC08> { [   k, K ] };
    key <AC09> { [   l, L ] };
    key <AC10> { [ dead_circumflex, dead_hook, semicolon, colon ] };
    key <AC11> { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
 
    key <AB01> { [   z, Z ] };
    key <AB02> { [   rightsinglequotemark, dead_macron, x, X ] };
    key <AB03> { [   c, C ] };
    key <AB04> { [   dead_belowdot, dead_grave, v, V ] };
    key <AB05> { [   b, B ] };
    key <AB06> { [   n, N ] };
    key <AB07> { [   m, M ] };
    key <AB08> { [   comma, less ] };
    key <AB09> { [   period, greater ] };
    key <AB10> { [   slash, question ] };
 
    key <BKSL> { [   backslash, bar, dead_caron, dead_tilde ] };
   
    key <SPCE> { [   space, space, nobreakspace, nobreakspace ] };
   
  include "level3(ralt_switch)"
};
</pre>}}
You will also need add some Compose keys.
{{collapsible|XCompose definitions|<pre>
<dead_acute> <dead_belowdot> <a>            :"ạ́"
<dead_diaeresis> <dead_belowdot> <a>        :"ạ̈"
<dead_circumflex> <dead_belowdot> <a>        :"ậ"
<dead_acute> <dead_belowdot> <e>            :"ẹ́"
<dead_diaeresis> <dead_belowdot> <e>        :"ẹ̈"
<dead_circumflex> <dead_belowdot> <e>        :"ệ"
<dead_acute> <dead_belowdot> <idotless>      :"ị́"
<dead_diaeresis> <dead_belowdot> <idotless>  :"ị̈"
<dead_circumflex> <dead_belowdot> <idotless> :"ị̂"
<dead_acute> <dead_belowdot> <o>            :"ọ́"
<dead_diaeresis> <dead_belowdot> <o>        :"ọ̈"
<dead_circumflex> <dead_belowdot> <o>        :"ộ"
<dead_acute> <dead_belowdot> <u>            :"ụ́"
<dead_diaeresis> <dead_belowdot> <u>        :"ụ̈"
<dead_circumflex> <dead_belowdot> <u>        :"ụ̂"
 
<dead_belowdot> <dead_acute> <a>            :"ạ́"
<dead_belowdot> <dead_diaeresis> <a>        :"ạ̈"
<dead_belowdot> <dead_circumflex> <a>        :"ậ"
<dead_belowdot> <dead_acute> <e>            :"ẹ́"
<dead_belowdot> <dead_diaeresis> <e>        :"ẹ̈"
<dead_belowdot> <dead_circumflex> <e>        :"ệ"
<dead_belowdot> <dead_acute> <idotless>      :"ị́"
<dead_belowdot> <dead_diaeresis> <idotless>  :"ị̈"
<dead_belowdot> <dead_circumflex> <idotless> :"ị̂"
<dead_belowdot> <dead_acute> <o>            :"ọ́"
<dead_belowdot> <dead_diaeresis> <o>        :"ọ̈"
<dead_belowdot> <dead_circumflex> <o>        :"ộ"
<dead_belowdot> <dead_acute> <u>            :"ụ́"
<dead_belowdot> <dead_diaeresis> <u>        :"ụ̈"
<dead_belowdot> <dead_circumflex> <u>        :"ụ̂"


=== US, intl. with dead keys ===
<dead_acute> <dead_belowdot> <A>            :"Ạ́"
<dead_diaeresis> <dead_belowdot> <A>        :"Ạ̈"
<dead_circumflex> <dead_belowdot> <A>        :"Ậ"
<dead_acute> <dead_belowdot> <E>            :"Ẹ́"
<dead_diaeresis> <dead_belowdot> <E>        :"Ẹ̈"
<dead_circumflex> <dead_belowdot> <E>        :"Ệ"
<dead_acute> <dead_belowdot> <I>            :"Ị́"
<dead_diaeresis> <dead_belowdot> <I>        :"Ị̈"
<dead_circumflex> <dead_belowdot> <I>        :"Ị̂"
<dead_acute> <dead_belowdot> <O>            :"Ọ́"
<dead_diaeresis> <dead_belowdot> <O>        :"Ọ̈"
<dead_circumflex> <dead_belowdot> <O>        :"Ộ"
<dead_acute> <dead_belowdot> <U>            :"Ụ́"
<dead_diaeresis> <dead_belowdot> <U>        :"Ụ̈"
<dead_circumflex> <dead_belowdot> <U>        :"Ụ̂"


If you are on Linux, there is a keyboard option called "US, intl. with dead keys". The way you enter diacritics is the same as the compose key one ''except'' {{Tone|4}} is {{Key|AltGr}} {{Key|Shift}} {{Key|?}} and you don't need to hit the compose key.
<dead_belowdot> <dead_acute> <A>            :"Ạ́"
<dead_belowdot> <dead_diaeresis> <A>        :"Ạ̈"
<dead_belowdot> <dead_circumflex> <A>        :"Ậ"
<dead_belowdot> <dead_acute> <E>            :"Ẹ́"
<dead_belowdot> <dead_diaeresis> <E>        :"Ẹ̈"
<dead_belowdot> <dead_circumflex> <E>        :"Ệ"
<dead_belowdot> <dead_acute> <I>            :"Ị́"
<dead_belowdot> <dead_diaeresis> <I>        :"Ị̈"
<dead_belowdot> <dead_circumflex> <I>        :"Ị̂"
<dead_belowdot> <dead_acute> <O>            :"Ọ́"
<dead_belowdot> <dead_diaeresis> <O>        :"Ọ̈"
<dead_belowdot> <dead_circumflex> <O>        :"Ộ"
<dead_belowdot> <dead_acute> <U>            :"Ụ́"
<dead_belowdot> <dead_diaeresis> <U>        :"Ụ̈"
<dead_belowdot> <dead_circumflex> <U>        :"Ụ̂"
</pre>}}


=== Xmodmap ===
=== Xmodmap ===
Line 220: Line 279:
  keycode 11  =  2  at          2  at          dead_acute
  keycode 11  =  2  at          2  at          dead_acute
  keycode 12  =  3  numbersign  3  numbersign  dead_diaeresis
  keycode 12  =  3  numbersign  3  numbersign  dead_diaeresis
  keycode 13  =  4  dollar      4  dollar      dead_hook
  keycode 13  =  4  dollar      4  dollar      dead_circumflex
keycode 14  =  5  percent      5  percent      dead_circumflex
keycode 15  =  6  asciicircum  6  asciicircum  dead_grave
keycode 16  =  7  ampersand    7  ampersand    dead_tilde
  keycode 31  =  i  I            i  I            idotless
  keycode 31  =  i  I            i  I            idotless


: <b>Note:</b> You will require your keyboard layout to have a modifier key active (if at all, usually {{key|RAlt}} a.k.a. {{key|AltGr}}); to achieve this, you may run <code>setxkbmap us intl</code> to switch to the international US layout with dead keys. Also note that a layout change wipes any <code>xmodmap</code>s previously issued, so you will have to rerun the <code>xmodmap</code> command. Feel free to add those two commands (in the right order!) to your <code>.xprofile</code>, or whatever other file your system picks up when starting up X11. Contact [[user:uakci|uakci]] if you run into issues.
: <b>Note:</b> You will require your keyboard layout to have a modifier key active (if at all, usually {{key|RAlt}} a.k.a. {{key|AltGr}}); to achieve this, you may run <code>setxkbmap us intl</code> to switch to the international US layout with dead keys. Also note that a layout change wipes any <code>xmodmap</code>s previously issued, so you will have to rerun the <code>xmodmap</code> command. Feel free to add those two commands (in the right order!) to your <code>.xprofile</code>, or whatever other file your system picks up when starting up X11. Contact [[user:uakci|uakci]] if you run into issues.


<b>To use:</b> hold {{key|RAlt}} and then press a digit, {{key|2}} thru {{key|7}}. After releasing, press the key for your favourite vowel. This should produce a vowel with the desired '''precomposed''' tone diacritic (this is a big deal to some people). For dotless {{t|ı}}, use {{key|RAlt}}{{key|I}}.
<b>To use:</b> hold {{key|RAlt}} and then press a digit, {{key|2}} thru {{key|4}}. After releasing, press the key for your favourite vowel. This should produce a vowel with the desired '''precomposed''' tone diacritic (this is a big deal to some people). For dotless {{t|ı}}, use {{key|RAlt}}{{key|I}}.


==== Variations ====
==== Variations ====
Bind the dead diacritic keys to {{key|s}}, {{key|d}}, {{key|f}}, {{key|j}}, {{key|k}}, {{key|l}} (for that sweet sweet ergonomic swag):
Bind the dead diacritic keys to {{key|s}}, {{key|d}}, {{key|f}} (for that sweet sweet ergonomic swag):


  keycode 39  =  s  S  s  S  dead_acute
  keycode 39  =  s  S  s  S  dead_acute
  keycode 40  =  d  D  d  D  dead_diaeresis
  keycode 40  =  d  D  d  D  dead_diaeresis
  keycode 41  =  f  F  f  F dead_hook
  keycode 41  =  f  F  f  F  dead_circumflex
keycode 44  =  j  J  j  J dead_circumflex
keycode 45  =  k  K  k  K  dead_grave
keycode 46  =  l  L  l  L  dead_tilde


Make dotless {{t|ı}} the default when pressing {{key|I}}, requiring {{key|RAlt}}{{key|I}} to obtain regular dotted i (and also when composing diacritics with the mechanism described above):
Make dotless {{t|ı}} the default when pressing {{key|I}}, requiring {{key|RAlt}}{{key|I}} to obtain regular dotted i (and also when composing diacritics with the mechanism described above):


  keycode 31  =  i  I  i  I  idotless
  keycode 31  =  i  I  i  I  idotless
=== Kanakey ===
[[User:Hoaqgio]] uses a custom Python script that can be found at https://github.com/toaq/kanakey. The way it works is that the script always runs in the background (you start it on login) and when you want to type Toaq, you type alt+; followed by the Toaq you want in the format of "Mai4 ji2 suq2 da.", and finally you just type ; alone. Then the script erases what you typed and replaces it with pretty Toaq. Unfortunately it has two pretty inconvenient issues, one of which is that it currently can't show an icon in the system tray to indicate whether the script is in "listening mode" or not (which means you can accidentally put it in listening mode and leave it there for a while) and the other of which is that if you have non-text data on your system clipboard at the time you try to use the script, it will simply crash. [[User:Hoaqgio]] recommends not using this unless you really have no better alternative!
=== m17n (ibus) ===
An [https://www.nongnu.org/m17n/ m17n] layout exists for Toaq at https://github.com/stellarskylark/toaq-ime. On Linux, this requires setting up a compatible IME daemon like ibus (instructions for which can be found [https://wiki.archlinux.org/title/IBus on the Arch Linux wiki]) and then adding the <code>latn-toaq.mim</code> file to <code>~/.m17n.d/.</code>
=== Stenography ===
See [[Stenography]].


== Phones ==
== Phones ==
=== Your built-in keyboard? ===
In general, on many phone keyboards you can long-press a vowel to get some accents, though you still won't find {{t|Ꝡ}} or the underdot ({{key|-}} will do, though).


=== MultiLing O ===
=== MultiLing O ===
There's a decently customizable Android custom keyboard app called [https://play.google.com/store/apps/details?id=kl.ime.oh&hl=en&gl=US MultiLing O] which comes with a selection of diacritics out of the box (bar {{tone|4}}). To use them, first type the desired letter, then hold-tap the key that says <code>,/AltGr</code>. An alternate screen should appear; without lifting your finger, slide it to the desired choice of diacritic.
See [[MultiLing O]].
 
=== A'rely's Unexpected Keyboard ===


Here is a modified QWERTY layout for MultiLing O by [[SlushieDee]] on [[Discord]]. To use it, select [+DIY] in the list of layouts (accessible by sliding your finger from the spacebar into the top right corner) and paste the following:
Below is an [https://github.com/Julow/Unexpected-Keyboard Unexpected Keyboard] layout from the Discord user A'rely:


{{details|SlushieDee’s Toaq layout|<pre>
{{collapsible|Unexpected Keyboard layout definition file|<pre>
OK_Layout_Begin
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Name:SlushieDee’s Toaq layout
<keyboard>
1234567890
  <row>
qw[XK:eēéëẻêèẽ]rt[XK:yȳýÿỷŷỳỹ][XK:uūúüủûùũ][XK:ıīíïỉîìĩ][XK:oōóöỏôòõ]p
    <key key0="q" key2="1" key4="esc"/>
[XK:aāáäảâàã]sdfghjkl
    <key key0="ꝡ" key1="~" key2="2" key3="\@"/>
zxcvbnm
    <key key0="e" key1="ê" key2="3" key3="ë" key4="é"/>
!@#$%^&*()
    <key key0="r" key1="loc ₪" key2="4" key3="$"/>
QW[XK:EĒÉËẺÊÈẼ]RT[XK:YȲÝŸỶŶỲỸ][XK:UŪÚÜỦÛÙŨ][XK:IĪÍÏỈÎÌĨ][XK:OŌÓÖỎÔÒÕ]P
    <key key0="t" key2="5" key3="%"/>
[XK:AĀÁÄẢÂÀÃ]SDFGHJKL
    <key key0="y" key2="6" key3="^"/>
ZXCVBNM
    <key key0="u" key1="û" key2="7" key3="ü" key4="ú"/>
£¥€$₹^&*()№√÷
    <key key0="ı" key1="î" key2="8" key3="í" key4="ï"/>
~`{}%_-=|+§∷‡
    <key key0="o" key1="ô" key2="9" key3="ó" key4="ö"/>
@[]#/\'"«»—‐–
    <key key0="p" key2="0" key3="f11_placeholder" key4="f12_placeholder"/>
<>!;:?‹›±.,
  </row>
ˉˋˇ´¨˙˚¸﹐˛˘˜ˆ
  <row>
―∑éə®†Ωœøπ•·¡
    <key shift="0.5" key0="a" key1="tab" key2="ä" key3="â" key4="á"/>
æß∂ðƒ©ªº∆≠℥∞¿
    <key key0="s" key1="loc accent_ring" key3="loc ß" key4="loc accent_ogonek"/>
ʒΩ≈çþ∫ŋµ≤≥°
    <key key0="d" key1="!" key2="loc £" key3="loc accent_aigu" key4="loc accent_grave"/>
OK_Layout_End
    <key key0="f" key1="loc accent_dot_above" key4="&amp;"/>
    <key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
    <key key0="h" key1="*" key2="=" key3="+"/>
    <key key0="j" key1="loc accent_trema" key2="loc accent_circonflexe" key3="{" key4="}"/>
    <key key0="k" key1="(" key2=")" key3="[" key4="]"/>
    <key key0="l" key2="|" key3="\\"/>
  </row>
  <row>
    <key width="1.5" key0="shift" key2="loc capslock"/>
    <key key0="z" key2="`"/>
    <key key0="x" key2="\#" key4="loc €"/>
    <key key0="c" key1="loc accent_cedille" key2="&lt;" key3="."/>
    <key key0="v" key2=">" key3=","/>
    <key key0="b" key2="\?" key3="/" key4="loc accent_macron"/>
    <key key0="n" key1="loc accent_tilde" key2=":" key3=";"/>
    <key key0="m" key1="loc accent_double_aigu" key2="&quot;" key3="'"/>
    <key width="1.5" key0="backspace" key2="delete"/>
  </row>
</keyboard>
</pre>}}
</pre>}}


This layout lets you pick diacriticized letters just by hold-tapping the vowel keys.
=== Nano's Unexpected Keyboard ===
A complete QWERTY Gboard based layout, using prefix reform.
[[File:New nano layout.jpg|frameless]]{{Collapsible|XML|<pre><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<keyboard name="QWERTY (Toaq, Prefix Reform)" bottom_row="false" script="latin">
  <row>
    <key key0="q" key2="%" />
    <key key0="w" key2="\\" />
    <key key0="e" key2="|" key5="è" key6="ë" key7="é" key8="ê" />
    <key key0="r" key2="=" />
    <key key0="t" key2="[" />
    <key key0="y" key2="]" />
    <key key0="u" key2="&lt;" key4="«" key5="ù" key6="ü" key7="ú" key8="û" />
    <key key0="ı" key1="i" key2=">" key4="»" key5="ì" key6="ï" key7="í" key8="î" />
    <key key0="o" key2="{" key5="ò" key6="ö" key7="ó" key8="ô" />
    <key key0="p" key2="}" />
  </row>
  <row>
    <key shift="0.5" key0="a" key5="à" key6="ä" key7="á" key8="â" />
    <key key0="s" key2="\@" />
    <key key0="d" key2="\#" />
    <key key0="f" key2="-" />
    <key key0="g" key2="&amp;" />
    <key key0="h" key2="-" />
    <key key0="j" key2="+" />
    <key key0="k" key2="(" />
    <key key0="l" key2=")" />
  </row>
  <row>
    <key width="1.5" key0="shift" />
    <key key0="z" key2="*" />
    <key key0="x" key2="&quot;" />
    <key key0="c" key2="'" />
    <key key0="ꝡ" key1="v" key2=":" />
    <key key0="b" key2=";" />
    <key key0="n" key2="!" />
    <key key0="m" key2="\?" />
    <key width="1.5" key0="backspace" />
  </row>
  <row>
    <key width="1.5" key0="fn" />
    <key key0="," key7="switch_emoji" />
    <key key0="change_method" />
    <key width="4" key0="space" />
    <key key0="." key2="…" key4="/" />
    <key width="1.5" key0="enter" />
  </row>
</keyboard></pre>}}
 
==[[Derani|Deranı]] layouts==
 
=== Kaı===
 
[https://toaq.net/kai/ Kaı] also has an option for typing Derani.
 
===Mıao's layout (QWERTY-based)===
 
[[File:Toaq_(QWERTY).svg]]
 
Note that the image above is a bit outdated. The hiatus key has been moved to the semicolon key rather than the colon key and the cartouches are now both on the quotation mark key.


'''Mıao has made a slightly modified version of thad keyboard.''' Since {{Tone|1}} is no longer a thing, this layout moves it to the end of the list. It also adds back the old {{Tone|3old}} if needed (except for "y" because it doesn't exist). {{Tone|4}} is the most common tone, so it also moves it to the front.
Some punctuation whose keys were taken over have been put under AltGr.
====XKB (Linux)====
<div class="toccolours mw-collapsible mw-collapsed" style="width:400px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">XKB symbols file</div>
<pre class="mw-collapsible-content">
default  partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {


{{details|Mıao's modified layout|<pre>
    name[Group1]= "Toaqzu (Deranı)";
OK_Layout_Begin
 
Name:Tóaqzu
    key <TLDE> { [ grave, asciitilde ] };
1234567890
    key <AE01> { [ 1, exclam  ] };
qw[XK:eẻéëêèẽēě]rt[XK:yỷýÿŷỳỹȳ][XK:uủúüûùũūǔ][XK:ıỉíïîìĩīǐi][XK:oỏóöôòõōǒ]p
    key <AE02> { [ 2, at ] };
[XK:aảáäâàāǎ]sdfghjkl
    key <AE03> { [ 3, numbersign ] };
zxcvbnm
    key <AE04> { [ 4, dollar  ] };
!@#$%^&*()
    key <AE05> { [ 5, percent  ] };
QW[XK:EẺÉËÊÈẼĒĚ]RT[XK:YỶÝŸŶỲỸȲ][XK:UỦÚÜÛÙŨŪǓ][XK:IỈÍÏÎÌĨĪǏ][XK:OỎÓÖÔÒÕŌǑ]P
    key <AE06> { [ 6, asciicircum ] };
[XK:AẢÁÄÂÀÃĀǍ]SDFGHJKL
    key <AE07> { [ 7, ampersand ] };
ZXCVBNM
    key <AE08> { [ 8, asterisk ] };
£¥€$₹^&*()№√÷
    key <AE09> { [ 9, parenleft ] };
~`{}%_-=|+§∷‡
    key <AE10> { [ 0, parenright ] };
@[]#/\'"«»—‐–
    key <AE11> { [ minus, underscore, endash, emdash ] };
<>!;:?‹›±.,
    key <AE12> { [ equal, plus ] };
ˉˋˇ´¨˙˚¸﹐˛˘˜ˆ
 
―∑éə®†Ωœøπ•·¡
    key <AD01> { [ UF16C2 ] }; // Q
æß∂ðƒ©ªº∆≠℥∞¿
    key <AD02> { [ UF16C1 ] }; // Ꝡ
ʒΩ≈çþ∫ŋµ≤≥°
    key <AD03> { [ UF16CA ] }; // 2nd tone
OK_Layout_End
    key <AD04> { [ UF16BB ] }; // R
</pre>}}
    key <AD05> { [ UF16B7 ] }; // T
    key <AD06> { [ UF16CE ] }; // diphthong
    key <AD07> { [ UF16CB ] }; // 3rd tone
    key <AD08> { [ UF16BD ] }; // NH
    key <AD09> { [ UF16CC ] }; // 4th tone
    key <AD10> { [ UF16B3 ] }; // P
    key <AD11> { [ guillemotleft, U2039, bracketleft, braceleft ] };
    key <AD12> { [ guillemotright, U203A, bracketright, braceright ] };
 
    key <AC01> { [ UF16C5 ] }; // '
    key <AC02> { [ UF16BA ] }; // S
    key <AC03> { [ UF16B6 ] }; // D
    key <AC04> { [ UF16B4 ] }; // F
    key <AC05> { [ UF16C3 ] }; // G
    key <AC06> { [ UF16C6 ] }; // H
    key <AC07> { [ UF16BE ] }; // J
    key <AC08> { [ UF16C4 ] }; // K
    key <AC09> { [ UF16BC ] }; // L
    key <AC10> { [ UF16CD, UF16DA, semicolon, colon ] }; // hiatus mark | null variable
    key <AC11> { [ UF16D8, UF16D9, apostrophe, quotedbl ] }; // cartouche start | cartouche end
 
    key <AB01> { [ UF16B8 ] }; // Z
    key <AB02> { [ UF16C0 ] }; // SH
    key <AB03> { [ UF16B9 ] }; // C
    key <AB04> { [ UF16BF ] }; // CH
    key <AB05> { [ UF16B2 ] }; // B
    key <AB06> { [ UF16B5 ] }; // N
    key <AB07> { [ UF16B0, UF16B1 ] }; // M | M coda
    key <AB08> { [ UF16D4, UF16D2, comma, less ] }; // subordination mark | prefix mark
    key <AB09> { [ UF16D5, UF16D3, period, greater ] }; // declarative full stop | quotation mark
    key <AB10> { [ UF16D6, UF16D7, slash, question ] }; // other full stop | question mark


==== [[user:uakci|uakci]]’s mobile-optimized variant ====
    key <BKSL> { [ backslash, bar] };
This layout has fewer keys, which makes it easy to use for the butterfingered among us. Hold-tap to get {{tone|4}}.
   
    key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
   
  include "level3(ralt_switch)"
};
</pre>
</div>


{{details|uakci’s mobile-optimized layout|<pre>
====Windows====
OK_Layout_Begin
Name:uakci’s mobile-optimized layout
´¨̉«»ˆˋ˜
[XK:eẻ]rt[XK:yỷ][XK:uủ][XK:ıỉ][XK:oỏ]p
q[XK:aả]sdhjkl
zcfgbnm


[XK:EẺ]RT[XK:YỶ][XK:UỦ][XK:IỈ][XK:OỎ]P
Made with Microsoft Keyboard Layout Creator. Unzip the .zip [[:File:Toaq (QWERTY, Windows).zip|file]] and open setup.exe. You may have to restart your computer for it to show up. To uninstall, uninstall it like you would any other program.
Q[XK:AẢ]SDHJKL
ZCFGBNM
OK_Layout_End
</pre>}}


==== [[user:uakci|uakci]]’s variant ====
===Loekıa's layout (Workman-based)===
Laid out on an orthogonal 4×10 key grid in accordance with the Colemak keyboard layout, this variant comes with sweet extras like a top bar with diacritic-adding buttons (except for {{tone|4}} because tone mark discrimination is a thing in this sad world) and special keys for typographical fancinesses like <code>«»</code>. You will want to head into the settings, then ''Layouts'', then check ''Shift key at bottom'' to use this layout as intended.


{{details|uakci’s Toaq layout (Colemak)|<pre>
[[File:Toaq_(Workman).svg]]
OK_Layout_Begin
Name:uakci’s improved Toaq layout (Colemak)
–‘´¨̉ˆˋ˜’·
qwfpgjl[XK:uūúüủûùũ][XK:yȳýÿỷŷỳỹ];
[XK:aāáäảâàã]rstdhn[XK:eēéëẻêèẽ][XK:ıīíïỉîìĩ][XK:oōóöỏôòõ]
zxcvbkm«i»
~`{}%_-=|+
QWFPGJL[XK:UŪÚÜỦÛÙŨ][XK:YȲÝŸỶŶỲỸ]:
[XK:AĀÁÄẢÂÀÃ]RSTDHN[XK:EĒÉËẺÊÈẼ][XK:IĪÍÏỈÎÌĨ][XK:OŌÓÖỎÔÒÕ]
ZXCVBKM‹I›
OK_Layout_End
</pre>}}


QWERTY version:
<div class="toccolours mw-collapsible mw-collapsed" style="width:400px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">XKB symbols file</div>
<pre class="mw-collapsible-content">
xkb_symbols "toaq"
{
  include "us(workman)"


{{details|uakci’s Toaq layout (QWERTY)|<pre>
  key <AD01> { [ UF16BD ] };
OK_Layout_Begin
  key <AD02> { [ UF16B6 ] };
Name:uakci’s improved Toaq layout (QWERTY)
  key <AD03> { [ UF16BB ] };
–‘´¨̉ˆˋ˜’·
  key <AD04> { [ UF16CD ] };
qw[XK:eēéëẻêèẽ]rt[XK:yȳýÿỷŷỳỹ][XK:uūúüủûùũ][XK:ıīíïỉîìĩ][XK:oōóöỏôòõ]p
  key <AD05> { [ UF16CE ] };
[XK:aāáäảâàã]sdfghjkl;
  key <AD06> { [ UF16BE ] };
zxcvbnm«i»
  key <AD07> { [ UF16B5 ] };
~`{}%_-=|+
  key <AD08> { [ UF16B2 ] };
QW[XK:EĒÉËẺÊÈẼ]RT[XK:YȲÝŸỶŶỲỸ][XK:UŪÚÜỦÛÙŨ][XK:IĪÍÏỈÎÌĨ][XK:OŌÓÖỎÔÒÕ]P
  key <AD09> { [ UF16B3 ] };
[XK:AĀÁÄẢÂÀÃ]SDFGHJKL:
  key <AD10> { [ UF16D8, UF16D9 ] };
ZXCVBNM‹I›
OK_Layout_End
</pre>}}


=== Other options ===
  key <AC01> { [ UF16BA ] };
In general, on many phone keyboards you can long-press a vowel to get some accents, though usually not the {{tone|4}} hook. You can install a Vietnamese keyboard layout for that one, and switch between layouts, and suffer. Or use [[sparse tone marking]].
  key <AC02> { [ UF16C0 ] };
  key <AC03> { [ UF16C6 ] };
  key <AC04> { [ UF16B7 ] };
  key <AC05> { [ UF16CA ] };
  key <AC06> { [ UF16CB, UF16CC ] };
  key <AC07> { [ UF16C2 ] };
  key <AC08> { [ UF16B4 ] };
  key <AC09> { [ UF16C3 ] };
  key <AC10> { [ UF16B9 ] };
  key <AC11> { [ UF16D2, UF16D3 ] };


== Sad alternatives ==
  key <AB01> { [ UF16B8 ] };
=== ASCII tone markers ===
  key <AB02> { [ UF16C5 ] };
You can always write the ASCII-friendly <tt>/"?^\~</tt> [[tone]] markers after words like this, usefully combined with sparse tone marking:
  key <AB03> { [ UF16B0, UF16B1 ] };
  key <AB04> { [ UF16BF ] };
  key <AB05> { [ UF16C1 ] };
  key <AB06> { [ UF16C4 ] };
  key <AB07> { [ UF16BC ] };
  key <AB08> { [ UF16D4, UF16DA ] };
  key <AB09> { [ UF16D5 ] };
  key <AB10> { [ UF16D6, UF16D7 ] };


<blockquote><tt>Hio ka. Bu bo^ ji/ sa gi kaichuo rao\ ni/ da.</tt></blockquote>
  key <SPCE> { [ U0020, U00A0 ] };
};
</pre>
</div>


Or tone number digits <tt>234567</tt>:
==Sad alternatives==
===ASCII tone markers===
You can always write the ASCII-friendly (although reader-hostile) <tt>/"^</tt> [[tone]] markers after words like this:


<blockquote><tt>Hio ka. Bu bo5 ji2 sa gi kaichuo rao6 ni2 da.</tt></blockquote>
<blockquote><tt>Hio ka. Ji/ na" bo hoa/ sia/ kaichuo gi rao^ nidaq/.</tt></blockquote>


And you will be understood.
Or tone number digits <tt>234</tt>:


=== Vietoaq ===
<blockquote><tt>Hio ka. Ji2 na3 bo hoa2 sia2 kaichuo gi rao4 nidaq2.</tt></blockquote>
For a bit, a [https://en.wikipedia.org/wiki/Telex_(input_method) Vietnamese Telex] equivalent called '''Vietoaq''' was popular, where the idea was to use consonants at the end of a syllable to represent tone.


For example, {{t|lé lë lẻ lê lè lẽ}} is written <tt>lep lex len let lek lef</tt>.
And you will be understood.


To make matters worse, {{t|léq lëq lẻq lêq lèq lẽq}} is written, by diehard Vietoaq oldbies, as <tt>leb lez lem led leg lev</tt>.
==Other places to look for solutions==


This was back when compound words used {{tone|1}}, and {{t|lē lēq}} were written <tt>ler lel</tt>. So, {{t|tóaqkūq}} became <tt>toabkul</tt>.
*Talk to us on [[Discord]].
*The documentation for Raku (Perl 6), a Unicode-heavy programming language, includes [https://docs.raku.org/language/unicode_entry copious amounts of instructions on Unicode character input].


Eventually came '''Diet Vietoaq''', which just puts one of <tt>pxntkf</tt>, marking the tone for the whole word, at the end of the word: {{t|tóaqkūq}} becomes <tt>toaqkuqp</tt>. In that sense, it is more like the "ASCII tone markers" in the previous section.
[[Category:Input methods]]

Latest revision as of 18:25, 12 September 2024

Toaq's Latin writing system features many letter with diacritics, which are tricky to type on a standard keyboard configured for English. Here are some solutions.

Desktop computers

Compose key

You can set up a compose key on your computer, which will change the behavior of one of the keys on your keyboard to "compose" the next two keypresses into one character — for example CapsLock ' a becomes á. See Compose key for more information.

Kaı

This is a little tool originally by User:Lynn that runs in your browser here. You type something like Kiai ji kato/ da (alternatively, kato2) and it turns it into Kıaı jí káto da. (Wow! It knows is a pronoun and automatically adds rising tone.) The underdot ◌̣ is typed with a hyphen and with "V".

vim

See Vim input.

AutoHotkey (Windows)

Only the first paragraph of the following script is strictly necessary. The rest are just useful shortcuts.

To use, install AutoHotkey, copy the script to a text editor and save it as toaq.ahk, then double-click the file you saved.

toaq.ahk
; Basic layout
:?*:vy::ꝡ
:?*:a2::á
:?*:a3::ä
:?*:a4::â
:?*:e2::é
:?*:e3::ë
:?*:e4::ê
:?*:ii::ı
:?*:i1::ı
:?*:i2::í
:?*:i3::ï
:?*:i4::î
:?*:o2::ó
:?*:o3::ö
:?*:o4::ô
:?*:u2::ú
:?*:u3::ü
:?*:u4::û
:?*:!!::̣
:?*:<<::«
:?*:>>::»
:?*:.<::‹
:?*:.>::›

; Pronouns
::ji::jí
::suq::súq
::nhao::nháo
::umo::úmo
::ime::íme
::ama::áma
::suna::súna
::suho::súho
::nhana::nhána
::ho::hó
::maq::máq
::hoq::hóq
::ta::tá
::aq::áq
::cheq::chéq
::hoa::hóa
::ha::há

; Determiners
::sa::sá
::tu::tú
::tuq::túq
::sia::sía
::ni::ní
::baq::báq
::hi::hí
::hu::hú
::ke::ké
::ja::já

; Usually in T2
::moq::móq
::hoi::hóı

; Always in T3
::ju::jü
::la::lä
::na::nä
::kio::kïo

; vy-related shortcuts
::va::ꝡä
::ve::ꝡë
::vo::ꝡo

US, intl. with dead keys

If you are on Linux, there is a keyboard option called "US, intl. with dead keys". The way you enter diacritics is the same as the compose key one. Unfortunately, is not on the layout.

XKB

Note that this requires editing a few other files, so remember to make backups of files you change. Follow the format in the files in /usr/share/X11/xkb/rules/: base.lst, base.xml, evdev.lst, evdev.xml.

This layout, for QWERTY keyboards, also has diacritics for Gamma and Beta.

Without underdot With underdot
falling tone v vowel
rising tone ' vowel ' v vowel
glottal tone " vowel " v vowel
hiatus tone ; vowel ; v vowel
Ꝡ ꝡ W, w
Old diacritics Other
flat tone Shift x vowel x
falling-rising tone (obsolete 3rd tone) AltGr \ vowel « [
falling tone : vowel » ]
mid-falling tone Shift v vowel {
falling creaky tone AltGr | vowel }
XKB symbols file - /usr/share/X11/xkb/symbols/qtq
default  partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    name[Group1]= "Toaqzu (Hóegua)";

    key <TLDE> {	[     grave,	asciitilde	]	};
    key <AE01> {	[	  1,	exclam 		]	};
    key <AE02> {	[	  2,	at		]	};
    key <AE03> {	[	  3,	numbersign	]	};
    key <AE04> {	[	  4,	dollar		]	};
    key <AE05> {	[	  5,	percent		]	};
    key <AE06> {	[	  6,	asciicircum	]	};
    key <AE07> {	[	  7,	ampersand	]	};
    key <AE08> {	[	  8,	asterisk	]	};
    key <AE09> {	[	  9,	parenleft	]	};
    key <AE10> {	[	  0,	parenright	]	};
    key <AE11> {	[     minus,	underscore,	endash,	emdash	]	};
    key <AE12> {	[     equal,	plus		]	};

    key <AD01> {	[	  q,	Q 		]	};
    key <AD02> {	type[group1] = "FOUR_LEVEL_ALPHABETIC",
                    [	  UA761, UA760, w,	W ]	};
    key <AD03> {	[	  e,	E		]	};
    key <AD04> {	[	  r,	R		]	};
    key <AD05> {	[	  t,	T		]	};
    key <AD06> {	[	  y,	Y		]	};
    key <AD07> {	[	  u,	U		]	};
    key <AD08> {	type[group1] = "FOUR_LEVEL_ALPHABETIC",
                    [	idotless,	I,	i,	Iabovedot ] };
    key <AD09> {	[	  o,	O		]	};
    key <AD10> {	[	  p,	P		]	};
    key <AD11> {	[ guillemotleft,	U2039,	bracketleft,	braceleft	]	};
    key <AD12> {	[ guillemotright,	U203A,	bracketright,	braceright	]	};

    key <AC01> {	[	  a,	A 		]	};
    key <AC02> {	[	  s,	S		]	};
    key <AC03> {	[	  d,	D		]	};
    key <AC04> {	[	  f,	F		]	};
    key <AC05> {	[	  g,	G		]	};
    key <AC06> {	[	  h,	H		]	};
    key <AC07> {	[	  j,	J		]	};
    key <AC08> {	[	  k,	K		]	};
    key <AC09> {	[	  l,	L		]	};
    key <AC10> {	[ dead_circumflex,	dead_hook,	semicolon,	colon	]	};
    key <AC11> {	[ dead_acute,	dead_diaeresis,	apostrophe,	quotedbl	]	};

    key <AB01> {	[	  z,	Z 		]	};
    key <AB02> {	[	  rightsinglequotemark, dead_macron, x, X		]	};
    key <AB03> {	[	  c,	C		]	};
    key <AB04> {	[	  dead_belowdot,	dead_grave,	v,	V		]	};
    key <AB05> {	[	  b,	B		]	};
    key <AB06> {	[	  n,	N		]	};
    key <AB07> {	[	  m,	M		]	};
    key <AB08> {	[	  comma,	less		]	};
    key <AB09> {	[	  period,	greater		]	};
    key <AB10> {	[	  slash,	question	]	};

    key <BKSL> {	[	  backslash,	bar,	dead_caron,	dead_tilde		]	};
    
    key <SPCE> {	[	  space,	space,	nobreakspace,	 nobreakspace		] };
    
   include "level3(ralt_switch)"
};

You will also need add some Compose keys.

XCompose definitions
<dead_acute> <dead_belowdot> <a>             :"ạ́"
<dead_diaeresis> <dead_belowdot> <a>         :"ạ̈"
<dead_circumflex> <dead_belowdot> <a>        :"ậ"
<dead_acute> <dead_belowdot> <e>             :"ẹ́"
<dead_diaeresis> <dead_belowdot> <e>         :"ẹ̈"
<dead_circumflex> <dead_belowdot> <e>        :"ệ"
<dead_acute> <dead_belowdot> <idotless>      :"ị́"
<dead_diaeresis> <dead_belowdot> <idotless>  :"ị̈"
<dead_circumflex> <dead_belowdot> <idotless> :"ị̂"
<dead_acute> <dead_belowdot> <o>             :"ọ́"
<dead_diaeresis> <dead_belowdot> <o>         :"ọ̈"
<dead_circumflex> <dead_belowdot> <o>        :"ộ"
<dead_acute> <dead_belowdot> <u>             :"ụ́"
<dead_diaeresis> <dead_belowdot> <u>         :"ụ̈"
<dead_circumflex> <dead_belowdot> <u>        :"ụ̂"

<dead_belowdot> <dead_acute> <a>             :"ạ́"
<dead_belowdot> <dead_diaeresis> <a>         :"ạ̈"
<dead_belowdot> <dead_circumflex> <a>        :"ậ"
<dead_belowdot> <dead_acute> <e>             :"ẹ́"
<dead_belowdot> <dead_diaeresis> <e>         :"ẹ̈"
<dead_belowdot> <dead_circumflex> <e>        :"ệ"
<dead_belowdot> <dead_acute> <idotless>      :"ị́"
<dead_belowdot> <dead_diaeresis> <idotless>  :"ị̈"
<dead_belowdot> <dead_circumflex> <idotless> :"ị̂"
<dead_belowdot> <dead_acute> <o>             :"ọ́"
<dead_belowdot> <dead_diaeresis> <o>         :"ọ̈"
<dead_belowdot> <dead_circumflex> <o>        :"ộ"
<dead_belowdot> <dead_acute> <u>             :"ụ́"
<dead_belowdot> <dead_diaeresis> <u>         :"ụ̈"
<dead_belowdot> <dead_circumflex> <u>        :"ụ̂"

<dead_acute> <dead_belowdot> <A>             :"Ạ́"
<dead_diaeresis> <dead_belowdot> <A>         :"Ạ̈"
<dead_circumflex> <dead_belowdot> <A>        :"Ậ"
<dead_acute> <dead_belowdot> <E>             :"Ẹ́"
<dead_diaeresis> <dead_belowdot> <E>         :"Ẹ̈"
<dead_circumflex> <dead_belowdot> <E>        :"Ệ"
<dead_acute> <dead_belowdot> <I>             :"Ị́"
<dead_diaeresis> <dead_belowdot> <I>         :"Ị̈"
<dead_circumflex> <dead_belowdot> <I>        :"Ị̂"
<dead_acute> <dead_belowdot> <O>             :"Ọ́"
<dead_diaeresis> <dead_belowdot> <O>         :"Ọ̈"
<dead_circumflex> <dead_belowdot> <O>        :"Ộ"
<dead_acute> <dead_belowdot> <U>             :"Ụ́"
<dead_diaeresis> <dead_belowdot> <U>         :"Ụ̈"
<dead_circumflex> <dead_belowdot> <U>        :"Ụ̂"

<dead_belowdot> <dead_acute> <A>             :"Ạ́"
<dead_belowdot> <dead_diaeresis> <A>         :"Ạ̈"
<dead_belowdot> <dead_circumflex> <A>        :"Ậ"
<dead_belowdot> <dead_acute> <E>             :"Ẹ́"
<dead_belowdot> <dead_diaeresis> <E>         :"Ẹ̈"
<dead_belowdot> <dead_circumflex> <E>        :"Ệ"
<dead_belowdot> <dead_acute> <I>             :"Ị́"
<dead_belowdot> <dead_diaeresis> <I>         :"Ị̈"
<dead_belowdot> <dead_circumflex> <I>        :"Ị̂"
<dead_belowdot> <dead_acute> <O>             :"Ọ́"
<dead_belowdot> <dead_diaeresis> <O>         :"Ọ̈"
<dead_belowdot> <dead_circumflex> <O>        :"Ộ"
<dead_belowdot> <dead_acute> <U>             :"Ụ́"
<dead_belowdot> <dead_diaeresis> <U>         :"Ụ̈"
<dead_belowdot> <dead_circumflex> <U>        :"Ụ̂"

Xmodmap

If you’re running X11 on a Linux machine, create a file (I suggest calling it .Xmodmap in your home directory) with the following contents, then run xmodmap filename to activate:

keycode 11  =  2  at           2  at           dead_acute
keycode 12  =  3  numbersign   3  numbersign   dead_diaeresis
keycode 13  =  4  dollar       4  dollar       dead_circumflex
keycode 31  =  i  I            i  I            idotless
Note: You will require your keyboard layout to have a modifier key active (if at all, usually RAlt a.k.a. AltGr); to achieve this, you may run setxkbmap us intl to switch to the international US layout with dead keys. Also note that a layout change wipes any xmodmaps previously issued, so you will have to rerun the xmodmap command. Feel free to add those two commands (in the right order!) to your .xprofile, or whatever other file your system picks up when starting up X11. Contact uakci if you run into issues.

To use: hold RAlt and then press a digit, 2 thru 4. After releasing, press the key for your favourite vowel. This should produce a vowel with the desired precomposed tone diacritic (this is a big deal to some people). For dotless ı, use RAltI.

Variations

Bind the dead diacritic keys to s, d, f (for that sweet sweet ergonomic swag):

keycode 39  =  s  S  s  S  dead_acute
keycode 40  =  d  D  d  D  dead_diaeresis
keycode 41  =  f  F  f  F  dead_circumflex

Make dotless ı the default when pressing I, requiring RAltI to obtain regular dotted i (and also when composing diacritics with the mechanism described above):

keycode 31  =  i  I  i  I  idotless

Kanakey

User:Hoaqgio uses a custom Python script that can be found at https://github.com/toaq/kanakey. The way it works is that the script always runs in the background (you start it on login) and when you want to type Toaq, you type alt+; followed by the Toaq you want in the format of "Mai4 ji2 suq2 da.", and finally you just type ; alone. Then the script erases what you typed and replaces it with pretty Toaq. Unfortunately it has two pretty inconvenient issues, one of which is that it currently can't show an icon in the system tray to indicate whether the script is in "listening mode" or not (which means you can accidentally put it in listening mode and leave it there for a while) and the other of which is that if you have non-text data on your system clipboard at the time you try to use the script, it will simply crash. User:Hoaqgio recommends not using this unless you really have no better alternative!

m17n (ibus)

An m17n layout exists for Toaq at https://github.com/stellarskylark/toaq-ime. On Linux, this requires setting up a compatible IME daemon like ibus (instructions for which can be found on the Arch Linux wiki) and then adding the latn-toaq.mim file to ~/.m17n.d/.

Stenography

See Stenography.

Phones

Your built-in keyboard?

In general, on many phone keyboards you can long-press a vowel to get some accents, though you still won't find or the underdot (- will do, though).

MultiLing O

See MultiLing O.

A'rely's Unexpected Keyboard

Below is an Unexpected Keyboard layout from the Discord user A'rely:

Unexpected Keyboard layout definition file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<keyboard>
  <row>
    <key key0="q" key2="1" key4="esc"/>
    <key key0="ꝡ" key1="~" key2="2" key3="\@"/>
    <key key0="e" key1="ê" key2="3" key3="ë" key4="é"/>
    <key key0="r" key1="loc ₪" key2="4" key3="$"/>
    <key key0="t" key2="5" key3="%"/>
    <key key0="y" key2="6" key3="^"/>
    <key key0="u" key1="û" key2="7" key3="ü" key4="ú"/>
    <key key0="ı" key1="î" key2="8" key3="í" key4="ï"/>
    <key key0="o" key1="ô" key2="9" key3="ó" key4="ö"/>
    <key key0="p" key2="0" key3="f11_placeholder" key4="f12_placeholder"/>
  </row>
  <row>
    <key shift="0.5" key0="a" key1="tab" key2="ä" key3="â" key4="á"/>
    <key key0="s" key1="loc accent_ring" key3="loc ß" key4="loc accent_ogonek"/>
    <key key0="d" key1="!" key2="loc £" key3="loc accent_aigu" key4="loc accent_grave"/>
    <key key0="f" key1="loc accent_dot_above" key4="&"/>
    <key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
    <key key0="h" key1="*" key2="=" key3="+"/>
    <key key0="j" key1="loc accent_trema" key2="loc accent_circonflexe" key3="{" key4="}"/>
    <key key0="k" key1="(" key2=")" key3="[" key4="]"/>
    <key key0="l" key2="|" key3="\\"/>
  </row>
  <row>
    <key width="1.5" key0="shift" key2="loc capslock"/>
    <key key0="z" key2="`"/>
    <key key0="x" key2="\#" key4="loc €"/>
    <key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
    <key key0="v" key2=">" key3=","/>
    <key key0="b" key2="\?" key3="/" key4="loc accent_macron"/>
    <key key0="n" key1="loc accent_tilde" key2=":" key3=";"/>
    <key key0="m" key1="loc accent_double_aigu" key2=""" key3="'"/>
    <key width="1.5" key0="backspace" key2="delete"/>
  </row>
</keyboard>

Nano's Unexpected Keyboard

A complete QWERTY Gboard based layout, using prefix reform.

New nano layout.jpg

XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<keyboard name="QWERTY (Toaq, Prefix Reform)" bottom_row="false" script="latin">
  <row>
    <key key0="q" key2="%" />
    <key key0="w" key2="\\" />
    <key key0="e" key2="|" key5="è" key6="ë" key7="é" key8="ê" />
    <key key0="r" key2="=" />
    <key key0="t" key2="[" />
    <key key0="y" key2="]" />
    <key key0="u" key2="<" key4="«" key5="ù" key6="ü" key7="ú" key8="û" />
    <key key0="ı" key1="i" key2=">" key4="»" key5="ì" key6="ï" key7="í" key8="î" />
    <key key0="o" key2="{" key5="ò" key6="ö" key7="ó" key8="ô" />
    <key key0="p" key2="}" />
  </row>
  <row>
    <key shift="0.5" key0="a" key5="à" key6="ä" key7="á" key8="â" />
    <key key0="s" key2="\@" />
    <key key0="d" key2="\#" />
    <key key0="f" key2="-" />
    <key key0="g" key2="&" />
    <key key0="h" key2="-" />
    <key key0="j" key2="+" />
    <key key0="k" key2="(" />
    <key key0="l" key2=")" />
  </row>
  <row>
    <key width="1.5" key0="shift" />
    <key key0="z" key2="*" />
    <key key0="x" key2=""" />
    <key key0="c" key2="'" />
    <key key0="ꝡ" key1="v" key2=":" />
    <key key0="b" key2=";" />
    <key key0="n" key2="!" />
    <key key0="m" key2="\?" />
    <key width="1.5" key0="backspace" />
  </row>
  <row>
    <key width="1.5" key0="fn" />
    <key key0="," key7="switch_emoji" />
    <key key0="change_method" />
    <key width="4" key0="space" />
    <key key0="." key2="…" key4="/" />
    <key width="1.5" key0="enter" />
  </row>
</keyboard>

Deranı layouts

Kaı

Kaı also has an option for typing Derani.

Mıao's layout (QWERTY-based)

Toaq (QWERTY).svg

Note that the image above is a bit outdated. The hiatus key has been moved to the semicolon key rather than the colon key and the cartouches are now both on the quotation mark key.

Some punctuation whose keys were taken over have been put under AltGr.

XKB (Linux)

XKB symbols file
default  partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    name[Group1]= "Toaqzu (Deranı)";

    key <TLDE> { [ grave, asciitilde ] };
    key <AE01> { [ 1, exclam  ] };
    key <AE02> { [ 2, at ] };
    key <AE03> { [ 3, numbersign ] };
    key <AE04> { [ 4, dollar  ] };
    key <AE05> { [ 5, percent  ] };
    key <AE06> { [ 6, asciicircum ] };
    key <AE07> { [ 7, ampersand ] };
    key <AE08> { [ 8, asterisk ] };
    key <AE09> { [ 9, parenleft ] };
    key <AE10> { [ 0, parenright ] };
    key <AE11> { [ minus, underscore, endash, emdash ] };
    key <AE12> { [ equal, plus ] };

    key <AD01> { [ UF16C2 ] }; // Q
    key <AD02> { [ UF16C1 ] }; // Ꝡ
    key <AD03> { [ UF16CA ] }; // 2nd tone
    key <AD04> { [ UF16BB ] }; // R
    key <AD05> { [ UF16B7 ] }; // T
    key <AD06> { [ UF16CE ] }; // diphthong
    key <AD07> { [ UF16CB ] }; // 3rd tone
    key <AD08> { [ UF16BD ] }; // NH
    key <AD09> { [ UF16CC ] }; // 4th tone
    key <AD10> { [ UF16B3 ] }; // P
    key <AD11> { [ guillemotleft, U2039, bracketleft, braceleft ] };
    key <AD12> { [ guillemotright, U203A, bracketright, braceright ] };

    key <AC01> { [ UF16C5 ] }; // '
    key <AC02> { [ UF16BA ] }; // S
    key <AC03> { [ UF16B6 ] }; // D
    key <AC04> { [ UF16B4 ] }; // F
    key <AC05> { [ UF16C3 ] }; // G
    key <AC06> { [ UF16C6 ] }; // H
    key <AC07> { [ UF16BE ] }; // J
    key <AC08> { [ UF16C4 ] }; // K
    key <AC09> { [ UF16BC ] }; // L
    key <AC10> { [ UF16CD, UF16DA, semicolon, colon ] }; // hiatus mark | null variable
    key <AC11> { [ UF16D8, UF16D9, apostrophe, quotedbl ] }; // cartouche start | cartouche end 

    key <AB01> { [ UF16B8 ] }; // Z
    key <AB02> { [ UF16C0 ] }; // SH
    key <AB03> { [ UF16B9 ] }; // C
    key <AB04> { [ UF16BF ] }; // CH
    key <AB05> { [ UF16B2 ] }; // B
    key <AB06> { [ UF16B5 ] }; // N
    key <AB07> { [ UF16B0, UF16B1 ] }; // M | M coda
    key <AB08> { [ UF16D4, UF16D2, comma, less ] }; // subordination mark | prefix mark
    key <AB09> { [ UF16D5, UF16D3, period, greater ] }; // declarative full stop | quotation mark
    key <AB10> { [ UF16D6, UF16D7, slash, question ] }; // other full stop | question mark

    key <BKSL> { [ backslash, bar] };
    
    key <SPCE> { [ space, space, nobreakspace,  nobreakspace ] };
    
   include "level3(ralt_switch)"
};

Windows

Made with Microsoft Keyboard Layout Creator. Unzip the .zip file and open setup.exe. You may have to restart your computer for it to show up. To uninstall, uninstall it like you would any other program.

Loekıa's layout (Workman-based)

Toaq (Workman).svg

XKB symbols file
xkb_symbols "toaq"
{
  include "us(workman)"

  key <AD01> { [ UF16BD ] };
  key <AD02> { [ UF16B6 ] };
  key <AD03> { [ UF16BB ] };
  key <AD04> { [ UF16CD ] };
  key <AD05> { [ UF16CE ] };
  key <AD06> { [ UF16BE ] };
  key <AD07> { [ UF16B5 ] };
  key <AD08> { [ UF16B2 ] };
  key <AD09> { [ UF16B3 ] };
  key <AD10> { [ UF16D8, UF16D9 ] };

  key <AC01> { [ UF16BA ] };
  key <AC02> { [ UF16C0 ] };
  key <AC03> { [ UF16C6 ] };
  key <AC04> { [ UF16B7 ] };
  key <AC05> { [ UF16CA ] };
  key <AC06> { [ UF16CB, UF16CC ] };
  key <AC07> { [ UF16C2 ] };
  key <AC08> { [ UF16B4 ] };
  key <AC09> { [ UF16C3 ] };
  key <AC10> { [ UF16B9 ] };
  key <AC11> { [ UF16D2, UF16D3 ] };

  key <AB01> { [ UF16B8 ] };
  key <AB02> { [ UF16C5 ] };
  key <AB03> { [ UF16B0, UF16B1 ] };
  key <AB04> { [ UF16BF ] };
  key <AB05> { [ UF16C1 ] };
  key <AB06> { [ UF16C4 ] };
  key <AB07> { [ UF16BC ] };
  key <AB08> { [ UF16D4, UF16DA ] };
  key <AB09> { [ UF16D5 ] };
  key <AB10> { [ UF16D6, UF16D7 ] };

  key <SPCE> { [ U0020, U00A0 ] };
};

Sad alternatives

ASCII tone markers

You can always write the ASCII-friendly (although reader-hostile) /"^ tone markers after words like this:

Hio ka. Ji/ na" bo hoa/ sia/ kaichuo gi rao^ nidaq/.

Or tone number digits 234:

Hio ka. Ji2 na3 bo hoa2 sia2 kaichuo gi rao4 nidaq2.

And you will be understood.

Other places to look for solutions