Nonaktifkan mouse (bukan touchpad!) Di Xorg saat idle

17

Saya adalah pengguna keyboard yang rajin, tetapi saya masih membutuhkan mouse setiap saat. Untuk meminimalkan perjalanan tangan, saya memiliki mouse yang terletak di bawah keyboard saya. (Di samping catatan, menggunakan mouse dengan cara ini terasa lebih alami di tangan saya.)

Saat ini saya menggunakan unclutter untuk menyembunyikan pointer sementara saya tidak menggunakan mouse. Sayangnya, saya mendorongnya saat mengetik, yang menyebabkan pointer muncul kembali. Kadang-kadang ini akan memindahkan pointer ke jendela lain, yang pada gilirannya mengambil fokus dari jendela saya saat ini. (Saya menggunakan fokus ceroboh, dan mengubah ini bukan pilihan.)

Saya sekarang mencari kemungkinan untuk tidak hanya menyembunyikan pointer setelah waktu idle tertentu, tetapi menonaktifkan mouse sama sekali. Mengklik tombol mouse apa pun atau menggunakan roda mouse harus mengaktifkan kembali mouse.

igor
sumber

Jawaban:

16

Hal pertama yang perlu kita selesaikan adalah mematikan mouse, tetapi hanya dalam X. Untuk ini kita bisa menggunakan xinput.

Kita perlu menemukan perangkat input yang terhubung ke komputer (ke server X):

pbm@tauri ~ $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ A4Tech USB Mouse                          id=10   [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
     [...]

Perangkat yang perlu kita gunakan adalah A4Tech USB Mousedengan id=10. Selanjutnya kita perlu memeriksa properti perangkat itu:

pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
       Device Enabled (121):   1
       [....]

Untuk mematikan perangkat kita perlu mengubah properti Device Enabled:

xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Untuk mengaktifkannya:

xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1

Hal berikutnya adalah melakukannya secara otomatis ...;) Dalam contoh ini kita akan menonaktifkan mouse dengan cara pintas keyboard dan mengaktifkannya dengan menekan tombol kiri + kanan mouse.

Untuk ini, kita dapat menggunakan daemon pintasan actkbd - keyboard (tetapi tidak hanya) yang berfungsi di luar X server.

Pertama kita perlu membuat file konfigurasi kosong untuk actkbd: touch /etc/actkbd.conf. Hal berikutnya adalah menemukan perangkat yang terhubung ke komputer:

pbm@tauri ~ $ cat /proc/bus/input/devices 
I: Bus=0003 Vendor=046d Product=c312 Version=0110
N: Name="BTC USB Multimedia Keyboard"
P: Phys=usb-0000:00:1d.0-1.6/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input6
U: Uniq=
H: Handlers=kbd event3 
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=09da Product=000a Version=0110
N: Name="A4Tech USB Mouse"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input8
U: Uniq=
H: Handlers=mouse1 event5 
B: EV=17
B: KEY=ff0000 0 0 0 0
B: REL=343
B: MSC=10

[...]

Pada bagian ini yang paling menarik untuk digunakan adalah nama dan pengendali perangkat keyboard dan mouse.

Pertama-tama kita menangani mematikan mouse dengan pintasan keyboard, jadi kita perlu menemukan id kunci:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event3
Keys: 29+41+42 //we need to press keys that will turn off mouse, 29+41+42 is Ctrl + Shift + `

Ketika kita tahu apa itu id kunci, kita perlu meletakkannya di file konfigurasi ( /etc/actkbd.conf):

29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Untuk mengujinya kita perlu menjalankan actkbddalam mode daemon:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D

Dengan cara yang sama kita perlu menangani acara "nyalakan":

  1. Periksa penangan perangkat mouse
  2. Periksa kode kunci tombol kiri + kanan menggunakan mouse actkbd
  3. Masukkan ke actkbd.conf
  4. Jalankan actkbd daemon untuk memantau perangkat input mouse

Menjalankan daemon dapat diwujudkan sebagai skrip init atau skrip autorun di lingkungan.

Untuk mematikan mouse secara otomatis, kita dapat memonitor perangkat input ( cat /dev/input/event5) dan mematikannya ketika tidak ada input ...

Saya harap intro pendek saya akan membantu Anda ...;)

pbm
sumber
Terima kasih atas petunjuknya actkbd! Setelah memposting pertanyaan saya, saya sudah menemukan cara untuk menggunakan xinput, tetapi saya tidak tahu bagaimana saya akan mengaktifkan kembali mouse dengan menekan tombol mouse.
igor
Ini adalah jawaban yang ditulis dengan sangat baik.
pjc50
Terima kasih atas info itu, terutama untuk petunjuknya dengan atkkbd
Alih-alih menggunakan opsi --set-prop bersama dengan properti "Device Enabled / Disabled", Anda juga dapat menggunakan opsi --enable dan --disable juga, misalnya xinput --enable [perangkat] dan xinput --disable [perangkat] .
thebodzio
1

Sudahkah Anda mencoba applet panel Gnome "Pointer Capture" ?

Pointer mouse dapat dikunci ke area layar sehingga perangkat penunjuk gratis untuk tugas-tugas lain. Misalnya, kemampuan ini memungkinkan pengguna kursi listrik untuk mengendalikan kursi listrik dan pointer mouse dengan joystick kursi listrik tunggal

Applet panel Pointer Capture menciptakan area pada panel, di mana pengguna dapat mengunci pointer sampai dilepaskan dengan cara yang ditentukan.

Applet panel Pointer Capture dapat diinstal dengan mengklik kanan bilah menu / panel sistem GNOME Desktop, memilih Add to Panel, memilih Pointer Capture dan mengklik tombol Add.

Jika uraian dari gnome.org tidak jelas, ini akan membuat area di panel tempat mouse masuk (atau Anda klik), kursor akan menghilang dan tidak akan muncul kembali hingga tindakan yang ditentukan terjadi, misalnya a klik kedua. Kedengarannya seperti apa yang Anda butuhkan?

Josh
sumber
Saya telah menggunakan ini tetapi membuat beberapa masalah. Saya tidak dapat menggunakanAlt + F1 untuk membuka oleh menu aplikasi. Saya tidak tahu apa penyebabnya. Saya adalah pengguna ubuntu.
balki