จะปิดการใช้งานทัชแพดในขณะที่ใช้ trackpoint บน Thinkpad ได้อย่างไร


21

Thinkpads (เช่น X230 ที่ฉันใช้) มีทั้ง trackpoint และทัชแพด ทัชแพดถูกปิดใช้งานเมื่อพิมพ์

อย่างไรก็ตามเมื่อฉันใช้ trackpoint ฉันมักจะแตะทัชแพดเช่นกันและสร้างการคลิกเมาส์ที่ฉันต้องการหลีกเลี่ยง ใครบ้างมีความคิดวิธีปิดการใช้งานการคลิกเมาส์บนทัชแพดเมื่อใช้งาน trackpoint?

แก้ไข: นอกจากนี้บางคนสามารถอธิบายวิธีการปิดการใช้งานทัชแพดเมื่อพิมพ์ได้อย่างไร สิ่งที่กำลังทำอยู่เบื้องหลัง มันเป็นคำสั่งกำหนดค่า xinput หรือไม่และถ้าใช่เป็นคำสั่งใด

EDIT2: การชี้แจง; การปิดใช้งานทัชแพดด้วยตนเอง (แม้ใช้ทางลัด) ไม่ใช่ปัญหาที่นี่ สิ่งนี้จะทำงานเหมือนกับตัวเลือก "ปิดการใช้งานทัชแพดเมื่อพิมพ์" เนื่องจากฉันใช้ทัชแพดและแทร็กพอยท์แทนกัน (ส่วนใหญ่ฉันใช้ทัชแพดเพื่อเลื่อนและแทร็กพอยท์เพื่อเลื่อนเคอร์เซอร์)


มันจะน่าสนใจ วิธีการจัดวางแป้นพิมพ์มีส่วนช่วยให้ท่าทางที่ผิดปกติรบกวนการทำงานที่เหมาะสม ฉันไม่คิดว่ามันจะเป็นไปได้ด้วยตัวเลือกปัจจุบัน แต่อาจจะเป็นในอนาคต? ฉันพบว่าฉันต้องใช้สองมือในการพิมพ์ & พอยต์, โค้งสูง (ขวา) มือของฉันเพื่อหลีกเลี่ยงการแปรงฟัน / เขยิบแทร็คแพด
fleamour

ในขณะนี้ฉันได้ปิดใช้งานการคลิกเมาส์ด้วยทัชแพด - ฉันพบว่าในกรณีส่วนใหญ่ฉันใช้ปุ่มที่ด้านบนของทัชแพดต่อไป
มกราคม

คำตอบ:


10

ปิดการใช้งานทัชแพดเมื่อใช้แป้นพิมพ์

ฟังก์ชันนี้ดำเนินการโดยsyndaemonยูทิลิตี้จากxserver-xorg-input-synapticsแพ็คเกจ คุณสามารถตั้งค่าตัวเลือกเช่นเวลาว่างความถี่การสำรวจ ฯลฯ (ดูวิธีใช้รันไทม์ ):

การใช้งาน: syndaemon [-i idle-time] [-m Poll-delay] [-d] [-t] [-k]
  -i กี่วินาทีในการรอหลังจากกดปุ่มสุดท้ายก่อน
     เปิดใช้งานทัชแพด (ค่าเริ่มต้นคือ 2.0 วินาที)
  -m ใช้เวลากี่มิลลิวินาทีในการรอจนกว่าการสำรวจความคิดเห็นครั้งต่อไป
     (ค่าเริ่มต้นคือ 200ms)
  ...
  -t ปิดใช้งานเฉพาะการแตะและเลื่อนไม่ใช่การเคลื่อนไหวของเมาส์

