鼠标提供程序实现

在Linux系统中,当鼠标提供程序与另一个多点触控提供程序(如hidinput或mtdev)一起使用时,鼠标可能会带来不便。鼠标可能与它们产生冲突:一次单点触摸可能会从鼠标提供程序生成一个事件,同时从多点触控提供程序生成另一个事件。

为了避免这种行为,您可以在鼠标配置中激活“disable_on_activity”令牌。这样,如果任何触摸由其他提供者创建,鼠标事件将被丢弃。请将此添加到您的配置中:

[input]
mouse = mouse,disable_on_activity

使用鼠标进行多点触控交互

在 1.3.0 版本加入.

默认情况下,鼠标中键和右键,以及ctrl+左键的组合,用于多点触控模拟。如果您希望将这些操作用于其他目的,可以通过激活“disable_multitouch”标记来禁用此行为:

[input]
mouse = mouse,disable_multitouch

在 1.9.0 版本发生变更.

现在,您可以有选择地控制上述方式发起的点击是否模拟多点触控。如果触摸已按上述方式发起(例如,右键鼠标按钮),则会在触摸的配置文件中添加一个 multitouch_sim 值,并在触摸上添加一个 multitouch_sim 属性。默认情况下,multitouch_sim 为 True,并且该触摸将模拟多点触控。然而,如果配置中添加了 multitouch_on_demand,则情况会有所不同。

[input]
mouse = mouse,multitouch_on_demand

那么 multitouch_sim 默认为 False。在这种情况下,如果在鼠标释放之前将 multitouch_sim 设置为 True`(例如在 `on_touch_down/move 中),该触摸将模拟一个多点触控事件。例如::

if 'multitouch_sim' in touch.profile:
    touch.multitouch_sim = True

在 2.1.0 版本发生变更.

Provider 通过监听 Window 中的属性/事件来分发悬停事件。可以通过将 MouseMotionEventProvider.disable_hover 设置为 True 或在配置中添加 disable_hover 来禁用分发,如下所示:

[input]
mouse = mouse,disable_hover

还可以通过 MouseMotionEventProvider.disable_hover 属性在运行时启用/禁用悬停事件。

以下是 profile 属性列表所支持的值列表。

配置文件值

描述

按钮

鼠标按钮(leftrightmiddlescrollupscrolldown 之一)。通过 button 属性访问。

位置

2D位置。同样反映在 xypos 属性中。

multitouch_sim

指定是否模拟多点触控。通过“multitouch_sim”属性访问。

class kivy.input.providers.mouse.MouseMotionEventProvider(device, args)[源代码]

基类:MotionEventProvider

property disable_hover

如果设置为 True,则禁用悬停事件的分发。

悬停事件默认启用(disable_hoverFalse)。如果您想通过配置文件启用或禁用悬停事件,请参阅模块文档。

在 2.1.0 版本加入.

start()[源代码]

启动鼠标提供程序。

stop()[源代码]

停止鼠标提供程序。

update(dispatch_fn)[源代码]

更新鼠标提供器(从队列中弹出事件)