如何使用Pynput实现侧边鼠标按钮?

4

我正在使用Python模块Pynput制作一个宏,以便按下我的侧边按钮。有人知道在Pynput中这些侧边按钮叫什么吗?

from pynput.mouse import Button, Controller

mouse = Controller()

mouse.press(Button.SIDEBUTTON)
mouse.release(Button.SIDEBUTTON)

SIDEBUTTON 部分应该放什么内容?

“侧边按钮”不是一个标准术语。不同的鼠标制造商会为这些按钮使用不同的事件代码;按钮4和5是常见的,但并非必然如此。 - undefined
所以这里的问题是:什么鼠标 - undefined
3个回答

6

这个问题有点老了,我也遇到了同样的问题。后来我找到了这些按钮的名称:

对于Mouse4和Mouse5,分别是Button.x1和Button.x2。

希望我的回答能够帮到你。我用来查找的脚本在这里:

from pynput.mouse import Listener
def on_click(x, y, button, pressed):
    if pressed:
       print(button)
   
# Collect events until released
with Listener(on_click=on_click) as listener:
    listener.join()

1

鼠标上的附加按钮通常被称为“Button 6”和“Button 7”等(按钮4和5是滚轮按钮)。一些鼠标制造商发送键盘代码,例如多媒体按钮或其他自定义代码。

对于 Windows 和 OS X,Pynput 仅支持左、右、中鼠标按钮,因此就 Pynput 而言,在这些平台上你将没有运气。如果你使用的是 Linux(带有 X.org 后端),你可以发送和接收更多按钮,从 button8 到 button31,以及 scroll_up、scroll_down、scroll_left 和 scroll_right。

根据您使用的鼠标型号和操作系统,您可能能够获取这些按钮的正确事件,无论是鼠标按钮还是键盘事件。注册鼠标键盘监听器,并打印出鼠标单击事件的按钮值以及键盘按下或释放事件的键值,看看是否可以显示侧面按钮。
如果特定的鼠标按钮被发送为键盘事件,则您可以使用键盘控制器发送相同的事件,否则Pynput也无法发送此类鼠标按钮事件。
这并不是说您不能完全发送此类按钮点击,但您必须研究用于Windows或OSX的控制器的源代码,然后查看底层框架如何接受除左、右和中间之外的其他按钮按下。

如果它们不是键盘事件,那么在pynput中是否有一种方法可以至少接收到这些按钮的事件? - undefined
@TheElementalofCreation 我不知道。你尝试过为键盘和鼠标事件注册监听器吗? - undefined
@TheElementalofCreation(我看到我漏掉了一个我本打算放在那里的链接;现在已经添加上了)。 - undefined
他们中没有人捡起任何东西。然而,在测试其他功能时,我发现如果在鼠标监听器中添加事件过滤器,鼠标监听器确实可以看到这些事件,但它们从未传递给其他函数。然而,这是有问题的,因为尝试从那里访问数据通常会导致我的Python解释器崩溃且没有任何警告。 - undefined
具体来说,在我的情况下,我使用关键字参数"win32_event_filter"来传递一个函数,该函数将函数的两个参数(msg和data)保存到一个全局数组中,以便我可以自由地对其进行操作。 - undefined

1

很遗憾,pynput 中没有这样的函数,如果您运行此代码并按侧面鼠标按钮,则会发现它不会给您任何输出:

from pynput import mouse


def on_click(x, y, button, pressed):
    if pressed:
        print ('Mouse clicked {2}'.format(x, y, button))


with mouse.Listener(on_click=on_click) as listener:
    listener.join()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接