Common Thai Typing Mistakes (and How to Fix Them)
Most plateaus in Thai typing come down to a handful of habits, not a lack of talent. Some are general to all touch-typing; a couple are specific to the Thai script. The ones that stall Kedmanee learners are almost always the same: looking down for น on O and ข on minus, typing ก before เ, swapping ่ on J with ้ on H, and using same-hand Shift for โ on Shift+F. Here are those mistakes with named keys and a fix for each.
ThaiTyper already isolates several of them as skill atoms: preposed-order for the vowel-first rule, tone-marks for ่ versus ้, shift-layer for ๊ ๋ and the rare consonants, stacked-vowels for ิ on B versus ี on U. A plateau is usually one of those atoms sitting at 85–89% — the “almost” band, not a pass. SKILL_PASS is 90. If you keep running mixed sentences over a failing atom, you are practising the mistake. Open the atom, slow the finger, then come back.
Looking down at the keyboard
Every glance down resets your eyes and your rhythm, and it prevents the real goal — letting your fingers learn the positions. On a Kedmanee board with Latin caps, the glance is especially tempting because the glyphs you need are not printed. น is O, ข is minus, จ is Digit0, ไ is W: none of those look like Thai until you press them. Fix it by keeping your eyes on the screen even when it slows you down at first. The F bump is ด and the J bump is ่; find those two by touch at the start of every session, then do not look again.
The on-screen board in ThaiTyper glows the next key and colours the finger zone. That is the substitute for looking down. If you still peek, you are usually hunting one of three reaches: น on O (right ring, top), ข on minus (right pinky, number row), or ป on X (left ring, bottom). Drill that one reach as a round trip from home — press, return — ten times, then put the word back. Peeking at the whole board to find one letter trains the peek, not the letter.
You do not need Thai keycaps to stop looking down. ThaiTyper maps KeyboardEvent.code through CHARS.kedmanee, so D still produces ก while the OS is on ENG. Stickers that put ก on D can help the first week; they also become a reason to glance. If you use them, treat the sticker as a confirmation after a miss, not as a hunt before the press. The bumps under ด and ่ are the only tactile labels that belong in a touch-typing session.
- Anchor: left index on F (ด), right index on J (่), before the first character of every drill.
- If you look down, name the key you were hunting. “I looked” is not a diagnosis; “I looked for O because น still is not a reach” is.
- Use the in-app glow for a week, then turn hints off for a run. If accuracy collapses, the missing keys are on the heatmap, not on your desk.
- Caps Lock must be off. A look down that also hits Caps Lock wrecks Shift-layer letters for the rest of the line.
Typing the consonant before a pre-posed vowel
This is the Thai-specific mistake that trips up every beginner. The five pre-posed vowels เ แ โ ใ ไ are written to the left of their consonant but pronounced as part of the same syllable — and they must be typed first. New typists, reading the syllable in pronunciation order, reach for the consonant first and get the cluster wrong. ThaiTyper’s cluster walk in lib/typing/clusters.ts will commit ก as its own cluster and then start เ, so you see กเ instead of เก. Backspace must then delete both pieces. Train the keystroke order directly: pre-posed vowel, then consonant, then any stacked vowel, then any tone mark, then ะ า ำ.
Name the five keys so the rule has somewhere to live. เ is G, left index, home — no reach, the most common of the five, which is why เป็น and เด็ก practise vowel-first every session. แ is C, left middle, bottom, under ก on D. ไ is W, left ring, top, above ห on S. ใ is period, right ring, bottom. โ is Shift+F, the Shift of ด, opposite-hand Shift. เก is G then D. ไม่ is W, comma, J. If the prompt is เก and you produced กเ, do not restart the whole word from a glance; delete back to empty and press G first.
ไ versus ใ is a second mistake hiding inside this one. They write the same /ai/ sound and they are not neighbours: W versus period, left ring top versus right ring bottom. ไม่ ไป ไทย take ไ. ใจ ใหม่ ใคร take ใ. The preposed-order atom will fail the cluster if you type the wrong one, because they are different code points. Stop sounding them. Attach each to a word and a key. ใหม่ also has ห on S in the middle; ไม่ does not. That extra S is a better clue than the vowel sound.
- เก แก โก: G D, C D, right-Shift F then D. Vowel first, ก second.
- ไม่: W, comma, J. If you see มไ, you typed ม first.
- ใจ: period, Digit0 (จ). Long jump, still vowel first.
- เด็ก: G, F, Shift+H (็), D. ็ is a stacked mark, so it comes after ด, not before เ.
Confusing ไม้เอก (่) and ไม้โท (้)
These two tone marks look similar, change a word’s meaning completely, and on Kedmanee are pressed by the same right index finger on adjacent keys — so it is no surprise they get swapped. ่ is J, the home bump. ้ is H, one step left. มา versus ม้า, ขาว versus ข้าว, เข้า versus เขา: one key is the whole difference. The tone-marks atom exists so this pair can fail in isolation. Slow that finger until J-for-่ and H-for-้ feel like different keys, not two versions of “the tone key.” Saying ไม้เอก or ไม้โท as you press it is more effective than staring at the glyph.
The swap also changes class reading, which is why it feels worse than a random miss. On a mid-class ก, ่ is low and ้ is falling: ก่า versus ก้า, both D then the mark then K. On a low-class ม, ่ is falling and ้ is high: ม่า versus ม้า. You do not need that table mid-drill. You need to notice that KeyJ and KeyH are both hot on the heatmap. Drill ่ ้ ่ ้ with the right index returning to J after H, then put the marks back on กา and มา. Do not add ๊ or ๋ until this pair is boring.
- ข้าว is minus, H, K, semicolon. ขาว is minus, K, semicolon. H is the only extra key.
- ไม่ is W, comma, J. If you press H instead of J you get ไม้, a different word.
- แล้ว is แ on C, ล on BracketRight, ้ on H, ว on semicolon. The ้ is H, not J.
- Return to J after every ้. The rest position is ่’s key; ้ is a visit.
Chasing speed too early
Speed built on shaky accuracy is fragile. If you are constantly hitting Backspace, you are not typing faster — you are typing twice. Thai clusters make this worse than in English: Backspace deletes a code point from the end of the sequence, not “the mark you are looking at,” so one wrong ่ in ที่ (M, U, J) can force you to rebuild ี as well. Slow down until accuracy is consistently high, then let speed return on a solid base. ThaiTyper will not unlock the next skill until 90%. The 85–89 band is labelled almost. Treat almost as a stop sign, not as a near-win you can rush past.
The keys that manufacture fake speed in week one are the neighbour pairs: ก on D versus ด on F, ่ on J versus ้ on H, ิ on B versus ี on U. Each pair is the same finger or two adjacent fingers, and each pair is frequent enough that a 5% error rate feels like “I’m going fast.” Count Backspaces for one run. If you backspaced more than a handful of times, the net characters per minute are lying. Cut the metronome in half on that pair only — ten slow กด กด, ten slow ่้ ่้ — then resume the mixed drill.
Do not use Sentences or Daily as a speed hack while an atom is still in the almost band. Those modes mix pre-posed vowels, tones, and Shift digits in the same line, so you cannot tell which mistake produced the Backspace. The Skills track exists to fail one rule at a time. A 40 wpm sentence run at 78% accuracy is slower practice than a 15 wpm tone-marks drill at 93%. Clear 90 on the atom that the heatmap names, then go back to sentences and watch the same keys stop costing you a delete.
Avoiding the Shift layer
It is tempting to stick to base-layer characters because the Shift layer feels clumsy. But the rarer tone marks (๊ on Shift+U, ๋ on Shift+J), the Thai digits (๑ on Shift+Digit2 through ๙ on Shift+Equal, ๐ on Shift+Q), and many real consonants (โ on Shift+F, ฎ on Shift+E, ศ on Shift+L) need it, so avoidance just delays the difficulty. Drill the Shift layer as its own skill — that is what the shift-layer atom is for — and always Shift with the hand opposite the key. Left Shift for ๊ ๋ and the right-hand digits; right Shift for โ on F and ฎ on E.
A dropped Shift is a specific wrong letter, not a mystery. Shift+F without Shift is ด. Shift+U without Shift is ี. Shift+J without Shift is ่. Shift+H without Shift is ้ when you wanted ็ in เด็ก. If the prompt shows โ and you typed ด, you did not “miss โ.” You skipped Shift. Pause before every number-row Shift as well: ุ is Digit6 base, ู is Shift+Digit6, ฿ is Shift+Digit7. The specials atom (์ on Shift+N, ํ on Shift+Y) is the same habit on two more keys. Opposite-hand Shift is the whole technique; same-hand Shift is the next section.
- โ: right pinky on right Shift, left index on F. If ด appears, the right Shift never went down.
- ๊: left Shift, right index on U. If ี appears, you typed U with no Shift.
- เด็ก: G, F, left Shift plus H, D. If เด้ appears, H was unshifted.
- ๐: Shift+Q. It is not on Digit0 (that base is จ). Looking at 0 on the cap is the wrong hunt.
Same-hand Shift
Opposite-hand Shift is a rule with a Kedmanee map, not a slogan. โ is Shift+F: the left index is busy on F, so the left pinky cannot also hold Shift. Right Shift. ๊ is Shift+U: the right index is busy on U, so the right pinky cannot also hold Shift. Left Shift. ๋ is Shift+J, same right index, left Shift. ็ is Shift+H, same right index, left Shift. Every time you chord Shift and the letter with one hand, the pinky tugs the index off its key and you get a missed ด, a late ี, or a ่ instead of ๋.
The failure is visible on the heatmap as the base letter, not as Shift. KeyF lights because you wanted โ and typed ด. KeyU lights because you wanted ๊ and typed ี. Do not add a “Shift skill” by staring at the Shift caps. Hold the opposite Shift, press the letter, release both, return to home. Ten โ, ten ๊, ten ็ in เด็ก. If the left pinky wants to help with โ, it is stealing the chord. Park it on A (ฟ) where it belongs.
Neighbour keys that change the word
A handful of adjacent or same-finger pairs account for most “I typed Thai but it was the wrong word” errors. ก on D and ด on F are both mid-class, both home, both extremely frequent; กด versus ดก is a left-hand neighbour swap. ิ on B (left index down) and ี on U (right index up) look like the same stroke with a length mark. ั on Y versus ะ on T are adjacent top-row /a/-family marks. ไ on W versus ใ on period are not neighbours on the board, but they are neighbours in the ear. Drill the pair that the heatmap names, not the whole alphabet.
ข on minus versus ค on Digit8 is the class pair from the consonant-class guide: same /kh/, different keys, different unmarked tones. ถ on Digit5 versus ท on M is opposite hands. ฝ on slash versus ฟ on A is a pinky-to-pinky confusion if you think /f/ has one key. None of these is fixed by “being more careful.” Isolate the two keys, type them as a repeating pair until the fingers disagree with each other, then drop them back into a word (ขาว / คาว, ที่ / ทาน, ฝัน / ฟัน).
Two more collisions that feel like “Thai is hard” and are just Shift or row errors. ุ is Digit6, ู is Shift+Digit6 — forget Shift and the long vowel becomes short; use same-hand Shift and the chord never fires. ะ on T, ำ on E, and ั on Y are three /a/-family marks on three keys: กะ is D T, กำ is D E, กัน is D Y O. If you assemble ำ from ะ plus ม, you spelled a different syllable. The stacked-vowels and specials atoms exist so these fail without a full sentence in the way.
- กด / ดก: D F versus F D, left middle versus left index, return to the bumps after each pair.
- ที่ / กิ่: M U J versus D B J. ี is U, ิ is B. Do not reach for U when the prompt shows ิ.
- ไม่ / ใจ: W comma J versus period Digit0. Sound is useless; keys are not.
- กะ กำ กัน: T, E, and Y. One finger family, three spellings.
- ก / ด: D versus F. Home-consonants atom. Heatmap KeyD+KeyF.
- ่ / ้: J versus H. Tone-marks atom. Heatmap KeyJ+KeyH.
- ิ / ี: B versus U. Stacked-vowels atom. Diagonal, two hands.
- ไ / ใ: W versus period. Preposed-order plus spelling. ไม่ versus ใจ.
- ข / ค: minus versus Digit8. Reaches plus class. ขาว versus คาว.
Tense hands and bad posture
Tension causes errors and fatigue. Keep your wrists neutral, shoulders relaxed, and fingers curved gently over the home row. Kedmanee makes this load-bearing because the awkward letters are reaches: น on O is a right-ring stretch, ข on minus is a right-pinky number-row stretch, ป on X is a left-ring drop. A wrist planted on the desk cannot pivot to those keys, so the whole hand crawls, and then ด on F is no longer under the left index when you come back. If your hand starts to ache, stop and shake it out — practising while tense just trains tension into the O and minus reaches.
Pinky tension is the Thai-specific version. The right pinky owns ว on semicolon, ง on quote, จ on Digit0, ข on minus, ช on equal, and ฝ on slash. That is too much work for a locked pinky. Keep it curved, not stabbed. The left pinky owns ฟ on A, ผ on Z, and left Shift for ๊ ๋ ็. If you catch that pinky flattening to mash Shift and Z at once, you are in the same-hand-Shift mistake again. Rest, reset F and J, and only then type ข or น as a single reach with a return.
Number-row reaches add a shoulder shrug if the keyboard is too high or too far. ข on minus, ค on Digit8, ุ on Digit6, and ึ on Digit7 are all above the top letter row. A shrug that lifts the right elbow pulls the right index off J, and the next ่ lands on H. Drop the keyboard or raise the chair until the home row is a rest, not a reach, and treat minus as a finger motion, not a body motion. If ข and ่ start failing together, the cause is often posture, not two separate letter problems.
Skipping review
New rows fade if you never revisit them. Mix older material into each session so the whole layout stays warm. A few minutes of review at the start of practice pays off more than it costs. In ThaiTyper that means: do not spend every session on the newest unlocked atom. If syllable-clusters just opened, the first two minutes are still home-consonants and ่ ้, because แก้ว is แ C, ก D, ้ H, ว semicolon — and H and D go cold the week you only type new number-row letters. Fix these habits one at a time: pick the single mistake costing you the most today, focus on it for a week, then move to the next.
Review is also how you catch a layout mismatch. If D has started typing ง, you did not forget ก. Someone (or Win+Space) put Pattachote next to Kedmanee. That failure is documented in the Windows/macOS setup guide; it will not be fixed by more ่ ้ drills. Before a review block, run the four-key test: D is ก, F is ด, J is ่, G is เ. If those hold, review the heatmap’s top three keys. If they do not, stop practising and fix the OS source. Practising on the wrong board is the most expensive skipped review of all.
A practical review block is twelve minutes, not a new curriculum. Two minutes home row (กา ดา หา สา วา). Two minutes the ่ ้ pair. Two minutes the pre-posed set เ แ ไ on G, C, W. Two minutes the heatmap’s worst reach. Four minutes the current atom. If you skip the first eight minutes because they feel too easy, you will spend the four minutes re-teaching D and J inside a cluster. Easy review is what keeps แก้ว from becoming four separate mistakes.
- Start each session on F and J, then one home-row word: กา, ดา, หา, สา.
- Spend two minutes on the heatmap’s hottest key, as a reach-and-return, before mixed text.
- If the newest atom is shift-layer, keep เ on G and ่ on J in the same session so the home row does not go cold.
- Four-key test whenever accuracy falls off a cliff overnight: D ก, F ด, J ่, G เ.
Related guides

A practical guide to understanding why near-identical Thai words can feel very different on the Kedmanee keyboard. Learn how keystroke count, hand alternation, row jumps, and pre-posed-vowel order affect typing difficulty.

A step-by-step roadmap for learning to touch-type Thai — from the home row to full sentences — with a sample practice week and the metrics that actually matter.

What the Skills track and the Words, Sentences, Daily, and Free modes are for, how the heatmap and hints work, and the order to move through them.