我在尝试使触摸板在连接USB鼠标时自动关闭并在断开连接时启用时遇到了一些困难。 br />到目前为止,我已经找到了一种可行的方法。我将其发布在此处作为答案,以防其他人发现它有用。我也希望您提出替代或更正的建议。

Jay

#1 楼

编辑-这在Freya NOT Loki中不起作用

这是我的解决方案,用于在连接USB鼠标时在基本OS中禁用触摸板。

我基于以下网站创建了这些说明:
https://bbs.archlinux.org/viewtopic.php?id=188918

https:/ /bbs.archlinux.org/viewtopic.php?id=170396

以及Synaptics触摸板上的arch Wiki,但只允许粘贴2个链接。

通过按以下组合键打开终端:Super + T或从“应用程序”菜单中打开它

在提示符下输入以下内容,以root身份打开Scratch:



在询问时输入密码。

创建新文件。

将以下内容粘贴到新文件中:

sudo scratch-text-editor


*将这两行中的$ USERNAME $替换为您的实际用户名。 *

单击保存按钮
单击对话框左栏中的“计算机”。
导航到/etc/udev/rules.d文件夹
输入名称“ 01-touchpad.rules”作为文件名,然后单击“保存”
关闭文件

在连接或拆卸USB鼠标时,仅此一项应启用和禁用触摸板。如果连接了USB鼠标,这不会在系统启动时禁用触摸板。为此,您可以执行以下操作:

打开终端
在提示符下输入以下内容以root身份打开Scratch:

SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/$USERNAME$/.Xauthority", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1; sleep 5; /usr/bin/killall -q syndaemon'"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/$USERNAME$/.Xauthority", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'"


在询问时输入密码。

创建一个新文件并将以下内容粘贴到其中:

sudo scratch-text-editor


单击“保存”按钮
单击左列中的“计算机”,然后导航到/ usr / local / bin
键入名称“ mouse_detect.sh”作为文件名,然后单击“保存”。

打开“文件” “作为管理员的应用程序
如果在Plank上,请右键单击以找到此选项。如果不是,请从应用程序菜单中打开“文件”,并在打开时右键单击Plank上的图标以找到该选项。
在询问时输入密码。

单击左列中的“文件系统”,然后导航到/ usr / local / bin。您的文件“ mouse_detect.sh”应该存在。右键单击该文件,然后选择“属性”
,单击“更多”按钮,然后单击每个“执行”按钮,以确保它们都突出显示。
关闭文件

现在我们需要创建一个自动启动条目
打开“系统设置”,然后单击“应用程序”
单击“启动”,然后单击左下角的“ +”按钮。
当该框打开时,在下面的框中键入“ /usr/local/bin/mouse_detect.sh”,要求您键入自定义命令。

打开“文件”,然后按CTRL-H要显示隐藏的文件,然后按左栏中的Home
导航到〜/ .config / autostart

,您应该会看到一个类似于“ custom-command0.desktop”的文件,在右键单击并选择“打开方式”以“从头开始”。 (如果需要,请选择“其他应用程序”)
如果在正确的文件中,您应该看到一行显示Exec = / usr / local / bin / mouse_detect.sh的信息。
在文件中添加以下行:

#!/bin/bash
lista=`xinput list | grep -i 'mouse'`
listb=`xinput list | grep -i 'transceiver' | grep -i 'pointer'`
listc=`xinput list | grep -i 'receiver' | grep -i 'pointer'`

if [ ${#lista} -eq 0 ] && [ ${#listb} -eq 0 ] && [ ${#listc} -eq 0 ]; then
    exec `synclient TouchpadOff=0`
    notify-send "No USB Mouse Detected" "Your Touchpad is Active"
else
    exec  `synclient TouchpadOff=1`
    notify-send "USB Mouse Detected" "Your Touchpad is Disabled"
    sleep 5
    killall -q syndaemon
fi


还可以在“名称”字段中输入桌面文件的自定义名称,并在“注释”字段中输入自定义注释。
注意:我必须从我的名称[en_CA]字段中删除[en_CA],名称更改才能在“文件”中显示。如果您居住在美国以外的地区,则可能必须执行相同的操作。在启动时,通过单击其右侧的切换按钮。

应该这样做。如果启动脚本将其他无线设备检测为鼠标,并且在不应该使用的情况下禁用了触摸板,则可以尝试将mouse_detect.sh文件的内容更改为:

X-GNOME-Autostart-Delay=8


不过,这种方法检测无线鼠标的机会较小,因此只有在第一个鼠标不适合您的情况下才使用它。

评论


这真的很有用!

– elmato
15年9月30日在23:45

谢谢。我很高兴有人发现它有用。我刚刚编辑了帖子,以在“ 01-touchpad.rules”的udev规则中添加指向killall和synclient的完整路径。这是它们在我发布的参考链接中出现的方式。当我安装内核3.19时,我的机器也开始挂起。改变这一点似乎有所帮助。无法解释原因。无论如何,最好将路径明确。随时将“ 01-touchpad.rules”中的udev规则更新为已更新的规则。

–詹森·甘布雷尔(Jason Gambrel)
2015年10月2日,下午1:27

@JasonGambrel,好帖子,您愿意接受自己的问题吗?请参阅elementaryos.stackexchange.com/help/self-answer

–user.dz
2015年12月5日在21:14



感谢Sneetsher。我不知道我可以接受我自己的答案,也可以针对这个问题发布答案。知道这很有帮助!

–詹森·甘布雷尔(Jason Gambrel)
16年1月10日,1:16