Improve mouse tracking in a Virtual Machine Manager (virt-manager)
ปัญหาการเคลื่อนที่ของ Mouse บน virtual machine ใน Linux มีความผิดเพี้ยนไปจากความเป็นจริงนี้เราสามารถแก้ไขปัญหานี้ได้ด้วยกัน 2 วิธี คือ
- ย้ายการใช้งานจาก VNC console ไปเป็น SDL console แต่การทำงาน SDL console บนโปรแกรม virt-manager ไม่ค่อย work เนื่องจากว่าถ้าเราปิด SDL console ระบบจะทำการปิด virtual machine ไปด้วย -*-
- แก้ไข config จาก virtual mouse ไปเป็น virtual tablet ซึ่งวิธีการจะพูดถึงในบทความนี้
การแก้ไขผ่านทาง GUI Mode
- เปิดโปรแกรม Virtual Machine Manager (virt-manager) และถ้ามี virtual machine รันอยู่ให้ shutdown virtual machine นั้นไปก่อน
- ในโปรแกรม virt-manager ให้คลิกที่ details ในส่วนของ hardware tab
- คลิก add เพื่อเพิ่ม hardware เข้าไปใหม่ โดยเลือกที่ Input Device คลิก Forward
- เลือก EvTouch USB Graphics Tablet คลิก Forward
- คลิก Finish
การแก้ไขผ่านทาง Text Mode
สำหรับผู้ที่ชื่นชอบการแก้ไขแบบ text mode สามารถทำได้ดังนี้
- แก้ไขไฟล์ /etc/xen/virtual-machine-name
ทำการเพิ่ม usbdevice = 'tablet' เข้าไปในไฟล์
/etc/xen/virtual-machine-name - เปิด virtual machine
- เมื่อเครื่อง boot เรียบร้อยแล้ว กด CTRL-ALT-F1 เพื่อทำการย้ายหน้า console เป็น text mode
- พิมพ์ init 3 เพื่อทำการย้ายโหมดการทำงานไปเป็น text mode โดยสมบูรณ์
- พิมพ์ command ข้างล่างนี้เพื่อหาว่ามีชื่อของ tablet ที่ต้องการอยู่หรือปล่าว
- แก้ไขไฟล์ /etc/X11/xorg.conf และค้นหาบรรทัด ServerLayout section และเพิ่มบรรทัด InputDevice เข้าไปดังตัวอย่างข้างล่าง เพื่อทำการเพิ่ม InputDevice เข้าสู่ระบบ โดย InputDevice ตัวนี้ชื่อว่า Mouse1
- จากนั้นทำการเพิ่ม InputDevice section ด้านล่างเข้าไปในไฟล์เดียวกันนี้ เพื่อสร้าง config ในส่วนของ InputDevice ของ Mouse1
- เมื่อทำการแก้ไขเสร็จเรียบร้อยแล้วให้เข้าสู่ GUI Mode โดยพิมพ์
[root@ezylinux ~]# egrep 'Name|Handlers' /proc/bus/input/devices | grep -i -A 1 tablet N: Name="QEMU 0.8.2 QEMU USB Tablet" H: Handlers=mouse1 event2 js0
Section "ServerLayout" ... ... InputDevice "Mouse1" "CorePointer" EndSection
Section "InputDevice" Identifier "Mouse1" Driver "evdev" Option "Device" "/dev/input/event2" Option "Name" "QEMU 0.8.2 QEMU USB Tablet" Option "Mode" "Absolute" EndSection
[root@ezylinux ~]# init 5; exit
ลองทดสอบการทำงานของ mouse ดูครับว่าเคลื่อนที่ได้ถูกต้องหรือไม่ 🙂