ทำให้เมาส์ถนัดขวาและทัชแพดด้วยมือขวา


10

ฉันเห็นว่าฉันสามารถกำหนดค่าเมาส์และทัชแพดได้ทั้งหมดในแผงเดียว (Ubuntu 13.10, ค่าเริ่มต้น, Gnome) ซึ่งจะขยายบาง คือฉันต้องการให้ทัชแพดกำหนดค่าต่างจากเมาส์และ ...

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

มีวิธีการดังต่อไปนี้หรือไม่: เมื่อฉันเสียบเม้าส์ (ตามลำดับเมื่อตรวจพบ) จะสลับเป็นมือซ้ายโดยอัตโนมัติและเมื่อฉันถอดปลั๊กให้เปลี่ยนโดยอัตโนมัติเป็นมือขวา?

คำตอบ:


10

ฉันเข้าใจความคับข้องใจของคุณ แต่ปัญหานี้สามารถแก้ไขได้ง่าย ๆ ด้วยความช่วยเหลือของxinputเครื่องมือ

แรกเสียบเมาส์ USB ของคุณแล้วเรียกใช้คำสั่งต่อไปนี้:

xinput list

เพื่อดูidเมาส์ของคุณ ผลลัพธ์ของคำสั่งดังกล่าวสามารถคล้ายกับ:

xinput | แมว
⎡ id ตัวชี้ core เสมือน = 2 [ตัวชี้หลัก (3)]
pointer ↳ id ตัวชี้ core เสมือน XTEST = 4 [ตัวชี้ทาส (2)]
Pad ↳ Synaptics TouchPad id = 14 [ตัวชี้ทาส (2)]
Mouse ↳ USB Mouse id = 11 [ตัวชี้ทาส (2)]
⎣แป้นพิมพ์คอร์เสมือน id = 3 [แป้นพิมพ์หลัก (2)]
    ...

ในตัวอย่างข้างต้นเมาส์ USB id=11มี เราจะใช้สิ่งนี้idในคำสั่งต่อไปนี้ซึ่งจะสลับปุ่มเพื่อถนัดซ้ายสำหรับเมาส์ USB (และไม่ใช่สำหรับ tauchpad):

xinput set-button-map 11 3 2 1

โดยทั่วไป:

xinput set-button-map id 3 2 1

หากต้องการคืนค่าการเปลี่ยนแปลงให้ใช้:

xinput set-button-map id 1 2 3

หากต้องการเปลี่ยนแปลงอย่างถาวรให้เพิ่มคำสั่งต่อไปนี้ที่Startup Applications (ค้นหาในDash for Applications Startup ):

sh -c "xinput set-button-map id 3 2 1"

ปรับปรุง:

เนื่องจากidอาจเปลี่ยนหลังจากรีบูต แต่ชื่อของ USB ไม่ได้เป็นเช่นนั้นคุณสามารถ grep สำหรับชื่อของเมาส์และนำไปใช้ หากต้องการข้ามรายละเอียด reg เลือกชื่อโซลูชันสุดท้ายจะมีลักษณะดังนี้:

