Tôi nghĩ EitherMouse xứng đáng được đề cập ở đây. Tôi rất hài lòng với nó khi tôi phải sử dụng hộp Windows. Nó làm cho việc quản lý một thiết lập nhiều nhà dễ dàng.
Bạn có thể tải xuống công cụ tại trang web của nó: http://www.eithermouse.com/
Vì lợi ích của hậu thế, tôi cũng sẽ bao gồm giải pháp cho GNU / Linux tại đây. Theo tôi, cách tốt nhất là xác định cấu hình phần Xorg InputClass tùy chỉnh. Điều này sẽ có hiệu lực bất cứ lúc nào chuột được phát hiện. Đây là tập tin cấu hình của tôi /etc/X11/xorg.conf.d/50-mouses-config.conf
:
Section "InputClass"
Identifier "Lachesis Left Handed"
MatchUSBID "1532:000c"
Option "ButtonMapping" "3 2 1"
EndSection
Các Identifier
giá trị là không quan trọng. ID USB có thể được tìm thấy bằng cách sử dụng lsusb
lệnh. Để xem nút nào khả dụng, xev
công cụ có thể được sử dụng để lấy ID nút khi bạn nhấn các nút chuột. Lệnh xinput list
có thể được sử dụng để lấy danh sách tất cả các thiết bị đầu vào trên hệ thống của bạn và ID xinput của chúng. Bạn có thể liệt kê đầy đủ các nút của thiết bị bằng lệnh xinput get-button-map N
, trong đó N là ID thông báo của thiết bị của bạn, chẳng hạn như xinput get-button-map 10
. Bạn có thể thử nghiệm sửa đổi ánh xạ của các nút trên thiết bị của mình bằng xinput set-button-map N *mapping*
lệnh, chẳng hạn như:xinput set-button-map 10 3 2 1
Bạn sẽ phải khởi động lại phiên X để cấu hình Xorg mới của bạn có hiệu quả. Trong trường hợp có vấn đề, Xorg.log ( tail -f /var/log/Xorg.0.log
) có thể cung cấp cho bạn manh mối về những gì đã xảy ra.
Một xinput set-button-map
sự thay thế có thể được sử dụng, nhưng kém năng động hơn (nó sẽ không được áp dụng tự động khi thiết bị của bạn được phát hiện). Tập lệnh sau có thể được cấu hình để chạy khi khởi động (trong Ubuntu có GUI Ứng dụng khởi động để thiết lập tập lệnh). Vì một số lý do, nó sẽ không hoạt động nếu bạn chỉ cần gọi tập lệnh từ tệp ~ / .profile của mình. Biến MOUSE_NAME tương ứng với bất kỳ tên nào được đặt cho chuột của bạn trong đầu ra của xinput list
lệnh.
#!/bin/bash
MOUSE_NAME="Razer Razer Lachesis"
BUTTONS_MAP="3 2 1"
while read -r line; do
raw_line=$(grep "$MOUSE_NAME" | grep "pointer")
if [ ! -z "$raw_line" ]; then
mouse_id=$(echo "$raw_line" | cut -d '=' -f2 | sed 's/\t.*//g')
echo "Found ${MOUSE_NAME}'s id: $mouse_id"
xinput set-button-map $mouse_id $BUTTONS_MAP
break
fi
done < <(xinput list)