เวลาทดสอบแอปที่นักพัฒนาเขียนขึ้นมาเอง ในบางครั้งก็อาจจะต้องพิมพ์ข้อความเพื่อทดสอบการทำงาน ซึ่งปกติก็จะใช้ Virtual Keyboard หรือ On-screen Keyboard กัน

แต่การทดสอบแอปบน Android Emulator นั้นจะแตกต่างจากการทดสอบบน Physical Device เล็กน้อย เพราะมักจะพิมพ์ผ่านคีย์บอร์ดของคอมพิวเตอร์แทน แล้วก็จะพบว่ามันพิมพ์ภาษาไทยไม่ได้!!

เพราะ Android Emulator ไม่ได้เชื่อมต่อผ่าน Physical Keyboard โดยตรง

โดยปกติการเชื่อมต่อคีย์บอร์ดใด ๆ ก็ตามที่ไม่ใช่ On-screen Keyboard จะถือว่าเป็น Physical Keyboard เสมอ (ไม่ว่าจะต่อผ่าน USB หรือ Bluetooth ก็ตาม) ซึ่งจะรองรับหลายภาษา และสามารถติดตั้งเพิ่มเองได้

แต่ถ้าลองเข้าเมนู Physical Keyboard ใน Settings ดูก็จะพบว่ามี Physical Keyboard เชื่อมต่ออยู่ 2 ตัวคือ AT Translated Set 2 keyboard และ qwerty2

เจ้าของบล็อกไม่แน่ใจว่าตัวไหนเป็นตัวที่ทำให้รับตัวอักษรผ่านคีย์บอร์ดคอมได้ แต่คิดว่าน่าจะเป็น AT Translated Set 2 keyboard

ปัญหาก็คือ Physical Keyboard ของ Android Emulator รับได้แค่ตัวอักษรภาษาอังกฤษ, ตัวเลข และตัวอักษรพิเศษบางส่วนเท่านั้น ถึงแม้ว่าจะเพิ่มภาษาไทยให้กับ Virtual Keyboard เหล่านั้นแล้วก็ตาม (ดูได้จากภาพข้างบน) ซึ่งเจ้าของบล็อกคิดว่าปัญหานี้น่าจะเป็นแบบเดียวกับใน scrcpy ที่รองรับเฉพาะ ASCII เท่านั้น

และถ้าสังเกตดี ๆ ก็จะพบว่านักพัฒนากดคีย์ลัดที่ต้องใช้ปุ่ม Ctrl, Cmd, Opt หรือ Alt ให้กับ Android Emulator ไม่ได้ด้วยเช่นกัน

จะแก้ไขปัญหานี้ได้อย่างไร?

เรื่องน่าเศร้าก็คือไม่มีวิธีไหนที่ทำให้ Android Emulator รองรับข้อความภาษาไทยจากคีย์บอร์ดคอม ทำได้แค่เพียงใช้ On-screen Keyboard แก้ขัดแทน

ถึงแม้ว่า Android Emulator จะมี Emulator USB Passthrough ให้ใช้ก็ตาม แต่นั่นก็เป็นการ Bypass USB Connection ไปให้ Android Emulator ซึ่งไม่เหมาะกับกรณีนี้ซักเท่าไร

แต่มีวิธีแก้ปัญหาสำหรับผู้ใช้ scrcpy นะ

โดยปกติแล้วนักพัฒนาจะต่ออุปกรณ์แอนดรอยด์ของตัวเองเข้ากับคอม แล้วใช้ scrcpy เพื่อให้ภาพหน้าจอแสดงอยู่บนหน้าจอคอมเพื่อความสะดวกในการทำงาน และแน่นอนว่าในบางครั้งก็อยากจะพิมพ์ข้อความผ่านคีย์บอร์ดคอมแทนการหยิบเครื่องมาพิมพ์

ถึงแม้ว่า scrcpy จะมีปัญหาว่ารับตัวอักษรได้เฉพาะ ASCII แบบ Android Emulator ก็จริง แต่ scrcpy มี Physical Keyboard Simulation ทำให้นักพัฒนาสามารถใช้คีย์บอร์ดคอมเชื่อมต่อกับอุปกรณ์แอนดรอยด์เป็น Physical Keyboard ได้

เพียงแค่ตอนใช้งาน scrcpy ให้เพิ่ม Option ว่า -K ต่อท้ายเข้าไปแบบนี้

scrcpy -K

สรุป

ขอแสดงความเสียใจสำหรับผู้ที่หลงเข้ามาอ่านที่ต้องการหาวิธีที่ให้ Android Emulator รองรับการพิมพ์ตัวอักษรภาษาไทยผ่านคีย์บอร์ดคอมด้วย ทั้งนี้ก็เพราะว่า Physical Keyboard ที่ติดตั้งมาให้ใน Android Emulator ไม่ได้รองรับภาษาอื่น ๆ ที่ไม่ใช่ภาษาอังกฤษเลย ดังนั้นก็ต้องใช้วิธีกดผ่าน On-screen Keyboard แก้ขัดหรือไม่ก็เปลี่ยนไปใช้ Physical Device แทน