มีการถามคำถามนี้แล้วแต่ไม่ตอบถูก หลังจากกวาดล้างด้วย @Seth ฉันกำลังถามอีกครั้ง สิ่งนี้จะช่วยให้ฉันตอบและอาจแก้ไขคำถามได้ง่ายขึ้นมาก สามารถพบคำถามเดิมได้ที่นี่:
แผนที่ Ctrl และ Alt ไปที่ปุ่มหัวแม่มือของเมาส์
ปัญหา:
แม้ว่าจะง่ายมากในการแมปการกดแป้นใด ๆ กับปุ่มเมาส์โดยใช้xbindkeys
ร่วมกับxdotool
หรือxte
ดูเหมือนว่าจะมีปัญหามากขึ้นในการแมปรหัสตัวปรับเปลี่ยน (เช่นALT , CTRL , SHIFTและอื่น ๆ ) กับมัน
การแก้ปัญหาครั้งสุดท้ายควรอนุญาตให้คลิก ia CTRL + (เช่นสำหรับการเลือกหลายรายการของรายการ) ด้วยการใช้เมาส์
สองแนวทางที่เป็นไปได้ในการแก้ไขปัญหานี้สามารถดูได้ที่ Stack Exchange รวมถึงฟอรัม Linux ที่เกี่ยวข้องอื่น ๆ แต่งานเหล่านั้นไม่เป็นไปตามที่คาดหวังเพราะนำไปสู่ปัญหาอื่น ๆ และผลข้างเคียง
หมายเหตุ:
ตัวอย่างด้านล่างบางตัวอย่างเกี่ยวข้องกับGuile with Schemeและพึ่งพา.xbindkeysrc.scm
ไฟล์ในขณะที่คนอื่นใช้.xbindkeysrc
ไฟล์ที่มีไวยากรณ์ที่เกี่ยวข้อง ฉันรู้ว่าพวกเขาจะไม่ทำงานร่วมกัน
ยิ่งไปกว่านั้นตัวอย่างด้านล่างพึ่งพาxdotool
เท่านั้น แต่ฉันเปิดกว้างถึงวิธีการที่เกี่ยวข้องกับแอปพลิเคชันอื่นเช่นเช่นxte
กัน - แม้ว่ามันจะดูเหมือนจะนำไปสู่ผลลัพธ์เดียวกันและดังนั้นฉันจึงใช้xdotool
การกระทำที่นี่เท่านั้น
วิธี A:
การอัพเดต.xbindkeysrc
ไฟล์ด้วย:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
นั่นคือสิ่งที่ฉันพยายามในตอนแรก แต่มันมีผลข้างเคียงที่โมดิฟายเออร์ถูกระงับและไม่สามารถปล่อยออกมาได้
วิธีการ B:
การอัพเดต.xbindkeysrc.scm
ไฟล์ด้วย:
(xbindkey '("b:8") "xdotool keydown ctrl")
(xbindkey '(release "b:8") "xdotool keyup ctrl")
(xbindkey '("m:0x14" "b:8") "xdotool keydown ctrl")
(xbindkey '(release "m:0x14" "b:8") "xdotool keyup ctrl")
พบได้ที่http://www.linuxforums.org/forum/hardware-peripherals/169773-solved-map-mouse-button-modifier-key.htmlและพยายามแก้ไขปัญหาที่มีการแก้ไขตัวควบคุม (ตามที่อธิบายไว้ที่วิธีการ ก)
แม้ว่าจะแก้ไขว่าจะทำงานได้เพียงบางส่วนเท่านั้นเนื่องจากไม่สามารถทำการคลิกเมาส์อื่น ๆ ในขณะที่กดปุ่มนิ้วหัวแม่มือ
วิธีการ C:
การอัพเดต.xbindkeysrc
ไฟล์ด้วย:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
พยายามโดย OP ของคำถามที่เชื่อมโยงที่นี่ที่ askubuntu ง่ายกว่าและแข็งแกร่งกว่ามากเนื่องจากไม่เกี่ยวข้องกับสถานะตัวแก้ไข อย่างไรก็ตามปัญหายังคงอยู่นั่นคือไม่สามารถคลิกCTRL + ได้
ดูเหมือนว่าxbindkeys
ตัวเองเป็นปัญหาที่นี่เนื่องจากรู้จักการคลิก แต่จะไม่ดำเนินการ สามารถทดสอบได้โดยใช้xev | grep button
และxbindkeys -v
:
การคลิกเมาส์ปกติตามที่บันทึกไว้xev
ควรมีลักษณะดังนี้:
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
เช่นเดียวกับปุ่มนิ้วหัวแม่มือ:
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
แต่เมื่อxbindkeys
เปิดใช้งานการกำหนดค่าข้างต้นแล้วจะไม่บันทึกอะไรเลย แม้ว่ามันจะสมเหตุสมผลสำหรับปุ่มนิ้วหัวแม่มือเนื่องจากมันถูกแมปกับCTRLและดังนั้นจึงไม่ใช่ปุ่มเมาส์อีกต่อไปมันแปลกที่ปุ่ม 1ไม่ถูกบันทึกเช่นกัน นี่อาจเป็นเพราะxbindkeys
ไม่ได้รัน แต่ตัวมันเองก็จำมันได้:
Button press !
e.xbutton.button=8
e.xbutton.state=16
"xdotool keydown ctrl"
m:0x0 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Button press !
e.xbutton.button=1
e.xbutton.state=20
Button release !
e.xbutton.button=1
e.xbutton.state=276
Button release !
e.xbutton.button=8
e.xbutton.state=20
"xdotool keyup ctrl"
Release + m:0x4 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
วิธีการ D:
การอัพเดต.xbindkeysrc
ไฟล์ด้วย:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
"xdotool click 1"
b:1
ง่ายเกินไป ... แต่นำไปสู่การวนซ้ำไม่สิ้นสุด
UPDATE:
ในระหว่างนี้ฉันได้ซื้อ Logitech G502 และสังเกตว่าเมื่อกำหนดค่าผ่านไดรเวอร์ใน Windows ไม่เพียง แต่โปรไฟล์จะถูกเก็บไว้ในหน่วยความจำอุปกรณ์ แต่การกดปุ่มจริงทำได้โดยใช้เมาส์ ที่จริงแล้วแก้ปัญหาของฉันบน Linux!
หนูตัวเดียวที่ฉันจำได้ว่าสามารถทำได้คือ Razer Copperhead ย้อนกลับไปในอดีต แต่ฉันคิดว่าวันนี้มีหนูตัวอื่น ๆ ที่สามารถทำได้เหมือนกัน