如何模拟鼠标右键在触摸屏上的单击?


9

我的新触摸屏笔记本电脑没有菜单按钮(即,其行为类似于鼠标右键)-通常位于右侧ctrl旁边的菜单按钮。

由于您无法通过触摸左键单击,因此我正在尝试为此功能的Alt GR创建自定义键盘快捷方式(在“系统”>“键盘”>“快捷方式”>“自定义快捷方式”下)

当将xev命令与机载键盘(带有菜单按钮)一起使用时,我发现按钮信息为:

KeyRelease event, serial 42, synthetic NO, window 0x4800001,
    root 0xab, subw 0x0, time 2544690, (1236,607), root:(1302,1050),
    state 0x0, keycode 135 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

但是,我不知道该怎么办...

顺便说一句,我正在使用Ubuntu 13.04。

非常感激任何的帮助...


我的aspire p3,ubuntu 14.04出现了完全相同的问题,右键单击功能无法在触摸屏上使用:(
user65390 2014年

@ user65390,您尝试过弗雷迪·席勒的答案吗?
Ismail Moghul

1
您应该编辑此问题以消除怪异。简而言之,如何右键单击触摸屏?现在已回答的问题似乎过于技术性,无法实际匹配答案
Bhikkhu Subhuti

Answers:


12

您需要gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"使用dconf编辑器或使用dconf编辑器启用辅助单击(如AliNa所述)。

然后,Ubuntu可能会像触摸板一样部分地处理触摸屏,其中触摸不会触发鼠标按下。相反,您需要短按+按住。


可悲的是,该技术仅限于基于Gnome3的桌面环境,例如普通的Ubuntu。长按鼠标右键也可以在Chrome / Chromium中直接使用,但这仅是因为它自己处理触摸事件。
tanius

6

只要持续触摸屏幕2或3秒钟,就会出现所谓的“正确菜单”。这是在任何触摸屏上模拟右键单击的正常方法。


1
您可能应该首先gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"通过Dconf编辑器或通过Dconf编辑器启用辅助单击。
AliN 2013年

我在终端中输入了上述命令,然后进行了通用设置并将接收延迟减少到最小。但是,这仍然不能解决问题-当我使用鼠标时,菜单会出现,但在使用触摸屏时却不起作用...
Ismail Moghul 2013年

1
@IsmailM然后,我认为您应该与您的卖方/制造商讨论此事
RaduRădeanu2013年

@RaduRădeanu我从约翰·刘易斯那里带了Windows 8笔记本电脑(触摸屏功能在Windows 8上正常工作)。您是否仍然认为应该与他们聊天,因为我自己安装了ubuntu ...
Ismail Moghul 2013年

@IsmailM是的,您应该这样做。
RaduRădeanu13年

1

如果您有Wacom触摸屏(使用driver xf86-input-wacom),并且至少可以进行两指多点触摸,那么以下内容将产生右键单击:

  1. 用第一指按住并按住。
  2. 现在,用第二根手指轻按。

如果仍无法使用,请从中找出触摸屏的产品名称,xinput --list然后使用以下功能启用此功能:

xsetwacom --set "[your touchscreen product id]" Gesture on

要使此更改永久生效,请参阅该技术的其他答案

与在Gnome / Ubuntu Shell下长按右键单击不同,它在所有桌面环境中均有效,因为它是(旧版)驱动程序级功能。请注意,在某些程序中,这可能会导致触摸屏左键单击的问题,这就是为什么我必须在系统上禁用它。


0

对于那些谁拥有菜单键的键盘上,在有关使用创建右键单击该问题的说明实际上是一个伟大的想法。由于不明显,因此它是这样工作的:

  1. 用一根手指点击并按住屏幕。请勿松开手指,否则会触发左键单击,这可能会对您的应用程序产生不良影响。但是,按住不放就像按下并释放鼠标左键一样,通常应用程序不会因此而产生任何动作。但是,鼠标指针的位置已经更改为我们要右键单击的位置,这就是我们执行此步骤的原因。

  2. 按下并释放菜单键。在按键事件中,已经触发了右键单击。

显然,此技术需要两只手,并且在平板电脑模式的可转换笔记本电脑上是完全不可能的。因此它具有有限的实际用途。


0

在我对这个问题的回答中,这是我个人的最爱。

如果您的触摸屏至少支持两个手指的多点触摸输入,则可以安装touchegg并配置它以将两个手指的点击解释为右键单击。我在Lubuntu 18.10下尝试了此方法,并且有效。

1.安装

touchegg 在Ubuntu 18.10存储库中可用,因此您可以像这样简单地安装它:

sudo apt install touchegg

要启动它,执行touchegg。在终端中执行它时,您可以从其输出中检查它是否正确检测到多点触摸手势。

touchegg为每个LXQt会话自动启动,只需将其添加到自动启动(LXQt菜单→首选项→LXQt设置→会话设置→自动启动)。

2.配置方式 touchegg

您可以touchegg通过两种替代方式进行配置:

  • 使用配置文件进行配置。编辑文件~/.config/touchegg/touchegg.conf。为了使更改生效,请在终端中或通过Alt+ F2运行对话框执行以下操作:

    killall touchegg; touchegg
    
  • 使用GUI进行配置。 touchegg有一个叫一个漂亮的配置GUI touchegg-gui,这是在这里看到。但是,它不是toucheggUbuntu软件包的一部分。或者,您可以touchegg-gce 按此处所述安装GUI 。touchegg-gce可以,但是您必须touchegg在将更改保存到其配置文件后手动重新启动,方法是再次执行:

    killall touchegg; touchegg
    

3.用于模拟右键单击的配置

要配置两指点击右键,您可以将此配置文件用于~/.config/touchegg/touchegg.conf

<touchégg>
        <settings>
                <property name="composed_gestures_time">0</property>
        </settings>

        <application name="All">
                <gesture type="TAP" fingers="2" direction="">
                        <action type="MOUSE_CLICK">BUTTON=3</action>
                </gesture>
        </application>
</touchégg>

关于touchegg配置的注释:

  • 随附的默认配置文件中目前已包含如上图所示的两指点击右键touchegg。(Ubuntu 18.10在这里。)

  • 该程序将等待composed_gestures_time(以毫秒为单位)等待您完成包含多个部分(如轻敲的敲击声)的手势的动作,然后再解释它们。因此,当touchegg仅用于单部分手势(例如,两指点击右键)时,我们可以将其设置0为防止任何明显的动作延迟。这也是由创建的配置文件中的默认设置touchegg

  • 至少在我的触摸屏上,用完全相同的时间用两只手指触摸屏幕时无法识别出两根手指。但是,即使时间间隔很小(可以听到两次敲击声,可能≥10 ms),它也可以可靠地工作。因此,我只需将食指和中指以很小的垂直间隙移向屏幕,即可可靠地工作。

  • 右键单击将在首先触摸屏幕的手指位置(此手势中的两个手指中)触发。

  • touchegg让所有未配置的事件冒泡直至在光标下的应用程序处被解释。这很好,因为例如在Chromium,Chrome,Evince中实现的本地捏缩放等工作方式比via更加流畅touchegg

  • touchegg可以与(高度推荐!)单点触摸手势识别软件一起使用,easystroke而不会产生干扰。当然,不应将它们配置为由相同事件触发。

4.故障排除

  • touchegg在暂停和恢复周期后可能会停止工作。我仍然必须找到一种方法,使其自动重新启动。

  • 至少对于我和其他人而言touchegg只会解释触摸屏上的触摸事件,而不是触摸板上的触摸事件。在这种情况下,这是理想的。可能是因为我的触摸板使用了不会向X服务器(synaptics而不是libinput)公开多点触摸事件的驱动程序。您可以touchegg通过将其启动来检查要绑定的设备GEIS_DEBUG=3 touchegg

  • 如果touchegg对所有程序造成某种“卡住的半点击”,则点击将移动鼠标指针,但不再触发左键单击:这不是其正常行为。在具有LXQt的Ubuntu 18.10下,我一开始没有这个功能,但是后来touchegg在整个计算机的多次重新启动甚至重新启动中使用了它。启动默认的Ubuntu桌面后,它消失了,然后返回到LXQt。

    touchegg通过为单指敲击设置附加手势来修复配置文件,将解决“卡住的半按”现象,但是touchegg此错误还带来了其他不当行为,因此这不是真正的解决方法。这种不当行为包括:(1)touchegg现在还将消耗所有未配置的事件,至少是一个手指的事件;(2)一些基于Java的程序(freemind例如)现在将遭受“卡住一半”的反向问题。点击”,光标位置将停留在该位置,但鼠标左键点击将被记录。通过在基于Java的程序中进行两个手指的操作来暂时touchegg识别该问题,以进行识别。


0

您可以使用easystroke修饰符加点击(例如Ctrl+ Alt+点击)来创建右键单击。通过其他配置,仅需触摸屏即可单手访问,请参见下文。

这非常好,因为右键单击中的“修饰符加敲击”无法配置以下任何一项touchegg(不识别修饰符),mouseemu(由于缺少扫描代码xsetwacom "…" set Button 1 …而无法识别敲击)或(由于手指输入不正确而无法识别敲击)驱动程序中的按钮事件)。

