ฉันมี Thinkpad X250 ที่ใช้ Linux Mint 20.1 Cinnamon (5.4.0-74-generic)
ฉันเพิ่งซื้อ a เลอโนโว Thinkpad Trackpoint Wireless II แป้นพิมพ์ และฉันรู้สึกประหลาดใจในเชิงบวกที่ทุกอย่างทำงานได้ดีเมื่อใช้การเชื่อมต่อบลูทูธ (นอกจากนี้ยังมี USB-Dongle ทางเลือกที่เป็นกรรมสิทธิ์ซึ่งมาพร้อมกับมันด้วย)
ฉันเคยใช้ปุ่มกลางของเมาส์ ("ปุ่ม 2") เพื่อคัดลอก/วาง (X "หลัก") และเลื่อนเมื่อกดค้างไว้แล้วย้าย TrackPoint
แต่ด้วยแป้นพิมพ์ใหม่ บัฟเฟอร์หลักจะถูกวางแม้ว่าฉันเพิ่งทำการเลื่อน
ดังนั้นฉันจึงใช้เวลาหลายวันเพื่อค้นหาว่าอะไรคือความแตกต่างระหว่างเมาส์/TrackPoint ในตัวและเมาส์ไร้สายตัวใหม่ แต่ตอนนี้ฉันติดขัดอยู่บ้าง
พฤติกรรมของ X250 TrackPoint ในตัวที่ "ดี"
อุปกรณ์ inbuilt เรียกว่า "TPPS/2 IBM TrackPoint" ตาม xinput
เมื่อฉันวิ่ง การทดสอบ xinputฉันเห็นว่าการคลิกปุ่มกลางไม่ปรากฏขึ้นทันที
เมื่อฉันปล่อยปุ่มตอนนี้ ฉันจะได้รับ "การกดปุ่ม 2" และ "การกดปุ่ม 2" ตามกันโดยตรง
หากฉันย้าย TrackPoint ขณะที่กดปุ่มค้างไว้ การปล่อยปุ่มจะไม่ทำให้เกิดการกระทำ "ปุ่ม 2" ใดๆ
(มีการกระทำ "การเคลื่อนไหว" และ "ปุ่ม bress/release [4-7]" เกิดขึ้นเนื่องจากการเคลื่อนไหว TrackPoint)
ปัญหาเกี่ยวกับคีย์บอร์ดไร้สาย
ส่วนที่เกี่ยวข้องกับเมาส์/แทร็กพอยต์ของแป้นพิมพ์บลูทูธจะแสดงเป็น "เมาส์ TrackPoint Keyboard II"
การเปรียบเทียบ "xinput list-props" กับอุปกรณ์ทั้งสอง ความแตกต่างเพียงอย่างเดียวคือวิธีการเลื่อน:
ไร้สาย:
libinput วิธีเลื่อนที่เปิดใช้งาน (316): 0, 0, 0
libinput Scroll Method เปิดใช้งานค่าเริ่มต้น (317): 0, 0, 0
สร้างขึ้น:
libinput เปิดใช้งานวิธีการเลื่อน (316): 0, 0, 1
libinput Scroll Method เปิดใช้งานค่าเริ่มต้น (317): 0, 0, 1
แม้ว่าด้วยเหตุผลบางอย่าง (ดูด้านล่าง) ฉันไม่สามารถเปลี่ยนคุณสมบัติ "libinput Scroll Method Enabled Default (317)" ได้ แต่ฉันลองตั้งค่าทั้งสองสำหรับ "libinput Scroll Method Enabled (316)"
หากฉันเข้าใจเอกสารอย่างถูกต้อง ค่าทั้งสามนี้จะเลือกวิธีการเลื่อนและสอดคล้องกับการเลื่อนแบบ "สองนิ้ว", "ขอบ" และ "บนปุ่ม"
https://wayland.freedesktop.org/libinput/doc/latest/scrolling.html#scrolling
ผลลัพธ์ของ การทดสอบ xinput มีรายละเอียดดังนี้:
ด้วยคุณสมบัติ libinput Scroll Method Enabled (316): 0, 0, 0 (ค่าเริ่มต้น):
การกดปุ่มกลางของเมาส์ลงทันทีจะทำให้เกิด "การกดปุ่ม 2" และวางบัฟเฟอร์หลัก
ตอนนี้ฉันสามารถย้าย TrackPoint (ทำให้เกิดการกระทำ "การเคลื่อนไหว" และ "ปุ่ม bress/lease [4-7]") และทันทีที่ฉันปล่อยปุ่ม ฉันเห็น "การปลดปุ่ม 2"
ด้วยคุณสมบัติ libinput Scroll Method Enabled (316): 0, 0, 1:
การกดปุ่มกลางของเมาส์ลงจะไม่ปรากฏขึ้นในทันที
แต่ไม่ว่าฉันจะย้าย TrackPoint หรือไม่ ทันทีที่ฉันปล่อยปุ่ม จะทำให้เกิดทั้ง "การกดปุ่ม 2" และ "การกดปุ่ม 2" ตามกันทันที ซึ่งการกดปุ่มหลังจะเป็นการเรียกการวาง
ไม่ว่ากรณีใด ๆ, libinput ดีบักเหตุการณ์ แสดงปุ่ม/ข้อมูล TrackPoint ทันที
นอกจากนี้ยังมีสวิตช์ "Windows/Android" ที่น่ากลัวที่ด้านหลังแป้นพิมพ์
สิ่งนี้ไม่ได้เปลี่ยนแปลงอะไรเลย (ฉันคิดว่ามันเปลี่ยนพฤติกรรมของปุ่มฟังก์ชั่นพิเศษเท่านั้น)
ตามที่กล่าวไว้ข้างต้น แป้นพิมพ์เสนอให้เชื่อมต่อโดยใช้ดองเกิล USB แทน ลักษณะการทำงานแตกต่างกันเล็กน้อยที่นี่ แต่ยังคงวางอยู่แม้ในขณะที่เลื่อน:
libinput วิธีเลื่อนที่เปิดใช้งาน (316): 0, 0, 0
"การกดปุ่ม 2" (และวางบัฟเฟอร์) จะปรากฏขึ้นทันทีที่กดปุ่ม
"การปลดปุ่ม 2" จะปรากฏขึ้นทันทีที่ TrackPoint ถูกย้ายหรือปล่อยปุ่ม
libinput เปิดใช้งานวิธีการเลื่อน (316): 0, 0, 1
ไม่มีอะไรเกิดขึ้นเมื่อกดปุ่มลง
"การกดปุ่ม 2", "การปลดปุ่ม 2" และการวางบัฟเฟอร์จะเกิดขึ้นต่อเนื่องกันทันทีที่ TrackPoint ถูกย้ายหรือปล่อยปุ่ม
ฉันหวังว่าฉันจะสามารถอธิบายปัญหาได้อย่างชัดเจน
ฉันไม่แน่ใจว่าจะทำอย่างไรต่อไป
/usr/share/X11/xorg.conf.d/40-libinput.conf ของฉันไม่ถูกแตะต้องและดูเหมือนว่าจะเชื่อมต่อไดรเวอร์ "libinput" กับอุปกรณ์ใด ๆ (ดูด้านล่าง)
เนื่องจาก libinput ดีบักเหตุการณ์ แสดงข้อมูลฮาร์ดแวร์ทั้งหมดแบบเรียลไทม์ ฉันไม่คิดว่าคีย์บอร์ดหรือ BlueZ เป็นตัวการ
แต่ฉันก็ไม่รู้เหมือนกันว่าข้อมูลจากคีย์บอร์ดไร้สายและจากอุปกรณ์ในตัวนั้นแตกต่างกันอย่างไรและที่ไหนและอย่างไร
มีความเป็นไปได้ในการแก้ไขจุดบกพร่องอื่นๆ นอกเหนือจาก libinput และ ซินพุต?\
ขอบคุณมาก ๆ สำหรับความช่วยเหลือของคุณ!
$ xinput list-props "เมาส์ TrackPoint Keyboard II"
อุปกรณ์ 'TrackPoint Keyboard II Mouse':
อุปกรณ์ที่เปิดใช้งาน (165): 1
เมทริกซ์การแปลงพิกัด (167): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput เปิดใช้งานการเลื่อนตามธรรมชาติ (311): 0
libinput Natural Scrolling เปิดใช้งานค่าเริ่มต้น (312): 0
วิธีการเลื่อน libinput ที่มีอยู่ (315): 0, 0, 1
libinput วิธีเลื่อนที่เปิดใช้งาน (316): 0, 0, 0
libinput Scroll Method เปิดใช้งานค่าเริ่มต้น (317): 0, 0, 0
ปุ่มเลื่อน libinput (329): 2
libinput ปุ่มเลื่อนปุ่มเริ่มต้น (330): 2
libinput Middle Emulation เปิดใช้งาน (321): 0
libinput Middle Emulation เปิดใช้งานค่าเริ่มต้น (322): 0
ความเร็ว libinput Accel (323): 0.000000
libinput Accel ความเร็วเริ่มต้น (324): 0.000000
มีโปรไฟล์ libinput Accel (331): 1, 1
libinput Accel Profile เปิดใช้งาน (332): 1, 0
libinput Accel Profile เปิดใช้งานค่าเริ่มต้น (333): 1, 0
libinput มือซ้ายเปิดใช้งาน (325): 0
libinput มือซ้าย เปิดใช้งาน ค่าเริ่มต้น (326): 0
libinput ส่งโหมดเหตุการณ์ที่มีอยู่ (288): 1, 0
libinput ส่งโหมดเหตุการณ์ที่เปิดใช้งาน (289): 0, 0
libinput Send Events Mode Enabled Default (290): 0, 0
โหนดอุปกรณ์ (291): "/dev/input/event23"
รหัสผลิตภัณฑ์ของอุปกรณ์ (292): 6127, 24801
libinput ปุ่มล็อคการลาก (327): <ไม่มีรายการ>
libinput เปิดใช้งานการเลื่อนแนวนอน (328): 1
$ xinput list-props "TPPS/2 IBM TrackPoint"
อุปกรณ์ 'TPPS/2 IBM TrackPoint':
อุปกรณ์ที่เปิดใช้งาน (165): 1
เมทริกซ์การแปลงพิกัด (167): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput เปิดใช้งานการเลื่อนตามธรรมชาติ (311): 0
libinput Natural Scrolling เปิดใช้งานค่าเริ่มต้น (312): 0
วิธีการเลื่อน libinput ที่มีอยู่ (315): 0, 0, 1
libinput เปิดใช้งานวิธีการเลื่อน (316): 0, 0, 1
libinput Scroll Method เปิดใช้งานค่าเริ่มต้น (317): 0, 0, 1
ปุ่มเลื่อน libinput (329): 2
libinput ปุ่มเลื่อนปุ่มเริ่มต้น (330): 2
libinput Middle Emulation เปิดใช้งาน (321): 0
libinput Middle Emulation เปิดใช้งานค่าเริ่มต้น (322): 0
ความเร็ว libinput Accel (323): 0.000000
libinput Accel ความเร็วเริ่มต้น (324): 0.000000
มีโปรไฟล์ libinput Accel (331): 1, 1
libinput Accel Profile เปิดใช้งาน (332): 1, 0
libinput Accel Profile เปิดใช้งานค่าเริ่มต้น (333): 1, 0
libinput มือซ้ายเปิดใช้งาน (325): 0
libinput มือซ้าย เปิดใช้งาน ค่าเริ่มต้น (326): 0
libinput ส่งโหมดเหตุการณ์ที่มีอยู่ (288): 1, 0
libinput ส่งโหมดเหตุการณ์ที่เปิดใช้งาน (289): 0, 0
libinput Send Events Mode Enabled Default (290): 0, 0
โหนดอุปกรณ์ (291): "/dev/input/event17"
รหัสผลิตภัณฑ์ของอุปกรณ์ (292): 2, 10
libinput ปุ่มล็อคการลาก (327): <ไม่มีรายการ>
libinput เปิดใช้งานการเลื่อนแนวนอน (328): 1
$ ซินพุต
â¡ ตัวชี้หลักเสมือน id=2 [ตัวชี้หลัก (3)]
â â³ Virtual core ตัวชี้ XTEST id=4 [ตัวชี้สเลฟ (2)]
â â³ Synaptics TM3075-002 id=12 [ตัวชี้ทาส (2)]
â â³ TPPS/2 IBM TrackPoint id=13 [ตัวชี้สเลฟ (2)]
â â³ TrackPoint Keyboard II Mouse id=19 [ตัวชี้รอง (2)]
â â³ TrackPoint Keyboard II Consumer Control id=22 [ตัวชี้รอง (2)]
⣠id แป้นพิมพ์หลักเสมือน = 3 [แป้นพิมพ์หลัก (2)]
â³ รหัสแป้นพิมพ์ XTEST แกนเสมือน = 5 [แป้นพิมพ์รอง (3)]
â³ รหัสปุ่มเปิดปิด = 6 [แป้นพิมพ์รอง (3)]
â³ Video Bus id=7 [แป้นพิมพ์สเลฟ (3)]
â³ ปุ่มสลีป id=8 [แป้นพิมพ์รอง (3)]
â³ AT ชุดที่แปล 2 แป้นพิมพ์ id=10 [แป้นพิมพ์รอง (3)]
â³ ThinkPad Extra Buttons id=11 [แป้นพิมพ์รอง (3)]
â³ กล้องในตัว: รวม C id=9 [แป้นพิมพ์รอง (3)]
â³ เว็บแคม HD C525 id=14 [แป้นพิมพ์รอง (3)]
â³ แป้นพิมพ์ TrackPoint II รหัสแป้นพิมพ์ = 20 [แป้นพิมพ์รอง (3)]
â³ รหัสควบคุมระบบ TrackPoint Keyboard II = 21 [แป้นพิมพ์รอง (3)]
â³ แป้นพิมพ์ TrackPoint II Consumer Control id=23 [แป้นพิมพ์รอง (3)]
$ cat /usr/share/X11/xorg.conf.d/40-libinput.conf
# จับคู่กับอุปกรณ์ทุกประเภทยกเว้นจอยสติ๊ก
#
# หากคุณต้องการกำหนดค่าอุปกรณ์ของคุณ อย่าคัดลอกไฟล์นี้
# ให้ใช้ข้อมูลโค้ดการกำหนดค่าที่มีสิ่งนี้แทน:
#
# ส่วน "InputClass"
# ตัวระบุ "บางสิ่งหรืออื่น ๆ "
# MatchDriver "libinput"
#
# MatchIsTouchpad "เปิด"
# ... คำสั่ง Match อื่น ๆ ...
# ตัวเลือก "someoption" "ค่า"
#ภาคจบ
#
# สิ่งนี้ใช้ตัวเลือกอุปกรณ์ libinput ใด ๆ ที่จับคู่ด้วย
#คำสั่ง ดูหน้าคน xorg.conf(5) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
#อุปกรณ์จับคู่.
ส่วน "InputClass"
ตัวระบุ libinput pointer catchall
MatchIsPointer "เปิด"
MatchDevicePath "/dev/input/event*"
ไดรเวอร์ "libinput"
ส่วนท้าย
ส่วน "InputClass"
ตัวระบุ "แป้นพิมพ์ libinput catchall"
MatchIsแป้นพิมพ์ "เปิด"
MatchDevicePath "/dev/input/event*"
ไดรเวอร์ "libinput"
ส่วนท้าย
ส่วน "InputClass"
ตัวระบุ "libinput touchpad catchall"
MatchIsTouchpad "เปิด"
MatchDevicePath "/dev/input/event*"
ไดรเวอร์ "libinput"
ส่วนท้าย
ส่วน "InputClass"
ตัวระบุ "libinput touchscreen catchall"
MatchIsTouchscreen "เปิด"
MatchDevicePath "/dev/input/event*"
ไดรเวอร์ "libinput"
ส่วนท้าย
ส่วน "InputClass"
ตัวระบุ "libinput แท็บเล็ต catchall"
MatchIsTablet "เปิด"
MatchDevicePath "/dev/input/event*"
ไดรเวอร์ "libinput"
ส่วนท้าย
$ sudo libinput รายการอุปกรณ์ | grep -A 17 "TPPS"
อุปกรณ์: TPPS/2 IBM TrackPoint
เคอร์เนล: /dev/input/event17
กลุ่ม: 14
ที่นั่ง: seat0 ค่าเริ่มต้น
ความสามารถ: ตัวชี้
แตะเพื่อคลิก: ไม่มี
แตะแล้วลาก: n/a
แตะลากล็อค: ไม่มี
ถนัดซ้าย: ปิดใช้งาน
Nat.scrolling: ปิดใช้งาน
การจำลองกลาง: ปิดใช้งาน
การสอบเทียบ: n/a
วิธีการเลื่อน: ปุ่ม *
วิธีการคลิก: ไม่มี
ปิด-w-พิมพ์: n/a
โปรไฟล์ Accel: แบน *ปรับได้
หมุนเวียน: ไม่มี
$ sudo libinput รายการอุปกรณ์ | grep -A 17 "เมาส์ TrackPoint Keyboard II"
อุปกรณ์: เมาส์ TrackPoint Keyboard II
เคอร์เนล: /dev/input/event23
กลุ่ม: 15
ที่นั่ง: seat0 ค่าเริ่มต้น
ความสามารถ: ตัวชี้
แตะเพื่อคลิก: ไม่มี
แตะแล้วลาก: n/a
แตะลากล็อค: ไม่มี
ถนัดซ้าย: ปิดใช้งาน
Nat.scrolling: ปิดใช้งาน
การจำลองกลาง: ปิดใช้งาน
การสอบเทียบ: n/a
วิธีการเลื่อน: ปุ่ม
วิธีการคลิก: ไม่มี
ปิด-w-พิมพ์: n/a
โปรไฟล์ Accel: แบน *ปรับได้
หมุนเวียน: ไม่มี
$ xinput set-prop "เมาส์ TrackPoint Keyboard II" 317 0, 0, 1
X ข้อผิดพลาดของคำขอที่ล้มเหลว: BadAccess (ความพยายามในการเข้าถึงทรัพยากรส่วนตัวถูกปฏิเสธ)
opcode หลักของคำขอที่ล้มเหลว: 131 (XInputExtension)
opcode เล็กน้อยของคำขอที่ล้มเหลว: 57 ()
หมายเลขซีเรียลของคำขอที่ล้มเหลว: 20
หมายเลขซีเรียลปัจจุบันในสตรีมเอาต์พุต: 21