Setting Multi Input Mouse - Keyboard dengan xinput
Kasusnya begini, gue punya dua mouse dan pengen punya dua pointer. Buat apa? Kan bisa buat maen game balap di genymotion atau buat multitouch input. Masalahnya, kalau cuma dicolokin doang, dua mouse bakal pake satu pointer yang sama. Gimana caranya bikin dua pointer yang bisa dipake bersamaan?
*Ceritanya googling dulu*
Oh ternyata bisa pame XMP atau xinput. Kalau pake Ubuntu 10.04, xinput udah ada secara default di system. Ceritanya ini pake Ubuntu 12.04 di kantor :D
Pertama:
Lihat device apa aja yang kebaca sebagai input device dengan perintah:
xinput list
Contoh hasil xinput list
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Optical Mouse id=8 [slave pointer (2)] ⎜ ↳ KYE Wireless Mouse id=12 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Logitech USB Keyboard id=9 [slave keyboard (3)] ↳ Logitech USB Keyboard id=10 [slave keyboard (3)] ↳ UVC Camera (046d:0824) id=11 [slave keyboard (3)]
Sampai sini, ada Logitech USB Optical Mouse dengan id 4, ada KYE Wireless Mouse dengan id 12. Logitech ini biarin aja sebagai primary atau master input, dan KYE Wireless Mouse sebagai secondary atau slave input.
Lanjut
xinput create-master Secondary xinput list
Contoh lagi setelah xinput list dieksekusi
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Optical Mouse id=8 [slave pointer (2)] ⎜ ↳ KYE Wireless Mouse id=12 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Logitech USB Keyboard id=9 [slave keyboard (3)] ↳ Logitech USB Keyboard id=10 [slave keyboard (3)] ↳ UVC Camera (046d:0824) id=11 [slave keyboard (3)] ⎡ Secondary pointer id=13 [master pointer (14)] ⎜ ↳ Secondary XTEST pointer id=15 [slave pointer (13)] ⎣ Secondary keyboard id=14 [master keyboard (13)] ↳ Secondary XTEST keyboard id=16 [slave keyboard (14)]
Sekarang kita punya satu pointer tambahan yang kadang suka ilang, kadang muncul di tengah layar, tapi masih belum bisa dipake sama Mouse kedua.
Terus ada dua section baru dibawah, ada Secondary pointer, ada Secondary keyboard. Nah Secondary pointer ini yang bakal dipake buat Mouse kedua (si KYE)
Lanjut attach KYE Wireless Mouse sebagai Secondary pointer
xinput reattach 12 "Secondary pointer" xinput list
Ini hasil list nya setelah attach si KYE sebagai Secondary pointer
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Optical Mouse id=8 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Logitech USB Keyboard id=9 [slave keyboard (3)] ↳ Logitech USB Keyboard id=10 [slave keyboard (3)] ↳ UVC Camera (046d:0824) id=11 [slave keyboard (3)] ⎡ Secondary pointer id=13 [master pointer (14)] ⎜ ↳ KYE Wireless Mouse id=12 [slave pointer (13)] ⎜ ↳ Secondary XTEST pointer id=15 [slave pointer (13)] ⎣ Secondary keyboard id=14 [master keyboard (13)] ↳ Secondary XTEST keyboard id=16 [slave keyboard (14)]
Sekarang tinggal sesuaikan button layout buat mouse dua, kalau pengen tetep itu 'left click' di telunjuk tangan kiri :D
xinput set-button-map 12 3 2 1
Angka 12 itu id, angka 3 itu context menu atau normalnya klik kanan, angka 2 itu center click atau yang ada di scroll wheel, angka 1 itu command atau klik kiri. Gitu :D
Dan sekarang ada dua pointer, dan dua-duanya bisa dipake :D
Cara ini juga bisa dipake buat nambah keyboard, misal buat maen game bola bareng, atau coding bareng di satu komputer dengan dua keyboard biar mesra ;)
Selamat mencoba dan jangan lupa kalau di desktop Unity pointer agak nge-bug :(