Bir Thinkpad'de izleme noktasını kullanırken dokunmatik yüzey nasıl devre dışı bırakılır?


21

Thinkpad'lerde (örneğin, kullandığım X230) hem bir izleme noktası hem de bir dokunmatik yüzey var. Yazarken dokunmatik yüzey devre dışı.

Ancak, izleme noktasını kullanırken, çoğu zaman dokunmatik yüzeye de dokunurum ve kaçınmak istediğim fare tıklamaları oluşturur. Trackpoint kullanımdayken dokunmatik yüzeyde fare tıklamaları nasıl devre dışı bırakılabileceği hakkında bir fikri olan var mı?

EDIT: Ayrıca, biri yazarken touchpad'i devre dışı bırakma seçeneğinin nasıl çalıştığını açıklayabilir mi? Perdenin arkasında ne yapılıyor? Bu bir xinput yapılandırma komutu mu, eğer evetse hangisi?

EDIT2: açıklama; Dokunmatik Yüzeyi manuel olarak devre dışı bırakmak (kısayol olsa bile) buradaki sorun değildir. Bu, aynı şekilde "Yazarken dokunmatik yüzeyi devre dışı bırak" seçeneği gibi çalışmalıdır, çünkü Touchpad ve Trackpoint'i birbirinin yerine kullanıyorum (en sık olarak, kaydırmak için Touchpad'i ve imleci hareket ettirmek için Trackpoint'i kullanırım).


Bu ilginç olurdu. Klavyenin yerleştirilme şekli, düzgün çalışmayı engelleyen başıboş jestlere katkıda bulunur. Bunun mevcut seçeneklerle mümkün olduğunu sanmıyorum, ancak gelecekte olabilir mi? İzleme dörtgeni fırçalamaktan / dürtmekten kaçınmak için (sağ) elimi uzunca yazıp işaretlemek için iki eli kullanmam gerektiğini düşünüyorum.
saat

Şu anda, touchpad ile fare tıklamaları devre dışı bıraktım - Çoğu durumda, dokunmatik yüzeyin üstündeki düğmeleri zaten kullandığımı fark ettim.
Ocak

Yanıtlar:


10

Klavye kullanımdayken dokunmatik yüzeyi devre dışı bırakma

Bu işlev syndaemonyardımcı program tarafından xserver-xorg-input-synapticspaketten gerçekleştirilir. Bekleme süresi, yoklama sıklığı, vb. Gibi seçenekleri belirleyebilirsiniz ( çalışma zamanı yardımına bakın ):

