The Thai Number Row: Digits and Symbols

September 3, 202613 min readlayoutreference

Above the letters sits the number row, and on a Thai keyboard it works nothing like the English one. Thai has its own numerals plus a few punctuation and repetition marks, and their placement on Kedmanee surprises almost everyone the first time they go looking. The positions below are from CHARS.kedmanee: Digit1 through Equal on the base layer are ๅ / - ภ ถ ุ ึ ค ต จ ข ช, and the Thai digits ๑–๙ live on Shift of Digit2 through Equal, with ๐ on Shift+Q. If your OS is on Pattachote, this row is a different world — most digits sit unshifted, and Digit6 is ู, not a digit at all.

The row is also the furthest reach from the home position, so it rewards dedicated practice more than any other part of the keyboard. ThaiTyper’s reaches atom covers the base consonants up here (ภ ถ ค ต จ ข ช); the stacked-vowels atom takes ุ on Digit6 and ึ on Digit7; shift-layer takes the digits and ฿. You do not have to learn the whole row on day one. You do have to stop expecting 1 to type ๑.

Thai digits: ๐ ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙

Thai numerals run from ๐ (zero) to ๙ (nine) and behave exactly like Arabic numerals. In everyday digital text most Thais type Arabic numerals (0–9), but Thai digits still appear in formal documents, signage, legal text, and dates, so they are worth recognising even if you rarely type them. The skill is not “become a Thai-digit typist.” It is “when the prompt shows ๒๕๖๗, do not type 2567, and do not hunt the 2 cap for ๑.”

On Kedmanee you cannot get a Thai digit without Shift, except you cannot get ๐ on the number row at all. ๑ is Shift+Digit2, ๒ Shift+Digit3, ๓ Shift+Digit4, ๔ Shift+Digit5, ๕ Shift+Digit8, ๖ Shift+Digit9, ๗ Shift+Digit0, ๘ Shift+minus, ๙ Shift+Equal, ๐ Shift+Q. Notice the hole: Digit6 and Digit7 do not carry digits on Shift. Digit6 Shift is ู, Digit7 Shift is ฿. That hole is why “count along the number keys” fails.

  • ๑ Shift+Digit2. ๒ Shift+Digit3. ๓ Shift+Digit4. ๔ Shift+Digit5.
  • Skip Digit6 (ู) and Digit7 (฿) — they are not digits on Shift.
  • ๕ Shift+Digit8. ๖ Shift+Digit9. ๗ Shift+Digit0. ๘ Shift+minus. ๙ Shift+Equal.
  • ๐ Shift+Q, off the number row. Digit0’s Shift is ๗, not zero.

Why the digits feel ‘off by one’

On Kedmanee the Thai digits live on the Shift layer of the number row, but they are not aligned with the Latin numbers you might expect. ๑ (one) is on the ‘2’ key, ๒ on ‘3’, and so on up to ๙ on the ‘=’ key — every digit shifted one position to the right of its Arabic counterpart, with a skip over 6 and 7. Stranger still, ๐ (zero) is not on the number row at all: it sits on Shift of the ‘q’ key. This is a leftover of the typewriter layout, and it is exactly why reaching for a Thai numeral feels awkward until you have drilled it.

Digit1 is not “Thai one.” Its base is ๅ (a rare letter) and its Shift is +. If you press 1 hoping for ๑, you get ๅ; if you Shift+1 hoping for ๑, you get +. The actual ๑ is Shift+2, whose base is the slash character /. A Kedmanee typist who needs ๑ looks at the 2 key, holds right Shift (Digit2 belongs to the left ring), and ignores the 1 cap completely.

The skip at 6 and 7 is the other surprise. Counting Shift+2, 3, 4, 5 gives ๑ ๒ ๓ ๔. Then Digit6 Shift is ู and Digit7 Shift is ฿. ๕ resumes on Shift+8, ๖ on Shift+9, ๗ on Shift+0, ๘ on Shift+minus, ๙ on Shift+Equal. A year such as ๒๕๖๗ is Shift+3, Shift+8, Shift+9, Shift+0 — four chords, none of them on the keys labelled 2, 5, 6, 7. That is the sentence worth memorising, not a rhyme about “off by one,” because the skip makes the rhyme a lie in the middle of the row.

  1. ๑ is Shift+2, not Shift+1. Digit1 is ๅ / +.
  2. ๕ is Shift+8, not Shift+5. Digit5’s Shift is ๔; Digit5’s base is ถ.
  3. ๖ is Shift+9. Digit6’s Shift is ู. Digit7’s Shift is ฿.
  4. ๐ is Shift+Q. Digit0’s base is จ; Digit0’s Shift is ๗.

What the base row holds instead

Because the digits are on the Shift layer, the base of the Kedmanee number row is taken up by consonants and vowels — letters like ภ, ถ, ค, ต, จ, ข, ช, plus ุ and ึ. There are no Arabic digits on the Thai layer at all, which is why many Thais flip to the English layout to type 0–9 and back again for the rest. The row is also the furthest reach from the home position, so it rewards dedicated practice more than any other part of the keyboard.

