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
123ทำการเพิ่ม usbdevice = 'tablet' เข้าไปในไฟล์
- เปิด 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 โดยพิมพ์
12345 [crayon-64209a7712647121518919 class="jive-code"][root@ezylinux ~]# egrep 'Name|Handlers' /proc/bus/input/devices | grep -i -A 1 tabletN: Name="QEMU 0.8.2 QEMU USB Tablet"H: Handlers=mouse1 event2 js0[/crayon]
1234567 [crayon-64209a771264b510774851 class="jive-code"]Section "ServerLayout"......InputDevice "Mouse1" "CorePointer"EndSection[/crayon]
123456789 [crayon-64209a7712650384681657 class="jive-code"]Section "InputDevice"Identifier "Mouse1"Driver "evdev"Option "Device" "/dev/input/event2"Option "Name" "QEMU 0.8.2 QEMU USB Tablet"Option "Mode" "Absolute"EndSection[/crayon]
123 [crayon-64209a7712653794686241 class="jive-code"][root@ezylinux ~]# init 5; exit[/crayon]
ลองทดสอบการทำงานของ mouse ดูครับว่าเคลื่อนที่ได้ถูกต้องหรือไม่ :)