直接回答

直接回答

我在华硕 UL30 上运行 11.04。我试图运行一个脚本来修复我的 synclient 设置(在恢复期间丢失)。我在 /etc/pm/sleep.d/10_touchpad 中编写了以下脚本:

#!/bin/sh

#change synclient settings on resume

case "$1" in 

    resume|thaw)

        sleep 15 && synclient TapButton2=2 TapButton3=3 ;;
esac

/var/log/pm-suspend 显示以下内容:

/etc/pm/sleep.d/10_grub-common suspend suspend: 成功。正在运行钩子 /etc/pm/sleep.d/10_touchpad suspend suspend: /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend: 成功。正在运行钩子 /etc/pm/sleep.d/10_touchpad resume suspend: 无法连接到 X 服务器。

/etc/pm/sleep.d/10_touchpad 恢复暂停:成功。正在运行钩子 /etc/pm/sleep.d/10_grub-common

不太确定为什么此脚本无法在恢复时更改 synclient 更改。如有任何见解,我将不胜感激……

答案1

直接回答

为了实现您的目标(在您的机器恢复时运行依赖于 X-session 的用户空间脚本),您必须:

  1. 以适当的用户身份运行脚本;并且
  2. 确保 DISPLAY 变量已设置。

我会将该行移至sleep 15 && synclient TapButton2=2 TapButton3=3单独的文件/usr/local/sbin/setupTouchpad.sh并将该行替换为:

   export DISPLAY=:0
   su -c - <yourusername> /usr/local/sbin/setupTouchpad.sh

应该替换的位置<yourusername>。请注意,在运行代码之前,最好留出一些睡眠时间以确保系统处于唤醒状态。另外,请确保chmod +xsetupTouchpad.sh脚本。


更好的方法

上述问题在于您必须硬编码您的用户名(或使用一些黑客方法来发现哪个用户已登录并具有活动的 X 会话)。最好为 X 设置系统范围的触摸板设置。

这些选项可以设置在/usr/share/X11/xorg.conf.d/

对我来说,要编辑的正确文件在50-synaptics.conf这里我已经设置了选项,这是该文件的一部分:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"

        Option          "TapButton2"              "2"
        Option          "TapButton3"              "3"

        # Etc...
EndSection

您可能已经知道,要查看有效选项,只需运行synclient

笔记您必须重新启动 X 才能使这些更改生效。例如,在 Ubuntu 中,您可以运行sudo /etc/init.d/lightdm restart

要预览您的更改,您可以尝试运行以下行(或某些变体)。 | bash从末尾删除以查看它发出的命令。

cat /usr/share/X11/xorg.conf.d/50-synaptics.conf | grep Option | grep -v "^\#" | awk '{print "synclient " $2 "=" $3}' | sed 's/\"//g' | bash

如果您用 Google 搜索,touchpad settings synaptics xorg.conf.d您还会发现一些很好的选项概述。


参考

相关内容