Concept / macOS Utility

Thai Typo Fixer

เครื่องมือแก้ปัญหาที่คนไทยเจอทุกวัน — ลืมเปลี่ยนภาษาแล้วพิมพ์ไปทั้งประโยค กดปุ่มเดียวแปลงกลับเป็นภาษาไทยทันที

Python Swift macOS Accessibility API Self-Learning

ก่อนอื่น — ลองดูสิ่งที่เกิดขึ้น

ทุกคนเคยเจอแบบนี้...

ตั้งใจจะพิมพ์ "สวัสดีครับ" แต่ลืมเปลี่ยนภาษา
l;ylfu8iy[
สวัสดีครับ
กด Ctrl + Shift + T แปลงทันที
หรือจะพิมพ์ "ทดสอบ"
kgx'iyd
ทดสอบ
ใช้ได้ทุก app — Browser Slack LINE VS Code

Design Thinking Process

จากปัญหาเล็กๆ ที่เจอทุกวัน — สู่ไอเดียเครื่องมือที่ช่วยคนไทยทุกคน

ทุกคนเคยเจอ — พิมพ์ไปครึ่งประโยคแล้วรู้ตัวว่าลืมเปลี่ยนภาษา

คนไทยใช้ 2 ภาษาบนคีย์บอร์ดเดียวกัน สลับไปมาวันละหลายสิบครั้ง บางทีพิมพ์ไปแล้ว 10-20 ตัวอักษร ถึงรู้ตัวว่าอยู่โหมดอังกฤษ — ต้องลบทั้งหมดแล้วพิมพ์ใหม่ ซึ่งเสียเวลาและหงุดหงิดมาก

Pain Point: ทุกครั้งที่ลืมเปลี่ยนภาษา ต้อง ลบ → เปลี่ยนภาษา → พิมพ์ใหม่ทั้งหมด = เสียเวลา + เสียอารมณ์

"ทำไมต้องลบแล้วพิมพ์ใหม่ ทั้งที่นิ้วกดตำแหน่งถูกแล้ว?"

จริงๆ แล้วตัวอักษรที่พิมพ์ออกมา ตรงกับตำแหน่งบนคีย์บอร์ด Kedmanee ทุกตัว เช่น กดปุ่ม l = ตำแหน่งเดียวกับ ดังนั้นแค่ "แปลง" กลับก็ได้ข้อความภาษาไทยที่ต้องการ ไม่ต้องพิมพ์ใหม่

HMW: How might we แปลงข้อความที่พิมพ์ผิดภาษา กลับเป็นภาษาที่ตั้งใจจะพิมพ์ ด้วยการกดปุ่มเดียว?

Mapping Table + Self-Learning Dictionary

ไอเดียหลักมี 2 ส่วน:

Keyboard Mapping — lookup table 1:1 จาก EN key → TH character (Kedmanee layout)
Learning Engine — จำคู่ที่เคยแปลง ยิ่งใช้บ่อยยิ่งเก่ง ถ้าแปลงซ้ำ ≥3 ครั้ง ระบบจะ auto-replace ไม่ต้องกดปุ่มลัด

Key Idea: ระบบที่ "ยิ่งใช้ยิ่งฉลาด" — เรียนรู้จากพฤติกรรมจริงของผู้ใช้ ไม่ต้องตั้งค่าอะไร

Lean Prototype — Python ก่อน, Swift ทีหลัง

เริ่มจาก prototype ด้วย Python เพราะทำได้เร็ว:

pynput — จับ hotkey (Ctrl+Shift+T) แบบ system-wide
pyperclip — capture text ผ่าน clipboard (select → copy → convert → paste)
JSON file — เก็บ dictionary ง่ายๆ ที่ ~/Library/Application Support/ThaiTypoFix/

Strategy: ทำ Python prototype ให้ใช้ได้จริงก่อน แล้วค่อย port เป็น Swift menu bar app สำหรับ production

ใช้เองทุกวัน — dogfooding ที่ดีที่สุด

ทดสอบด้วยการใช้เองในการทำงานจริง — พิมพ์ chat, เขียนโค้ด, ตอบอีเมล ดูว่าจับ text ได้ถูกต้องทุก app ไหม dictionary เรียนรู้เร็วพอไหม และ shortcut ไม่ชนกับ app อื่น

Validation: ถ้าตัวเองใช้ทุกวันแล้วรู้สึกว่า "ขาดไม่ได้" = ผ่าน

Keyboard Mapping — หัวใจของระบบ

EN key → TH character ตาม Kedmanee layout (1:1 mapping)

⌨ ตัวอย่าง: l;ylfu8iy[ → สวัสดีครับ

l
;
y
l
f
u
8
i
y
[

System Architecture

Data flow ตั้งแต่ผู้ใช้กด shortcut จนได้ข้อความภาษาไทย

Shortcut Listener
จับ Ctrl+Shift+T แบบ system-wide
📋
Text Capture
คัดลอก text ที่เลือกอยู่ผ่าน clipboard
🔄
Mapping Engine
เช็ค Dictionary ก่อน → ถ้าไม่มี ใช้ Kedmanee mapping
📝
Text Replace
วางข้อความภาษาไทยแทนที่
🧠
Learning Engine
บันทึกคู่ EN→TH ลง dictionary.json

Self-Learning Dictionary

ระบบที่ยิ่งใช้ยิ่งเก่ง — เรียนรู้จากพฤติกรรมผู้ใช้จริง

🧠 วิธีการเรียนรู้

1 ผู้ใช้พิมพ์ kgx'iyd แล้วกด shortcut แปลง
2 ระบบแปลงได้ ทดสอบ → บันทึกคู่ลง dictionary (count = 1)
3 ใช้ซ้ำอีกครั้ง → count += 1 เพิ่มความมั่นใจ
4 เมื่อ count ≥ 3 → Auto-replace ไม่ต้องกดปุ่มลัด!
count = 1
1/3
Manual
count = 2
2/3
Manual
count = 3
3/3 ✓
Auto!
dictionary.json
{ "kgx'iyd": { "value": "ทดสอบ", "count": 5 }, "l;ylfu8iy[": { "value": "สวัสดีครับ", "count": 12 } }

ใช้ได้ทุกที่บน macOS

ทำงานแบบ system-wide — ไม่ว่าจะอยู่ app ไหนก็กดปุ่มลัดแปลงได้

🌐 Safari / Chrome 💬 Slack 🟢 LINE 📝 Notion 💻 VS Code ⌨ Terminal 📄 Word / Pages

Roadmap

แผนพัฒนา 3 เฟส — จากแปลงง่ายๆ สู่ AI ที่เข้าใจบริบท

Phase 1 — Core
Keyboard mapping + Shortcut trigger + Dictionary learning
🧠
Phase 2 — Smart
Auto-detection + Pattern learning + Thai spell check
Phase 3 — AI
AI typo prediction + Context-aware correction
Phase 1 — MVP
Keyboard Layout Conversion
Kedmanee mapping table + hotkey trigger + clipboard-based text capture + JSON dictionary ที่เรียนรู้จากการใช้งาน
Phase 2 — Smart Detection
รู้เองว่าพิมพ์ผิดภาษา
วิเคราะห์ pattern ของ text ที่พิมพ์ — ถ้าเจอ EN characters ที่ไม่ใช่คำอังกฤษ แนะนำให้แปลงอัตโนมัติ + Thai spell checking
Phase 3 — AI-Powered
เข้าใจบริบท ทำนายล่วงหน้า
ใช้ AI ทำนายว่าผู้ใช้กำลังจะพิมพ์ผิดภาษา ก่อนที่จะพิมพ์เสร็จ + แก้ไขตามบริบทของประโยค

Target Metrics

เป้าหมายประสิทธิภาพของระบบ

<50ms
Conversion Latency
<50MB
Memory Usage
≥3
Auto-replace Threshold
100%
Kedmanee Coverage

Key Takeaways

สิ่งที่ได้เรียนรู้จากการคิดโปรเจกต์นี้

ปัญหาเล็กที่ทุกคนชินชา = โอกาสที่ดี — การลืมเปลี่ยนภาษาเป็นเรื่องที่คนไทยเจอทุกวัน แต่ไม่มีใครคิดว่า "แก้ได้" เพราะชินกับการลบแล้วพิมพ์ใหม่ ถ้ามองปัญหาเล็กๆ ที่คนยอมรับว่าเป็นเรื่องปกติ จะเจอโอกาสสร้างเครื่องมือที่มีคุณค่า
1:1 Mapping ทำให้ปัญหาที่ดูยากกลายเป็นง่าย — ตอนแรกคิดว่าต้องใช้ NLP หรือ ML ซับซ้อน แต่พอวิเคราะห์จริงๆ Kedmanee layout เป็น 1:1 mapping ตรงๆ แค่ lookup table ก็แปลงได้ 100% — บทเรียนคือ "เข้าใจปัญหาให้ลึกก่อนคิดวิธีแก้"
Self-Learning ไม่ต้องซับซ้อน — Learning algorithm ที่ใช้คือ "นับจำนวนครั้ง" ง่ายมาก แต่ effective เพราะ pattern การพิมพ์ซ้ำของคนเป็น signal ที่ชัดเจน ไม่ต้อง neural network ก็สร้างระบบที่ "ยิ่งใช้ยิ่งเก่ง" ได้
Prototype ก่อน Production เสมอ — Python prototype ทำให้ validate idea ได้เร็วโดยไม่ต้องเรียนรู้ Swift + Accessibility API ทั้งหมดก่อน ถ้า prototype ใช้ได้ดี ค่อย invest เวลาทำ native app
Aw mascot

⌨ พิมพ์ผิดภาษา? ไม่ต้องลบแล้ว

โปรเจกต์นี้เกิดจากความหงุดหงิดเล็กๆ ที่เจอทุกวัน — ลืมเปลี่ยนภาษาแล้วต้องลบทั้งหมด ถ้าแค่กดปุ่มเดียวแล้วแปลงกลับได้ ชีวิตจะง่ายขึ้นเยอะ

Python Swift macOS Accessibility API pynput Kedmanee Layout
Projects