linux pynput库在Python中按Windows + D键时未按预期工作

q5lcpyga  于 2023-06-21  发布在  Linux
关注(0)|答案(1)|浏览(170)

我正在尝试做这个问题所问的(这个问题没有有效的答案,使用pynput的函数代码):Press Windows+D with pynput .但是,我的尝试并没有像预期的那样工作。
在Linux Ubuntu上,按Windows + d将最小化所有窗口,从而显示桌面。再做一次会把所有的Windows都恢复原样。
下面是我的代码:

import time

from pynput.keyboard import Key, Controller

keyboard = Controller()
SUPER_KEY = Key.cmd

keyboard.press(SUPER_KEY)
# time.sleep(1)
keyboard.press('d')
keyboard.release('d')
keyboard.release(SUPER_KEY)

当我运行它时,我期望Windows + d快捷方式被按下,隐藏所有窗口。相反,只按下Windows键,这会调出程序启动器搜索工具,然后在我的终端中留下一个d,如下所示:

$ ./pynput_press_Windows+D_to_show_the_desktop.py 
$ d

我怎么才能让它工作?
参考文档说(https://pynput.readthedocs.io/en/latest/keyboard.htmlKey.cmd是“Super”或“Windows”键。我也试过Key.cmd_lKey.cmd_r
cmd = 0
通用命令按钮。在PC平台上,它对应于Super键或Windows键,在Mac上它对应于Command键。这可以是修饰符。
cmd_l = 0
左侧的命令按钮。在PC平台上,它对应于Super键或Windows键,在Mac上它对应于Command键。这可以是修饰符。
cmd_r = 0
右命令按钮。在PC平台上,它对应于Super键或Windows键,在Mac上它对应于Command键。这可以是修饰符。
2023年6月4日更新:键盘监视器测试程序,以确保Key.cmd + d是正确的我的键盘(它是):从www.example.com修改https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard:

from pynput import keyboard

print("Keyboard monitor demo program. Press Esc to exit.")

def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

def on_release(key):
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        print("Exiting the program.")
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

按Super + D时的输出示例:

$ ./pynput_monitor_keyboard.py 
Keyboard monitor demo program. Press Esc to exit.
Key.enter released
special key Key.cmd pressed
alphanumeric key d pressed
'd' released
Key.cmd released
ijnw1ujt

ijnw1ujt1#

如果你有一个双语言键盘,一个不同的键盘“快捷键”可能会工作。在我的俄语-英语键盘上,按下俄语“в”起作用了,这在英语布局中是“d”。我通过在键盘上按“win + d”的方式从文档中了解到了这一点。

from pynput.keyboard import Key, Controller

keyboard = Controller()

with keyboard.pressed(Key.cmd):
    keyboard.press('в')
    keyboard.release('в')

相关问题