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의 답변에 대한 의견이어야하지만 의견을 게시 할 수는 없습니다.)