Name the base keys, left to right. Digit1 ๅ (rare). Digit2 / (slash, used in dates and URLs). Digit3 - (hyphen). Digit4 ภ. Digit5 ถ — ที่ starts here. Digit6 ุ, the short below-vowel. Digit7 ึ. Digit8 ค — คน, ค่า. Digit9 ต — ตา, ต้อง. Digit0 จ — จะ, ใจ. Minus ข — ข้าว, ขาว, ของ. Equal ช. Those last five consonants, ค ต จ ข ช, are everyday letters parked on the number row because the letter rows were full. They are not “number-row trivia.”

ถ on Digit5 and ข on minus are the two that stall week two. ที่ is Digit5, U (ี), J (่). ข้าว is minus, H (้), K, semicolon. Both are number-row starts plus home-row finishes. If you avoid the number row, you cannot type ที่ or ข้าว, which means you cannot type Thai. The reaches atom puts these on the list after home-consonants; that is not optional flavour, it is the rest of the alphabet.

  • ถ Digit5, left index, above เ on G’s column. ที่ = Digit5, U, J.
  • ค Digit8, right middle, above า on K’s neighbour. คน = Digit8, O (น).
  • ต Digit9, right ring, above น on O. ตา = Digit9, K.
  • จ Digit0, right pinky. จะ = Digit0, T (ะ). ใจ = period, Digit0.
  • ข minus, right pinky. ข้าว = minus, H, K, semicolon.

Which fingers own the number row

FINGER_BY_CODE does not give the number row to a new set of fingers. It is the same eight, stretched up. Left pinky Digit1, left ring Digit2, left middle Digit3, left index Digit4 and Digit5 (two keys, same finger). Right index Digit6 and Digit7. Right middle Digit8. Right ring Digit9. Right pinky Digit0, minus, and equal — three keys. That last assignment is why ข ช จ all feel like the same tired pinky. They are.

The left index owning Digit4 and Digit5 is the same two-column rule as F and G. ภ on Digit4 and ถ on Digit5 are both that finger, both a long reach, both a return to F (ด). The right index owning Digit6 and Digit7 is why ุ and ึ sit next to the tone-mark finger’s vertical: after ุ you often want ่, and J is the rest of the same finger. ดู is F (ด), Digit6 (ุ). Slow the reach; do not let the index stay up on 6.

A clean number-row press is a finger motion, not a shoulder shrug. If the keyboard is high, the shrug that lifts the right elbow also lifts the right index off J, and the next ่ becomes ้. Drop the board or raise the chair until minus is a pinky reach from semicolon, not a body reach. Then drill ข as minus-and-return ten times before you put ข้าว back in.

๐ lives on Q, not on 0

๐ is Shift+Q. Q’s base is ๆ (mai yamok). Digit0’s base is จ and Digit0’s Shift is ๗. Looking at the 0 cap for zero is the wrong hunt every time. The four-key Kedmanee test in the setup guides never mentions Q; this is the fifth key you add when you start typing dates. Opposite-hand Shift: Q is left pinky, so right Shift. Same-hand Shift (left Shift plus Q) is how ๆ appears when you wanted ๐, or nothing fires.

Each key shows its base character on top and its Shift character below. The coloured top border marks which finger presses the key:

  • Left pinky
  • Left ring
  • Left middle
  • Left index
  • Right index
  • Right middle
  • Right ring
  • Right pinky
  • Thumb
_%
+
/
-
฿
Tab
"
,
Caps
.
⇧ Shift
(
)
?
⇧ Shift
The Kedmanee layout — keys coloured by finger zone.

You will type ๐ less often than ๑–๙, and you will still need it in ๒๕๖๐-style years and in legal numbering. Pair it with ๆ, the other resident of Q. ๆ is the base, no Shift, and it is common: เด็กๆ is เด็ก then ๆ on Q. If you Shift by habit because “Q is the zero key,” you get ๐ in the middle of เด็กๆ. Two characters, one physical key, Shift decides which. That is the same pattern as ่ / ๋ on J, and it is why Q belongs in the shift-layer drills even if you never write a Thai zero.

Symbols worth knowing

A few Thai-specific marks live around this area. ๆ (mai yamok) repeats the previous word and sits on the base of the ‘q’ key, so it is genuinely common — words like เด็กๆ rely on it. ฯ (paiyannoi) marks an abbreviation, as in กรุงเทพฯ for Bangkok, and ฯลฯ stands in for “et cetera.” On Kedmanee ฯ is Shift+O, the Shift of น, not a number-row key. The baht symbol ฿ is Shift+Digit7, the Shift of ึ. None except ๆ are frequent, but knowing they exist saves a hunt later.

฿ is the one people look for on the 4 key, because $ sits on Shift+4 in US English. On Kedmanee Digit4’s Shift is ๓, and Digit4’s base is ภ. ฿ is Shift+7, right index, opposite-hand Shift (left Shift). A dropped Shift produces ึ. If you type a price and get ึ500, you found the right key and missed Shift. Pattachote puts ฿ on Shift+Backquote instead; do not practise that chord unless you are on that layout.

