Làm cách nào tôi có thể tắt các cử chỉ đa cảm ứng mặc định tùy ý trong Unity?


22

Tôi đang sử dụng cài đặt cử chỉ đa cảm ứng Touchégg tùy chỉnh trong Ubuntu 11.04 với Magic Trackpad. Vì các cử chỉ mặc định (chẳng hạn như chạm và kéo 3 ngón tay để di chuyển cửa sổ, chạm 4 ngón tay để hiển thị dấu gạch ngang, v.v.) dường như được mã hóa cứng trong Unity, tôi không thể gán bất kỳ hành động Touchégg tùy chỉnh nào cho chúng và một số mặc định cử chỉ (mà tôi không có ý định sử dụng nhiều, nếu có) đôi khi trộn lẫn với những cử chỉ được tùy chỉnh tương tự của tôi và bị kích hoạt do tai nạn.

Có cách nào thực tế (không điều chỉnh nguồn uTouch) để vô hiệu hóa một số cử chỉ mặc định? Nếu không, con trỏ tới các phần của mã (có lẽ trong grail?) Trong đó các cử chỉ mặc định được xác định và trợ giúp điều chỉnh cũng sẽ được đánh giá cao.


1
Bạn chỉ có thể gỡ cài đặt utouch và giữ touchégg?
desgua

1
Touchégg sử dụng utouch-geis, vì vậy không, không phải trong bất kỳ ý nghĩa thực tế từ xa nào.
mgunes

Tôi nghi ngờ bạn có thể định cấu hình các hành động này trong /etc/ginn/wishes.xml (Tôi đang ở thiết bị di động, không thể kiểm tra ngay bây giờ)
desgua

Câu trả lời:


16

Một bản cập nhật cho câu trả lời của domster cho Ubuntu 12.10.

Mã nguồn Unity rõ ràng đã thay đổi, vì vậy đây là cách để đạt được điều tương tự trong Unity 6.8.0. Các bước để tải xuống mã nguồn Unity giống như trước đây (tôi sẽ sao chép và dán đoạn trích của domster):

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

Tại thời điểm này, tập tin được chỉnh sửa là duy nhất /tmp/unity/unity-6.8.0/plugins/unityshell/src/unityshell.cpp.

Tìm phương thức UnityScreen::InitGesturesSupport()(dòng 3368 cho Unity 6.8.0).

Sau đó, nhận xét tất cả các dòng bắt đầu bằng cử chỉ_sub_launcher để làm cho nó giống như:

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();
  */
}

Xây dựng lại Unity theo hướng dẫn của domster một lần nữa:

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

Et voila một lần nữa! Đăng xuất và đăng nhập lại.


Làm thế nào điều đó sẽ làm việc trong sự thống nhất hiện tại 7.2.1?
plopp

Câu trả lời này vẫn hợp lệ 100% cho Unity 7.2.2 (vì vậy tôi cho rằng nó cũng hợp lệ cho 7.2.1). Tôi đang xây dựng ngay bây giờ, sẽ cập nhật về những gì xảy ra. touchegg một khi tôi đã hoàn thành và khởi động lại.
Nội dung

1
Thỉnh thoảng giữa Trusty và Xenial, các cài đặt để vô hiệu hóa cử chỉ Unity đã được thêm vào dconf, được liệt kê bên dưới com.canonical.unity.gestures. Nếu cũng có thể có sẵn trong Wily, nhưng tôi không nghĩ vậy; Tôi chỉ khẳng định rằng nó không có sẵn trong Trusty và ở Xenial.
Kevin

Ubuntu 16: dpkg-buildpackage -us -uc -ncthoát với lỗi. 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

Nó chỉ ra rằng không khó để vá unitygói vì đã vô hiệu hóa hoàn toàn việc xử lý đa chạm và cử chỉ của nó. Dưới đây là hướng dẫn từng bước để vá unity-4.24.0.

Trong một dòng lệnh, nhập:

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

Tại thời điểm này, nhận xét 2 dòng sau trong tệp /tmp/unity/unity-4.24.0/plugins/unityshell/src/unityshell.cpp:

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

và 4 dòng sau trong tệp /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));

Mã nguồn nằm trong C++, vì vậy việc bình luận một dòng được thực hiện bằng cách thêm //vào đầu dòng. Ví dụ, dòng

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

trở thành

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

Quay lại dòng lệnh, nhập:

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

Et voila!

Bây giờ nếu bạn đăng xuất và đăng nhập lại, cử chỉ sẽ hoạt động bình thường. Ba lần nhấn hoạt động trên hệ thống của tôi dưới dạng nhấp chuột giữa theo mặc định mà không cần touchegg. Nhưng cả touchegg và ginn hiện đều hoạt động tốt để xác định cử chỉ tùy chỉnh cho các ứng dụng của bạn.