นี่คือรหัสแหล่งที่มาsyndaemon.cสำหรับ

  • ฟังก์ชั่นที่สำคัญคือkeyboard_activity(...)และmain_loop(...)
  • keyboard_activityใช้การเรียกXQueryKeyMap API เพื่อรับสถานะปัจจุบันของแป้นพิมพ์ (1 บิตต่อคีย์) จากนั้นเปรียบเทียบคือสถานะสุดท้าย (เก่า) ถ้ามันต่างกันมันจะคืนค่า 1
  • main_loopโพลkeyboard_activityทุกmมิลลิวินาทีและตาม "เวลากิจกรรมล่าสุด" และkeyboard_activityส่งกลับค่าจริงหรือเท็จมันตัดสินใจว่าจะปิดการใช้งานหรือเปิดใช้งานทัชแพด
  • dp_get_deviceฟังก์ชั่นแสดงให้เห็นว่าอุปกรณ์ป้อนข้อมูล X มีการแจกแจง; คุณควรจะสามารถแก้ไขสิ่งนี้และkeyboard_activityฟังก์ชั่นเพื่อตรวจสอบกิจกรรม trackpoint ใด ๆ

  • xinputอุปกรณ์เครื่องมือรายชื่อและรหัสตัวอย่างเช่น"

    ตัวชี้ core เสมือน id = 2 [ตัวชี้หลัก (3)]
    ⎜↳ id ตัวชี้ core เสมือน XTEST = 4 [ตัวชี้ทาส (2)]
    Pad ↳ Synaptics TouchPad idPad = 11 [ตัวชี้ทาส (2)]
    ↳↳ TPPS / 2 IBM TrackPoint id = 12 [ตัวชี้สลาฟ (2)]

  • คุณสามารถรับ (ID) ผ่านฟังก์ชันXListInputDevices

  • หลังจากนั้นคุณจะต้องจัดการอุปกรณ์จาก ID โดยใช้XOpenDevice
  • จากนั้นคุณใช้ฟังก์ชันXQueryDeviceStateเพื่อรับพิกัดของตัวชี้ TrackPoint คล้ายกับวงวนที่มีอยู่คุณสำรวจความคิดเห็นนี้บ่อยครั้งและตรวจสอบว่าพิกัดมีการเปลี่ยนแปลงหรือไม่ (เช่นใช้ TrackPoint) และใช้เพื่อสลับเปิดหรือปิดทัชแพด
  • คุณสามารถใช้xinputยูทิลิตีนี้กับquery-stateสวิตช์และรหัสอุปกรณ์เพื่อตรวจสอบว่าการเขียนโปรแกรมของคุณถูกต้องหรือไม่ตัวอย่างเช่น

    $ xinput query-state 12
    2 คลาส:
    ButtonClass
    ปุ่ม [1] = ขึ้น
    ปุ่ม [2] = ขึ้น
    ปุ่ม [3] = ขึ้น
    ปุ่ม [4] = ขึ้น
    ปุ่ม [5] = ขึ้น
    ปุ่ม [6] = ขึ้น
    ปุ่ม [7] = ขึ้น
    โหมด ValuatorClass = ความสัมพันธ์ใกล้ชิด = ใน
    Valuator [0] = 854
    Valuator [1] = 867
    
  • คุณมีความสนใจในค่าประเมินมูลค่าซึ่งเป็นพิกัด X และ Y ของ TrackPoint
  • ดูxinputแหล่งที่มาสำหรับเคล็ดลับเพิ่มเติม
  • ในการแก้ไขและสร้างแพ็คเกจนี้ใหม่:

    1. รับแหล่งที่มาด้วย apt-get source...
    2. ทำการปรับเปลี่ยนของคุณไปที่ tools/syndaemon.c
    3. ปิดการใช้งานsyndaemonแพทช์ที่มีอยู่โดยการแสดงความคิดเห็น118...และ124...เส้นในdebian/patches/series
    4. สร้างแพ็คเกจที่แก้ไขของคุณด้วยdpkg-buildpackage -us -ucและไฟล์ deb จะอยู่ในไดเรกทอรีหลัก

1
เนื่องจากค่าหัวจะหมดอายุในสามวันฉันจะทำข้อตกลงกับคุณ (เว้นแต่จะมีคำตอบที่ดีกว่าปรากฏขึ้น): ฉันจะกำหนดเงินรางวัลให้คุณถ้าคุณจะชี้ให้ฉันไปที่ API สำหรับการสอบถามอุปกรณ์โดยตัวระบุ xinput และ ให้ลิงค์ไปยังหน้าอธิบายวิธีสร้างแพคเกจ deb จากแหล่งที่แก้ไข จากนั้นฉันจะสามารถใช้วิธีนี้ได้ ตกลงไหม
มกราคม

ขอโทษฉันออกไปแล้ว ฟังดูดีฉันจะพยายามหาข้อมูลและแก้ไขคำตอบในเวลาไม่กี่ชั่วโมง
ish

ไม่ต้องห่วง! ที่ดีของ
มกราคม

1
ตามที่สัญญาไว้คุณจะได้รับเงินรางวัล อย่างไรก็ตามฉันไม่ยอมรับคำตอบเพราะฉันจำเป็นต้องเขียนโค้ดโซลูชันก่อน
มกราคม

1
@ มกราคมไม่แน่ใจว่าคุณจัดการรหัสของคุณหรือยัง ฉันได้ทำการแก้ไข syndaemon เพื่อรองรับการติดตาม trackpoint แล้ว github.com/eyko/xf86-input-synaptics (ส่งที่นี่github.com/eyko/xf86-input-synaptics/commit/ ...... ) เพื่อตรวจสอบ TrackPoint คุณต้องผ่านการตั้งค่าสถานะ -T ตัวเลือกเมื่อเรียกใช้ซินด้า
วินซ์

4

สิ่งแรกที่ต้องทำคือทำความรู้จักกับทัชแพด id ของคุณเพื่อทำตามขั้นตอนเหล่านี้

เปิดเทอร์มินัลแรกและเรียกใช้คำสั่งนี้

~$ xinput --list

ที่นี่เราได้รับสิ่งนี้ Touchpad id = <id Number>

หลังจากนั้นเปิดแป้นพิมพ์ลัดแล้วเพิ่มคำสั่งด้านล่างสองคำสั่งด้วยแป้นพิมพ์ลัดของคุณ

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

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


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

0

นี่เป็นโซลูชันที่ใช้เทคโนโลยีขั้นต่ำที่อาจไม่ดีสำหรับการใช้พลังงาน (โปรแกรมปรับปรุง syndaemon -T ไม่ทำงานสำหรับฉัน)

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

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

อย่างไรก็ตามมันช่วยฉันได้มากบนอัลตร้าบุ๊กของฉันด้วยการเลื่อนเคอร์เซอร์จากการกดฝ่ามือ

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