鼠标左手和触摸板右手
我看到我可以在一个面板中配置鼠标和触摸板(Ubuntu 13.10,默认值,Gnome)。 在某种程度上是这样的。 也就是说,我希望触摸板的配置与鼠标不同……
当我连接(USB)鼠标时,我通常用左手。 因此我将按钮切换为左手按钮。 但是当我使用触摸板时,我觉得这种配置有点丢失。 所以我想要用右手。
有没有办法实现以下目的:当我插入一个鼠标(分别在检测到它时)自动切换到左手,当我拔掉它时,自动切换到右手?
我理解你的挫败感,但在xinput
工具的帮助下,这个问题可以很简单地解决。
首先插入USB鼠标,然后运行以下命令:
xinput list
看到你的鼠标的id
。 上面命令的输出可以类似于:
xinput | 猫 ⎡虚拟核心指针id = 2 [主指针(3)] ⎜⎜虚拟核心XTEST指针id = 4 [从指针(2)] ⎜⎜SynPS/ 2 Synaptics TouchPad id = 14 [从指针(2)] ⎜⎜USB鼠标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
要永久更改,请在启动应用程序中添加以下命令(在Dash中搜索启动应用程序 ):
sh -c“xinput set-button-map id 3 2 1”
更新:
由于id可能会在重新启动后更改,但USBmouse的名称不会更改,因此您还可以使用鼠标名称并应用它。 跳过细节注册。 选择最终解决方案的名称:
对于`/ usr / bin / xinput list |中的id / bin / grep'USB Mouse '| / bin / grep -o [0-9] [0-9]`; do xinput set-button-map $ id 3 2 1; 完成;
将它打包到上面提到的启动应用程序中,你最终会得到:
sh -c“for id in / / usr / bin / xinput list | / bin / grep'USB Mouse '| / bin / grep -o [0-9] [0-9]`; do xinput set-button-map $ id 3 2 1;完成;“
有比RaduRădeanu的答案更简单的方法。 xinput
接受输入设备的名称作为其数字ID的替代。 由于您的USB鼠标可能通常被处理,因此它的名字很可能是USB Mouse
。 因此,您甚至可能不需要运行xinput list
。
因此,使用此名称代替数字ID的xinput set-button-map
将变为:
xinput set-button-map "USB Mouse" 3 2 1
这取代了xinput set-button-map id 3 2 1
并且应该实现相同的function,使用3 2 1
使其成为左手鼠标,就像使用数字ID方式一样。 (并用1 2 3
替换3 2 1
仍然可以将其切换为右手鼠标。)
这样做的优点是,只要它最初工作,它将继续在重新启动时工作,而无需使用长而复杂的命令获取设备的ID号。
我发现另一个答案中的启动命令仅在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;"
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
这是一个解决两个问题的更详细的解决方案:
- 它适用于具有任意数字位数的设备ID(与@robbie解决方案相同,但写得有点不同)
- 认为设备名称可能重复。 在我的情况下,我有一个无线鼠标+键盘,所以
xinput list
显示2个具有相同名称的条目(“2.4G无线键盘和鼠标”),除了一个说“[slave pointer(2)]”,另一个说“[slave keyboard] (3)]”。 所以使用@reedstrm解决方案我有这个错误“有多个设备名为’2.4G无线键盘和鼠标’。”,而使用@RaduRădeanu解决方案,for
迭代超过2个ID,一个用于鼠标,一个用于键盘,第二个“设备没有按钮”错误消息。