我必须将“xinput”命令粘贴到哪里以便它在 GNOME 启动时执行它?

我必须将“xinput”命令粘贴到哪里以便它在 GNOME 启动时执行它?

在我的 Thinkpad 上,我需要在终端中执行如下操作:

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

这样我的触摸板上的 2 个按钮就可以模拟鼠标中键单击。现在我需要每次启动 GNOMe 或 X 或任何其他程序时都执行此行,以便它“正常工作”。

我尝试了 ~/.xsession 或 ~/.bashrc,但无济于事。我应该把它放在 GNOME 启动脚本中还是 /etc/X 的某个地方?

我正在使用 Ubuntu 11.10。

答案1

我正在使用 Enlightenment DM,但这与其他 DM/桌面相关。我使用 xsession 启动会话,因此我最初将 xinput 命令放在 ~/.xsession 中,这并没有更改我想要更改的所有设置。只有一些其中。我期望全部更改或不更改,因此我向 .xsession 添加了 10 次迭代循环,间隔为 1 秒,每次运行 xinput 命令并检查设置是否已应用。令我惊讶的是,第一次迭代后所有设置都已应用。

这意味着您的 DM 会执行某些操作来覆盖您的 xinput 设置,并且由于启动您的 DM(在我的情况下是 E17)的命令是 .xsession 文件中的最后一个命令,因此此文件不适合执行此操作。

我在 ~/.profile 中添加了以下几行,解决了这个问题:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

PS. set-int-prop 已被弃用,取而代之的是 set-prop (man xinput)。

希望这对某人有帮助。

答案2

将命令直接添加到启动应用程序。在命令字段中。

或者

制作一个简单的脚本并将该脚本添加到启动应用程序中。

答案3

/etc/X11/Xsession.d/为其创建一个文件。

答案4

这是我在Ubuntu 14.04从终端:

1)检查您的设备名称:

xinput list

2)查看您设备的可用选项:

xinput list-props "Your Device Name"

3)编辑设置(使设置在重启/关机后保持一致将此命令添加到启动应用程序):

xinput set-prop "Your Device Name" "Option Name" "Value"

下面是我用来激活触摸板上的锁定拖动的示例命令:

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

要激活/更改另一个选项,只需在设备可用选项中查找它并使用它们直到获得所需的结果,然后将命令添加到启动应用程序即可!希望有帮助!: )

相关内容