Birlik'te rastgele varsayılan çoklu dokunma hareketlerini nasıl devre dışı bırakabilirim?


22

Ubuntu 11.04'te Magic Trackpad ile özel bir Touchégg multitouch jest kurulumunu kullanıyorum . Varsayılan hareketler (örneğin pencereleri hareket ettirmek için 3 parmakla dokunma ve sürükleme, çizgiyi ortaya çıkarmak için 4 parmakla dokunma vb.) Birlik'te görünüşte kodlanmış olduğundan, bunlara herhangi bir özel Touchégg eylemi atayamıyorum ve bazılarını varsayılan olarak ayarlayamıyorum. (eğer çok fazla kullanmayacağımı düşündüğüm) jestler bazen benzer özel görevlerimle karıştırılıyor ve kazayla tetikleniyor.

Varsayılan hareketlerin bazılarını devre dışı bırakmak için pratik bir yol var mı? Aksi halde, varsayılan hareketlerin tanımlandığı kod bölümlerine (belki de kasette?) İşaretçiler ve ince ayarlara yardımcı olmak da memnuniyetle karşılanacaktır.


1
Utouch'u kaldırabilir ve dokunmaya devam edebilir misiniz?
desgua

1
Touchégg utouch-geis'i kullanır, bu yüzden hayır, uzaktan pratik anlamda değil.
Ağustos'ta

Bu eylemleri /etc/ginn/wishes.xml dosyasında yapılandırabileceğinizden şüpheleniyorum (Şu anda mobil değilim, şu anda test edemiyorum)
desgua

Yanıtlar:


16

Ubuntu 12.10'a cevap vermek için yapılan bir güncelleme .

Birlik kaynak kodu açıkça değişti, bu yüzden nasıl Birlik 6.8.0'da aynı elde etmek için nasıl. Unity kaynak kodunu indirme adımları öncekiyle aynıdır (domster'in pasajını kopyalayıp yapıştıracağım):

sudo apt-get build-dep unity
cd /tmp  #It can be done somewhere else, feel free to change the base location.
mkdir unity
cd unity
apt-get source unity

Bu noktada, düzenlenecek dosya sadece /tmp/unity/unity-6.8.0/plugins/unityshell/src/unityshell.cpp.

Yöntemi bulun UnityScreen::InitGesturesSupport()(Unity 6.8.0 için satır 3368).

Ardından, şöyle görünmesi için jest_sub_launcher ile başlayan tüm satırları yorumlayın:

void UnityScreen::InitGesturesSupport()
{
  std::unique_ptr<nux::GestureBroker> gesture_broker(new UnityGestureBroker);
  wt->GetWindowCompositor().SetGestureBroker(std::move(gesture_broker));
  /*
  gestures_sub_launcher_.reset(new nux::GesturesSubscription);
  gestures_sub_launcher_->SetGestureClasses(nux::DRAG_GESTURE);
  gestures_sub_launcher_->SetNumTouches(4);
  gestures_sub_launcher_->SetWindowId(GDK_ROOT_WINDOW());
  gestures_sub_launcher_->Activate();

  gestures_sub_dash_.reset(new nux::GesturesSubscription);
  gestures_sub_dash_->SetGestureClasses(nux::TAP_GESTURE);
  gestures_sub_dash_->SetNumTouches(4);
  gestures_sub_dash_->SetWindowId(GDK_ROOT_WINDOW());
  gestures_sub_dash_->Activate();

  gestures_sub_windows_.reset(new nux::GesturesSubscription);
  gestures_sub_windows_->SetGestureClasses(nux::TOUCH_GESTURE
                                         | nux::DRAG_GESTURE
                                         | nux::PINCH_GESTURE);
  gestures_sub_windows_->SetNumTouches(3);
  gestures_sub_windows_->SetWindowId(GDK_ROOT_WINDOW());
  gestures_sub_windows_->Activate();
  */
}

