Làm cho chuột thuận tay trái và bàn di chuột phải


10

Tôi thấy rằng tôi có thể định cấu hình tất cả chuột và bàn di chuột trong một bảng (Ubuntu 13.10, mặc định, Gnome). Đó là một số mở rộng. Cụ thể, tôi muốn có bàn di chuột được cấu hình khác nhau sau đó là chuột và ...

Khi tôi có chuột (USB) đi kèm, tôi thường sử dụng nó bằng tay trái. Do đó, tôi chuyển các nút sang tay trái. Nhưng khi tôi sử dụng bàn di chuột, tôi cảm thấy hơi mất mát với loại cấu hình đó. Vì vậy, tôi muốn có nó thuận tay phải.

Có cách nào để đạt được những điều sau: khi tôi cắm chuột (tương ứng khi phát hiện thấy nó) tự động chuyển sang thuận tay trái và khi tôi rút phích cắm ra, tự động chuyển sang thuận tay phải?

Câu trả lời:


10

Tôi hiểu sự thất vọng của bạn, nhưng vấn đề này có thể được giải quyết rất đơn giản với sự trợ giúp của xinputcông cụ.

Đầu tiên cắm chuột USB của bạn, sau đó chạy lệnh sau:

xinput list

để xem idcon chuột của bạn Đầu ra của lệnh trên nó có thể tương tự như:

xin thông tin | con mèo
Con trỏ lõi ảo id = 2 [con trỏ chính (3)]
⎜ Lõi ảo con trỏ XTEST id = 4 [con trỏ nô lệ (2)]
⎜ SynPS / 2 Synaptics TouchPad id = 14 [con trỏ nô lệ (2)]
⎜ Chuột USB id = 11 [con trỏ nô lệ (2)]
Id Bàn phím lõi ảo id = 3 [bàn phím chính (2)]
    ...

Trong ví dụ trên, chuột USB có id=11. Chúng tôi sẽ sử dụng lệnh này idtrong lệnh sau để trao đổi các nút chỉ được thuận tay trái cho chuột USB (chứ không phải cho tauchpad):

xinput set-button-map 11 3 2 1

Nói chung:

xinput set-button-map id 3 2 1

Để hoàn nguyên thay đổi, sử dụng:

xinput set-button-map id 1 2 3

Để thực hiện thay đổi vĩnh viễn, hãy thêm lệnh sau vào Ứng dụng khởi động (tìm kiếm trong Dash cho Ứng dụng khởi động ):

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

Cập nhật:

id có thể thay đổi sau khi khởi động lại nhưng tên của USBmouse thì không, bạn cũng có thể grep cho tên của chuột và áp dụng nó. Để bỏ qua các chi tiết reg. chọn ra tên giải pháp cuối cùng như sau:

cho id trong danh sách `/ usr / bin / xinput | / bin / grep ' Chuột USB ' | / bin / grep -o [0-9] [0-9] `; làm xinput set-button-map $ id 3 2 1; làm xong;

đóng gói nó vào các Ứng dụng khởi động được đề cập ở trên, cuối cùng bạn sẽ nhận được:

sh -c "cho id trong danh sách` / usr / bin / xinput | / bin / grep ' Chuột USB ' | / bin / grep -o [0-9] [0-9] `; làm xinput set-button-map $ id 3 2 1; xong; "

2
Tôi không biết, tôi có nên chỉnh sửa bài viết của bạn hay không. Cách tiếp cận của bạn đã cho tôi hướng đi đúng, nhưng vấn đề là / việc khởi động lại có thể thay đổi id của chuột. Vì vậy, tôi đã thay đổi nó thành 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;"và điều này hoạt động (có lẽ người ta phải quan tâm đến các dấu gạch nối thích hợp). Thx cho gợi ý.
LeO

@LeO Trong trường hợp của tôi, khởi động lại, không thay đổi id của chuột. Tôi đã không kiểm tra với nhiều chuột hơn hoặc để thay đổi vị trí của cổng USB.
Radu Rădeanu

@LeO Dù sao đi nữa, ý tưởng của bạn rất hay, vì vậy, hãy tiếp tục, vui lòng chỉnh sửa câu trả lời. Nếu không, tôi sẽ làm nó sau.
Radu Rădeanu

8

Có một cách thậm chí còn đơn giản hơn trong câu trả lời của Radu Rădeanu . xinputchấp nhận tên của thiết bị đầu vào thay thế cho ID số của nó. Vì chuột USB của bạn có thể được xử lý tổng quát, nên tên của nó rất có thể USB Mouse. Do đó, bạn có thể không cần phải chạy xinput list.

Do đó xinput set-button-map, với tên này thay cho ID số, ​​trở thành:

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

Điều này thay thế và sẽ đạt được điều tương tự, với việc biến nó thành chuột trái, giống như khi sử dụng cách ID số . (Và thay thế bằng vẫn sẽ hoạt động để chuyển nó thành chuột phải.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Điều này có lợi thế là, miễn là nó hoạt động ban đầu, nó sẽ tiếp tục hoạt động trên các lần khởi động lại mà không phải lấy số ID của thiết bị bằng các lệnh dài, phức tạp.


1
Câu trả lời này xứng đáng nhận được nhiều sự ủng hộ hơn.
Mephisto

Trong trường hợp của tôi, tôi có chuột không dây + bàn phím, vì vậy xinput listhiển thị 2 mục có cùng tên ("Bàn phím và chuột không dây 2.4G") ngoại trừ một mục nói "[con trỏ nô lệ (2)]" và mục còn lại nói "[bàn phím phụ (3 )] ". Vì vậy, với giải pháp của bạn, tôi gặp lỗi này "Có nhiều thiết bị có tên 'Bàn phím và chuột không dây 2.4G". ". Hiện tại, tôi đang sử dụng giải pháp của Radu grep 'slave pointer'. Tôi tự hỏi nếu xinput cho phép bằng cách nào đó chỉ định chúng tôi đang đề cập đến một con trỏ mà không làm tất cả điều này.
matiascelasco

1

Tôi thấy rằng lệnh khởi động trong câu trả lời khác chỉ hoạt động nếu id là một số có hai chữ số. Dưới đây là những sửa đổi của tôi sẽ hoạt động cho cả hai và hai chữ số:

Trong các ứng dụng khởi động

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 

Đây là một giải pháp dài dòng hơn để giải quyết hai vấn đề:

  • Nó hoạt động cho id thiết bị với bất kỳ số chữ số nào (giống như giải pháp @robbie, nhưng được viết hơi khác một chút)
  • Người tiêu dùng cho rằng tên thiết bị có thể được nhân đôi. Trong trường hợp của tôi, tôi có chuột không dây + bàn phím, vì vậy xinput listhiển thị 2 mục có cùng tên ("Bàn phím và chuột không dây 2.4G") ngoại trừ một mục nói "[con trỏ nô lệ (2)]" và mục còn lại nói "[bàn phím phụ (3 )] ". Vì vậy, với giải pháp @reedstrm, tôi đã gặp phải lỗi này "Có nhiều thiết bị có tên '2.4G Bàn phím & Chuột không dây'.", Trong khi với giải pháp @Radu Rădeanu, forđã lặp lại trên 2 id, một cho chuột và một cho bàn phím, có một Thông báo lỗi "thiết bị không có nút" với thông báo lỗi thứ hai.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.