Mapping Laser Pointer Ugreen 80136 di Linux
Katanya, gunakan tunjangan sertifikasi untuk menunjang peningkatan kinerja diri. Jadilah akhirnya saya membeli laser pointer untuk membantu proses pembelajaran di kelas. Sebenarnya tidaklah mendesak untuk memiliki benda ini, but, why not?.
Sejujurnya jarang menampilkan presentasi, dan ketika perlu maka selama ini sudah tercukupi menggunakan KDEConnect.
Namun menggunakan KDEConnect dirasa merepotkan, pertama karena saya menggunakan GTK based desktop sementara ia aplikasi untuk desktop KDE yang akhirnya akan menarik banyak berkas KDE/Qt yang dibutuhkan. Kedua, KDEConnect menggunakan telepon genggam sebagai kendali presentasi. Jika sial tergelincir dari tangan, kemungkinan besar jadinya akan meratapi hape yang hancur.
Dan tentunya laser pointer yang tidak dimiliki hape.
Pilihan jatuh ke Ugreen 80136. Selain suka dengan desainnya, sejauh ini belum pernah dikecewakan oleh merek UGreen.
Alasan lainnya adalah karena di deskripsi toko dijelaskan bahwa menggunakan baterai AA. I hate integrated battery. Karena jika daya baterai habis maka kemungkinan besar perangkat tidak bisa dipakai akibat kesulitan mengganti baterainya. Sulit membuka perangkat karena tidak dirancang memakai baterai replaceable, juga sulit mencari suku cadang baterai.
But you know what? Ketika barang diterima, ternyata ia menggunakan baterai yang menyatu alias tidak bisa diganti. Damn.
Overall, lumayan puas dengan laser pointer ini. Plug and Play di Linux. Hanya memang tombol paling atas sekilas tidak berfungsi. Tidak kaget, karena di spesifikasi dijelaskan hanya bisa untuk Microsoft Office.
Namun ada masalah, ternyata pointer ini menggunakan UP dan DOWN untuk kendali. Mungkin tidak masalah untuk aplikasi presentasi, namun saya lebih sering menampilkan aplikasi yang navigasinya mayoritas LEFT dan RIGHT.
Dan karena aplikasi presentasi juga menerima LEFT serta RIGHT sebagai navigasi, mengapa tidak memetakan tombol pointer saja?
So, here we go…
Pertama, cari
bustype
,productid
danvendorid
.Daftar perangkat USB yang terhubung ke komputer
~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 8087:0032 Intel Corp. AX210 Bluetooth Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver Bus 001 Device 002: ID 046d:c548 Logitech, Inc. Logi Bolt Receiver Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Colokkan receiver pointer ke komputer kemudian ulangi perintah tadi.
~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 011: ID 1ea7:0066 SHARKOON Technologies GmbH [Mediatrack Edge Mini Keyboard] Bus 001 Device 004: ID 8087:0032 Intel Corp. AX210 Bluetooth Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver Bus 001 Device 002: ID 046d:c548 Logitech, Inc. Logi Bolt Receiver Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Tampak bahwa perangkat pointer adalah:
Bus 003 Device 004: ID 1ea7:0066 SHARKOON Technologies GmbH [Mediatrack Edge Mini Keyboard]
Patut diingat bahwa bus USB mungkin berbeda antar port bergantung rancangan motherboard dari komputer. Misal pada ThinkPad x230 yang saya miliki terdapat dua buah bus untuk tiap USB port-nya, yaitu
001
dan003
.Cari event dari pointer.
Daftar event yang ada di /dev/input
ls /dev/input/event* > /tmp/event
Colok USB receiver pointer, ulangi perintah tadi dan tambahkan output ke berkas yang sama.
ls /dev/input/event* >> /tmp/event
Urutkan kemudian cari event yang beda. Itulah laser pointer kita.
~$ sort /tmp/event | uniq -u /dev/input/event23 /dev/input/event24 /dev/input/event25 /dev/input/event26 /dev/input/event27
Cari keymap untuk tiap tombol pointer.
sudo apt install evtest
Gunakan salah satu event tersebut pada langkah sebelumnya.
Misal/dev/input/event23
tidak bereaksi, gunakan event berikutnya.sudo evtest /dev/input/event23
Tekan semua tombol pada pointer (kecuali tombol laser).
Event: time 1702368736.459692, type 17 (EV_LED), code 0 (LED_NUML), value 0 Event: time 1702368736.459692, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70052 Event: time 1702368736.459692, type 1 (EV_KEY), code 103 (KEY_UP), value 1 Event: time 1702368736.459692, -------------- SYN_REPORT ------------ ^[[AEvent: time 1702368736.515552, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70052 Event: time 1702368736.515552, type 1 (EV_KEY), code 103 (KEY_UP), value 0 Event: time 1702368736.515552, -------------- SYN_REPORT ------------ Event: time 1702368737.851668, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70051 Event: time 1702368737.851668, type 1 (EV_KEY), code 108 (KEY_DOWN), value 1 Event: time 1702368737.851668, -------------- SYN_REPORT ------------ ^[[BEvent: time 1702368737.907618, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70051 Event: time 1702368737.907618, type 1 (EV_KEY), code 108 (KEY_DOWN), value 0 Event: time 1702368737.907618, -------------- SYN_REPORT ------------ Event: time 1702368740.131433, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7002b Event: time 1702368740.131433, type 1 (EV_KEY), code 15 (KEY_TAB), value 1 Event: time 1702368740.131433, -------------- SYN_REPORT ------------ Event: time 1702368740.187533, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7002b Event: time 1702368740.187533, type 1 (EV_KEY), code 15 (KEY_TAB), value 0 Event: time 1702368740.187533, -------------- SYN_REPORT ------------
Tampak bahwa scancode untuk pointer adalah:
TombolKEY_UP
:70052
TombolKEY_DOWN
:70051
TombolKEY_TAB
:7002b
Buat hardware database config.
sudo nano /etc/udev/hwdb.d/99-ugreen-80136.hwdb
Isi berdasarkan data yang diperoleh:
b adalah bustype, yaitu001
dan003
v adalah vendor id, yaitu1ea7
(harus ditulis kapital,1EA7
)
p adalah product id, yaitu0066
Isikan pula key mapping:
- scancode
70052
yang tadinya UP kita jadikan RIGHT - scancode
70051
yang tadinya DOWN kita jadikan LEFT - scancode
7002b
yang tadinya TAB kita jadikan F5
evdev:input:b001v1EA7p0066 evdev:input:b003v1EA7p0066 KEYBOARD_KEY_70052=right KEYBOARD_KEY_70051=left KEYBOARD_KEY_7002b=f5
- scancode
Buat udev rules.
sudo nano /etc/udev/rules.d/99-ugreen-80136.rules
Dan isikan data berikut:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="0066", IMPORT{builtin}="hwdb 'evdev:input:b001v1EA7p0066'", RUN{builtin}+="keyboard" SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="0066", IMPORT{builtin}="hwdb 'evdev:input:b003v1EA7p0066'", RUN{builtin}+="keyboard"
Muat rules anyar tersebut:
sudo systemd-hwdb update sudo udevadm trigger /dev/input/event*
Nice. Kini laser pointer selain sebagai pengendali berkas presentasi, juga bisa untuk menavigasi aplikasi yang dikendalikan tombol kiri dan kanan. Nilai plus, tombol yang katanya hanya bisa untuk Microsoft Office kini juga bisa dimanfaatkan.