1.安装

easystroke目前,该程序的维护很少,但是在发行说明中,它们链接到基于Ubuntu 18.04构建的最新Ubuntu软件包。它对我来说效果很好(此处是Ubuntu 18.10)。您可以按以下方式安装它:

wget http://openartisthq.org/easystroke/easystroke_0.6.0-0ubuntu8_amd64.deb
sudo apt install ./easystroke_0.6.0-0ubuntu8_amd64.deb

2.配置

  1. 使用启动程序easystroke

  2. 在第二个选项卡“首选项”下,单击“手势按钮”,然后Ctrl+ Alt+点击灰色字段。至少在LXQt下,Ctrl+ Alt似乎是修饰符的最佳选择,因为:

    • 无论Shift+点击Ctrl+点击用于多选已如果分配给将成为不可用时easystroke
    • AltSuper而涉及的任何组合Super都不会被看到easystroke。这可能是LXQt或Openbox的配置问题,但到目前为止我仍无法解决。
  3. 在第一个标签“操作”下,单击“添加操作”。

  4. 使用“类型:命令”和“详细信息:xdotool keyup ctrl alt; xdotool click 3” 配置操作。根据您选择的修饰符进行调整。

    取决于修饰符,首先清除修饰符对于防止副作用很重要。例如,Shift在Chrome中+右键单击将导致文本选择。另外,在使用软件触发这些按键时,需要明确清除修饰符,以防止修饰符卡住(请参阅下面的第3节)。在执行命令之前不自行清除修饰符可认为是中的错误easystroke

  5. 单击“记录笔画”并记录一次点击。

  6. 您可以在“首选项→外观→显示弹出窗口”下禁用(这里相当无用的)弹出窗口。

  7. 您可以将此手势识别限制为仅在“高级→设备”下的触摸屏以及笔输入设备上。

