ITT (Indirect Touch Typing) - A spatial method for learning touch typing
Qwerty
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββββββ
βEscβF1 βF2 βF3 βF4 βF5 βF6 βF7 βF8 βF9 βF10βF11βF12β Del β
βββββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββββββ€
β ~ β ! β @ β # β $ β % β ^ β & β * β ( β ) β _ β + βBkspcβ
β ` β 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β 0 β - β = β β
βββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββββ€
β Tab β q β w β e β r β t β y β u β i β o β p β { β } β | β
β βx11βx12βx13βx14βy11βy12βz11βz12βz13βz14β [ β ] β \ β
ββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄βββββ€
β Caps β a β s β d β f β g β h β j β k β l β ; β " β Enter β
β Lock βx21βx22βx23βx24βy21βy22βz21βz22βz23βz24β ' β β
βββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄ββββββββ€
β Shift β z β x β c β v β b β n β m β , β . β / β Shift β
β βx31βx32βx33βx34βy31βy32βz31βz32βz33βz34β β
ββββββ¬ββββΌββββΌββββΌββββ΄ββββ΄ββββ΄ββββ΄βββ¬β΄βββ¬β΄ββββΌββββ΄β¬βββββ¬βββββ€
βCtrlβFn βWinβAltβ Space βAltβCtrlβ β β ββ β β β
ββββββ΄ββββ΄ββββ΄ββββ΄βββββββββββββββββββ΄ββββ΄βββββ΄βββββ΄βββββ΄βββββ
Dvorak
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββββββ
βEscβF1 βF2 βF3 βF4 βF5 βF6 βF7 βF8 βF9 βF10βF11βF12β Del β
βββββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββββββ€
β ~ β ! β @ β # β $ β % β ^ β & β * β ( β ) β { β } βBkspcβ
β ` β 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β 0 β [ β ] β β
βββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββββ€
β Tab β ' β , β . β p β y β f β g β c β r β l β ? β + β | β
β βx11βx12βx13βx14βy11βy12βz11βz12βz13βz14β / β = β \ β
ββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄βββββ€
β Caps β a β o β e β u β i β d β h β t β n β s β _ β Enter β
β Lock βx21βx22βx23βx24βy21βy22βz21βz22βz23βz24β - β β
βββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄ββββββββ€
β Shift β ; β q β j β k β x β b β m β w β v β z β Shift β
β βx31βx32βx33βx34βy31βy32βz31βz32βz33βz34β β
ββββββ¬ββββΌββββΌββββΌββββ΄ββββ΄ββββ΄ββββ΄βββ¬β΄βββ¬β΄ββββΌββββ΄β¬βββββ¬βββββ€
βCtrlβFn βWinβAltβ Space βAltβCtrlβ β β ββ β β β
ββββββ΄ββββ΄ββββ΄ββββ΄βββββββββββββββββββ΄ββββ΄βββββ΄βββββ΄βββββ΄βββββ
Ytsuken
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββββββ
βEscβF1 βF2 βF3 βF4 βF5 βF6 βF7 βF8 βF9 βF10βF11βF12β Del β
βββββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββββββ€
β ~ β ! β " β β β ; β % β : β ? β * β ( β ) β _ β + βBkspcβ
β ` β 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β 0 β - β = β β
βββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββββ€
β Tab β ΠΉ β Ρ β Ρ β ΠΊ β Π΅ β Π½ β Π³ β Ρ β Ρ β Π· β Ρ
β Ρ β / β
β βl11βl12βl13βl14βc11βc12βr11βr12βr13βr14β β β \ β
ββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄βββββ€
β Caps β Ρ β Ρ β Π² β Π° β ΠΏ β Ρ β ΠΎ β Π» β Π΄ β ΠΆ β Ρ β Enter β
β Lock βl21βl22βl23βl24βc21βc22βr21βr22βr23βr24β β β
βββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄ββββββββ€
β Shift β Ρ β Ρ β Ρ β ΠΌ β ΠΈ β Ρ β Ρ β Π± β Ρ β . β Shift β
β βl31βl32βl33βl34βc31βc32βr31βr32βr33βr34β β
ββββββ¬ββββΌββββΌββββΌββββ΄ββββ΄ββββ΄ββββ΄βββ¬β΄βββ¬β΄ββββΌββββ΄β¬βββββ¬βββββ€
βCtrlβFn βWinβAltβ Space βAltβCtrlβ β β ββ β β β
ββββββ΄ββββ΄ββββ΄ββββ΄βββββββββββββββββββ΄ββββ΄βββββ΄βββββ΄βββββ΄βββββ
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββββββ
βEscβF1 βF2 βF3 βF4 βF5 βF6 βF7 βF8 βF9 βF10βF11βF12β Del β
βββββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββ΄ββ¬ββββββ€
β ~ β ! β @ β # β $ β % β ^ β & β * β ( β ) β- _β= +βBkspcβ
β ` β 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β 0 β[ {β] }β β
βββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββββ€
β Tab β q β w β e β r β t β y β u β i β o β p β[ {β] }β | β
β β' "β, <β. >β p β y β f β g β c β r β l β/ ?β= +β \ β
ββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄βββββ€
β Caps β a β s β d β f β g β h β j β k β l β; :β' "β Enter β
β Lock β a β o β e β u β i β d β h β t β n β s β- _β β
βββββββββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄β¬βββ΄ββββββββ€
β Shift β z β x β c β v β b β n β m β, <β. >β/ ?β Shift β
β β; :β q β j β k β x β b β m β w β v β z β β
ββββββ¬ββββΌββββΌββββΌββββ΄ββββ΄ββββ΄ββββ΄βββ¬β΄βββ¬β΄ββββΌββββ΄β¬βββββ¬βββββ€
βCtrlβFn βWinβAltβ Space βAltβCtrlβ β β ββ β β β
ββββββ΄ββββ΄ββββ΄ββββ΄βββββββββββββββββββ΄ββββ΄βββββ΄βββββ΄βββββ΄βββββ
The keys A and M form a cognitive bridge between
QWERTY and Dvorak layouts. To mitigate cognitive load and
prevent muscle memory interference during layout switching,
ITT leverages these magic keys as stable anchor points.
They share the same physical position (masks x21 and z31)
across both layouts. This provides a consistent reference for
your spatial memory, making the transition between layouts
safer and more intuitive by preventing a complete perceptual
breakdown.
A Mnemonic Rule defines the order in which letters are extracted from layouts to build a Mnemonic Anchor.
-
Qworak Rule: Qwerty-Dvorak Order β Mnemonic Anchor.
- First letter from QWERTY, second from Dvorak.
- Example:
I(QWERTY) +C(Dvorak) βICβ Ion Cannon.
-
Dverty Rule: Dvorak-Qwerty Order β Mnemonic Anchor.
- First letter from Dvorak, second from QWERTY.
- Example:
C(Dvorak) +I(QWERTY) βCIβ different association.
-
Unordered Rule: No Order β Mnemonic Anchor.
- Order is not defined; any permutation of letters from the key applies.
- 2 layouts:
I(QWERTY) +C(Dvorak) βICorCIβ same association. - 3 layouts:
I(QWERTY) +C(Dvorak) +U(Colemak) βCIU,CUI,ICU,IUC,UCI,UICβ same association.
Core Concept: For each key group (defined by its mask and symbols), a primary universal association (abbr. assoc) is provided, along with a set of alternative associations for different contexts or preferences. The goal is to create a chain of associative links that together form a coherent mnemonic context.
<combo_id>:<mask chain><mask>(<key group>)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- ...
- MNEMONIC CONTEXT:
<assoc chain>
Where
-
<combo_id>:combo_<zone><start_row>-<end_row><column> -
<mask>: A spatial key group identifier (e.g.,xij,yij) -
<key group>: The physical symbols on the key(s) for the layout(s) -
<mask chain>:<mask_1>β<mask_2>β ... β<mask_n> -
<assoc chain>:<assoc_1>β<assoc_2>β ... β<assoc_n> -
combo_x1-31
x11(Qsingle quote)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x21(AA)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x31(Zsemicolon)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_x1-32
x12(Wcomma)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x22(SO)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x32(XQ)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_x1-33
x13(Edot)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x23(DE)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x33(CJ)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_x1-34
x14(RP)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x24(FU)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
x34(VK)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_y1-31
y11(TY)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
y21(GI)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
y31(BX)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_y1-32
y12(YF)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
y22(HD)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
y32(NB)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_z1-31
z11(UG)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z21(JH)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z31(MM)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_z1-32
z12(IC)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z22(KT)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z32(commaW)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_z1-33
z13(OR)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z23(LN)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z33(dotV)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
-
combo_z1-34
z14(PL)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z24(semicolonS)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
z34(slashZ)- Primary:
<primary assoc> - Alternatives: [
<alternative assoc_1>, ...]
- Primary:
- MNEMONIC CONTEXT:
<assoc chain>
For example, if ty β thank you, gi β gift, and bx β box were used,
the mnemonic context would be "thank you for the gift box".
Instead, the following anchors are used: ty β typewriter,
gi β G.I. Joe, bx β box.
-
x11 =
q'"= [quotes, 69, yin-yang] -
x12 =
w,<= [www ~ welcome ~ open, waiting ~ pause ~ comma] -
x13 =
e.>= [end, dit (Morse code), dot ~ stop ~ close] -
x14 =
rp= [red pill] -
y11 =
ty= [typewriter] -
y12 =
yf= [Yoda force] -
z11 =
ug= [upgrade] -
z12 =
ic= [ion cannon, Intel Core] -
z13 =
or= [logical disjunction (Venn diagram)] -
z14 =
pl= [plutonium] -
x21 =
aa= [AA battery] -
x22 =
so= [Sonic, Stack Overflow] -
x23 =
de= [DeLorean, debug] -
x24 =
fu= [f**k you, Futurama] -
y21 =
gi= [G.I. Joe] -
y22 =
hd= [Harley-Davidson, Humpty Dumpty] -
z21 =
jh= [Jekyll & Hyde] -
z22 =
kt= [knight] -
z23 =
ln= [natural logarithm, line] -
z24 =
;:s= [next ~ semicolon, sector] -
x31 =
z;:= [zone, next ~ semicolon] -
x32 =
xq= [exit, quit] -
x33 =
cj= [Captain Jack Sparrow, conjunction] -
x34 =
vk= [virtual key] -
y31 =
bx= [box] -
y32 =
nb= [nota bene, New Balance] -
z31 =
mm= [Mickey Mouse, M&M's] -
z32 =
,<w= [waiting ~ pause ~ comma, www ~ welcome ~ open] -
z33 =
.>v= [dot ~ stop ~ close, V for Vendetta ~ resistance ~ Guy Fawkes mask] -
z34 =
/?z= [/ zero = error]
Note: Permuted key groups (same masks, different order):
x12~z32,z24~x31.
-
Multi-Row Patterns
Patterns that cover multiple rows (support all traversals):
full: The entire keyboard matrix.zone_x: Keys in the left zone (coordinatesx11tox34). E.g.,Q A Zcolumn.zone_y: Keys in the home/center zone (coordinatesy11toy32). E.g.,T G Bcolumn.zone_z: Keys in the right zone (coordinatesz11toz34). E.g.,P ; /column.zone_xy: Combined left and home zones (zone_x+zone_y).zone_xz: Combined left and right zones (zone_x+zone_z).zone_yz: Combined home and right zones (zone_y+zone_z).
-
Single-Row Patterns
Patterns for a single row (support only
lineartraversals):home_row: The home row keys (A S D F G H J K L ;for QWERTY).top_row: The top letter row (Q W E R T Y U I O P).bottom_row: The bottom letter row (Z X C V B N M , . /).number_row: The number row (1 2 3 4 5 6 7 8 9 0 - =).
-
Athematic Patterns
Patterns grouped by meaning, not location (support only the
randomtraversals):vowels: Vowel keys (A E I O U).consonants: Consonant keys (all letter keys exceptA E I O U).common_bigrams: Frequent letter pairs (e.g.,TH HE IN ER AN RE ES ON ST NT).common_trigrams: Frequent 3-letter sequences (e.g.,THE AND ING HER ERE ENT THA NTH WAS ETH).problematic_keys: A user-defined set of keys that require extra practice.
Naming Conventions
linearβlisnakeβsnspiral_inβsi(Spiral In)spiral_outβso(Spiral Out)roundβrd
For direction-based strategies (Linear):
<type>_<direction>
Where
<type>:li<direction>is a combination:lr_tb(left-right, top-bottom)lr_bt(left-right, bottom-top)rl_tb(right-left, top-bottom)rl_bt(right-left, bottom-top)tb_lr(top-bottom, left-right)tb_rl(top-bottom, right-left)bt_lr(bottom-top, left-right)bt_rl(bottom-top, right-left)
Example: li_lr_tb, li_tb_lr
For start-point-based strategies (Snake, Spiral, Round):
<type>_<direction>_<start>
Where
<type>:snsi,sord
<direction>:lr(left-right)rl(right-left)tb(top-bottom)bt(bottom-top)cw(clockwise)ccw(counter-clockwise)
<start>:tlm(top leftmost)trm(top rightmost)blm(bottom leftmost)brm(bottom rightmost)hlm(home leftmost)hrm(home rightmost)
For rd (round) traversals only, <start> can also be any specific key
(e.g., E for zone_x, O for zone_z) to define a custom starting point
on the perimeter.
Example: sn_tb_tlm, si_cw_trm, rd_cw_e, rd_ccw_o
-
Linear Traversals
Strategies that follow a predefined linear sequence:
-
li_lr_tb(Left-Right, Top-Bottom): Traverse each row left to right, move to next row top to bottom.Example (QWERTY, Multi-Row, full):
Q β ... β P β A β ... β ; β Z β ... β /Example (QWERTY, Single-Row, full):
A β S β D β F β G β H β J β K β L β ; -
li_lr_bt(Left-Right, Bottom-Top): Traverse each row left to right, move to next row bottom to top.Example (QWERTY, full):
Z β ... β / β A β ... β ; β Q β ... β P -
li_rl_tb(Right-Left, Top-Bottom): Traverse each row right to left, move to next row top to bottom.Example (QWERTY, Multi-Row, full):
P β ... β Q β ; β ... β A β / β ... β ZExample (QWERTY, Single-Row, full):
; β L β K β J β H β G β F β D β S β A -
li_rl_bt(Right-Left, Bottom-Top): Traverse each row right to left, move to next row bottom to top.Example (QWERTY, full):
/ β ... β Z β ; β ... β A β P β ... β Q -
li_tb_lr(Top-Bottom, Left-Right): Traverse each column top to bottom, move to next column left to right.Example (QWERTY, full):
Q β A β Z β W β S β X β ... β P β ; β / -
li_tb_rl(Top-Bottom, Right-Left): Traverse each column top to bottom, move to next column right to left.Example (QWERTY, full):
P β ; β / β O β L β . β ... β Q β A β Z -
li_bt_lr(Bottom-Top, Left-Right): Traverse each column bottom to top, move to next column left to right.Example (QWERTY, full):
Z β A β Q β X β S β W β ... β / β ; β P -
li_bt_rl(Bottom-Top, Right-Left): Traverse each column bottom to top, move to next column right to left.Example (QWERTY, full):
/ β ; β P β . β L β O β ... β Z β A β Q
Note: For Single-Row patterns, the
li_lr_tbandli_rl_tbtraversals are simplified to linear left-right and right-left movement (the_tbpart is ignored). -
-
Snake Traversals
Strategies that traverse keys in a snake (zigzag) pattern, row by row or column by column:
-
sn_tb_tlm(Snake, Top-Bottom, Top-Left): Snake top to bottom, starting from top-left.Example (QWERTY, full):
Q β ... β P β ; β ... β A β Z β ... β / -
sn_tb_trm(Snake, Top-Bottom, Top-Right): Snake top to bottom, starting from top-right.Example (QWERTY, full):
P β ... β Q β A β ... β ; β / β ... β Z -
sn_bt_blm(Snake, Bottom-Top, Bottom-Left): Snake bottom to top, starting from bottom-left.Example (QWERTY, full):
Z β ... β / β ; β ... β A β Q β ... β P -
sn_bt_brm(Snake, Bottom-Top, Bottom-Right): Snake bottom to top, starting from bottom-right.Example (QWERTY, full):
/ β ... β Z β A β ... β ; β P β ... β Q -
sn_lr_tlm(Snake, Left-Right, Top-Left): Snake left to right, starting from top-left.Example (QWERTY, full):
Q β A β Z β X β S β W β ... β / β ; β P -
sn_lr_blm(Snake, Left-Right, Bottom-Left): Snake left to right, starting from bottom-left.Example (QWERTY, full):
Z β A β Q β W β S β X β ... β P β ; β / -
sn_rl_trm(Snake, Right-Left, Top-Right): Snake right to left, starting from top-right.Example (QWERTY, full):
P β ; β / β . β L β O β ... β Z β A β Q -
sn_rl_brm(Snake, Right-Left, Bottom-Right): Snake right to left, starting from bottom-right.Example (QWERTY, full):
/ β ; β P β O β L β . β ... β Q β A β Z
-
-
Spiral Traversals
Strategies that traverse keys in a continuous spiral motion, inward or outward:
-
si_cw_tlm(Spiral In, Clockwise, Top-Left): Spiral inward clockwise, starting from top-left.Example (QWERTY, full):
Q β ... β P β ; β / β ... β Z β A β ... β L -
si_cw_brm(Spiral In, Clockwise, Bottom-Right): Spiral inward clockwise, starting from bottom-right.Example (QWERTY, full):
/ β ... β Z β A β Q β ... β P β ; β ... β S -
si_ccw_trm(Spiral In, Counter-Clockwise, Top-Right): Spiral inward counter-clockwise, starting from top-right.Example (QWERTY, full):
P β ... β Q β A β Z β ... β / β ; β ... β S -
si_ccw_blm(Spiral In, Counter-Clockwise, Bottom-Left): Spiral inward counter-clockwise, starting from bottom-left.Example (QWERTY, full):
Z β ... β / β ; β P β ... β Q β A β ... β L -
so_cw_hrm(Spiral Out, Clockwise, Home-Right): Spiral outward clockwise, starting from home-right.Example (QWERTY, full):
L β ... β A β Q β ... β P β ; β / β ... β Z -
so_ccw_hlm(Spiral Out, Counter-Clockwise, Home-Left): Spiral outward counter-clockwise, starting from home-left.Example (QWERTY, full):
S β ... β ; β P β ... β Q β A β Z β ... β /
-
-
Round Traversals
Strategies that traverse keys along the perimeter of a pattern in a round motion:
-
rd_cw_tlm(Round Clockwise, Top-Left): Traverse the perimeter clockwise, starting from the top-left key of the zone.Example (QWERTY, zone_x):
Q β ... β R β F β V β ... β Z β A β Q -
rd_ccw_o(Round Counter-Clockwise, Special KeyO): Traverse the perimeter counter-clockwise, starting from the special keyOof the zone.Example (QWERTY, zone_z):
O β I β U β J β M β ... β / β ; β P β O
Note: The combination of pattern types and start points allows for a wide variety of round traversals. For example, the perimeter of the
zone_xpattern includes keysq, w, e, r, f, v, c, x, z, a. This allows for 10 unique starting points, each with two directions (cw,ccw), resulting in 20 variations for just one zone. -
-
Random Traversals
random: Keys are selected randomly from the pattern. Repetition is possible.
itt --help
ITT - Indirect Touch Typing
Usage:
itt -k <name> -m <name> -p <name> -t <name> -c <sec>
itt --keyboard-layout <name> --mask <name> --pattern <name> \
--traversal <name> --countdown-timer <sec>
itt -h | --help
itt -v | --version
Arguments:
-k, --keyboard-layout <name> Keyboard layout (qwerty, dvorak, ytsuken, mix)
-m, --mask <name> Mask template (xyz, lcr) for target display
-p, --pattern <name> Practice pattern (full, home_row, vowels, etc.)
-t, --traversal <name> Traversal strategy (lr_tb, random, etc.)
-c, --countdown-timer <sec> Max time allowed to press each key (seconds)
-s, --stats Show statistics from the last session
-h, --help Show this help message
-v, --version Show version information
Examples:
itt -k mix -m xyz -p full -t random -c 10
itt -k ytsuken -m lcr -p home_row -t li_lr_tb -c 5
itt --stats[Qwerty/xyz] Pattern: home_row > Traversal: li_lr_tb
Target: x21 (A) > Input: ... > Time: 4.3s[Mix/xyz] Pattern: zone_x > Traversal: random
Target: [dv] x13 > Input: ... > Time: 7.0sitt was created by Denis Khorkin. It is licensed under the terms
of the BSD-3-Clause license.
- Denis Khorkin

