Boştayken Xorg'da fareyi devre dışı bırakın (dokunmatik yüzey değil!)


17

Ben hevesli bir klavye kullanıcısıyım, ama arada sırada fareye ihtiyacım var. El hareketini en aza indirmek için klavyemin altında fare var. (Yan notta, fareyi bu şekilde kullanmak elim için daha doğal geliyor.)

Şu anda fareyi kullanmadığımda işaretçiyi gizlemek için karışıklık kullanıyorum . Ne yazık ki, yazarken zaman zaman sürüklüyorum, bu da işaretçinin yeniden görünmesine neden oluyor. Bazen bu, işaretçiyi başka bir pencerenin üzerine getirir ve bu da odağı geçerli penceremden uzaklaştırır. (Özensiz odak kullanıyorum ve bunu değiştirmek bir seçenek değil.)

Şimdi sadece belirli bir boşta kalma süresinden sonra imleci gizlemekle kalmayıp fareyi tamamen devre dışı bırakma olasılığını araştırıyorum. Herhangi bir fare düğmesine tıklamak veya fare tekerleğini kullanmak daha sonra fareyi yeniden etkinleştirmelidir.

Yanıtlar:


16

Yapmamız gereken ilk şey fareyi kapatmak, ama sadece X'da. Bunun için kullanabiliriz xinput.

Bilgisayara (X sunucusuna) bağlı giriş aygıtlarını keşfetmemiz gerekir:

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)]
     [...]

Biz kullanımına ihtiyaç Aygıtıdır A4Tech USB Mouseile id=10. Sonra, bu cihazın özelliklerini kontrol etmemiz gerekiyor:

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

Cihazı kapatmak için özelliği değiştirmemiz gerekiyor Device Enabled:

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

Açmak için:

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

Sonraki şey bunu otomatik olarak yapmaktır ...;) Bu örnekte fareyi klavye kısayoluyla devre dışı bırakacağız ve sol + sağ fare düğmesine basarak etkinleştireceğiz.

Bunun için X sunucusunun dışında çalışan actkbd - klavye (ancak sadece) kısayol arka plan programı kullanabiliriz.

Öncelikle actkbd: için boş yapılandırma dosyası oluşturmamız gerekiyor touch /etc/actkbd.conf. Bir sonraki şey, bilgisayara bağlı cihazları keşfetmek:

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

[...]

Bu bölümde kullanım için en ilginç olanı klavye ve fare cihazlarının adları ve işleyicileri.

Öncelikle fareyi klavye kısayoluyla kapatmayı başardık, bu yüzden anahtar kimlikleri keşfetmemiz gerekiyor:

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 + `

Anahtar kimliklerinin ne olduğunu bildiğimizde, onları config dosyasına ( /etc/actkbd.conf) koymamız gerekir :

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

Test etmek için actkbdarka plan modunda çalışmamız gerekiyor :

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

Aynı şekilde "aç" olayını da ele almamız gerekir:

  1. Fare cihazının işleyicilerini kontrol edin
  2. Sol + sağ fare düğmesinin tuş kodlarını kullanarak actkbd
  3. Koy actkbd.conf
  4. Fare giriş cihazını izlemek için actkbd arka plan programını çalıştırın

Çalışan artalan süreçleri init betiği veya ortamda otomatik çalıştırma betiği olarak gerçekleştirilebilir.

Fareyi otomatik olarak kapatmak için giriş cihazını ( cat /dev/input/event5) izleyebilir ve giriş olmadığında kapatabiliriz ...

Umarım kısa tanıtımım size yardımcı olur ...;)


İpucu için teşekkürler actkbd! Sorumu gönderdikten sonra, kullanmayı düşünmüştüm xinput, ancak fare düğmelerine basarak fareyi nasıl yeniden etkinleştireceğimi bulamadım.
igor

Bu çok iyi yazılmış bir cevap.
pjc50

Bu bilgi için teşekkürler, özellikle atkkbd ile ipucu için

--Set-prop seçeneğini “Device Enabled / Disabled” özelliğiyle birlikte kullanmak yerine, --enable ve --disable seçeneklerini de kullanabilirsiniz, örneğin xinput --enable [device] ve xinput --disable [device] .
thebodzio

1

Bir "Pointer Capture" Gnome paneli uygulamasını denediniz mi?

Fare işaretçisi ekranın bir alanına kilitlenebilir, böylece işaretleme aygıtı diğer görevler için ücretsizdir. Örneğin, bu özellik bir elektrikli sandalye kullanıcısının tek bir elektrikli sandalye kumanda kolu ile hem elektrikli sandalyeyi hem de fare işaretçisini kontrol etmesini sağlar

İşaretçi Yakalama paneli uygulaması, panelde kullanıcının işaretçiyi belirli bir şekilde serbest bırakılana kadar kilitleyebileceği böyle bir alan oluşturur.

İşaretçi Yakalama paneli uygulaması, GNOME Masaüstü menü çubuğuna / sistem paneline sağ tıklanarak, Panele Ekle'yi seçerek, İşaretçi Yakala'yı seçip Ekle düğmesini tıklatarak yüklenebilir

Gnome.org adresinden yapılan açıklama net değilse, bu panelde fare girdiğinde (veya siz klips yaptığınızda) imlecin kaybolacağı ve tanımlı bir eylem gerçekleşinceye kadar yeniden görünmeyeceği bir alan oluşturur. ikinci tıklama. Tam olarak neye ihtiyacın var gibi görünüyor?


Bunu kullandım ama bazı problemler yarattım. Alt + F1Uygulamalar menüsüyle açmak için kullanamadım . Buna neyin sebep olduğunu bilmiyorum. Ben ubuntu kullanıcısıyım.
balki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.