Menyembunyikan kursor mouse secara dinamis saat menggunakan layar sentuh

21

Saya memiliki laptop layar sentuh dan saya ingin menyembunyikan pointer setiap kali saya menyentuh layar. Saya mengetahui solusi seperti unclutter dan startx -nocursortetapi saya ingin pointer untuk menyembunyikan / menunjukkan secara dinamis, bersembunyi jika saya menggunakan layar sentuh dan menunjukkan ketika saya menggunakan mouse perangkat keras.

Saya berpikir untuk membuat dua pointer terpisah dan menerapkan salah satu dari dua solusi di atas untuk pointer layar sentuh, tetapi tidak satu pun dari solusi tersebut yang menyebutkan bagaimana menargetkan satu pointer, dan memiliki beberapa pointer membuat hal-hal bertindak aneh, dan itu tidak akan menyembunyikan perangkat keras kursor mouse.

Saya pikir saya bisa melakukan ini dengan melakukan hal seperti ini , melacak mekanisme input saat ini dan mengeksekusi xinput -cursor [transparent cursor]setiap kali layar sentuh digunakan dan xinput -cursor [normal cursor]setiap kali mouse normal digunakan.

Saya melihat xinput dan sepertinya karena baik hardware mouse dan touchscreen di-slave ke pointer yang sama, keduanya mendaftarkan event yang sama di xev jadi saya tidak begitu yakin dari mana saya akan mendapatkan informasi yang diperlukan untuk membedakan sentuhan dari mouseclick. apa itu mungkin?

erp
sumber

Jawaban:

5

Anda bisa menggunakannya

Untuk menggunakannya, instal

sudo apt-get install unclutter

kemudian jalankan

unclutter -idle 0.01 -root

Perhatikan bahwa angka setelah idle berarti waktu sebelum disembunyikan. Dalam hal ini diatur ke 1/100 detik. Anda bisa mencoba mengubahnya ke nilai yang akan selalu disembunyikan.

Ini akan menyembunyikan kursor ketika Anda tidak memindahkannya. Saya yakin ada juga opsi untuk menyembunyikannya.

КодСерфинг145
sumber
Saya telah melihat solusi menggunakan unclutter tetapi ini tidak membedakan antara menggunakan touchsreen dan mouse.
erp
2

Saya kira Anda menggunakan layar sentuh ketika Anda tidak memiliki mouse, dan tancapkan satu di sistem ketika Anda ingin menggunakannya. Dalam hal ini, Anda bisa menggunakan udevaturan untuk mengelola pointer Anda sesuai:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

Kondisi yang digunakan untuk membedakan mouse dipinjam dari jawaban ini .

Ingatlah bahwa masing-masing aplikasi bebas untuk mendefinisikan ulang kursor secara dinamis, sehingga kursor Anda dapat terlihat lagi ketika Anda mengarahkan kursornya. Anda bisa memulai / berhenti unclutterjika Anda ingin semua kursor disembunyikan di mana-mana:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

Secara pribadi saya juga akan menonaktifkan layar sentuh sama sekali ketika mouse dicolokkan, sehingga secara tidak sengaja menyentuhnya tidak mengganggu kursor ketika Anda mengharapkannya untuk mengikuti mouse.

Dmitry Grigoryev
sumber
ini adalah pilihan yang baik kecuali bahwa saya menginginkan perilaku ini untuk trackpad saya, tidak hanya untuk mouse yang dicolokkan. Saya percaya udev hanya memengaruhi perangkat yang ditambahkan / dihapus secara dinamis?
erp
Maksud Anda trackpad Anda adalah "mouse perangkat keras" Anda? Saya akan mengatakan Anda harus mencoba dan melihat apakah itu berhasil. Touchpad sebenarnya dapat dilihat udevsebagai dihapus ketika Anda menonaktifkannya menggunakan tombol Fn (dengan asumsi Anda memilikinya).
Dmitry Grigoryev
1

Ada garpu alat unclutter-fixes oleh nowrep tersedia di sini . Versi ini menambahkan -touchopsi untuk secara otomatis menyembunyikan kursor setiap kali input sentuh terdeteksi. (Repositori unclutter-xfixes asli ada di sini )

Satu hal yang harus diperhatikan adalah masih termasuk perilaku menyembunyikan kursor setelah periode waktu tertentu. Anda bisa mengatur --timeoutopsi ke nilai yang sangat tinggi untuk mengatasinya.

Ini seharusnya bekerja dengan baik untuk Anda. Dalam kasus saya, saya memiliki layar sentuh yang terpasang secara eksternal dan ketika saya kembali ke monitor biasa kursor akan berada di layar sentuh, jadi saya harus memindahkannya kembali ke monitor dari tempat saya menyentuh. Yang menyenangkan adalah bahwa setelah saya mulai menggerakkan mouse kursor akan muncul jadi saya tahu di mana itu berada.

Manfaat yang bagus dari opsi ini adalah saya masih dapat menggunakan mouse saya seperti biasa pada layar sentuh jika saya ingin tetapi menyembunyikannya ketika tidak.

bpedman
sumber