如何在 USB 鼠标连接时禁用笔记本电脑的触摸板(最后速度较慢)?

如何在 USB 鼠标连接时禁用笔记本电脑的触摸板(最后速度较慢)?

我愿意不是function key/fn为此 :( 。

有什么想法吗?也许有设置或命令?


其他科目没有帮助:

  • gpointing-device-settings(自动禁用设置取消勾选);
  • kde-config-touchpad(不可单独安装);
  • 不知道如何使用udevd

答案1

解决方案-自动

感谢 Esamo 和他的工作。

要添加用于在启动时连接鼠标的自动触发器:

创建文件:/etc/udev/rules.d/10-local.rules

填写以下内容:(将$USER替换为您的用户名)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/$USER/scripts/touchpad_switcher.sh true"

例子:

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh false"

ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/dawid/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/home/dawid/scripts/touchpad_switcher.sh true"

接下来将脚本放在你想要的任何位置。我将其放在 ~/scripts 中

触摸板切换器

#!/bin/sh
enabled=$1
touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);

if $enabled
then
  xinput set-prop $touchpad_id "Device Enabled" 1 | notify-send "The touchpad is now enabled." ""
else
  xinput set-prop $touchpad_id "Device Enabled" 0 | notify-send "Disabling the touchpad..." ""
fi

记得添加执行权限:

chmod +x touchpad_switcher.sh

现在只需重新启动!(仅仅重新启动 udev 似乎不起作用……)


其他一些有用的东西:

有关的一些信息udev 规则

ArchLinux 的示例

类似问题

答案2

解决方案 - 不是自动的

下面的脚本在执行时将如果连接了鼠标,请禁用触摸板并显示通知。

touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);


if xinput | grep -i "mouse" | grep -i "pointer"

    then xinput set-prop $touchpad_id "Device Enabled" 0 |
         notify-send "Disabling the touchpad..." ""

    else xinput set-prop $touchpad_id "Device Enabled" 1 |
         notify-send "The touchpad is now enabled." ""

fi

还添加了一个相反的情况,尽管在我的情况下,触摸板无论如何都会在鼠标断开连接时启用。我已将脚本保存在一个文件中,并在Unity Launcher Terminal每次插入鼠标后从部分运行它。


先进的

  1. 还有老鼠吗?

    mouse通过扩展片段中的值"mouse"、根据xinput设备列表命名来确定哪些应该停用触摸板。

  2. 受惊的老鼠从一边跑到另一边?

    我不得不为鼠标运行额外的命令 - 减少,cursor acceleration因为它在每个连接上都被疯狂地设置为 10。实际上过了一段时间,我制作了自动检测脚本(它获取鼠标 ID 及其速度属性;不知道性能如何cut)...

    touchpad_id=$(xinput | grep -i "touchpad" | cut -f2 | cut -d '=' -f2);
    mouse_id=$(xinput | grep -i "mouse" | grep -i 'pointer' | cut -f2 | cut -d '=' -f2);
    mouse_prop=$(xinput list-props $mouse_id | grep -i "velocity" | cut -f2 | cut -d '(' -f2 | cut -d ')' -f1 );
    
    
    if xinput | grep -i "mouse" | grep -i "pointer"
    
        then xinput set-prop $touchpad_id "Device Enabled" 0 |
             xinput set-prop $mouse_id $mouse_prop 3 |
             notify-send "Disabling the touchpad..." ""
    
        else xinput set-prop $touchpad_id "Device Enabled" 1 |
             notify-send "The touchpad is now enabled." ""
    
    fi
    

今天学到了很多东西:D。


有人是专业人士吗?

  1. 知道如何使其自动化将会很有用。

  2. 还好奇为什么鼠标配置没有保存(2.)。

答案3

@David Drozd 发布的内容对我不起作用Ubuntu 16.04

似乎这个技巧xinput在 中不起作用udev。只synclient TouchpadOff=[0|1]起作用。ACTION="remove"单独使用时也不起作用。

我终于在添加时得到了ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'"

完整的解决方案/etc/udev/rules.d/10-local.rules :使用以下行创建文件(将 $USER 替换为您的用户名)

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0",ENV{XAUTHORITY}="/home/$USER/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c '/usr/bin/synclient TouchpadOff=0'", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1' "

相关内容