Unity에서 임의의 기본 멀티 터치 제스처를 비활성화하려면 어떻게해야합니까? 드래그하여 창 이동, 4 손가락

Magic Trackpad와 함께 Ubuntu 11.04 의 사용자 정의 Touchégg 멀티 터치 제스처 설정을 사용하고 있습니다. 기본 동작 (예 : 3 손가락 탭 및 드래그하여 창 이동, 4 손가락 탭으로 대시 표시 등)이 Unity에서 하드 코딩되어 있으므로 사용자 지정 Touchégg 동작을 할당 할 수 없습니다. 제스처 (내가 많이 사용하지 않을 경우)는 종종 유사한 사용자 지정 제스처와 혼합되어 우연히 트리거됩니다.

기본 동작 중 일부를 비활성화하는 실용적인 방법이 있습니까 (uTouch 소스 조정이 부족한가)? 그렇지 않은 경우 기본 제스처가 정의 된 코드 부분 (아마도 grail?)에 대한 포인터 및 조정에 대한 도움을받을 수 있습니다.



답변

우분투 12.10의 domster answer 업데이트 .

Unity 소스 코드가 분명히 변경되었으므로 Unity 6.8.0에서 동일하게 달성하는 방법은 다음과 같습니다. Unity 소스 코드를 다운로드하는 단계는 이전과 동일합니다 (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()(Unity 6.8.0의 경우 3368 행).

그런 다음 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의 지시에 따라 Unity를 다시 빌드하십시오.

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

다시 짜잔! 로그 아웃했다가 다시 로그인하십시오.


답변

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

이 시점에서 파일에서 다음 두 줄을 주석 처리하십시오
/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와 ginn은 이제 응용 프로그램에 대한 사용자 정의 제스처를 정의하는 데 효과적입니다.


답변

12.04의 최신 유니티 (5.18.0)에서이 작업을 수행하려면 약간 다른 코드 행을 주석 처리해야합니다.

플러그인 /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));

플러그인 /unityshell/src/unityshell.cpp에서 :

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

답변

두 번째 시도

dinegri 은 ‘세 개의 제스처를 비활성화하지 않으면 CCSM 을 설치 한 다음 “Unit MT Grab Handles”를 비활성화하고 “Loves Handles”라고도 합니다 .

그러나 아직 네 손가락 제스처로 우리를 떠납니다.

첫 시도

utouch의 구성 파일은 /etc/ginn/wishes.xml입니다. 따라서이 파일을 편집하고 원하지 않는 동작을 제거 (또는 주석) 할 수 있습니다. 그러면 Touchégg는 충돌없이 업무를 수행 할 것입니다.

참고

추신 : 여기에서 솔루션을 테스트하기 위해 문제를 재현 할 수 없었습니다. 유감 이군.


답변

다음과 같이 표준 터치 제스처를 비활성화하십시오.

sudo apt install dconf-editor
dconf-editor

왼쪽 메뉴에서

com > canonical > unity > gestures

거기에 표시된 3 가지 기본 동작을 비활성화합니다. 이것은 16.04.3에서 작동합니다.


답변

우분투 기반의 키오스크 터미널을 만들었지 만 멀티 터치 제스처로 OS가 공개되었으므로 어떻게 든 제거해야했습니다.

xinput터치 모듈은 AFO TCM10J 40V 인 삼성 터치 스크린 장치 였습니다.

Ubuntu 14.04에서 멀티 터치 제스처를 비활성화하려면이 방법은 기본적으로 위에서 설명한 domster와 동일하지만 다음 행에서 주석을 찾아야합니다. /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp

// InitGestureEngine();

답변

dpkg-buildpackage에는 여러 작업이 인수로 주어질 수 있으므로 다음과 같이 모든 CPU 코어를 사용할 수 있습니다.

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

(이것은 dgraziotin의 답변에 대한 의견이어야하지만 의견을 게시 할 수는 없습니다.)