Kullanımı: syndaemon [-i boşta kalma süresi] [-m anket-gecikme] [-d] [-t] [-k]
  -i Önce son tuşa basıldıktan sonra kaç saniye beklemek
     dokunmatik yüzeyi etkinleştirme. (varsayılan 2.0'dır)
  -m Bir sonraki ankete kadar kaç saniye kaldı.
     (varsayılan 200ms'dir)
  ...
  -T Sadece fare hareketlerini değil dokunarak ve kaydırmayı devre dışı bırak.

İşte kaynak kod için syndaemon.c.

  • Önemli fonksiyonlar keyboard_activity(...)vemain_loop(...)
  • keyboard_activityklavyenin geçerli durumunu (anahtar başına 1 bit) almak için XQueryKeyMap API çağrısını kullanır ve daha sonra son (eski) durumla karşılaştırır; eğer farklılarsa, döndürür 1
  • main_loopkeyboard_activityher mmilisaniyede bir anket yapar ve "son etkinlik zamanına" ve keyboard_activitydoğru veya yanlış olarak dönüp dönmediğine bağlı olarak, dokunmatik yüzeyi devre dışı bırakıp bırakmamaya karar verir.
  • dp_get_deviceFonksiyonu X giriş cihazları numaralandırılır nasıl oluşturulabileceğini gösterir; keyboard_activityHerhangi bir trackpoint aktivitesini kontrol etmek için bunu ve fonksiyonu değiştirebilmelisiniz .

  • xinputAracı listeleri cihazları ve kimlikleri, örneğin"

    Sanal çekirdek işaretçi kimliği = 2 [ana işaretçi (3)]
    Sanal çekirdek XTEST işaretçi kimliği = 4 [bağımlı işaretçi (2)]
    PS ↳ SynPS / 2 Synaptics Dokunmatik Yüzey kimliği = 11 [bağımlı işaretçi (2)]
    PS ↳ TPPS / 2 IBM TrackPoint kimliği = 12 [yardımcı işaretçi (2)]

  • Bunu (ID) XListInputDevices işlevi ile alabilirsiniz.

  • Bundan sonra, XOpenDevice kullanarak kimliğinizden bir aygıt tanıtıcısı almalısınız.
  • Ardından, TrackPoint işaretçisinin koordinatlarını elde etmek için XQueryDeviceState işlevini kullanın; mevcut döngüye benzer şekilde, bunu her zaman sık sık yoklayın ve koordinatların değişip değişmediğini kontrol edin (yani TrackPoint kullanımda) ve dokunmatik yüzeyi açıp kapatmak için bunu kullanın.
  • Programlamanın doğru olup olmadığını kontrol etmek için xinputyardımcı programı query-stateanahtar ve cihaz kimliği ile kullanabilirsiniz, örneğin:

    $ xinput sorgu durumu 12
    2 sınıf:
    ButtonClass
    [1] butonuna kadar =
    [2] düğmesine kadar =
    düğme [3] kadar =
    düğme [4] kadar =
    düğme [5] kadar =
    düğme [6] kadar =
    düğme [7] kadar =
    ValuatorClass Mode = Göreceli Yakınlık = Giriş
    değerlemeci [0] = 854
    değerlemeci [1] = 867
    
  • TrackPoint'in X ve Y koordinatları olan değerleyici değerleri ile ilgileniyorsunuz
  • Daha xinputfazla ipucu için kaynağa bakın
  • Bu paketi değiştirmek ve yeniden oluşturmak için:

    1. Kaynağı ile alın apt-get source...
    2. Değişikliklerinizi yapın tools/syndaemon.c
    3. Ve içindeki satırları syndaemonyorumlayarak mevcut yamaları devre dışı bırakın118...124...debian/patches/series
    4. Değiştirilmiş paketinizi birlikte oluşturun dpkg-buildpackage -us -uc; deb dosyaları ana dizinde olacaktır.

1
Ödül üç gün içinde sona ereceğinden, sizinle bir anlaşma yapacağım (daha iyi bir cevap görünmezse): Ödemeyi, xinput tanımlayıcısı tarafından bir cihazı sorgulamak için API’ye yönlendirirseniz değiştirilmiş kaynaklardan bir deb paketinin nasıl oluşturulduğunu açıklayan bir sayfaya link verin. O zaman bu yaklaşımı uygulayabilecektim. Bu iyi olur mu?
Ocak

Üzgünüm, uzaktaydım. Kulağa hoş geliyor, bilgileri bulmaya çalışacağım ve cevabı birkaç saat içinde düzenleyeceğim.
imsi

telaşa gerek yok! bu iyi
Ocak

1
Söz verdiğim gibi, siz ikiniz ödül alırsınız. Ancak cevabı kabul etmiyorum, çünkü önce çözümü kodlamam gerekiyor.
Ocak

1
@ Ocak, çözümünüzü henüz kodlamayı başaramadığınızdan emin değil misiniz? İzlenen noktanın izlenmesini desteklemek için syndaemon oluşturdum. github.com/eyko/xf86-input-synaptics (burada iş github.com/eyko/xf86-input-synaptics/commit/… ).
Vince,

4

Yapmanız gereken ilk şey, dokunmatik yüzey kimliğinizi bilmektir.

İlk önce terminal açın ve bu komutu çalıştırın

~$ xinput --list

İşte bunu anlıyoruz Touchpad id = <id Number>

Bu açık klavye kısayollarından sonra bunu klavye kısayollarınızla birlikte iki komutun altına ekleyin.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

görüntü tanımını buraya girin görüntü tanımını buraya girin


Teşekkürler, ancak Dokunmatik Yüzeyi manuel olarak devre dışı bırakmak buradaki sorun değil (kısayolla bile) ve nasıl yapılacağını biliyorum. Fikir devre dışı Touchpad etmektir otomatik Trackpoint Dokunmatik devre dışı benzer şekilde, kullanıldığı sürece otomatik olarak ( "Fare ve Dokunmatik" ayarlarında "yazarak ederken devre dışı dokunmatik yüzeyi" ayarını bakınız) klavye kullanıldığında.
Ocak

0

İşte güç kullanımı için kötü olabilecek düşük teknolojili bir çözüm (Syndaemon -T yaması benim için işe yaramadı).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

İzleme noktasını kullandığınızı farketmeniz biraz şanslı olmalı, çünkü sadece her 5 sn'lik aralıktaki koordinatları söyleyebilir. Başka bir deyişle, dokunmatik yüzeyi devre dışı bırakma konusunda muhafazakardır, ancak izleme noktası boştayken güvenilir şekilde yeniden etkinleştirilmemesi gerekir.

Her neyse, bana ultrabook'umda palm press'den imleci dolaşarak çok yardımcı oluyor.

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.