3

Để thực hiện điều này trên sự thống nhất mới nhất (5.18.0) trong 12.04, bạn phải nhận xét các dòng mã hơi khác nhau.

Trong plugin / unityshell / src / Launcher.cpp:

// 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));

Trong plugin / unityshell / src / unityshell.cpp:

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

2

Thử lần thứ hai

dinegri đề nghị rằng '[t] o vô hiệu hóa ba cử chỉ, [cần] [cần] đã cài đặt ccsm, [và sau đó] vô hiệu hóa "Đơn vị MT Grab Handles" cũng được gọi là "Yêu xử lý" ở đây .

Nhưng nó để lại cho chúng tôi những cử chỉ bốn ngón tay.

Lần thử đầu tiên

Các tập tin cấu hình cho utouch là /etc/ginn/wishes.xml. Vì vậy, bạn có thể chỉnh sửa tệp này và xóa (hoặc nhận xét) các hành động bạn không muốn. Sau đó, Touchégg sẽ thực hiện công việc của mình mà không có xung đột.

Tài liệu tham khảo

PS: Tôi không thể tái tạo vấn đề của bạn ở đây để kiểm tra giải pháp. Tôi xin lỗi vì điều đó.


Đó là tệp cấu hình cho ginn, một trình tạo cử chỉ, có chức năng trùng với chức năng của Touchégg. Sửa đổi tệp cấu hình của nó sẽ chỉ có hiệu lực nếu ginn daemon đang chạy, vì tôi đang sử dụng Touchégg, nên nó thường không hoạt động. Với khả năng sử dụng ginn thay vì Touchégg, tôi đã thử ghi đè một số cử chỉ Unity mặc định bằng cách nhận xét chúng trong tệp cấu hình ginn và chạy ginn, nhưng điều đó không hiệu quả.
mgunes

Tôi đã cập nhật câu trả lời.
desgua

4
Vô hiệu hóa plugin xử lý sẽ chỉ loại bỏ khả năng chi trả trực quan cho việc kéo; nó thậm chí sẽ không vô hiệu hóa thao tác chạm và kéo ba ngón tay (dù sao tôi không đặc biệt muốn vô hiệu hóa), chứ đừng nói đến những người khác.
mgunes

Nhân tiện, tôi đã bị vô hiệu hóa, do lỗi # 754000, tôi cần mô phỏng nhấp vào nút giữa bằng Touchégg và việc xử lý xuất hiện mỗi khi tôi thực hiện thao tác chạm ba ngón tay là rất mất phương hướng.
mgunes

2

Tắt các cử chỉ cảm ứng tiêu chuẩn như sau:

sudo apt install dconf-editor
dconf-editor

Trong các menu bên trái bấm vào

com > canonical > unity > gestures

và vô hiệu hóa 3 cử chỉ cơ bản được hiển thị ở đó. Điều này hoạt động vào ngày 16.04.3.


Cho đến nay, câu trả lời hay nhất và đơn giản nhất cho 16.04 người dùng Ubuntu rất vui khi cài đặt phiên bản GUI của dconf.
GrayedFox

1

Chúng tôi đã xây dựng một thiết bị đầu cuối kiosk dựa trên Ubuntu, nhưng các cử chỉ đa cảm ứng đã tiết lộ HĐH, vì vậy chúng tôi phải loại bỏ điều đó bằng cách nào đó.

Đó là một thiết bị màn hình cảm ứng của Samsung, xinputđược xác định mô-đun cảm ứng là AFO TCM10J 40V.

Để vô hiệu hóa các cử chỉ đa cảm ứng trên Ubuntu 14.04, phương pháp này về cơ bản giống như người quản trị được mô tả ở trên, ngoại trừ bạn phải tìm một nhận xét ở hàng sau trong /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp

// InitGestureEngine();

Hmm, điều này dường như không làm việc cho tôi. touchegg và ginn vẫn không báo cáo bất kỳ dữ liệu nào cho cử chỉ dưới 4 ngón tay và cài đặt "Cuộn hai ngón tay" trong cài đặt bàn di chuột của hệ thống vẫn được ưu tiên ...
Jeff Ward

1

Lưu ý rằng dpkg-buildpackage có thể được cung cấp số lượng công việc làm đối số, cho phép bạn sử dụng tất cả các lõi CPU của mình như thế này:

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

(Điều này đáng lẽ phải là một bình luận cho câu trả lời của dgraziotin, nhưng tôi không thể đăng bình luận.)


Giúp đỡ rất nhiều. Quá lâu để chờ đợi cho đến khi hoàn thành một luồng.
Phương Đông
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.