ฉันจะปิดการใช้งานรูปแบบมัลติทัชที่เป็นค่าเริ่มต้นโดยพลการใน Unity ได้อย่างไร


22

ฉันใช้การตั้งค่ารูปแบบลายเส้นแบบมัลติทัชที่กำหนดเองของTouchéggใน Ubuntu 11.04 ด้วย Magic Trackpad เนื่องจากท่าทางเริ่มต้น (เช่นการแตะ 3 นิ้วและลากเพื่อย้ายหน้าต่างการแตะ 4 นิ้วเพื่อแสดงเส้นประ ฯลฯ ) เห็นได้ชัดว่าเป็นรหัสใน Unity ฉันไม่สามารถกำหนดการกระทำTouchéggแบบกำหนดเองให้กับพวกเขาและค่าเริ่มต้นบางอย่าง ท่าทาง (ที่ฉันไม่ได้ตั้งใจที่จะใช้มากถ้าบางครั้ง) ผสมกับคนที่กำหนดเองที่คล้ายกันของฉันและได้รับการเรียกโดยไม่ได้ตั้งใจ

มีวิธีการปฏิบัติ (สั้น ๆ จากการปรับแต่งแหล่งที่มาของ uTouch) เพื่อปิดการใช้งานท่าทางเริ่มต้นบางอย่างหรือไม่? ถ้าไม่ชี้ไปยังส่วนต่าง ๆ ของรหัส (อาจจะอยู่ในเกรล?) ซึ่งมีการกำหนดท่าทางเริ่มต้นไว้และความช่วยเหลือในการปรับแต่งก็จะได้รับการชื่นชมเช่นกัน


1
คุณสามารถถอนการติดตั้ง utouch และใช้touchéggต่อไปได้หรือไม่
desgua

1
Touchéggใช้ประโยชน์จาก utouch-geis ดังนั้นไม่เลยไม่ได้ใช้ในทางปฏิบัติใด ๆ จากระยะไกล
mgunes

ฉันสงสัยว่าคุณสามารถกำหนดค่าการกระทำเหล่านี้ใน /etc/ginn/wishes.xml (ฉันอยู่ที่มือถือไม่สามารถทดสอบได้ในตอนนี้)
Desgua

คำตอบ:


16

การอัปเดตเป็นคำตอบของ domsterสำหรับ Ubuntu 12.10

ซอร์สโค้ด 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()(บรรทัด 3368 สำหรับ Unity 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();
  */
}

สร้าง Unity อีกครั้งโดยทำตามคำแนะนำของ domster อีกครั้ง:

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

และ voila อีกครั้ง! ออกจากระบบและเข้าสู่ระบบอีกครั้ง


มันจะทำงานอย่างไรในความสามัคคีปัจจุบัน 7.2.1?
plopp

คำตอบนี้ยังคงใช้ได้ 100% สำหรับ Unity 7.2.2 (ดังนั้นฉันสมมติว่ามันใช้ได้สำหรับ 7.2.1 ด้วย) ฉันกำลังสร้างในขณะนี้จะอัปเดตเกี่ยวกับสิ่งที่เกิดขึ้นอีกครั้ง touchegg เมื่อฉันทำและรีบูต
Endophage

1
ช่วงระหว่าง Trusty และ Xenial, การตั้งค่าเพื่อท่าทางสามัคคีปิดการใช้งานได้รับการเพิ่ม dconf com.canonical.unity.gesturesที่ระบุไว้ภายใต้ หากอาจมีให้ใน Wily แต่ฉันไม่คิดอย่างนั้น ฉันหวังว่าจะไม่สามารถใช้ได้ใน Trusty และอยู่ใน Xenial
Kevin

Ubuntu 16: dpkg-buildpackage -us -uc -ncออกโดยมีข้อผิดพลาด 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
แมตต์

11

ปรากฎว่ามันไม่ยากที่จะแก้ไขแพก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

และ voila!

ตอนนี้ถ้าคุณออกจากระบบและกลับเข้าสู่ระบบท่าทางควรจะทำงานได้ตามปกติ การแตะสามครั้งทำงานบนระบบของฉันเป็นการคลิกกลางโดยค่าเริ่มต้นโดยไม่จำเป็นต้องใช้ touchegg แต่ตอนนี้ทั้ง touchegg และ ginn ทำงานได้ดีเพื่อกำหนดท่าทางสัมผัสที่กำหนดเองสำหรับแอปพลิเคชันของคุณ


3

ในการทำเช่นนี้ในความสามัคคีล่าสุด (5.18.0) ใน 12.04 คุณต้องแสดงความคิดเห็นออกบรรทัดรหัสที่แตกต่างกันเล็กน้อย

ในปลั๊กอิน / 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));

2

ลองครั้งที่สอง

