<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://toaq.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Neaqbua</id>
	<title>The Toaq Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://toaq.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Neaqbua"/>
	<link rel="alternate" type="text/html" href="https://toaq.me/Special:Contributions/Neaqbua"/>
	<updated>2026-04-21T15:14:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://toaq.me/index.php?title=Vim_input&amp;diff=2160</id>
		<title>Vim input</title>
		<link rel="alternate" type="text/html" href="https://toaq.me/index.php?title=Vim_input&amp;diff=2160"/>
		<updated>2024-09-22T04:04:41Z</updated>

		<summary type="html">&lt;p&gt;Neaqbua: minor clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to write Toaq in the text editor &#039;&#039;vim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Using a keymap ==&lt;br /&gt;
&lt;br /&gt;
Copy the contents below into a file called &amp;lt;code&amp;gt;toaq.vim&amp;lt;/code&amp;gt; inside a folder named &amp;lt;code&amp;gt;keymap&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.vim&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;:help mbyte-keymap&amp;lt;/code&amp;gt; for more detailed information.)&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! || Without underdot || With underdot&lt;br /&gt;
|-&lt;br /&gt;
! {{done|1}}&lt;br /&gt;
|           || {{key|.}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|2}}&lt;br /&gt;
| {{key|/}} || {{key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|3}}&lt;br /&gt;
| {{key|:}} || {{key|&amp;quot;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|4}}&lt;br /&gt;
| {{key|&amp;gt;}} || {{key|^}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{collapsible|Toaq vim keymap|&amp;lt;pre&amp;gt;&amp;quot; toaq keymap&lt;br /&gt;
&amp;quot; by uakci on 2022-12-20&lt;br /&gt;
scriptencoding utf8&lt;br /&gt;
let b:keymap_name = &amp;quot;toaq&amp;quot;&lt;br /&gt;
loadkeymap&lt;br /&gt;
.i	i&lt;br /&gt;
i	ı&lt;br /&gt;
//	/&lt;br /&gt;
::	:&lt;br /&gt;
&amp;gt;&amp;gt;	&amp;gt;&lt;br /&gt;
&#039;&#039;	&#039;&lt;br /&gt;
&amp;quot;&amp;quot;	&amp;quot;&lt;br /&gt;
^^	^&lt;br /&gt;
..	.&lt;br /&gt;
.&amp;lt;	«&lt;br /&gt;
.&amp;gt;	»&lt;br /&gt;
.{	‹&lt;br /&gt;
.}	›&lt;br /&gt;
./	́&lt;br /&gt;
.:	̈&lt;br /&gt;
.&amp;gt;	̂&lt;br /&gt;
.,	̣&lt;br /&gt;
.A	Ạ&lt;br /&gt;
.U	Ụ&lt;br /&gt;
.I	Ị&lt;br /&gt;
.O	Ọ&lt;br /&gt;
.E	Ẹ&lt;br /&gt;
.a	ạ&lt;br /&gt;
.u	ụ&lt;br /&gt;
.i	ı̣&lt;br /&gt;
.o	ọ&lt;br /&gt;
.e	ẹ&lt;br /&gt;
vy	ꝡ&lt;br /&gt;
Vy	Ꝡ&lt;br /&gt;
VY	Ꝡ&lt;br /&gt;
/A	Á&lt;br /&gt;
/U	Ú&lt;br /&gt;
/I	Í&lt;br /&gt;
/O	Ó&lt;br /&gt;
/E	É&lt;br /&gt;
/a	á&lt;br /&gt;
/u	ú&lt;br /&gt;
/i	í&lt;br /&gt;
/o	ó&lt;br /&gt;
/e	é&lt;br /&gt;
:A	Ä&lt;br /&gt;
:U	Ü&lt;br /&gt;
:I	Ï&lt;br /&gt;
:O	Ö&lt;br /&gt;
:E	Ë&lt;br /&gt;
:a	ä&lt;br /&gt;
:u	ü&lt;br /&gt;
:i	ï&lt;br /&gt;
:o	ö&lt;br /&gt;
:e	ë&lt;br /&gt;
&amp;gt;A	Â&lt;br /&gt;
&amp;gt;U	Û&lt;br /&gt;
&amp;gt;I	Î&lt;br /&gt;
&amp;gt;O	Ô&lt;br /&gt;
&amp;gt;E	Ê&lt;br /&gt;
&amp;gt;a	â&lt;br /&gt;
&amp;gt;u	û&lt;br /&gt;
&amp;gt;i	î&lt;br /&gt;
&amp;gt;o	ô&lt;br /&gt;
&amp;gt;e	ê&lt;br /&gt;
&#039;A	Ạ́&lt;br /&gt;
&#039;U	Ụ́&lt;br /&gt;
&#039;I	Ị́&lt;br /&gt;
&#039;O	Ọ́&lt;br /&gt;
&#039;E	Ẹ́&lt;br /&gt;
&#039;a	ạ́&lt;br /&gt;
&#039;u	ụ́&lt;br /&gt;
&#039;i	ị́&lt;br /&gt;
&#039;o	ọ́&lt;br /&gt;
&#039;e	ẹ́&lt;br /&gt;
&amp;quot;A	Ạ̈&lt;br /&gt;
&amp;quot;U	Ụ̈&lt;br /&gt;
&amp;quot;I	Ị̈&lt;br /&gt;
&amp;quot;O	Ọ̈&lt;br /&gt;
&amp;quot;E	Ẹ̈&lt;br /&gt;
&amp;quot;a	ạ̈&lt;br /&gt;
&amp;quot;u	ụ̈&lt;br /&gt;
&amp;quot;i	ị̈&lt;br /&gt;
&amp;quot;o	ọ̈&lt;br /&gt;
&amp;quot;e	ẹ̈&lt;br /&gt;
^A	Ậ&lt;br /&gt;
^U	Ụ̂&lt;br /&gt;
^I	Ị̂&lt;br /&gt;
^O	Ộ&lt;br /&gt;
^E	Ệ&lt;br /&gt;
^a	ậ&lt;br /&gt;
^u	ụ̂&lt;br /&gt;
^i	ị̂&lt;br /&gt;
^o	ộ&lt;br /&gt;
^e	ệ&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Using digraphs ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, for sporadic usage, you can enter Toaq characters using Ctrl+K followed by two keystrokes (see &amp;lt;code&amp;gt;:help digraph&amp;lt;/code&amp;gt;). {{VY}} is not available to input using this method.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Character || Combo&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|2}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|3}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|:}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|4}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| dotless i ({{t|ı}}) || {{Key|Ctrl+K}} {{Key|.}} {{Key|i}}&lt;br /&gt;
|-&lt;br /&gt;
| left quote ({{t|«}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;lt;}} {{Key|&amp;amp;lt;}}&lt;br /&gt;
|-&lt;br /&gt;
| right quote ({{t|»}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;gt;}} {{Key|&amp;amp;gt;}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using an existing keyboard layout ==&lt;br /&gt;
If you already have a Toaq keyboard layout (for example, by following [[Input_methods#XKB|the XKB instructions]]), then you can &amp;lt;code&amp;gt;:source&amp;lt;/code&amp;gt; the following script to make vim automatically switch layouts depending on vim&#039;s current mode. This functionality is toggled on or off each time you source the script in the same buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the TODO instructions to make it work on your system.&#039;&#039;&#039; If you use an XKB method, be sure to use the name you gave your layout in evdev.lst and evdev.xml.&lt;br /&gt;
&lt;br /&gt;
{{collapsible|.vimrc-toaq|&amp;lt;pre&amp;gt;&amp;quot; Known issues:&lt;br /&gt;
&amp;quot; 1. Modifiers do not persist through a layout switch. You need to release and re-press Shift for commands like FA.&lt;br /&gt;
&amp;quot; 2. The cursor visually disappears when awaiting single-character input to commands like r&lt;br /&gt;
&lt;br /&gt;
&amp;quot; TODO: You need to choose a layout switching method from the choices below that works best for your system. Desktop Environments have their own methods of tracking and toggling the current keyboard layout. More info:&lt;br /&gt;
&amp;quot; 	https://unix.stackexchange.com/questions/402719/how-to-get-current-keyboard-layout-from-the-command-line&lt;br /&gt;
&amp;quot; In the examples, the layout-variant pairs are:&lt;br /&gt;
&amp;quot;  Layout   Variant&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  us     | dvorak&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  toaq   | [empty string]&lt;br /&gt;
&lt;br /&gt;
function SetNormalLayout()&lt;br /&gt;
	&amp;quot;TODO:&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 1 (Recommended): Native method provided by *your* DE (Example: KDE Plasma 5)&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 0&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 2 (XKB): Set directly with xkbcomp. Likely to pakala your DE.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap us dvorak -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 3 (XKB): Switch order of keymaps reported by X to trick DE. Can cause odd problems, but might play nicer. Get this info from &#039;setxkbmap -query&#039;.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout us,toaq -variant dvorak,&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 4 (Untested): xdotool to simulate keyboard toggle key shortcut(s).&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
function SetToaqLayout()&lt;br /&gt;
	&amp;quot;TODO:&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 1&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap toaq -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout toaq,us -variant ,dvorak&#039;)&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; End TODO &#039;s &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch&lt;br /&gt;
	let b:toaq_layout_switch = 0&lt;br /&gt;
	call SetNormalLayout()&lt;br /&gt;
	redraw | echo &amp;quot;Disabled Toaq layout switching&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	let b:toaq_layout_switch = 1&lt;br /&gt;
	redraw | echo &amp;quot;Enabled Toaq layout switching&amp;quot;&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
if b:toaq_layout_switch&lt;br /&gt;
	augroup toaq_layout_switch_group_buflocal&lt;br /&gt;
		autocmd! * &amp;lt;buffer&amp;gt;&lt;br /&gt;
		autocmd VimEnter &amp;lt;buffer&amp;gt; call SetNormalLayout() &amp;quot;only matters when using -c&lt;br /&gt;
		autocmd InsertEnter &amp;lt;buffer&amp;gt; call SetToaqLayout()&lt;br /&gt;
		autocmd InsertLeave &amp;lt;buffer&amp;gt; call SetNormalLayout()&lt;br /&gt;
	augroup END&lt;br /&gt;
else&lt;br /&gt;
	autocmd! toaq_layout_switch_group_buflocal * &amp;lt;buffer&amp;gt;&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; These autocmds are SPECIAL because &amp;lt;buffer&amp;gt; can only be OR&#039;d with other {aupat}s, but we want buffer-local {aupat}s.&lt;br /&gt;
&amp;quot; So instead, they will no-op if they&#039;re unwanted.&lt;br /&gt;
augroup toaq_layout_switch_group_global&lt;br /&gt;
	autocmd!&lt;br /&gt;
	&amp;quot; The &#039;/,\?&#039; specifies search (forward, backward) only&lt;br /&gt;
	autocmd CmdlineEnter /,\? if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch | call SetToaqLayout() | endif&lt;br /&gt;
	autocmd CmdlineLeave /,\? if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch | call SetNormalLayout() | endif&lt;br /&gt;
augroup END&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; Remap some odd commands which expect buffer chars in operator-pending mode to work with Toaq buffer text. Overrides previous mappings!&lt;br /&gt;
&amp;quot; For example, you can type rı or ctꝡ from normal mode.&lt;br /&gt;
&lt;br /&gt;
function ToaqGetCharStr()&lt;br /&gt;
	call SetToaqLayout()&lt;br /&gt;
	echohl ModeMsg | echo &#039;-- TOAQ CHAR -- &#039; | echohl None&lt;br /&gt;
	let c = getcharstr()&lt;br /&gt;
	echo &#039;&#039;&lt;br /&gt;
	call SetNormalLayout()&lt;br /&gt;
	return c&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
if b:toaq_layout_switch&lt;br /&gt;
	&amp;quot; Normal&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	&amp;quot; Visual&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	&amp;quot; Motions&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
else&lt;br /&gt;
	&amp;quot; There&#039;s a better solution here:&lt;br /&gt;
	&amp;quot; 	https://vi.stackexchange.com/questions/7734/how-to-save-and-restore-a-mapping&lt;br /&gt;
&lt;br /&gt;
	&amp;quot; Normal&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; r&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
	&amp;quot; Visual&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; r&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
	&amp;quot; Motions&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You might want to add mappings to your &amp;lt;code&amp;gt;~/.vimrc&amp;lt;/code&amp;gt; to quickly source the script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;noremap &amp;lt;Leader&amp;gt;t :source ~/.vimrc-toaq&amp;lt;CR&amp;gt; &amp;quot; toggle in current buffer&lt;br /&gt;
noremap &amp;lt;Leader&amp;gt;T :windo source ~/.vimrc_toaq&amp;lt;CR&amp;gt; &amp;quot; toggle in every window&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Input methods]]&lt;/div&gt;</summary>
		<author><name>Neaqbua</name></author>
	</entry>
	<entry>
		<id>https://toaq.me/index.php?title=Vim_input&amp;diff=2159</id>
		<title>Vim input</title>
		<link rel="alternate" type="text/html" href="https://toaq.me/index.php?title=Vim_input&amp;diff=2159"/>
		<updated>2024-09-22T04:01:30Z</updated>

		<summary type="html">&lt;p&gt;Neaqbua: Using an existing keyboard layout: buffer-local + toggle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to write Toaq in the text editor &#039;&#039;vim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Using a keymap ==&lt;br /&gt;
&lt;br /&gt;
Copy the contents below into a file called &amp;lt;code&amp;gt;toaq.vim&amp;lt;/code&amp;gt; inside a folder named &amp;lt;code&amp;gt;keymap&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.vim&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;:help mbyte-keymap&amp;lt;/code&amp;gt; for more detailed information.)&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! || Without underdot || With underdot&lt;br /&gt;
|-&lt;br /&gt;
! {{done|1}}&lt;br /&gt;
|           || {{key|.}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|2}}&lt;br /&gt;
| {{key|/}} || {{key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|3}}&lt;br /&gt;
| {{key|:}} || {{key|&amp;quot;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|4}}&lt;br /&gt;
| {{key|&amp;gt;}} || {{key|^}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{collapsible|Toaq vim keymap|&amp;lt;pre&amp;gt;&amp;quot; toaq keymap&lt;br /&gt;
&amp;quot; by uakci on 2022-12-20&lt;br /&gt;
scriptencoding utf8&lt;br /&gt;
let b:keymap_name = &amp;quot;toaq&amp;quot;&lt;br /&gt;
loadkeymap&lt;br /&gt;
.i	i&lt;br /&gt;
i	ı&lt;br /&gt;
//	/&lt;br /&gt;
::	:&lt;br /&gt;
&amp;gt;&amp;gt;	&amp;gt;&lt;br /&gt;
&#039;&#039;	&#039;&lt;br /&gt;
&amp;quot;&amp;quot;	&amp;quot;&lt;br /&gt;
^^	^&lt;br /&gt;
..	.&lt;br /&gt;
.&amp;lt;	«&lt;br /&gt;
.&amp;gt;	»&lt;br /&gt;
.{	‹&lt;br /&gt;
.}	›&lt;br /&gt;
./	́&lt;br /&gt;
.:	̈&lt;br /&gt;
.&amp;gt;	̂&lt;br /&gt;
.,	̣&lt;br /&gt;
.A	Ạ&lt;br /&gt;
.U	Ụ&lt;br /&gt;
.I	Ị&lt;br /&gt;
.O	Ọ&lt;br /&gt;
.E	Ẹ&lt;br /&gt;
.a	ạ&lt;br /&gt;
.u	ụ&lt;br /&gt;
.i	ı̣&lt;br /&gt;
.o	ọ&lt;br /&gt;
.e	ẹ&lt;br /&gt;
vy	ꝡ&lt;br /&gt;
Vy	Ꝡ&lt;br /&gt;
VY	Ꝡ&lt;br /&gt;
/A	Á&lt;br /&gt;
/U	Ú&lt;br /&gt;
/I	Í&lt;br /&gt;
/O	Ó&lt;br /&gt;
/E	É&lt;br /&gt;
/a	á&lt;br /&gt;
/u	ú&lt;br /&gt;
/i	í&lt;br /&gt;
/o	ó&lt;br /&gt;
/e	é&lt;br /&gt;
:A	Ä&lt;br /&gt;
:U	Ü&lt;br /&gt;
:I	Ï&lt;br /&gt;
:O	Ö&lt;br /&gt;
:E	Ë&lt;br /&gt;
:a	ä&lt;br /&gt;
:u	ü&lt;br /&gt;
:i	ï&lt;br /&gt;
:o	ö&lt;br /&gt;
:e	ë&lt;br /&gt;
&amp;gt;A	Â&lt;br /&gt;
&amp;gt;U	Û&lt;br /&gt;
&amp;gt;I	Î&lt;br /&gt;
&amp;gt;O	Ô&lt;br /&gt;
&amp;gt;E	Ê&lt;br /&gt;
&amp;gt;a	â&lt;br /&gt;
&amp;gt;u	û&lt;br /&gt;
&amp;gt;i	î&lt;br /&gt;
&amp;gt;o	ô&lt;br /&gt;
&amp;gt;e	ê&lt;br /&gt;
&#039;A	Ạ́&lt;br /&gt;
&#039;U	Ụ́&lt;br /&gt;
&#039;I	Ị́&lt;br /&gt;
&#039;O	Ọ́&lt;br /&gt;
&#039;E	Ẹ́&lt;br /&gt;
&#039;a	ạ́&lt;br /&gt;
&#039;u	ụ́&lt;br /&gt;
&#039;i	ị́&lt;br /&gt;
&#039;o	ọ́&lt;br /&gt;
&#039;e	ẹ́&lt;br /&gt;
&amp;quot;A	Ạ̈&lt;br /&gt;
&amp;quot;U	Ụ̈&lt;br /&gt;
&amp;quot;I	Ị̈&lt;br /&gt;
&amp;quot;O	Ọ̈&lt;br /&gt;
&amp;quot;E	Ẹ̈&lt;br /&gt;
&amp;quot;a	ạ̈&lt;br /&gt;
&amp;quot;u	ụ̈&lt;br /&gt;
&amp;quot;i	ị̈&lt;br /&gt;
&amp;quot;o	ọ̈&lt;br /&gt;
&amp;quot;e	ẹ̈&lt;br /&gt;
^A	Ậ&lt;br /&gt;
^U	Ụ̂&lt;br /&gt;
^I	Ị̂&lt;br /&gt;
^O	Ộ&lt;br /&gt;
^E	Ệ&lt;br /&gt;
^a	ậ&lt;br /&gt;
^u	ụ̂&lt;br /&gt;
^i	ị̂&lt;br /&gt;
^o	ộ&lt;br /&gt;
^e	ệ&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Using digraphs ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, for sporadic usage, you can enter Toaq characters using Ctrl+K followed by two keystrokes (see &amp;lt;code&amp;gt;:help digraph&amp;lt;/code&amp;gt;). {{VY}} is not available to input using this method.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Character || Combo&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|2}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|3}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|:}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|4}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| dotless i ({{t|ı}}) || {{Key|Ctrl+K}} {{Key|.}} {{Key|i}}&lt;br /&gt;
|-&lt;br /&gt;
| left quote ({{t|«}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;lt;}} {{Key|&amp;amp;lt;}}&lt;br /&gt;
|-&lt;br /&gt;
| right quote ({{t|»}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;gt;}} {{Key|&amp;amp;gt;}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using an existing keyboard layout ==&lt;br /&gt;
If you already have a Toaq keyboard layout (for example, by following [[Input_methods#XKB|the XKB instructions]]), then you can &amp;lt;code&amp;gt;:source&amp;lt;/code&amp;gt; the following script to make vim automatically switch layouts depending on mode. This functionality is toggled on or off each time you source the script in the same buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the TODO instructions to make it work on your system.&#039;&#039;&#039; If you use an XKB method, be sure to use the name you gave your layout in evdev.lst and evdev.xml.&lt;br /&gt;
&lt;br /&gt;
{{collapsible|.vimrc-toaq|&amp;lt;pre&amp;gt;&amp;quot; Known issues:&lt;br /&gt;
&amp;quot; 1. Modifiers do not persist through a layout switch. You need to release and re-press Shift for commands like FA.&lt;br /&gt;
&amp;quot; 2. The cursor visually disappears when awaiting single-character input to commands like r&lt;br /&gt;
&lt;br /&gt;
&amp;quot; TODO: You need to choose a layout switching method from the choices below that works best for your system. Desktop Environments have their own methods of tracking and toggling the current keyboard layout. More info:&lt;br /&gt;
&amp;quot; 	https://unix.stackexchange.com/questions/402719/how-to-get-current-keyboard-layout-from-the-command-line&lt;br /&gt;
&amp;quot; In the examples, the layout-variant pairs are:&lt;br /&gt;
&amp;quot;  Layout   Variant&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  us     | dvorak&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  toaq   | [empty string]&lt;br /&gt;
&lt;br /&gt;
function SetNormalLayout()&lt;br /&gt;
	&amp;quot;TODO:&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 1 (Recommended): Native method provided by *your* DE (Example: KDE Plasma 5)&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 0&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 2 (XKB): Set directly with xkbcomp. Likely to pakala your DE.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap us dvorak -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 3 (XKB): Switch order of keymaps reported by X to trick DE. Can cause odd problems, but might play nicer. Get this info from &#039;setxkbmap -query&#039;.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout us,toaq -variant dvorak,&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 4 (Untested): xdotool to simulate keyboard toggle key shortcut(s).&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
function SetToaqLayout()&lt;br /&gt;
	&amp;quot;TODO:&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 1&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap toaq -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout toaq,us -variant ,dvorak&#039;)&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; End TODO &#039;s &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch&lt;br /&gt;
	let b:toaq_layout_switch = 0&lt;br /&gt;
	call SetNormalLayout()&lt;br /&gt;
	redraw | echo &amp;quot;Disabled Toaq layout switching&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	let b:toaq_layout_switch = 1&lt;br /&gt;
	redraw | echo &amp;quot;Enabled Toaq layout switching&amp;quot;&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
if b:toaq_layout_switch&lt;br /&gt;
	augroup toaq_layout_switch_group_buflocal&lt;br /&gt;
		autocmd! * &amp;lt;buffer&amp;gt;&lt;br /&gt;
		autocmd VimEnter &amp;lt;buffer&amp;gt; call SetNormalLayout() &amp;quot;only matters when using -c&lt;br /&gt;
		autocmd InsertEnter &amp;lt;buffer&amp;gt; call SetToaqLayout()&lt;br /&gt;
		autocmd InsertLeave &amp;lt;buffer&amp;gt; call SetNormalLayout()&lt;br /&gt;
	augroup END&lt;br /&gt;
else&lt;br /&gt;
	autocmd! toaq_layout_switch_group_buflocal * &amp;lt;buffer&amp;gt;&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; These autocmds are SPECIAL because &amp;lt;buffer&amp;gt; can only be OR&#039;d with other {aupat}s, but we want buffer-local {aupat}s.&lt;br /&gt;
&amp;quot; So instead, they will no-op if they&#039;re unwanted.&lt;br /&gt;
augroup toaq_layout_switch_group_global&lt;br /&gt;
	autocmd!&lt;br /&gt;
	&amp;quot; The &#039;/,\?&#039; specifies search (forward, backward) only&lt;br /&gt;
	autocmd CmdlineEnter /,\? if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch | call SetToaqLayout() | endif&lt;br /&gt;
	autocmd CmdlineLeave /,\? if exists(&amp;quot;b:toaq_layout_switch&amp;quot;) &amp;amp;&amp;amp; b:toaq_layout_switch | call SetNormalLayout() | endif&lt;br /&gt;
augroup END&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; Remap some odd commands which expect buffer chars in operator-pending mode to work with Toaq buffer text. Overrides previous mappings!&lt;br /&gt;
&amp;quot; For example, you can type rı or ctꝡ from normal mode.&lt;br /&gt;
&lt;br /&gt;
function ToaqGetCharStr()&lt;br /&gt;
	call SetToaqLayout()&lt;br /&gt;
	echohl ModeMsg | echo &#039;-- TOAQ CHAR -- &#039; | echohl None&lt;br /&gt;
	let c = getcharstr()&lt;br /&gt;
	echo &#039;&#039;&lt;br /&gt;
	call SetNormalLayout()&lt;br /&gt;
	return c&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
if b:toaq_layout_switch&lt;br /&gt;
	&amp;quot; Normal&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	nnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	&amp;quot; Visual&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	vnoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	&amp;quot; Motions&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
	onoremap &amp;lt;buffer&amp;gt; &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
else&lt;br /&gt;
	&amp;quot; There&#039;s a better solution here:&lt;br /&gt;
	&amp;quot; 	https://vi.stackexchange.com/questions/7734/how-to-save-and-restore-a-mapping&lt;br /&gt;
&lt;br /&gt;
	&amp;quot; Normal&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; r&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	nunmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
	&amp;quot; Visual&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; r&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	vunmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
	&amp;quot; Motions&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; f&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; F&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; t&lt;br /&gt;
	ounmap &amp;lt;buffer&amp;gt; T&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You might want to add mappings to your &amp;lt;code&amp;gt;~/.vimrc&amp;lt;/code&amp;gt; to quickly source the script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;noremap &amp;lt;Leader&amp;gt;t :source ~/.vimrc-toaq&amp;lt;CR&amp;gt; &amp;quot; toggle in current buffer&lt;br /&gt;
noremap &amp;lt;Leader&amp;gt;T :windo source ~/.vimrc_toaq&amp;lt;CR&amp;gt; &amp;quot; toggle in every window&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Input methods]]&lt;/div&gt;</summary>
		<author><name>Neaqbua</name></author>
	</entry>
	<entry>
		<id>https://toaq.me/index.php?title=Vim_input&amp;diff=2123</id>
		<title>Vim input</title>
		<link rel="alternate" type="text/html" href="https://toaq.me/index.php?title=Vim_input&amp;diff=2123"/>
		<updated>2024-09-18T22:10:52Z</updated>

		<summary type="html">&lt;p&gt;Neaqbua: Add instructions to write Toaq in vim with a system keyboard layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to write Toaq in the text editor &#039;&#039;vim&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Using a keymap ==&lt;br /&gt;
&lt;br /&gt;
Copy the contents below into a file called &amp;lt;code&amp;gt;toaq.vim&amp;lt;/code&amp;gt; inside a folder named &amp;lt;code&amp;gt;keymap&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.vim&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;:help mbyte-keymap&amp;lt;/code&amp;gt; for more detailed information.)&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! || Without underdot || With underdot&lt;br /&gt;
|-&lt;br /&gt;
! {{done|1}}&lt;br /&gt;
|           || {{key|.}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|2}}&lt;br /&gt;
| {{key|/}} || {{key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|3}}&lt;br /&gt;
| {{key|:}} || {{key|&amp;quot;}}&lt;br /&gt;
|-&lt;br /&gt;
! {{done|4}}&lt;br /&gt;
| {{key|&amp;gt;}} || {{key|^}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{collapsible|Toaq vim keymap|&amp;lt;pre&amp;gt;&amp;quot; toaq keymap&lt;br /&gt;
&amp;quot; by uakci on 2022-12-20&lt;br /&gt;
scriptencoding utf8&lt;br /&gt;
let b:keymap_name = &amp;quot;toaq&amp;quot;&lt;br /&gt;
loadkeymap&lt;br /&gt;
.i	i&lt;br /&gt;
i	ı&lt;br /&gt;
//	/&lt;br /&gt;
::	:&lt;br /&gt;
&amp;gt;&amp;gt;	&amp;gt;&lt;br /&gt;
&#039;&#039;	&#039;&lt;br /&gt;
&amp;quot;&amp;quot;	&amp;quot;&lt;br /&gt;
^^	^&lt;br /&gt;
..	.&lt;br /&gt;
.&amp;lt;	«&lt;br /&gt;
.&amp;gt;	»&lt;br /&gt;
.{	‹&lt;br /&gt;
.}	›&lt;br /&gt;
./	́&lt;br /&gt;
.:	̈&lt;br /&gt;
.&amp;gt;	̂&lt;br /&gt;
.,	̣&lt;br /&gt;
.A	Ạ&lt;br /&gt;
.U	Ụ&lt;br /&gt;
.I	Ị&lt;br /&gt;
.O	Ọ&lt;br /&gt;
.E	Ẹ&lt;br /&gt;
.a	ạ&lt;br /&gt;
.u	ụ&lt;br /&gt;
.i	ı̣&lt;br /&gt;
.o	ọ&lt;br /&gt;
.e	ẹ&lt;br /&gt;
vy	ꝡ&lt;br /&gt;
Vy	Ꝡ&lt;br /&gt;
VY	Ꝡ&lt;br /&gt;
/A	Á&lt;br /&gt;
/U	Ú&lt;br /&gt;
/I	Í&lt;br /&gt;
/O	Ó&lt;br /&gt;
/E	É&lt;br /&gt;
/a	á&lt;br /&gt;
/u	ú&lt;br /&gt;
/i	í&lt;br /&gt;
/o	ó&lt;br /&gt;
/e	é&lt;br /&gt;
:A	Ä&lt;br /&gt;
:U	Ü&lt;br /&gt;
:I	Ï&lt;br /&gt;
:O	Ö&lt;br /&gt;
:E	Ë&lt;br /&gt;
:a	ä&lt;br /&gt;
:u	ü&lt;br /&gt;
:i	ï&lt;br /&gt;
:o	ö&lt;br /&gt;
:e	ë&lt;br /&gt;
&amp;gt;A	Â&lt;br /&gt;
&amp;gt;U	Û&lt;br /&gt;
&amp;gt;I	Î&lt;br /&gt;
&amp;gt;O	Ô&lt;br /&gt;
&amp;gt;E	Ê&lt;br /&gt;
&amp;gt;a	â&lt;br /&gt;
&amp;gt;u	û&lt;br /&gt;
&amp;gt;i	î&lt;br /&gt;
&amp;gt;o	ô&lt;br /&gt;
&amp;gt;e	ê&lt;br /&gt;
&#039;A	Ạ́&lt;br /&gt;
&#039;U	Ụ́&lt;br /&gt;
&#039;I	Ị́&lt;br /&gt;
&#039;O	Ọ́&lt;br /&gt;
&#039;E	Ẹ́&lt;br /&gt;
&#039;a	ạ́&lt;br /&gt;
&#039;u	ụ́&lt;br /&gt;
&#039;i	ị́&lt;br /&gt;
&#039;o	ọ́&lt;br /&gt;
&#039;e	ẹ́&lt;br /&gt;
&amp;quot;A	Ạ̈&lt;br /&gt;
&amp;quot;U	Ụ̈&lt;br /&gt;
&amp;quot;I	Ị̈&lt;br /&gt;
&amp;quot;O	Ọ̈&lt;br /&gt;
&amp;quot;E	Ẹ̈&lt;br /&gt;
&amp;quot;a	ạ̈&lt;br /&gt;
&amp;quot;u	ụ̈&lt;br /&gt;
&amp;quot;i	ị̈&lt;br /&gt;
&amp;quot;o	ọ̈&lt;br /&gt;
&amp;quot;e	ẹ̈&lt;br /&gt;
^A	Ậ&lt;br /&gt;
^U	Ụ̂&lt;br /&gt;
^I	Ị̂&lt;br /&gt;
^O	Ộ&lt;br /&gt;
^E	Ệ&lt;br /&gt;
^a	ậ&lt;br /&gt;
^u	ụ̂&lt;br /&gt;
^i	ị̂&lt;br /&gt;
^o	ộ&lt;br /&gt;
^e	ệ&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Using digraphs ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, for sporadic usage, you can enter Toaq characters using Ctrl+K followed by two keystrokes (see &amp;lt;code&amp;gt;:help digraph&amp;lt;/code&amp;gt;). {{VY}} is not available to input using this method.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Character || Combo&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|2}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|3}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|:}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Done|4}} || {{Key|Ctrl+K}} {{Key|vowel}} {{Key|&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| dotless i ({{t|ı}}) || {{Key|Ctrl+K}} {{Key|.}} {{Key|i}}&lt;br /&gt;
|-&lt;br /&gt;
| left quote ({{t|«}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;lt;}} {{Key|&amp;amp;lt;}}&lt;br /&gt;
|-&lt;br /&gt;
| right quote ({{t|»}}) || {{Key|Ctrl+K}} {{Key|&amp;amp;gt;}} {{Key|&amp;amp;gt;}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using an existing keyboard layout ==&lt;br /&gt;
If you already have a Toaq keyboard layout (for example, by following [[Input_methods#XKB|the XKB instructions]]), then you can &amp;lt;code&amp;gt;:source&amp;lt;/code&amp;gt; the following script to make vim automatically switch layouts depending on mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the TODO instructions to make it work on your system.&#039;&#039;&#039; If you use an XKB method, be sure to use the name you gave your layout in evdev.lst and evdev.xml.&lt;br /&gt;
&lt;br /&gt;
{{collapsible|.vimrc-toaq|&amp;lt;pre&amp;gt;&amp;quot; Known issues:&lt;br /&gt;
&amp;quot; 1. Modifiers do not persist through a layout switch. You need to release and re-press Shift for commands like FA. If you want a visual reminder of when the layout has changed, uncomment the lines &amp;quot;set cursorline! | redraw&amp;quot;.&lt;br /&gt;
&amp;quot; 2. The cursor disappears when awaiting single-character input to commands like r (actually, it moves to the command line). This is indicated by a fake &amp;quot;TOAQ CHAR&amp;quot; mode message.&lt;br /&gt;
&lt;br /&gt;
&amp;quot; TODO: You need to choose a layout switching method from the choices below that works best for your system. Desktop Environments have their own methods of tracking and toggling the current keyboard layout. More info:&lt;br /&gt;
&amp;quot; 	https://unix.stackexchange.com/questions/402719/how-to-get-current-keyboard-layout-from-the-command-line&lt;br /&gt;
&amp;quot; In the examples, the layout-variant pairs are:&lt;br /&gt;
&amp;quot;  Layout   Variant&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  us     | dvorak&lt;br /&gt;
&amp;quot; --------+---------------&lt;br /&gt;
&amp;quot;  toaq   | [empty string]&lt;br /&gt;
&lt;br /&gt;
function SetNormalLayout()&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 1 (Recommended): Native method provided by *your* DE (Example: KDE Plasma 5)&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 0&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 2 (XKB): Set directly with xkbcomp. Likely to pakala your DE.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap us dvorak -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 3 (XKB): Switch order of keymaps reported by X to trick DE. Can cause odd problems, but might play nicer. Get this info from &#039;setxkbmap -query&#039;.&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout us,toaq -variant dvorak,&#039;)&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot; Method 4 (Untested): xdotool to simulate keyboard toggle key shortcut(s).&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
function SetToaqLayout()&lt;br /&gt;
	silent call system(&#039;qdbus org.kde.keyboard /Layouts setLayout 1&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap toaq -print | xkbcomp - $DISPLAY&#039;)&lt;br /&gt;
	&amp;quot;silent call system(&#039;setxkbmap -layout toaq,us -variant ,dvorak&#039;)&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;set cursorline! | redraw&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
augroup toaq_layout_switch&lt;br /&gt;
	autocmd!&lt;br /&gt;
	autocmd VimEnter * call SetNormalLayout()&lt;br /&gt;
	&amp;quot;autocmd VimLeave * call SetNormalLayout()&lt;br /&gt;
	autocmd InsertEnter * call SetToaqLayout()&lt;br /&gt;
	autocmd InsertLeave * call SetNormalLayout()&lt;br /&gt;
	&amp;quot; The &#039;/,\?&#039; specifies search (forward, backward) only&lt;br /&gt;
	autocmd CmdlineEnter /,\? call SetToaqLayout()&lt;br /&gt;
	autocmd CmdlineLeave /,\? call SetNormalLayout()&lt;br /&gt;
augroup END&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; Remap some odd commands which expect buffer chars in operator-pending mode to work with Toaq buffer text. Overrides previous mappings!&lt;br /&gt;
&amp;quot; For example, you can type rı or ctꝡ from normal mode.&lt;br /&gt;
&lt;br /&gt;
function ToaqGetCharStr()&lt;br /&gt;
	call SetToaqLayout()&lt;br /&gt;
	echohl ModeMsg | echo &#039;-- TOAQ CHAR -- &#039; | echohl None&lt;br /&gt;
	let c = getcharstr()&lt;br /&gt;
	echo &#039;&#039;&lt;br /&gt;
	call SetNormalLayout()&lt;br /&gt;
	return c&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Normal&lt;br /&gt;
nnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
nnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
nnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
nnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
nnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
&amp;quot; Visual&lt;br /&gt;
vnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; r &amp;quot;r&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
vnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
vnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
vnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
vnoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
&amp;quot; Motions&lt;br /&gt;
onoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; f &amp;quot;f&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
onoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; F &amp;quot;F&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
onoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; t &amp;quot;t&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
onoremap &amp;lt;silent&amp;gt; &amp;lt;expr&amp;gt; T &amp;quot;T&amp;quot; .. ToaqGetCharStr()&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You might want to add a mapping to your &amp;lt;code&amp;gt;~/.vimrc&amp;lt;/code&amp;gt; to quickly source the script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;noremap &amp;lt;Leader&amp;gt;t :source ~/.vimrc-toaq&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Input methods]]&lt;/div&gt;</summary>
		<author><name>Neaqbua</name></author>
	</entry>
</feed>