Как я могу отключить произвольные мультисенсорные жесты по умолчанию в Единице?

Я использую пользовательский Touchégg мультисенсорная установка жеста в Ubuntu 11.04 с Волшебной Сенсорной панелью. Так как жесты по умолчанию (такие как касание с 3 пальцами и перетаскивают для перемещения окон, 4 касания пальца для раскрытия тире, и т.д.), по-видимому, hardcoded в Единице, я не могу присвоить любые пользовательские действия Touchégg им и некоторые жесты по умолчанию (что я не намереваюсь использовать много, если вообще), иногда путают с моими подобными пользовательски присвоенными и инициированы случайно.

Существует ли практический путь (за исключением тонкой настройки uTouch источника) для отключения некоторых жестов по умолчанию? В противном случае указатели на части кода (возможно, в чаше Грааля?), где жесты по умолчанию определяются, и справка с тонкой настройкой, также ценился бы.

22
задан 24 August 2011 в 10:33

7 ответов

Вторая попытка

dinegri предлагают, чтобы '[t] o отключили три жеста, необходимо установить ccsm, [и затем] отключают "Единицу, которую также знают Дескрипторы Захвата MT", поскольку "Любит Дескрипторы"' здесь.

Но это оставляет нас с четырьмя жестами пальца все же.

Сначала попробуйте

Конфигурационный файл для utouch /etc/ginn/wishes.xml. Таким образом, можно отредактировать этот файл и удалить (или комментарий) действия, Вы не хотите. Затем Touchégg сделал бы свое задание без конфликтов.

Ссылка

PS: Я не мог воспроизвести Вашу проблему здесь для тестирования решения. Я сожалею об этом.

2
ответ дан 23 November 2019 в 01:35

Оказывается этим не то, чтобы трудно исправить unity пакет для того, чтобы полностью запретить его обработку мультикасаний и жесты. Вот пошаговые инструкции для исправления unity-4.24.0.

В командной строке войдите:

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

На данном этапе прокомментируйте следующие 2 строки в файле /tmp/unity/unity-4.24.0/plugins/unityshell/src/unityshell.cpp:

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

и следующие 4 строки в файле /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));

Исходный код находится в C++, так комментарий строки сделан путем добавления // в начале строки. Например, строка

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

становится

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

Назад к командной строке, войдите:

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

И вуаля!

Теперь, если Вы выходите из системы и входите в, жесты должны обычно функционировать. Трижды коснитесь работ над моей системой как щелчок средней кнопкой по умолчанию без потребности в touchegg. Но и touchegg и ginn теперь работают хорошо для определения пользовательских жестов для приложений.

11
ответ дан 23 November 2019 в 01:35

Обновление domster отвечает за Ubuntu 12.10.

Исходный код единицы, очевидно, изменился, таким образом, вот то, как достигнуть того же в Единице 6.8.0. Шаги для загрузки исходного кода Единицы совпадают с прежде (я скопирую и вставлю отрывок 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

На данном этапе файл, который будет отредактирован, только /tmp/unity/unity-6.8.0/plugins/unityshell/src/unityshell.cpp.

Найдите метод UnityScreen::InitGesturesSupport() (строка 3368 для Единицы 6.8.0).

Затем прокомментируйте все строки, начинающие с gesture_sub_launcher заставить его быть похожим:

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

Восстановите Единицу, следующую инструкциям domster снова:

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

И вуаля снова! Выйдите из системы и войдите в.

16
ответ дан 23 November 2019 в 01:35

Чтобы сделать это на последней единице (5.18.0) в 12,04, необходимо прокомментировать немного отличающиеся строки кода.

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

В plugins/unityshell/src/unityshell.cpp:

// geis_adapter_.Run();
// gesture_engine_.reset(new GestureEngine(screen));
3
ответ дан 23 November 2019 в 01:35

Мы создали основанный на Ubuntu терминал киоска, но мультисенсорные жесты показали ОС, таким образом, мы должны были избавиться от этого так или иначе.

Это было устройство сенсорного экрана Samsung, xinput идентифицированный сенсорный модуль как AFO TCM10J 40 В.

Для отключения мультисенсорных жестов на Ubuntu 14.04, метод является в основном тем же, поскольку domster описанный выше, кроме Вас должны найти комментарий следующей строкой в /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp

// InitGestureEngine();
1
ответ дан 23 November 2019 в 01:35

Обратите внимание, что dpkg-buildpackage можно дать количество заданий как аргумент, который позволяет Вам использовать все свои ядра процессора как это:

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

(Это должно было быть комментарием к ответу dgraziotin, но я не могу добавить комментарии.)

1
ответ дан 23 November 2019 в 01:35

Отключите стандартные сенсорные жесты следующим образом:

sudo apt install dconf-editor
dconf-editor

В левых меню нажимают к

com > canonical > unity > gestures

и отключите 3 основных жеста, показанные там. Это работает над 16.04.3.

2
ответ дан 23 November 2019 в 01:35

Другие вопросы по тегам:

Похожие вопросы: