鼠标左手和触摸板右手

我看到我可以在一个面板中配置鼠标和触摸板(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,一个用于鼠标,一个用于键盘,第二个“设备没有按钮”错误消息。