我有一台带有触摸屏的计算机(实际上是 Banana Pi Pro),我已将其配置为通过以下方式模拟右键单击xorg.conf
:
Section "InputClass"
Identifier "Touchscreen"
Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "750"
Option "EmulateThirdButtonThreshold" "30"
EndSection
这确实非常有效。但有时,当我想使用真正的鼠标时,这些设置变得相当烦人,因为鼠标左键长按会转换为鼠标右键单击。此外,由于 30 像素阈值,拖动选择变得不精确。
我想知道是否可以在使用鼠标时禁用右键单击模拟:
是否可以在运行时修改 Xorg 配置来更改“InputClass”部分?
如果不是,是否可以将此部分仅应用于一种特定的输入设备(触摸屏)?
如果唯一的方法是更新
xorg.conf
并重新启动服务器,那么最不痛苦的方法是什么?理想情况下,保留已经运行的应用程序会很好,但我怀疑这是可能的。有没有一个程序可以做我想要的事情而不需要改变
xorg.conf
?像这个问题,其中xrandr
用于动态配置参数,这些参数在通过配置时是静态的xorg.conf
。
答案1
xinput
控制输入设置。它对于输入的作用与xrandr
对于显示的作用相同。
运行xinput list
以列出设备。每个设备都有一个名称和一个数字 ID。您可以使用此名称或此 ID 来列出相应设备的属性。设备 ID 可能取决于检测到设备的顺序,因此要定位特定设备,请使用其名称。例如,我有一个鼠标作为设备8;这是其属性的摘录:
$ xinput list-props 8
…
Evdev Third Button Emulation (280): 0
Evdev Third Button Emulation Timeout (281): 1000
Evdev Third Button Emulation Button (282): 3
Evdev Third Button Emulation Threshold (283): 20
…
因此,我可以使用以下任一命令来打开该设备的第三个按钮模拟:
xinput set-prop 8 280 1
xinput set-prop 8 'Evdev Third Button Emulation' 1
设备有一个层次结构,以xinput list
图形方式表示。将属性应用于设备也会将其应用于其子设备。例如,您可以通过将属性应用于根指针来将属性应用于所有指针设备Virtual core pointer
。
答案2
感谢@Gilles 的回答,我安装xinput
并发现了我的触摸屏设备的名称:
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ft5x_ts id=7 [slave pointer (2)]
⎜ ↳ GiGa HiD id=9 [slave pointer (2)]
有了这些信息,我就可以自定义我的xorg.conf
文件,使其仅影响设备ft5x_ts
(触摸屏)MatchProduct
范围:
Section "InputClass"
Identifier "Touchscreen"
MatchProduct "ft5x_ts"
Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "750"
Option "EmulateThirdButtonThreshold" "30"
EndSection
重新启动后,右键单击模拟仅在触摸屏上有效。
PS:或许值得一提的是,我的电脑是基于 Banana Pi Pro 的乐美客液晶模组,以便其他 Banana Pi 人可以找到这个主题。