现在,Ctrl+ Alt+点击将创建一个右键单击。

请注意,它easystroke具有出色的手势识别功能,可用于单点触摸手势(“在屏幕上绘制形状”),您可以在使用触摸屏时自动执行许多任务。这是其主要目的,而右键单击仿真只是一个副作用。

3.改进:仅触摸式右键单击

现在,让我们改进此配置,以便您可以用一只手和触摸屏触发右键单击,方法是:(1)点击一个特殊的屏幕按钮,这意味着“下一次点击是右键单击”,然后(2)然后点击在屏幕上正常显示。

这是Lubuntu(LXQt)的食谱,并使用上面选择的Ctrl+ Alt修饰符,但原理在所有桌面环境和所有修饰符中均相同:面板中的自定义快速启动条目。

  1. 为您的快速启动条目创建一个自定义图标,并将其另存为~/.icons/default/rightclick.png

  2. 创建一个自定义.desktop文件,并将其另存为.local/share/applications/rightclick.desktop,其中包含以下内容。请注意,您必须提供username绝对路径。

    [Desktop Entry]
    Name=Rightclick
    Comment=Next tap is a rightclick via Ctrl + Alt + easystroke gesture.
    Icon=/home/matthias/.icons/default/rightclick.png
    Exec=xdotool keydown ctrl alt
    Type=Application
    Categories=System;Utility;
    StartupWMClass=localdomain.rightclick
    
  3. 在您的LXQt面板中添加另一个快速启动窗口小部件。虽然原则上您也可以修改现有的,但是我发现位于屏幕右下角的是最适合惯用右手操作的对象,并且意外单击也会仅显示日期(如果那是旁边的内容)就像我的情况一样),而不是启动一些大型应用程序。

  4. 打开~/.config/lxqt/panel.conf并调整新[quicklaunch2]部分以引用您的自定义.desktop文件。同样,您必须提供username。示例看起来如何:

    [quicklaunch2]
    alignment=Left
    apps\1\desktop=/home/username/.local/share/applications/rightclick.desktop
    apps\size=1
    type=quicklaunch
    
  5. 重新启动LXQt面板以使更改生效。为了那个原因:

    1. 转到“ LXQt菜单→首选项→LXQt设置→会话设置”。
    2. 选择“基本设置→LXQt模块→面板”。
    3. 点击“停止”。
    4. 点击“开始”。

     

    (您也可以killall lxqt-panel && lxqt-panelAlt+ F2启动对话框中执行,但这会干扰上述对话框中识别的面板状态,如果将这两种技术混合使用,则会使两个面板相互重叠,其中一个会丢失某些面板图标。最好不要这样。这仍然是越野车。)

