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


10

在我的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。


尝试sleep 5.xsession文件开头添加?
托马斯·阿勒

1
如果在执行.xsession之后加载了窗口管理器并更改evdev属性,则@ThomasAhle无法解决问题。
Marcin Kaminski 2012年

Answers:


7

我正在使用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)。

希望这对某人有帮助。


该脚本很好,但是不幸的是我没有给出解决方案。现在,唯一的方法有效,如果我运行终端,然后使用必需的选项运行'xinput set-prop'。我尝试了Marcin的脚本“启动应用程序”,但是不幸的是,这些脚本没有起作用。
Geeocode

“组-INT丙已弃用赞成组-丙的” T介绍•H级•A•牛顿•ķ••ÿ••Ü•ø
克莱门特

4

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

要么

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


3

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


对我来说是/etc/X11/xinit/Xsession
Thomas Ahle,2012年

3
我通常不鼓励在系统范围的配置文件中进行用户特定的配置更改。首先,因为它创建了另外一件需要记住的事情,何时需要迁移到另一台计算机上;其次,因为这些文件大多位于此处以提供合理的默认值。当您需要重新安装/迁移时,可以随身带上$ HOME的快照和已安装软件包的列表,这是很好的。
Marcin Kaminski 2012年

1

这是我从终端在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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.