Birlik sahibinin talimatlarını tekrar izleyerek Birliği yeniden kurun:

cd /tmp/unity/unity-6.8.0
dpkg-buildpackage -us -uc -nc
cd ..
sudo dpkg -i *deb

Tekrar et! Çıkış yap ve tekrar giriş yap.


Mevcut birlik 7.2.1'de bu nasıl çalışır?
plopp

Bu cevap Unity 7.2.2 için hala% 100 geçerlidir (yani 7.2.1 için de geçerli olduğunu varsayıyorum). Şu an yapıyorum, ne olduğu konusunda güncelleme yapacağım. Ben bir kez touchegg bitirdim ve yeniden başlattı.
Endophage

1
Trusty ve Xenial arasında, Unity hareketlerini devre dışı bırakma ayarları, altında listelenen dconf'a eklendi com.canonical.unity.gestures. Wily'de de mevcut olabilir, ama sanmıyorum; Yalnızca Güven'de bulunmadığından ve Xenial'da bulunduğundan eminim.
Kevin,

Ubuntu 16: dpkg-buildpackage -us -uc -ncHatalarla çıkıyor. error: debian/rules build gave error exit status 2... The X server was not able to run in time ....recipe for target 'tests/CMakeFiles/run-test-switcher-controller-slow-headless' failed
Matt

11

unityÇoklu dokunma ve el hareketlerini tamamen devre dışı bırakmak için paketi yamamanın zor olmadığı ortaya çıktı . İşte yama için adım adım talimatlar unity-4.24.0.

Bir komut satırına şunu girin:

sudo apt-get build-dep unity
cd /tmp  #It can be done somewhere else, feel free to change the base location.
mkdir unity
cd unity
apt-get source unity

Bu noktada, dosyada aşağıdaki 2 satırı yorumlayınız /tmp/unity/unity-4.24.0/plugins/unityshell/src/unityshell.cpp:

GeisAdapter::Default()->Run();
gestureEngine = new GestureEngine(screen);

ve dosyada aşağıdaki 4 satır /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp:

GeisAdapter& adapter = *(GeisAdapter::Default());
adapter.drag_start.connect(sigc::mem_fun(this, &Launcher::OnDragStart));
adapter.drag_update.connect(sigc::mem_fun(this, &Launcher::OnDragUpdate));
adapter.drag_finish.connect(sigc::mem_fun(this, &Launcher::OnDragFinish));

Kaynak kodu C++içeridedir, bu yüzden satır başına yorum ekleyerek bir satır yorumlaması yapılır //. Örneğin, çizgi

GeisAdapter::Default()->Run();

olur

//GeisAdapter::Default()->Run(); .

Komut satırına geri dönün:

cd unity-4.24.0
dpkg-buildpackage -us -uc -nc
cd ..
sudo dpkg -i *deb

Ve işte!

Şimdi çıkış yapıp tekrar giriş yaparsanız, hareketler normal şekilde çalışmalıdır. Üçlü musluk, sistemimde, standart bir tıklama olarak, touchegg'e gerek kalmadan, orta tıklamayla çalışır. Ancak hem touchegg hem de ginn artık uygulamalarınız için özel hareketler tanımlamak için iyi çalışıyor.


3

Bunu 12.04'teki son birlikte (5.18.0) yapmak için biraz farklı kod satırları yorumlamanız gerekir.

Eklentiler / unityshell / src / Launcher.cpp içinde:

// GeisAdapter& adapter = GeisAdapter::Instance();
// adapter.drag_start.connect(sigc::mem_fun(this, &Launcher::OnDragStart));
// adapter.drag_update.connect(sigc::mem_fun(this, &Launcher::OnDragUpdate));
// adapter.drag_finish.connect(sigc::mem_fun(this, &Launcher::OnDragFinish));

Eklentiler / unityshell / src / unityshell.cpp:

// geis_adapter_.Run();
// gesture_engine_.reset(new GestureEngine(screen));

2

İkinci deneme