Other number-row punctuation you will actually hit: / on Digit2 (base), used in dates (12/03) once you have flipped to ENG, or as a Thai-layer slash if you stay in Thai. Hyphen on Digit3 base. + on Shift+Digit1. Those three are why a Kedmanee typist writing a URL or a filename almost always switches to ENG for the number row rather than remembering which Shift of which key is which ASCII mark. The next section is when to do that on purpose.

  • ๆ Q, no Shift. เด็กๆ = G F Shift+H D, then Q.
  • ๐ Shift+Q. Same key, Shift down.
  • ฿ Shift+Digit7. Base of that key is ึ.
  • ฯ Shift+O, off the number row. กรุงเทพฯ needs น’s Shift, not a digit key.

Arabic digits, Thai digits, and ENG

Day to day you will type Arabic numerals. The Thai layer has none, so the practical method is: switch to ENG, type 0–9, switch back. On Windows that is Win+Space; on macOS Control+Space; on Gboard the globe. Glance at the ENG/ไทย indicator before the number, or you will type จขช into a phone field. The setup guides in this library exist so that switch is one chord, not a hunt through Settings mid-price.

Use Thai digits when the document requires them: a government form, a royal date, a textbook exercise, or a ThaiTyper prompt that shows ๑. Copy the prompt. Do not convert. If the trainer asks for ๒ and you type 2, the engine compares code points and you fail, even though the meaning matches. The opposite error is typing ๒ into a bank field that only accepts ASCII. The layout does not know which you need; you do, before you start the number.

ThaiTyper itself maps physical keys through CHARS.kedmanee regardless of OS layout, so a drill that contains ๑ wants Shift+Digit2 even if Windows is on ENG. That is the exception to “flip to ENG for numbers.” In the trainer, stay consistent with the board on screen. In Word, flip. Mixing the two habits is how ๑ appears in a URL and 2 appears in a Thai date. Name the window, then pick the layer.

Opposite-hand Shift on this row

Every Thai digit is a Shift chord, so the opposite-hand rule is the whole technique. Digit2 ๑ is left ring plus right Shift. Digit8 ๕ is right middle plus left Shift. Digit0 ๗ is right pinky plus left Shift. Minus ๘ is right pinky plus left Shift. Equal ๙ is right pinky plus left Shift. ๐ is Q, left pinky plus right Shift. Same-hand Shift on the right-hand digits tugs the pinky off minus and you get ข instead of ๘, or จ instead of ๗.

Drill one chord at a time. Left Shift down, Digit8, release, return to K: that is ๕. Left Shift, Digit9, return to L: ๖. Left Shift, Digit0, return to semicolon: ๗. Then ๒๕๖๗ as a sequence. If ข leaks in, the pinky pressed minus without Shift. If ต leaks in, Digit9 had no Shift. The shift-layer atom will surface these as base-letter heatmap hits; read them as missed Shift, not as “I forgot ๕.”

  1. ๕: left Shift, Digit8, back to K (า).
  2. ๒๕๖๗: Shift+3, Shift+8, Shift+9, Shift+0. None of those are the keys labelled 2 5 6 7.
  3. ๐: right Shift, Q, back to A (ฟ). If ๆ appears, Shift never went down.
  4. ฿: left Shift, Digit7. If ึ appears, same diagnosis as ๊ coming out ี.

Practising the row

Treat the number row as its own focused goal. Keep your fingers anchored on the home row and return them after each reach, so the long stretch up to the digits never pulls your hands out of position. Because the digits are offset and ๐ is in an odd place, this is one row where looking it up once and then drilling beats trying to guess. ThaiTyper’s on-screen board will glow Digit8 for ๕; trust the glow, not the 5 cap.

A practical split: week one of reaches, only the base consonants ถ ค ต จ ข ช and the vowels ุ ึ. No Thai digits yet. After shift-layer opens, add ๑–๙ as Shift chords and ๐ on Q. Do not mix Arabic 2 with Thai ๒ in the same drill; the engine will not give you credit for a translation. Two minutes of ข-on-minus-and-return plus two minutes of ๕ on Shift+8 is more progress than a page of mixed dates.

When the heatmap names Minus, Digit8, and Digit5, that is ข ค ถ — three everyday consonants, not a digit problem. Open reaches. When it names Digit2 and KeyQ only on Shift-layer drills, that is ๑ and ๐. When it names Digit6, that is ุ, stacked-vowels, a below-vowel, not a number. Read the key, then pick the atom. The number row is four skills sharing one strip of plastic.

  • Base consonants first: ถ ค ต จ ข ช as reach-and-return from F J.
  • ุ on Digit6 and ึ on Digit7 with the right index, back to J (่).
  • Thai digits only after opposite-hand Shift is already clean on โ and ๊.
  • ๐ last, as Shift+Q, next to ๆ, never as a hunt for the 0 cap.

Related guides