เปิด / ปิดการใช้งานทัชแพด


17

ฉันจัดการติดตั้ง Ubuntu 16.04 บน asus ux501 vw ของฉันได้แล้ว แต่ทางลัดบางอย่างของฉันไม่ทำงาน ฉันไม่ได้มองหาการแก้ไขทั้งหมด แต่เพียงอย่างเดียว: ทางลัดที่อนุญาตให้ฉันเปิดใช้งานหรือปิดการใช้งานทัชแพดดังนั้นฉันจึงสามารถเขียนเอกสารที่มีความยาวเกี่ยวกับทัชแพดได้

ฉันพยายามหามันบน google แต่ฉันไม่ได้อะไรเลย

มีใครช่วยอธิบายวิธีแก้ไขให้ฉันหน่อยได้ไหม? ขอขอบคุณ!

คำตอบ:


24

ฉันสร้างสคริปต์ทุบตีนี้จากคำตอบของผู้ถูกปฏิเสธ พบและสลับอุปกรณ์ทัชแพด คุณสามารถกำหนดค่าทางลัดที่กำหนดเองให้กับมันในการตั้งค่าระบบ

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i input-touchpad "Touchpad" "Enabled"
fi

ฉันกำลังตั้งค่าCtrl+ Shift+ F9สำหรับการสลับเปิดใช้งานทัชแพดและปิดการใช้งานเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข: คุณอาจต้องทำให้สคริปต์ของคุณสามารถเรียกใช้งานได้ด้วยคำสั่งchmod + x ชื่อไฟล์หรืออินพุต/ bin / bash / filepathไปยังฟิลด์คำสั่งของหน้าต่างทางลัดที่กำหนดเอง


2
นอกจากนี้ไม่ค่อยจำเป็นต้องห่วงโซ่และgrep คุณสามารถรวมสองsed sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'
David Foerster