此外,如果触摸屏侧面有特殊的硬件按钮,则可以将xdotool keydown ctrl alt命令分配给其中一个。

4.其他改进和故障排除

  • 作为一个很好的副作用,上述仅触摸右键单击的技术还使您可以单手访问您可能已在中配置的所有其他手势easystroke。对于触摸屏使用自动化,这是一个非常强大的功能。

  • 当您在中配置其他手势时easystroke,请注意以下错误:easystroke在执行配置的操作之前,请不要清除我们选择的修饰符。在上述情况下,动作类型“键”和“文本”都导致键组合以及Ctrl+ Alt,这使它们不可用。解决方法是,改为选择操作类型“命令”,并按照与上述相同的方式自己清除修饰符。因此要触发Ctrl+ V,命令将是:

    xdotool keyup ctrl alt; xdotool key "ctrl+v"
    

    (该xdotool选项--clearmodifiers在这里无济于事,因为它仅在组合键执行期间禁用修饰符,然后再重新应用它们。在这种情况下,按照上面的技术,使下一个点击右键单击,但是我们不希望在这种情况下。)

  • 如果您在测试过程中卡住了修饰键,则按下并释放物理键盘上的修饰键即可解决问题。

  • 有时在测试这些东西的过程中,我的LXQt我的键盘和鼠标事件会变得非常混乱。在这种情况下,只有从图形环境注销然后再次登录才有帮助。

  • 在中实现单手仅触摸操作的最干净的方法easystroke(包括按此处要求进行右键单击的情况)是,点击easystroke面板图标可使其进入与上面配置的自定义面板图标相同的内部状态,但实际上并没有更改键盘修改器状态,因为这可能导致修改器卡住等。要显示该easystroke窗口,则必须使用其面板图标的上下文菜单。显然,这需要对easystroke代码进行一些更改。

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.