Answers:
我了解您的无奈,但可以借助该xinput
工具非常简单地解决此问题。
首先插入USB鼠标,然后运行以下命令:
xinput list
看看id
你的鼠标。上面命令的输出可以类似于:
xinput | 猫 ⎡虚拟核心指针id = 2 [主指针(3)] 虚拟核心XTEST指针id = 4 [从指针(2)] SynPS / 2 Synaptics触摸板id = 14 [从指针(2)] USB Mouse id = 11 [从指针(2)] ⎣虚拟核心键盘id = 3 [主键盘(2)] ...
在上面的示例中,USB鼠标具有id=11
。我们将id
在以下命令中使用此命令,该命令将只为USB鼠标(而不是tauchpad)交换左手按钮:
xinput set-button-map 11 3 2 1
一般来说:
xinput设置按钮映射ID 3 2 1
要还原更改,请使用:
xinput设置按钮映射ID 1 2 3
要永久进行更改,请在“ 启动应用程序”中添加以下命令(在Dash中搜索“ 启动应用程序”):
sh -c“ xinput设置按钮映射ID 3 2 1”
更新:
由于重新启动后id可能会更改,但USBmouse的名称不会更改,因此您也可以grep输入鼠标的名称并应用它。跳过详细信息。选择名称,最终解决方案如下所示:
在/ usr / bin / xinput列表中的ID | / bin / grep'USB 鼠标 '| / bin / grep -o [0-9] [0-9]`; 做xinput set-button-map $ id 3 2 1; 完成
将其打包到上述启动应用程序中,您将最终得到:
sh -c“,用于`/ usr / bin / xinput列表中的ID | / bin / grep'USB 鼠标 '| / bin / grep -o [0-9] [0-9]`;执行xinput set-button-map $ id 3 2 1;完成;”
有一个比RaduRădeanu的答案中更简单的方法。xinput
接受输入设备的名称作为其数字ID的替代。由于您的USB鼠标可能已被通用处理,因此很可能是它的名称USB Mouse
。因此,您甚至可能不需要运行xinput list
。
因此xinput set-button-map
,使用该名称代替数字ID的your 将变为:
xinput set-button-map "USB Mouse" 3 2 1
就像使用数字ID方式一样,用左手鼠标代替它并应该实现相同的目的。(并且替换为仍然可以将其切换为惯用鼠标。)xinput set-button-map id 3 2 1
3 2 1
3 2 1
1 2 3
这样做的好处是,只要最初就可以工作,它将在重新启动后继续工作,而不必使用冗长而复杂的命令获取设备的ID号。
xinput list
显示2个具有相同名称的条目(“ 2.4G Wireless Keyboard&Mouse”),但其中一个说“ [slave pointer(2)]”,而另一个说“ [slave keyboard(3 )]“。因此,在您的解决方案中,我出现此错误“有多个名为'2.4G Wireless Keyboard&Mouse'的设备”。目前,我正在使用Radu的解决方案添加grep 'slave pointer'
。我不知道xinput是否允许以某种方式指定我们是在不执行所有操作的情况下引用指针。
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
这是解决两个问题的更详细的解决方案:
xinput list
显示2个具有相同名称的条目(“ 2.4G Wireless Keyboard&Mouse”),但其中一个说“ [slave pointer(2)]”,而另一个说“ [slave keyboard(3 )]“。因此,使用@reedstrm解决方案时,我会遇到此错误“有多个名为'2.4G Wireless Keyboard&Mouse'的设备。”,而使用@RaduRădeanu解决方案时,它for
会迭代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;"
行之有效”(也许有人必须在意正确的连字符)。提示。