3
การแก้ไขเล็กน้อยในสคริปต์สำหรับ Ubuntu 17.10 หลังจากได้รับบรรทัดข้อผิดพลาด 6: [:: นิพจน์จำนวนเต็มคาดว่าไม่สามารถค้นหาอุปกรณ์เปลี่ยนทัชแพดเป็นทัชแพดได้
Gregor Grajzar

1
คำตอบที่ยอดเยี่ยม! ส่วนเพิ่มเติมของฉันเท่านั้นคือการเพิ่มzenity --info --text "Touchpad DISABLED" --timeout=2และzenity --info --text "Touchpad ENABLED" --timeout=2ไปยังifและelseบล็อกของคุณตามลำดับเพื่อเปิดหน้าต่างที่ประกาศสถานะใหม่จากนั้นปิดอัตโนมัติใน 2 วินาที
Gabriel Staples

1
ดูการเปลี่ยนแปลงเล็กน้อยของฉันที่นี่: askubuntu.com/a/1109515/327339
Gabriel Staples

1
อัปเดต: บางระบบแสดงTouchpadแทนTouchPadผลลัพธ์จากxinputดังนั้นฉันจึงอัปเดตคำตอบเพื่อค้นหาทั้งคู่ imwheelนอกจากนี้ผมได้ทำมันอย่างถูกต้องแก้ไขปัญหาล้อเลื่อนช้าเกินไปใช้ ดู ans แบบเต็มได้ที่นี่: askubuntu.com/questions/844151/enable-disable-touchpad/ …
Gabriel Staples

11

คุณต้องการทางลัด แต่คุณสามารถวางสคริปต์ 2 ตัวไว้บนเดสก์ท็อปและเรียกใช้งานได้อย่างง่ายดาย

ก่อนอื่นให้ไปที่ terminal ประเภทxinput. ตัวอย่างผลลัพธ์:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

ค้นหาทัชแพด ในตัวอย่างนี้ทัชแพดแสดงเป็นid = 12

สร้างสคริปต์แรกด้วยสิ่งนี้:

#!/bin/bash
xinput enable 12

บันทึกและตั้งชื่อtouchpadenable.shและในเทอร์มินัลให้ทำเครื่องหมายว่าสามารถเรียกทำงานได้ด้วย:

chmod +x touchpadenable.sh

ทำสิ่งเดียวกันซ้ำอีกครั้ง แต่เปลี่ยนชื่อไฟล์เป็นtouchpaddisable.sh(หรืออะไรก็ตาม) และแทน

xinput enable 12

ใช้คำสั่ง

xinput disable 12

บันทึกทำเครื่องหมายเป็นไฟล์เรียกทำงานและคุณควรจะสามารถเรียกใช้สคริปต์จากเดสก์ท็อป หมายเหตุ: คุณอาจต้องคลิกขวาที่สคริปต์คลิกคุณสมบัติและอนุญาตให้เรียกใช้งาน


เฮ้ขอบคุณสำหรับคำตอบ! ฉันจะใช้สิ่งนี้! คุณคิดว่ามันจะเป็นไปได้ไหมถ้าฉันทำมันในไฟล์สคริปต์ 1 ไฟล์เพื่อให้ฉันสามารถใช้ทางลัดเดียวกันได้?
Rei

@Thomas ดูคำตอบนี้: askubuntu.com/questions/597395/…
negusp

6

คุณจะต้องทำเช่นเดียวกับnegusp 's คำตอบแรกตรวจสอบอุปกรณ์สัมผัสของคุณและจะแสดงให้เห็นอะไรเช่นนี้

~ $ xinput
⎡ id ตัวชี้ core เสมือน = 2 [ตัวชี้หลัก (3)]
pointer ↳ id ตัวชี้ core เสมือน XTEST = 4 [ตัวชี้ทาส (2)]
↳↳ PixArt ออปติคัลเม้าส์ USB USB Dell MS116 id = 10 [ตัวชี้ทาส (2)]
Pad ↳ Synaptics TouchPad id = 14 [ตัวชี้ทาส (2)]
LC ↳ DLLC6B2: 00 06CB: 75BF ทัชแพด id = 12 [ตัวชี้ทาส (2)]
⎣แป้นพิมพ์คอร์เสมือน id = 3 [แป้นพิมพ์หลัก (2)]
    ↳ id คอร์คีย์บอร์ด XTEST เสมือน = 5 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มเปิดปิด id = 6 [คีย์บอร์ดทาส (3)]
    Bus Video Bus id = 7 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มเปิดปิด id = 8 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มสลีป id = 9 [คีย์บอร์ดทาส (3)]
    ↳ Integrated_Webcam_HD id = 11 [คีย์บอร์ดทาส (3)]
    ↳ AT id ชุดคีย์บอร์ด 2 ที่แปล = 13 [คีย์บอร์ดทาส (3)]
    hot ฮอตคีย์ของ Dell WMI id = 15 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มลัดไร้สาย DELL id = 16 [คีย์บอร์ดทาส (3)]

ในกรณีของฉันคืออุปกรณ์ที่มี id = 12 ตอนนี้สร้างสคริปต์ทุบตีที่มีชื่อ "toggle-touch" ในโฟลเดอร์ Desktop ของคุณภายใต้โฟลเดอร์ชื่อ "bin" จะเป็น "~ / Desktop / bin" และคัดลอกรหัสถัดไปตรวจสอบ ตัวแปรอุปกรณ์ชี้ไปที่ touch id ของฉัน = 12 แก้ไขด้วยตัวพิมพ์ของคุณ:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

if [ $state == '1' ];then
  xinput --disable $device
else
  xinput --enable $device
fi

ตั้งค่าเป็นสิทธิ์ดำเนินการสคริปต์นี้:

chmod 775 /Desktop/bin/toggle-touch

ในที่สุดคุณสามารถเพิ่มเส้นทางนี้ไปที่ ".bashrc" จากโฟลเดอร์บ้านของคุณเพียงเพิ่มบรรทัดนี้ในตอนท้ายของไฟล์:

PATH=$PATH:~/Desktop/bin

อัพเดตพา ธ ด้วย:

. .bashrc

จากนั้นคุณสามารถรันสคริปต์นี้ได้จากทุกที่ฉันหวังว่าจะช่วยได้


1

ใน Ubuntu ของฉัน 18.04 คำตอบAlmas Dusalไม่ทำงานจนกว่าฉันจะเปลี่ยน 'p' เป็นตัวพิมพ์เล็กในTouchPadบรรทัดของรหัสต่อไปนี้:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

หลังจากทัชแพดนั้นถูกปิดใช้งานและเปิดใช้งานโดยสคริปต์ แต่ไม่ปรากฏในหน้าจอการตั้งค่าMouse & Touchpad ฉันสร้างสคริปต์ใหม่ต่อไปนี้ซึ่งสลับเป็นทัชแพดในขณะที่อัพเดตมุมมองการตั้งค่า

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi

1

ทดสอบและใช้งานบน Ubuntu 14.04, 16.04 และ 18.04

ทำเช่นเดียวกับคำตอบของ @Almas Dusalซึ่งไม่เหมือนกับคำตอบของ @ neguspยกเว้นใช้สคริปต์ที่แก้ไขของฉันแทนเนื่องจากมีประโยชน์เพิ่มเติม 3 ประการ ( UPDATE: ประโยชน์ที่ 1 และ 3 ด้านล่างถูกเพิ่ม 12 ก.ย. 2019 ):

  1. มันค้นหาผลลัพธ์ของxinputทั้งสองTouchpadและTouchPadเนื่องจากบางระบบมี P ตัวพิมพ์ใหญ่ในขณะที่คนอื่นไม่ได้ สิ่งนี้ทำให้สคริปต์ของฉันเข้ากันได้กับระบบมากขึ้น (หวังว่าทุกระบบ)
  2. มันเพิ่มหน้าต่างป็อปอัพปิดอัตโนมัติ 2 วินาทีผ่านzenityเพื่อแสดงว่าทัชแพดของคุณเปิดใช้งานอยู่ในขณะนี้หรือปิดใช้งาน ดูภาพหน้าจอของหน้าต่างป๊อปอัปเหล่านี้ด้านล่าง
  3. มันต้องแก้ไขความเร็วล้อเลื่อนของคุณทำให้imwheel(ซึ่งการแก้ไขปัญหาล้อเลื่อนของคุณช้าในอูบุนตู / Linux เมื่อใช้ล้อเลื่อนของเมาส์) เมื่อคุณกำลังใช้เมาส์ในขณะที่ปิดการใช้งานimwheelเมื่อใช้ทัชแพดเพราะimwheelมิฉะนั้นจะทำให้ทัชแพดเลื่อน glitchy จริงๆ เมื่อเปิดใช้งาน ให้แน่ใจว่าได้ยกเลิกการใส่เครื่องหมายบรรทัดที่เกี่ยวข้องเพื่อให้สามารถใช้งานได้ Ex: และ# imwheel -b "4 5"# killall imwheel
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

state=$( xinput list-props "$TouchPadDeviceId" | grep "Device Enabled" | grep -o "[01]$" )

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

หมายเหตุว่าสิ่ง imwheel จะต้องเฉพาะถ้าคุณมีดังต่อไปนี้คำตอบในการแก้ไขปัญหาความเร็วล้อเลื่อนของคุณมากเกินไป: ถาวรแก้ไขความเร็ว Chrome เลื่อน

ตอนนี้กำหนดปุ่มทางลัดของCtrl+ Alt+ P(หรือสิ่งที่คุณเลือก ['P' หมายถึง touch'P'ad ในกรณีของฉัน]) การเพิ่มสคริปต์ด้านบนของฉันคือzenityส่วนหน้าต่างป๊อปอัปที่ปิดตัวเองซึ่งฉันอธิบายเพิ่มเติมในคำตอบที่นี่ ( /superuser//a/1310142/425838 )

ตอนนี้เมื่อฉันใช้ทางลัดด้านบนฉันเห็นหน้าต่างป๊อปอัปนี้ซึ่งปิดอัตโนมัติหลังจาก 2 วินาที:

ป้อนคำอธิบายรูปภาพที่นี่

และถ้าฉันกดอีกครั้งฉันจะได้หน้าต่างป็อปอัพนี้ซึ่งจะปิดอัตโนมัติหลังจาก 2 วินาที:

ป้อนคำอธิบายรูปภาพที่นี่

ที่สมบูรณ์แบบ!

เป็นโบนัสเพิ่มเติมหากคุณเป็นผู้ใช้งานที่หนักหน่วงเพียงเพิ่มคำสั่งที่เรียกสคริปต์ของคุณไปยังโปรแกรมเริ่มต้นใน Ubuntu เพื่อให้มันทำงานและปิดการใช้งาน trackpad ทุกครั้งที่คอมพิวเตอร์เริ่มทำงาน! ฉันมีชุดนี้เพื่อให้ฉันสามารถออกจากการกระแทกแทร็คแพดด้วยฐานของฉันและลบสิ่งต่าง ๆ โดยไม่ตั้งใจตลอดเวลา! ตอนนี้เมื่อมือของฉันกระแทกแทร็กแพดไม่มีอะไรเกิดขึ้นเพราะมันปิดการใช้งาน :)

หมายเหตุ: ทั้งหมดนี้ใช้งานได้ดีใน Ubuntu 18.04 เช่นเดียวกับรุ่นเก่ากว่า ฉันทดสอบใน Ubuntu 18.04 และ Ubuntu 14.04 นี่คือภาพหน้าจอจากหน้าต่างการตั้งค่าทางลัดใน 18.04:

ป้อนคำอธิบายรูปภาพที่นี่

ที่เกี่ยวข้อง:

  1. แก้ไขความเร็วการเลื่อนของ Chrome อย่างถาวร

ไม่สามารถเปิดใช้งาน HP Probook ของฉันอีกครั้ง มี 2 รายการใน XInput มีและSynPS/2 Synaptics TouchPad SYNA306A:00 06CB:CD0B Touchpadการดำเนินการครั้งแรกปิดการใช้งานหนึ่งที่สองปิดการใช้งานอื่น ๆ จากนั้นมันจะสลับวินาที แต่จะไม่เปลี่ยนเป็นครั้งแรก
rtaft

0

ออกจากสคริปต์ของฉันที่นี่ (เหมือนกันมากหรือน้อยกว่า) ทำงานนอกกรอบโดยไม่จำเป็นต้องค้นหา ID อุปกรณ์ก่อน

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state

0

สร้างเชลล์สคริปต์และวางโค้ดด้านล่างลงไปและตั้งชื่อ touchPadDisable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

สร้างเชลล์สคริปต์อีกอันแล้ววางโค้ดด้านล่างลงไปแล้วตั้งชื่อว่า touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

สคริปต์แรกจะปิดใช้งานทัชแพดและอันดับที่สองจะเปิดใช้งานทัชแพด

คุณสามารถเพิ่มสคริปต์นี้ไปยังทางลัดที่กำหนดเองในแป้นพิมพ์


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