dinegriชี้ให้เห็นว่า '[t] o ปิดการใช้งานสามท่าทางมัน [คือ] จำเป็น [ไป] ได้ติดตั้ง ccsm [แล้ว] ปิด 'จับหน่วยมอนแทนาคว้า' ก็รู้ว่าเป็น 'รักจับ'' ที่นี่

แต่มันทำให้เราด้วยท่าทางสี่นิ้ว

ครั้งแรกลอง

แฟ้มการกำหนดค่าสำหรับ utouch /etc/ginn/wishes.xmlคือ ดังนั้นคุณสามารถแก้ไขไฟล์นี้และลบ (หรือแสดงความคิดเห็น) การกระทำที่คุณไม่ต้องการ จากนั้นTouchéggจะทำงานโดยไม่มีข้อขัดแย้ง

การอ้างอิง

PS: ฉันไม่สามารถสร้างปัญหาของคุณที่นี่เพื่อทดสอบวิธีแก้ปัญหา ฉันขอโทษสำหรับสิ่งนั้น


นั่นคือไฟล์กำหนดค่าสำหรับ ginn ซึ่งเป็นหัวฉีดท่าทางซึ่งมีฟังก์ชันการทำงานทับซ้อนกับTouchégg การดัดแปลงไฟล์กำหนดค่าจะมีผลก็ต่อเมื่อ ginn daemon กำลังทำงานซึ่งเมื่อฉันใช้Touchéggปกติแล้วมันจะไม่ทำงาน ด้วยความเป็นไปได้ในการใช้ ginn แทนที่จะเป็นTouchéggในใจฉันได้ลองใช้ท่าทาง Unity ที่เป็นค่าเริ่มต้นด้วยการใส่ความคิดเห็นลงในไฟล์กำหนดค่า ginn และเรียกใช้ ginn แต่ก็ไม่ได้ผล
mgunes

ฉันได้อัพเดตคำตอบแล้ว
desgua

4
การปิดใช้งานปลั๊กอินจัดการจะลบเฉพาะภาพที่เห็นสำหรับการลากเท่านั้น มันจะไม่แม้แต่ปิดใช้งานการแตะด้วยสามนิ้วและการลากนิ้ว (ซึ่งฉันไม่ต้องการปิดการใช้งานโดยเฉพาะ)
mgunes

โดยวิธีการที่ฉันได้ปิดการใช้งานเนื่องจากข้อผิดพลาด # 754000 ฉันต้องจำลองการคลิกปุ่มกลางด้วยTouchéggและมีด้ามจับปรากฏขึ้นทุกครั้งที่ฉันทำการแตะด้วยสามนิ้วนั้นช่างน่ารำคาญมาก
mgunes

2

ปิดใช้งานท่าทางสัมผัสมาตรฐานดังนี้:

sudo apt install dconf-editor
dconf-editor

ในเมนูด้านซ้ายคลิกเพื่อ

com > canonical > unity > gestures

และปิดใช้งานท่าทางพื้นฐาน 3 แบบที่แสดงไว้ที่นั่น สิ่งนี้ใช้ได้กับ 16.04.3


เท่าที่ผ่านมาคำตอบที่ดีที่สุดและตรงไปตรงมาที่สุดสำหรับผู้ใช้ Ubuntu 16.04 ที่ยินดีที่จะติดตั้ง dconf รุ่น GUI
GrayedFox

1

เราได้สร้างเทอร์มินัลคีออสก์ที่ใช้ Ubuntu แต่ท่าทางมัลติทัชเปิดเผยระบบปฏิบัติการดังนั้นเราต้องกำจัดมันอย่างใด

มันเป็นอุปกรณ์หน้าจอสัมผัสของ Samsung xinputระบุโมดูลระบบสัมผัสเป็น AFO TCM10J 40V

หากต้องการปิดใช้งานท่าทางมัลติทัชบน Ubuntu 14.04 วิธีการนั้นเหมือนกับ domster ที่อธิบายไว้ข้างต้นยกเว้นว่าคุณต้องค้นหาความคิดเห็นในแถวต่อไปนี้ใน /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp

// InitGestureEngine();

อืมมันไม่ได้ผลสำหรับฉัน touchegg และ ginn ยังคงไม่รายงานข้อมูลใด ๆ สำหรับท่าทางที่น้อยกว่า 4 นิ้วและการตั้งค่า "Two Finger Scroll" ในการตั้งค่าระบบทัชแพดยังคงมีความสำคัญ ...
Jeff Ward

1

โปรดทราบว่า dpkg-buildpackage สามารถได้รับจำนวนงานเป็นอาร์กิวเมนต์ซึ่งช่วยให้คุณใช้แกนประมวลผล CPU ทั้งหมดของคุณดังนี้:

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

(นี่ควรเป็นความเห็นต่อคำตอบของ dgraziotin แต่ฉันไม่สามารถโพสต์ความคิดเห็นได้)


ช่วยได้มาก มันยาวเกินไปที่จะรอจนกว่าการทำเธรดเดียวจะเสร็จสิ้น
โอเรียนท์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.