dinegri , üç hareketi devre dışı bırakmanın, ccsm 'nin kurulması gerektiğini [ve sonra], burada "Loves Handles" "olarak da bilinen" Unit MT Tutma Kolları "nı devre dışı bırakmalarını önermektedir .

Ama bizi dört parmak hareketi ile bıraktı.

İlk deneme

Utouch için yapılandırma dosyasıdır /etc/ginn/wishes.xml. Böylece bu dosyayı düzenleyebilir ve istemediğiniz eylemleri kaldırabilir (veya yorum yapabilirsiniz). Sonra Touchégg işini çatışmalar olmadan yapardı.

Referans

Not: Çözümü test etmek için buradaki probleminizi tekrar oluşturamadım. Bunun için üzgünüm.


Bu, işlevselliği Touchégg ile örtüşen bir jest enjektörü olan ginn'in yapılandırma dosyasıdır. Konfigürasyon dosyasında yapılacak değişiklikler ancak, TouchEgg kullandığımdan beri normalde çalışmayan ginn arka plan programı çalışıyorsa etkili olur. Touchégg yerine ginn kullanma olasılığı ile, bazı varsayılan Unity hareketlerini ginn yapılandırma dosyasında yorumlayarak ve ginn çalıştırarak geçersiz kılmayı denedim ama işe yaramadı.
Mgunes

Cevabı güncelledim.
desgua

4
Tutamaç eklentisini devre dışı bırakmak yalnızca sürükleme için görsel çekiciliği kaldıracak; Üç parmak dokunma ve sürükleme hareketini (özellikle de devre dışı bırakmak istemiyorum) bile devre dışı bırakmayacak, diğerleri bile.
Mgunes

Bu arada, zaten devre dışı bıraktım, çünkü # 754000 hata nedeniyle, Touchégg ile orta düğmeye tıklamayı simüle etmem gerekiyor ve her üç parmakla dokunuş yaptığımda tutamaçların görünmesi çok kafa karıştırıcı.
Mgunes

2

Standart dokunma hareketlerini aşağıdaki gibi devre dışı bırakın:

sudo apt install dconf-editor
dconf-editor

Sol taraftaki menülere tıklayın.

com > canonical > unity > gestures

ve orada gösterilen 3 temel hareketi devre dışı bırakın. Bu 16.04.3 tarihinde çalışır.


16.04 Ubuntu kullanıcıları için dconf'un GUI versiyonunu kurmaktan mutlu olan en iyi ve en basit cevap.
GrayedFox

1

Ubuntu tabanlı bir kiosk terminali kurduk, ancak çoklu dokunma hareketleri işletim sistemini ortaya çıkardı, bu yüzden bir şekilde ondan kurtulmak zorunda kaldık.

Samsung dokunmatik ekranlı bir xinputcihazdı, dokunmatik modülü AFO TCM10J 40V olarak tanımladı.

Ubuntu 14.04'teki çoklu dokunma hareketlerini devre dışı bırakmak için yöntem, temelde yukarıda açıklanan başlık ile aynıdır, ancak aşağıdaki satırda bir yorum bulmak zorundasınız. /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp

// InitGestureEngine();

Hmm, bu benim için işe yaramadı. touchegg ve çırçır, 4 parmaktan daha küçük hareketler için hala herhangi bir veri rapor etmiyor ve sistemin dokunmatik yüzey ayarlarındaki "Two Finger Scroll" ayarı hala öncelikli ...
Jeff Ward

1

Dpkg-buildpackage öğesinin, bu gibi tüm CPU çekirdeğini kullanmanıza izin veren bağımsız değişken olarak verilebileceğini unutmayın:

dpkg-buildpackage -us -uc -nc -j$(($(nproc)))

(Bu, dgraziotin'in cevabına bir yorum olmalıydı, ancak yorum gönderemem.)


Çok yardımcı olur. Tek dişli yapımı bitinceye kadar beklemek çok uzun.
Orient
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.