สำหรับ id ในรายการ `/ usr / bin / xinput | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; ทำ xinput ตั้งปุ่มแผนที่ $ id 3 2 1; ทำ;

บรรจุลงในแอปพลิเคชันเริ่มต้นที่กล่าวถึงข้างต้นคุณจะได้รับ:

sh -c "สำหรับ id ในรายการ` / usr / bin / xinput | / bin / grep ' เมาส์ USB ' | / bin / grep -o [0-9] [0-9] `; ทำ xinput set-button-map $ id 3 2 1 เสร็จแล้ว "

2
ฉันไม่รู้ว่าควรแก้ไขโพสต์ของคุณหรือไม่ วิธีการของคุณให้ทิศทางที่ถูกต้องแก่ฉัน แต่ปัญหาคือ / คือการรีสตาร์ทอาจเปลี่ยน id ของเมาส์ ดังนั้นฉันจึงเปลี่ยนเป็นsh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"งานนี้ (อาจต้องใส่ใจกับเครื่องหมายยัติภังค์ที่เหมาะสม) ขอบคุณสำหรับคำใบ้
LeO

@LeO ในกรณีของฉันรีบูตไม่เปลี่ยน id ของเมาส์ ฉันไม่ได้ทดสอบกับหนูมากกว่านี้หรือเปลี่ยนตำแหน่งของพอร์ต USB
Radu Rădeanu

@LeO อย่างไรก็ตามความคิดของคุณดีมากเลยไปข้างหน้าโปรดแก้ไขคำตอบ ถ้าไม่ฉันจะทำมันทีหลัง
Radu Rădeanu

8

มีวิธีได้ง่ายกว่าในเป็นคำตอบ Radu Rădeanuของ xinputยอมรับชื่อของอุปกรณ์อินพุตเป็นทางเลือกแทน ID ตัวเลข ตั้งแต่เมาส์ USB USB Mouseของคุณอาจจะได้รับการปฏิบัติโดยทั่วไปก็ชื่อมีแนวโน้มมากที่สุด xinput listดังนั้นคุณจะไม่จำเป็นต้องแม้กระทั่งการวิ่ง

ดังนั้นxinput set-button-mapชื่อของคุณแทน ID ตัวเลขจึงกลายเป็น:

xinput set-button-map "USB Mouse" 3 2 1

นี้จะเกิดขึ้นของและควรให้บรรลุในสิ่งเดียวกันกับทำให้มันเป็นเมาส์มือซ้ายเช่นเดียวกับเมื่อทางรหัสตัวเลขถูกนำมาใช้ (และการแทนที่ด้วยจะยังคงทำงานเพื่อเปลี่ยนเป็นเมาส์ขวา)xinput set-button-map id 3 2 13 2 13 2 11 2 3

นี่เป็นข้อได้เปรียบที่ให้การทำงานในตอนแรกมันจะยังคงทำงานข้ามการรีบูตโดยไม่ต้องรับหมายเลข ID ของอุปกรณ์โดยใช้คำสั่งที่ซับซ้อนและยาว


1
คำตอบนี้สมควรได้รับการโหวตมากขึ้น
Mephisto

ในกรณีของฉันฉันมีเมาส์ + คีย์บอร์ดไร้สายดังนั้นxinput listจะแสดงรายการ 2 รายการที่มีชื่อเดียวกัน ("คีย์บอร์ดไร้สาย 2.4G & เมาส์") ยกเว้นรายการหนึ่งบอกว่า "[ตัวชี้ทาส (2)]" และอีกรายการบอกว่า "[ทาสแป้นพิมพ์ (3) )]" ดังนั้นด้วยวิธีการแก้ปัญหาของคุณฉันมีข้อผิดพลาดนี้ "มีหลายอุปกรณ์ชื่อ '2.4G Wireless Keyboard & Mouse'" grep 'slave pointer'โดยขณะนี้ผมใช้วิธีการแก้ปัญหาราดูเพิ่ม ฉันสงสัยว่า xinput อนุญาตให้ระบุว่าเรากำลังอ้างถึงตัวชี้อย่างใดโดยไม่ทำสิ่งนี้ทั้งหมด
matiascelasco

1

ฉันพบว่าคำสั่งเริ่มต้นในคำตอบอื่น ๆ จะทำงานเฉพาะในกรณีที่ id เป็นตัวเลขสองหลัก นี่คือการแก้ไขของฉันซึ่งควรใช้กับตัวเลขหนึ่งและสองหลัก:

ในแอปพลิเคชันเริ่มต้น

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"

0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

นี่คือวิธีแก้ปัญหา verbose เพิ่มเติมที่แก้ปัญหาที่สอง:

  • ใช้งานได้กับรหัสอุปกรณ์ที่มีตัวเลขจำนวนเท่าใดก็ได้ (เช่นเดียวกับโซลูชัน @robbie แต่เขียนแตกต่างกันเล็กน้อย)
  • พิจารณาว่าชื่ออุปกรณ์อาจซ้ำกัน ในกรณีของฉันฉันมีเมาส์ + คีย์บอร์ดไร้สายดังนั้นxinput listจะแสดงรายการ 2 รายการที่มีชื่อเดียวกัน ("คีย์บอร์ดไร้สาย 2.4G & เมาส์") ยกเว้นรายการหนึ่งบอกว่า "[ตัวชี้ทาส (2)]" และอีกรายการบอกว่า "[ทาสแป้นพิมพ์ (3) )]" ดังนั้นด้วยวิธีการแก้ปัญหา @reedstrm ผมมีข้อผิดพลาดนี้ "มีอุปกรณ์หลายชื่อ 'แป้นพิมพ์ไร้สาย 2.4G และเมาส์'. มี" ในขณะที่กับการแก้ปัญหา @Radu Rădeanuที่forถูกทำซ้ำมากกว่า 2 รหัสหนึ่งสำหรับเมาส์และแป้นพิมพ์ที่มี ข้อความแสดงข้อผิดพลาด "อุปกรณ์ไม่มีปุ่ม" พร้อมที่สอง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.